继续
无意中看到一个4510B 的bootload介绍(作者杜云海)写的非常精彩。
在其中了解了一个东西,在编译后生成的iamge里, 如何确定RW的位置呢?
因为不管是用ADS还是用MDK,生成image都是有规则的,比如一定要按照顺序 RO,RW,ZI,根据RO_BASE和RO_LENGTH,其实就可以知道RW_BASE in nand了。
在进行nandcopy时就知道copy的源地址啦。。。而RW的运行域地址,可以是在分散加载文件里面指定的。就是这么简单?自己笨了好久。
今天试了下 DNW , SFJ2410(这个挺好,不过只能在并口下玩),回头可以研究一下这两者的代码。不知道sfj2410烧录的时候,也没有做坏块管理,没有做的话,可能会出问题的。比如提供的vivi(晚上回去用MDK烧录工具试一下能否运行哈哈 ),大小为85KB,满打满算的话需要14个左右的block来,这个既然能正确启动linux内核,应该说明sfj2410烧录nand时做了坏块区分的,而后vivi本身也有坏块的处理。两者结合运行才没有问题。
NND不能拖了,今晚回去必须首先看MMU(正在看的过程中,有难度啊,真的是博大精深)
NND,使用MDK下载bin文件,发现下载时工具只认axf文件。。。很奇怪,为什么不是直接下载bin的呢?那生成bin有什么用???
不过暂时就不能验证VIVI用MDK烧录工具的烧录运行情况了。。。(除非在MDK环境下编译一把VIVI)
看来只好采用在ADS下加载bin文件的方式来做了。
2010/01/21
1. 晚上回去试一下ADS下加载bin文件,直接在ADS或者MDK下无法用fopen等操作了(不知道MDK的脚本机制能不能load file到指定位置)
尝试1.把vivi改名为vivi.axf放到out目录下,不要编译直接点击download报错,Erase Skipped,这说明原先正常生成的axf文件里面有些特殊的信息会反馈给MDK中nandlash烧写程式
我现在直接裸把vivi改成vivi.axf,导致烧写失败;(这是MDK一个很搓的地方,不能指定烧写bin或者hex的文件,只能按照默认的来)
尝试2.在flash download设置选项中,增加填上init file一项,添加了一个ini文件,里面下LOAD VIVI.HEX发现仍然不行(全路径也试了还是不行,报错invalid absolute module)
并且之前的MDK工程默认的axf文件依然会被加载进入,尝试失败
尝试3.在SDRAM调试运行环境下,把vivi改成vivi.o并放入out目录下,在sct文件中添加一项用于装载vivi的执行域。但是失败,猜想可能是因为编译生成的link文件中没有vivi.o这一项
尝试4.把vivi通过工具 BIN2C_WIN
2410学习笔记 07 (未整理,但对新手肯定有用)
最新推荐文章于 2023-05-27 19:49:26 发布