ARM启动模式(OK6410开发板)
平台:ARM11 三星S3C6410
开发板:飞凌OK6410-A开发板
datasheet中这张表列出了s3c6410支持的启动模式
根据飞凌的底板原理图的boot select 部分可知 ‘OM0’信号为S3C6410芯片时钟源选择信号,当‘OM0’信号为“0”时选择‘XTlpll’:当‘OM0’信号为“1”时选择‘EXTCLK’。这里,OK6410开发板使用‘XTlpll’,所以‘OM0’直接下拉接地。OM1-OM4信号为S3C6410处理器启动方式配置引脚。
‘SELNAND’信号用来选择系统FLASH存储器类型,当选择NAND FLASH时必须为高电平‘1’,选择ONENAND存储器时为低电平‘0’,OK6410开发板使用NAND FLASH存储器,所以这里直接上接为高。
‘EINT13-EINT15’为IROM启动方式设备选择引脚,当使用IROM启动方式时,S3C6410处理器首先运行片内ROM固化程序,读取EINT15、EINT14、EINT13三个端口引脚状态,再根据本配置的不同状态,从而选择不同的设备启动。
飞凌OK6410支持从Nand Flash启动和SD卡启动
比对拨码开关设计与datasheet,从SD卡启动时,s3c6410先从ROM启动运行固化的程序,再根据引脚设置从SD拷贝程序运行。根据NandFlash启动(以ROM为启动设备,NandFlash为IROM的存储设备,不能称为NANDFlash启动)的拨码开关设置,在datasheet 中是reserved功能。网上搜索后得知,s3c6410的启动方式兼容s3c6400。Samsung在S3C6410 User Manual中隐藏了S3C6400中所支持的Nandflash启动模式。
飞凌OK6410提供的两种启动方式:
1. NandFlash启动
根据飞凌的拨码开关设置,启动方式为地址周期为5的大页。K9LBG08U0D。从S3C6400和s3c6410的datasheet NAND FLASH CONTROLLER章节中可知NandFlash控制器将Nandflash前8K代码(4页)拷贝至SRAM中执行。
内存映射如图
2. IROM启动
当OM[4:1]为1111的时候,从Internal ROM中启动,此时GPN[15:13]用于识别设备的类型,设置为000时存储设备为SD/MMC。具体引导过程可以从6410的Application Note(Internal ROM Booting)手册中查询。
1. 处理器上电后,当OM[4:1]=1111时,运行iROM中的固化程序Bootloader0(BL0),它会做一些初始化的工作。
2. 然后根据GPN[15:13]的管脚设置,选择从相应的设备(SD/MMC/OneNand/Nand)中的指定区域读取8KB Bootloader1(BL1)的程序到SteppingStone中运行。
3. BL1可以初始化系统时钟,UART,SDRAM等设备,然后拷贝Bootloader2(BL2)到SDRAM中。
4. 跳转到SDRAM中的BL2,继续运行,BL2可以将OS加载到SDRAM中,然后运行OS。
当选择SD/MMC作文ROM启动的存储设备时,D-TCM0的heap区保存存储设备的信息。
IROM中固化了6个用于从不同存储设备拷贝数据的函数,函数指针保存在D-TCM1的栈中