新闻中心

2440启动步骤

作者: 时间:2016-11-21 来源:网络 收藏
S3C2440支持两种启动方式:NAND FLASH和NOR FLASH。

网上有很多文章分析TQ2440的启动文件2440init.s。介绍的很详细,我这里只是把S3C2440上电后的程序流程描述下。
不管在哪种启动方式下,ARM上电启动都是从0X00000000开始运行。下面是复位程序入口。
AREA Init,CODE,READONLY
ENTRY
ResetEntry
b ResetHandler
……
ResetEntry的值在ARM上电运行时是0X00000000,在JTAG仿真时是0X30000000。这个值很关键,在拷贝程序时会用到。
从NAND FLASH启动时,在ARM上电时,ARM会自动把NAND FLASH前4K的内容拷贝到S3C2440内部SRAM中,同时把SRAM的地址映射到0X00000000。ARM上电后会从SRAM处开始运行。
从NOR FLASH启动时,因为NOR FLASH接在bank0。地址映射是0X00000000。所以ARM上电后直接运行NOR FLASH里的程序。此时S3C2440内部SRAM地址为0X40000000。

本文引用地址://m.amcfsurvey.com/article/201611/319273.htm

在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()函数开始运行。



关键词:2440启动步

评论


技术专区

关闭