Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1130674
  • 博文数量: 91
  • 博客积分: 10053
  • 博客等级: 上将
  • 技术积分: 1335
  • 用 户 组: 普通用户
  • 注册时间: 2007-12-01 12:46
文章分类
文章存档

2011年(4)

2010年(22)

2009年(22)

2008年(43)

分类: LINUX

2010-03-10 17:06:58

 
AT9200引导:
 
其中需要的文件包括(loader.bin, boot.bin, u-boot.bin, u-boot.bin.gz)
 
1、at91rm9200内部本身有128k的片内rom,其固化了一个bootloader和uploader,其他存储设备上没有合法的映象时,片内引导将启动uploader,uploader开启xmodem协议,等待用户上传程序,上传的程序将载入片内SRAM,重映射,然后pc跳转到片内SRAM执行上传的用户程序,即loader.bin。
#注:片内SRAM只有16k,除去3-4k片内启动程序的占用的部分数据空间,因此下载的程序大小限制在12k内。
2、loader.bin运行在内部SRAM中,他有3个功能,初始化SDRAM,启动xmodem接收u-boot.bin并写到SDRAM中,pc跳转到SDRAM运行u-boot.bin;
3、此时u-boot.bin只是运行在SDRAM中,并没存储在flash中,他的作用是烧写boot.bin和u-boot.bin.gz到nor-flash的起始地址。boot.bin的作用是将u-boot.bin.gz解压到SDRAM的高端地址并运行。
4、此时系统重启,从片外flash引导,nor-flash的地址是0x00,因此首先运行boot.bin,然后boot.bin再将u-boot.bin.gz解压到SDRAM高端地址运行。
 
####################
 
疑问:
  
 1、u-boot最终运行在SDRAM高端地址中,但是它的中断向量表位置呢?中断向量表不是应该放在0x00的地址上吗?
 
自己的回答:(不一定准确,个人看法)
中断向量表中的跳转地址都是相对地址,u-boot在ram中运行时产生中断,系统还是会从0x00的地址找中断服务子程序,如果u-boot被烧写在0x00地址,就不会有啥问题。但是at9200的0x00地址中存的是boot.bin,就不知道咋弄了,除非boot.bin的中断向量表内容和u-boot的中断向量表内容一致。不然我觉得发生中断肯定不对。
阅读(1996) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~