在ARM上电的情况下,流程如下:
1、 封闭看门狗,封闭一切中止。
2、 设置体系作业频率,FCLK,HCLK,PCLK,UCLK。
3、 初始化内存操控寄存器,初始化参数在段SMRDATA里界说。SDRAM初始化在这里处理。
4、 在开发板上电时,按住接在EINT0脚上的按键会清零64MSDRAM。
5、 初始化仓库
6、 读OM0,OM1引脚状况,判别是从NAND FLASH发动仍是从NOR FLASH发动。
假如是从NAND FLASH发动,把NAND FLASH的代码复制到SDRAM中,接着程序开端在SDARM中运转。然后初始化数据段,最终跳转到main()函数开端运转。
假如是从NOR FLASH发动,判别ResetEntry值和BaseOfROM值是否持平,BaseOfROM值是在ADS里界说的RO BASE,假如界说为0X30000000,由于ARM上电ResetEntry值为0,所以接下来程序会把NOR FLASH里的程序复制到SDRAM中。假如RO BASE界说为0,将直接在NOR FLASH里运转。然后初始化数据段,最终跳转到main()函数开端运转。
1: 从NAND FLASH发动时,在ARM上电时,ARM会主动把NAND FLASH前4K的内容复制到S3C2440内部SRAM中,一起把SRAM的地址映射到0X00000000。ARM上电后会从SRAM处开端运转。
2:从NOR FLASH发动时,由于NOR FLASH接在bank0。地址映射是0X00000000。所以ARM上电后直接运转NOR FLASH里的程序。此刻S3C2440内部SRAM地址为0X40000000。
3:ARM上电发动都是从0X00000000开端运转。可是关于复位程序进口,ResetEntry的值在ARM上电运转时是0X00000000,在JTAG仿真时是0X30000000。这个值很要害,在复制程序时会用到。
声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/changshang/fabu/259722.html