上电后芯片内部固有的一段程序会先通过boot控制引脚从不同的存储器加载程序,即bootloader,bootloader将会初始化ddr,设置堆栈,中断向量表等,最后启动操作系统。
A20 启动方式如图
#。如果UBOOT_SEL为1将首先检测SD0,那么问题来了,它是如何知道sd卡里面就是程序,而不是其他数据,如果没有辨别机制将导致开机时系统与sd卡不能共用,那么接下来就说说这个检测机制
#。这个检测方式就是在程序前面加一个头部,不同的芯片会有不同的添加工具,当芯片检测到头部,它就会读取运行头部后面的程序,并运行。A20的加头工具,在裸机开发第一节贴出源码和使用方式
#。故,我们只需要写好程序加好头部,下载程序,插入sd卡到芯片。
#。终于芯片可以开始运行我们的程序了,可我们要怎样让程序跑起来呢,直接C语言,豪横,printf(“led1给老子闪起来”); ,⁄(⁄ ⁄ ⁄ω⁄ ⁄ ⁄)⁄它可不鸟你,你还是的按它的来,,,
#。最直接的就是通过用户手册,用汇编控制寄存器,豪横 点灯 如果你愿意,全程.s也,,,没啥问题,
#。如果要简单点,哪就需要先用汇编设置芯片模式,设置堆栈,引导到C语言main函数,然后就可以用C语言写程序了
#。写好了汇编程序,引导的C语言 接下来就需要将程序通过arm-gcc编译,链接最后形成 *.bin文件,然后通过头部添加工具添加头部形成新的 *.bin文件,最后通过dd命令下载bin文件到SD卡,插卡,亮灯。