本帖最后由 yuanlai2010 于 2014-7-6 14:31 编辑
浅析S3C2416启动流程
参与Helper2416开发板助学计划心得
由于接下来几天要给朋友做导游去江西武功山玩几天,没时间写帖子,今天就再发一帖!
对于我自己来说,每次拿到一块新的芯片都习惯先去把启动原理摸清楚,然后再去玩其他的外设,这样我就能对整过过程是怎么发生的比较清楚!万一出现什么问题,我也大概知道问题发生在哪个环节。
查阅了一个上午的数据手册和网上相关信息,有了以下的心路体会!
从S3C2416的用户手册中
可以知道S3C2416至少支持两种启动方式 OneNand启动 和 IROM启动,这里NorFlsh启动肯定也是支持的。由于数据手册对OneNand没有做过多的说明,再加上现在也很少用到NorFlash,所以我们主要理清IROM启动流程就行了,这也是三心官方力荐的启动方式。
以下是有关于启动的地址分布情况:
IROM启动:
由上面的截图可以知道:当OM[4:1]为0100的时候,就会从IROM启动。
IROM(Internal ROM)为芯片内部的一块只读存储器,里面固化了一段代码,以下称之为 ROM Code ;当为IROM启动模式的时候,芯片上电或复位后就先执行ROM Code。
在了解ROM Code的具体执行流程之前我们还需要知道:S3C2416配备了一个叫做“Steppingstone”的内置SRAM(位于地址0x4000_0000,大小为64KB);那些存储在NandFlash的启动代码就是先被复制到这里来执行的。
ROM Code流程:
1:关闭看门狗
2:初始化TCM
3:检测启动设备类型
4:初始化栈区域
5:初始化PLL
6:初始化指令Cache
7:初始化堆区域
8:拷贝启动代码到Steppingstone
9:验证启动代码
10:跳转到Steppingstone运行
当我们的启动设备为NandFlash的时候(通过引脚GPC5/6/7的状态来判断),ROM Code就是把NandFlash从0扇区开始8KB的内容全部拷贝到Steppingstone中,然后通过ECC来验证此段代码,验证通过后便跳入Steppingstone开始执行。
然后就是用进一步互的初始化了。。。。。
如有不合理的请批评指正,旨在分享与进步!
附上自用S3C2416用户手册
S3C2416_UM_Rev1.30_20090306.pdf
(3.77 MB, 下载次数: 44, 售价: 1 分芯积分)
论坛ID:yuanlai2010
发表日期:2014-07-06