首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

AT91SAM9G20---bootstrap移植(nandflash启动)

AT91SAM9G20---bootstrap移植(nandflash启动)

一,硬件平台简述              9G20是ATMEL公司生产的一款基于ARM926EJ-S工业级ARM9芯片,片内32K数据缓存,32K指令缓存,工作频率400MHz。9G20支持多种外设启动方式,其启动由片内ROM内引导程序检测外设是否可以启动,如果可以启动即进入载入相关外设进行启动。片内ROM阶段称为SAM-BA模式。
                板上搭载nandflash为:K9F1G08    128M大页nandflash.
                SDRAM:64M
二.修改bootstrap源码
                从ATMEL官方网站上下载bootstrap源码,本次使用V1.15版本。解压后为目录为:


(1)添加nandflash支持:
     原bootstrap中并未包含对K9F1G08的支持,有2G08的支持,添加对板上nandflash的支持。     
在include/Nand_ids.h中添加如下代码:


此结构为nandflash数据信息描述结构。
(2)增加nandrecovery功能
     所谓nandrecovery功能是指通过按键实现擦出nandflash中第一块的功能。
9G20只有在没有可以启动的设备时,才会进入SAM-BA模式,而只有此模式下,才可以通过官方SAM-BA软件进行软件的烧写。而SAM-BA检测外设是否可以启动只是检测外设的最前面的地址中是否有异常向量,而一旦认定可以启动,便不再进入SAM-BA模式,此时要想烧写代码,需要断开nandflash连接上电后再连接nandflash或者使用SAM-BA软件加上J-link的方式来擦除nandflash后再烧写。
   由于硬件限制,nandflash芯片和处理器芯片没有断路脚,本人也懒于使用J-link(笔记本上USB口实在紧张),而nandrecovery通过检测按键是否按下来擦除nandflash中的第一块,这样,当按键按下后,通电,然后断电,再上电时,由于nandflash的前部分已经被擦除,SAM-BA模式将判定为nandflash不可启动,由此停留在SAM-BA模式下。当程序死掉,或者有需要时,可以简单的恢复nand。而使用SAM-BA软件烧写。
在boad/at91sam9g20ek下的at91sam9g20ek.c中voidnandflash_hw_init(void)函数体末尾添加
nand_recovery();
在改函数上方添加如下代码:



保存即可。
继承事业,薪火相传
返回列表