在上一篇中我们整理了jz2440的硬件资源,有两种Flash,今天我想尝试从两种Flash来启动2440。下面先来写一下启动代码。
说道启动代码,从51转型arm的人可能会比较陌生,也会有一个疑问,c51为什么不需要启动代码呢?因为它很多东西都是集成在51里面的(rom和ram),出厂的时候很多东西
都设置好了的,并且他的中断向量入口也设置好了。而arm不一样啊,它的rom和ram都是外部接入的(接的大小和地方是可以改的),也就是说,这些配置是和硬件关联起来的,
这样的话,是不可能写一个统一的bootloader的,所以要根据自己的板子,移植对应的bootloader。
bootloader的作用包含两个方面:硬件初始化、软件初始化。
硬件初始化包含:设置看门狗,初始化系统始终,初始化adram等
软件初始化包含:设置栈(即将sp指针指向内存,这里的内存可以使片内的sram,也可以是片外sdram),调用main函数,处理main函数返回后的清理工作等
(如果只使用汇编写一些小型的验证程序,是可以没有启动文件的。因为从上面可以看到软件部分的初始化工作都是在为c程序创造环境