原创 基于2410的bootload

2008-6-23 19:46 2222 2 2 分类: MCU/ 嵌入式

s3c2410x bootcode能够执行在一片外部的NANDflash中,为了支持NANDflash的bootloader
2410x配置了一片内部的sram buffer 叫做steppingstone 。当启动的时候,NAND flash的
前4K 的数据将会载入到steppingstone中并且boot code将会在steppingstone中执行


一般来讲,bootcode将会拷贝NANDflash 中的内容到SDRAM中,使用硬件ECC,检验NANDflash
数据的正确性。在拷贝完成之后,主函数将在SDRAM中执行。
特征:
NANDflash 模式:支持 读、擦出、编程 NANDflash 存储器
自动boot模式:芯片复位后bootcode被传输到steppingstone中,传输后,bootcode将会在
steppingstone中执行。
硬件ECC检测模块(硬件检测,软件纠错)
steppingstone 4K 的内部SRAM buffer在NANDflash booting后能被用做其它用途。


自动 boot 模式序列
1、完成复位
2、当自动boot模式使能,NANDflash的前4K的数据拷贝到steppingstone 4K的buffer中去
3、steppingstone被映射到 nGCS0
4、CPU 开始在steppingstone的4K内部buffer中执行bootcode
注意:在自动boot模式下,ECC不会被检测。所以,先前的4K的NANDflash数据不应该有位错误


NANDflash模式配置
1、通过设置nfconf寄存器设置NANDflash配置
2、向nfcmd寄存器写入nandflash命令
3、向nfaddr寄存器写入nandflash地址
4、通过查看NANDflash状态寄存器nfstat,读写数据。R/nB信号应该在读操作前或编程操作后被检测


boot 和nandflash 配置
1、OM[1:0]=00:使能nandflash控制器自动boot模式
2、nandflash存储器每页大小为512字节
3、ncon:nandflash存储器地址步数选择
0:3步寻址
1:4步寻址


2410在读写操作时生成512字节ECC同位码。每512字节的数据ECC同位码包含3个字节
24位ECC同位码=18位行同位+6位列同位


ECC控制模块执行以下步骤:
1、当微控制器写数据到NAND时,ECC控制模块生成ECC码
2、当微控制器从nand读数据时,ECC控制模块生成ECC码,并且拿他与先前写时生成的ECC码相比较


注意:
  存在问题:nandflash控制器不能被DMA访问。
  解决方案:使用LDM/STM指令代替DMA。
 
 
 
  后记:这与2410使用的bootload有关系,因为它使用的是2410修正版的U-boot,而新的U-boot启动
  的过程分为3个阶段。首先在flash中运行汇编程序(其实在steppingstones中),将flash中的启动
  代码部分复制到sdram中,同时创造环境准备运行C程序;然后在SDRAM中执行,对硬件的初始化;最后
  设置内核参数的标记立标,复制镜像文件,进入内核的入口函数。

PARTNER CONTENT

文章评论0条评论)

登录后参与讨论
我要评论
0
2
关闭 站长推荐上一条 /1 下一条