收藏 分销(赏)

redboot烧写.doc

上传人:xrp****65 文档编号:7662674 上传时间:2025-01-11 格式:DOC 页数:3 大小:31KB 下载积分:10 金币
下载 相关 举报
redboot烧写.doc_第1页
第1页 / 共3页
redboot烧写.doc_第2页
第2页 / 共3页


点击查看更多>>
资源描述
我的ep9312开发板烧写流程随笔 (2009-08-02 16:12) 分类: ecos和redboot开发 Attempt to read the “CRUS” or “SURC” HeaderID in ASCII in FLASH memory at (FLASH Base + 0x1000), verifying the HeaderID. This is read in for each FLASH Chip select, and then do the following: 所以在 0x1000开始处存放了0x53555243数据,即:CRUS,但是Boot ROM读取0x1000数据为CRUS之后,仍然将执行权交给0偏移处的语句. 如果CRUS放到了0x0偏移,那么Code execution will start at address (FLASH base + 0x4). Processor will be in ARM SVC mode. 和0x1000不太一样的是,Boot ROM此时会将执行权交给0x04偏移处的语句. AtmelF1024为1M的SPI接口存储器 arm-linux-objdump -DS -b binary -m arm redboot.bin //=================================================== 默认的download下载源程序,存在不等待数据发送完成就发送下一个的错误, 所以在SendChar函数中加入WaitTillEmpty()[需要7分钟烧redboot]或者usleep(1000)[仅仅需要3.5分钟] 都能够解决问题,不能操作ttyUSB0串口,添加支持代码之后执行make,即可正常使用linux下的download软件了. download设置为9600,n,8,1之后发送2048字节的启动loader,即flasher.rom,当发送完2048字节的flasher.rom之后,boot rom会将 执行权交给flasher.rom程序,之后flasher.rom程序会先发送'>'字符上来,然后就是和download交互,完成redboot.bin文件的下载和烧写了. //=================================================== 1.将串口连接到P1(就是最靠外边的那个串口);将JP5跳到靠近cpu的那边. 2.9600,8,n,1配置之后,按开发板上的reset键,就可以在串口上见到 >>>提示符,每按一次出现一个>提示符. 3.使用cmd,下载通过串口程序,因为我使用的是usb2serial,它生成出来的串口号为4,所以下面使用 download.exe -p4 -b115200 redboot.bin,回车之后提示:Waiting for the board to wakeup...然后按一下开发板上的复位键,数据就开始下载了. C:\Documents and Settings\Administrator>E:\开发板光盘\EP9315-CD\我的研究\download.exe -p4 -b115200 E:\开发板光盘\EP9315-CD\我的研究\redboot.bin Programming the FLASH...( 10%) 4.下载完成之后,将JP5跳到远离CPU的一端或者取下,串口波特率改为57600,复位开关或者重新上电,即可看到redboot的启动log了. EDB9307的RedBoot移植 硬件电路与启动方式 EDB9307采用的是基于ARM920T的EP9307的芯片; SDRAM接在nSDCE0上,两块K4S561632E-UC75,总大小为64M; FLASH接在nCS6上,一块JS28F128-J3D75,总大小为16M,128KB/Block。 EDB9307采用的是EP9307芯片的片内Boot ROM启动,关于具体的启动方式可参见EDB9307的《Technical Reference Manual》,我只简单描述Boot ROM中的部分启动方式。 UART Download模式: 启动Cirrus Logic提供的download.exe程序,烧写bin文件; 例:download.exe -p 1 -7 9307 Redboot.bin bin文件被下载,并被烧写到Flash的零地址处; 烧写完成后会有烧写成功的提示 注:关于download程序,Cirrus公司有提供源码,我没有分析过源码,但是从启动方式的描述中得知,这种模式只会从串口接受2KB的数据并存储到MAC的缓冲区启动,所以猜测这段2KB的程序应该是个负责下载和烧写的程序,如果大家有兴趣的,可以自己去研究。 另外,下载后再重新Reset板子后,上电初始化Flash时在超级终端会出现如下的信息:FLASH configuration checksum error or invalid key 解决的方法可以参考 FLASH启动模式: 先检测Flash的0x0地址处是否有CRUS或SURC的ASCII码; 如果有,从Flash的0x4地址处读取代码执行; 如果没有,检测Flash的0x1000处是否有CRUS或SURC的ASCII码; 如果有,从Flash的0x0地址处读取代码执行; 注:Boot ROM中Flash的启动方式为以上两种,Cirrus提供的Redboot采用的是后一种启动方式 下面转载的是其他人对U-Boot移植过程(转帖),暂时我还没有试过 移植中首先参考了EP9312的一个Patch,在此Patch的基础上进行了移植。 移植过程 修改board/edb93xx目录下文件: 修改config.mk中的TEXT_BASE地址为0xc3f00000; 修改SDRAM初始化过程,相关代码在memsetup.S和sdramcfg.S两个汇编文件里; 修改edb93xx.c文件中对0x80080018的赋值,Flash在EDB9315A中的位宽为16位; 修改flash.c文件,在EP9312的patch中,此程序是对位宽位32位的Flash(电路上应该是两块16位宽的Flash并联)进行操作,所以并不适用于EDB9315A的开发板,修要对代码进行修改,参考Intel的28F128J3的Datasheet,可了解Flash的一些基本操作过程; EP9312的Patch对网卡和串口的初始化及操作都没有问题,所以不用修改。 注:修改U-Boot代码的过程中参考了Cirrus Logic提供的Redboot代码,从中得到了许多帮助。 使用方法 #tar -zxf patchfile.tar.gz #cp patchfile u-boot-1.1.2/ #cd u-boot-1.1.2 #patch -p1 < patchfile #make edb9315_config #make
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 教育专区 > 其他

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服