Chinaunix首页 | 论坛 | 博客
  • 博客访问: 808271
  • 博文数量: 118
  • 博客积分: 2067
  • 博客等级: 大尉
  • 技术积分: 1751
  • 用 户 组: 普通用户
  • 注册时间: 2009-07-17 14:27
文章存档

2016年(1)

2013年(1)

2012年(3)

2011年(26)

2010年(47)

2009年(40)

分类: LINUX

2010-03-15 17:10:41

根据我的经验,芯片公司必问这个:

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) |
给主人留下些什么吧!~~