Makefile的作用是啥?mkv210-image.c的作用?
Makefile是用来管理工程的,在一个正式项目中,可能出现十几个c文件,不可能一个一个进行编译,影响工作效率,这样很所以此时就用Makefile。
书写规则:
目标:目标顶格写,后面是冒号,冒号后面是依赖;
依赖:依赖就是达成目标的原材料;
命令:命令前面一定是Tab,不能是顶格,更不能是多个空格;命令就是要生成目标要执行的动作。
链接器得到的led.elf其实是我们的可执行文件,如果在操作系统下用led.elf完全就可以了,但是在裸机中,我们需要的是可以烧写的文件(也就是镜像文件),因此我们得先用led.elf来制作镜像文件,制造工具是交叉编译链中的arm-linux- objcopy.
arm-linux-objdump工具进行反编译(反汇编 ),将可执行文件翻译成汇编语言!
SD卡启动时需要头校验,在led.bin前面加上16字节头校验就形成了210.bin
我们编译链接时只得到了led.bin,210.bin的得到和交叉编译工具链是完全无关的,由led.bin得到210.bin的过程是三星的S5PV210所特有的, 因此需要我们自己去完成,为此我们写了mkv210-image.c来完成,因此可以知道mkv210-image.c的作用就是增加头校验。
在正点原子的阿尔法裸机中,给bin文件加头校验的这个工作是由一个叫做imxdownload的软件直接完成的,他们将mkv210-image.c里所执行的功能直接封装成了一个软件,其最终目的是一样的
以下是裸机启动过程与这部分知识的一个解读:
一步步点亮LED
首先应该看硬件图,知道硬件LED对应的是哪一个GPIO,通过查阅硬件原理图可知,在三星的210中,有4个led灯,分别对应GPIO-* !
因为硬件是需要软件操作,其实就是用软件操作寄存器,然后查阅数据书册,了解与其相关的寄存器。
后面的这个死循环可以用 b.来代替;代表当前这一句指令的地址,这个就是高大上的死循环!
如何实现灯的闪烁呢?
汇编中实现延时的原理就是,在程序需要延时的地方增加一些没有实际意义的废代码,以此来达到延时的要求。
bl指令可以实现函数调用;