S5PV210的启动过程 4月8号

2019-04-14 17:12发布

学习朱老师嵌入式课程第一天 内存
sram 容量小 价格高  单片机 不需要软件初始化 上电就可用
dram 容量大 价格低   电脑 笔记本 嵌入式的内存  需要软件初始化后才可以使用
外存
norflash可以总线式相连 放启动代码
nandflash不可以总线式相连 不能上电cpu直接读取,需要初始化软件然后通过时序接口读取
所以电脑中的bios就是一块norflash 
以前的嵌入式系统都有一块很小的norflash
现在嵌入式 外接的大容量nand和外接的大容量dram还有soc内置的sram
s5pv210内置了一块96kb的sram 【iram】 还有一块64kb的norflash【irom】

210启动过程
第一步;cpu上电后先从内部irom【0xd0000000】读取预先设置的代码【BL0 代码是三星出厂前设置的,所以不能负责初始化外接的dram】,执行 这一段irom做了基本的初始化 【cpu时钟,关开门狗。。。。】
然后代码会判断我们选择的启动模式,通过硬件的跳线选择启动模式,然后从相应的外部存储器去读取第一部分启动代码【BL1,大小为16kb因为第二步的iram大小不够全部初始化】到内部sram
第二步; 从sram去运行上一步读取来的启动代码BL1,执行,BL1初始化nandflash 然后将BL2【80kb】读取到iram BL2会初始化dram然后将os从nand读取到dram,然后运行
第三部 从iram运行 BL2 初始化dram然后将os从nand读取到dram,然后运行 启动过程结束

思路;因为启动代码大小是不定的,有可能大于96kb,所以两步的启动方式不合适,把启动代码分为两部分【BL1,BL2】 BL0做了什么
1,关开门狗
2,初始化指令cache
3,初始化栈
4,初始化堆
5,初始化块设备复制函数
6,设置soc时钟系统
7,复制BL1到内部IRAM【16kb】
8,检查BL1的校验和
9,安全启动
10,跳转到BL1去执行