- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
ARM调试笔记BIOS
ARM调试笔记BIOS
?????? 由于调试耗费了我太多时间,所以记录下来,方便以后复习,同时也希望能给初学者一点儿启示,大家少走弯路。
??????? 我是去年开始听说ARM的,可能是本人太闭塞了吧。看到后就有一种想玩的冲动,想从51升级ARM。网上都说44B0比较适合初学者。机缘巧合,21ic上看到有人叫卖44B0空板,很便宜100RMB,主板加简易JTAG小板。做研发的都穷啊。还不错,钱汇过去,板子第3天就回来了,就是网上流行的那个44B0 PCB。贴个图吧,随便找了块和我那块板子一模一样的:
?
??????? 拿到板子挺高兴的,检查了一下线路没问题。就按对方提供的BOM单采购元器件。先把电源部分焊上,测量没问题,再把必要的元器件焊上(CPU、SDRAM、FLASH、UART),同时还有JTAG小板。量电源和地没有短路,上电!电源灯亮了,没冒烟。
???????下面一步就是把BIOS程序烧写到FLASH上了,对方提供的是FLUTED,按照说明操作,烧录失败!这下傻了,最怕的就是这个,对于一个初学者来说,简直是灭顶之灾啊。首先怀疑CPU或FLSH是否虚焊,我的焊接水平一般,所以很值得怀疑,只好又搪了一遍。但问题依旧。又怀疑JTAG小板,仔细检查了一下没问题啊,跳线插插拔拔的也没无济于事。怀疑并口,重启进BIOS,并口设置也没问题。当天是没办法了,睡觉吧。
??????? 第二天就开始联系供应商,寻求帮助,但没什么结果。也是,就100块钱,还要什么服务啊。只好自己找问题,看到原理图上FLASH用的是SST 39VF160 ,我记得我的不一样啊?我的BOM上写的是AM29LV160,我又询问了供应商,他确认了一下说他的BOM写错了。狂晕啊。不过还好,终于找到问题了,但换FLASH还得周末去买啊,等不及了,看看这个能不能凑合用吧,改FLUTED的FCD文件,就是根目录那个DEFAULT.FCD。找到2块FLASH的Datasheet对比着改,连改带调,2个晚上,终于烧录成功了。拔下JTAG,接上串口,打开超级终端。复位,一堆乱码,我想应该差不多了,试着更改超级终端的设置。终于成功了,我看到BIOS的提示信息了,敲个help进去,出来一堆,当时感觉好爽,这个程序做的不错,和DOS一个感觉了,哈哈。
??????? 然后焊上网络部分,输入ap,可以ping通,网络基本正常。随后就是下载uClinux了,按照供应商的说明文档,先把程序从0地址拷贝到0x1f0000,我运行copy命令,程序复位。重试,依旧。第一个想法就是,BIOS内部程序擦写FLASH的函数和我的芯片不兼容,无奈,只好对比着两块FLASH的Datasheet修改BIOS程序。调试了一个多礼拜,依旧。这下彻底崩溃了,感觉程序应该没有问题了。最终不得不放弃,只好换芯片,把AM29LV160换成了SST39VF160。 用最初的BIOS,但现象还是依旧,这可是怎么回是啊?仔细想了一下,会不会因为程序代码在FLASH里,而我又去擦除和写FLASH导致的系统崩溃?擦写FLASH的底层源码都有End-Detection, 例如擦Sector的BIOS源码,在发送完命令字后,有如下一段代码进行判断:
?while(1)?{??U16 i;
??i = *((volatile U16 *)sector)0x40;??if(i!=*((volatile U16 *)sector)0x40)?//D6 == D6???continue;??if(*((volatile U16 *)sector)0x80)????break;????????//D7 == 1?}??????(CODE - 1)??????? 用了2种方法判断擦除操作是否成功,看芯片资料,在这个时候,你去读FLASH那个扇区地址的话,会得到擦除是否成功的信息,而不是得到那个扇区号所对应绝对地址的数据!也就是说在这个时候去读特定地址sector会出错,那么是不是必须在擦写操作完成后,CPU才能取指,运行程序代码?对于我的这块板子,我感觉是这样的。因为它总是会DOWN在这里。但以前碰到过其他CPU,可以在同一块FLASH存储程序,同时程序又可以擦写这块FLASH的情况。这种区别会不会是不同FLASH型号造成的?期待指点。结论:S3C44B0的FLASH(39VF160)不能在自身运行程序的同时,对自己进行擦写操作。
?????? 那BIOS的源码有问题了,我该怎么做?看来现在只能把BIOS从Flash里copy到SDRAM中才行。用move命令实现copy: move 0 0xc000000 10000。但当我run 0xc000000 时,程序重启,为了确认程序是从哪里执行的,我写了一个读pc命令rdp
您可能关注的文档
最近下载
- 渠道护砌工程施工方案砼预制块护坡施工渠道砼工程砼格埂.docx VIP
- 气调库工程项目可行性研究报告.docx
- 2025年二级矿井维修电工(技师)技能认定理论考试题库资料(含答案).pdf
- 功能性食品学 课件 第8章 益生菌及其活性代谢物.pptx
- 实验室质量管理体系文件.docx VIP
- 电工高级技师实操考试试卷.pdf VIP
- 初中阶段初阶词汇初级-如何记单词.docx VIP
- 中文版安德森吞咽困难量表的信效度和临床应用评价.pdf VIP
- (正式版)D-L∕T 611-2016 300MW~600M级机组煤粉锅炉运行导则.docx VIP
- BSL实验室生物安全管理体系文件.docx VIP
文档评论(0)