根据我的经验,芯片公司必问这个:
1. s3c2440根据PIN脚电平知道是nand flash还是norflash启动,假定为nandflash启动,norflash启动更简单,在此不做分析
2. 2440根据PIN脚知道外接的nand flash的指标参数,包括页大小,块大小等
3. 读取nand flash的前4K字节到片内的RAM中,并开始从第一条指令执行,此时虽然nand flash控制器没有设置,但芯片知道如何读取,因为上一步已经检测到flash的配置了,这一步是ARM自动执行的,对程序员透明。
4. 进入管理模式,关中断,关看门狗,设置FCLK:HCLK:PCLK时钟
5. 清空数据/指令cache,关闭MMU,设置内存控制器
6. 设置nand flash控制器,并将其内的自身代码复制到TEXT_BASE位置,该位置在配置文件中指定,是SDRAM的地址空间
7. 校验读取的uboot,比较前4K的内容是否相等,不等说明有错误。地址0在片内,与地址TEXT_BASE的内容比较
8. 设置堆栈,清空BSS段,跳到start_armboot处执行。start_armboot地址在编译时决定。跳转前在芯片内RAM中执行,跳转后在外部SDRAM中执行,因为跳转的地址在SDRAM地址范围内
至此开始了C语言的设置阶段。
阅读(1712) | 评论(0) | 转发(0) |