zoukankan      html  css  js  c++  java
  • 003_linux之点灯(C语言版)

    linux点灯在汇编版中说明了硬件中点灯的原理,C语言中不再陈述,说白了就是控制GPXCONGPXDTA寄存器就行了,芯片是S3C2440A芯片,查看芯片手册就能懂了,其他芯片也是一样的。C语言版就只说明了程序,共三个。LED.c是主程序运行的,start.s是汇编启动文件,makefile是编译时候为了快捷的编译(这个以后再说)。当然,这里只说明了如何编写C的运行程序,具体编译之后生成什么样的文件,里面是什么东西就没必要说明了,可以去了解一下,编译之后生成反汇编码,然后生成机器码文件,C语言的程序具体还是会生成机器码才能运行,中间过程就不说了,这个涉及的范围有点广了。

    一: 简单C语言点灯:

    需要建立三个文件:

                         Led.c文件   

                         Start.S文件 

                         Makefile文件

     

    解析led.c文件,由汇编指令中进一步进行C语言的开发,汇编编程只是为了了解内部如何进行的,C语言能够快速的开发,废话不多说,解析C文件

    int main()

    {

        unsigned int *pGPFCON = (unsigned int *)0x56000050;

        unsigned int *pGPFDAT = (unsigned int *)0x56000054;

       

        *pGPFCON = 0x100;

       

       

        *pGPFDAT = 0;

        return 0;

    }

     

    解析Start.S文件

    .text

    .global _start

    _start:

       

        ldr sp, =4096 

    //  ldr sp, =0x40000000+4096 

       

        bl main

    halt:

        b halt

    Makefile文件

    这个指令后面再讲:

    all:

        arm-linux-gcc -c -o led.o led.c

        arm-linux-gcc -c -o start.o start.S

        arm-linux-ld -Ttext 0 start.o led.o -o led.elf

        arm-linux-objcopy -O binary -S led.elf led.bin

        arm-linux-objdump -D led.elf > led.dis

    clean:

        rm *.bin *.o *.elf *.dis

  • 相关阅读:
    可图性判定HavelHakimi定理
    并查集入门
    js数组和函数应用
    DOM用法及应用
    javascript基础知识
    表单
    PHP变量
    30天自制操作系统开发笔记——IDT中断描述符表
    《30天自制操作系统》学习笔记——汇编程序磁盘BIOS调用
    汇编指令: LGDT、LIDT、LLDT、LMSW、LOADALL、LOADALL286、LOCK、LODSB、LODSW、LODSD
  • 原文地址:https://www.cnblogs.com/luxiaoguogege/p/9690262.html
Copyright © 2011-2022 走看看