各位高手好!小弟请教:我在4510最小系统(无文件系统)调试运行成功的情况下尝试添加文件系统到BSP中,但在FLASH:
SST39VF040烧写bootroom后板子跑不起来,最基本的串口调试窗口都没有显示信息,小弟百思不得其解,已经调试了整整两
天了还是没有任何进展,各位高手你们有遇到过类似的问题吗?请帮忙赐教!小弟不胜感激!先谢谢了~
拙见:
按你的描述,推断是加了文件系统支持才出现这一现象的。。。。我考虑有三种可参考的解决方法:
其一,确认,把文件系统支持去掉(把相应开关“关掉”),编译下载,看是不是又变好了。如果确实变好了,那么可以非常肯定的所是因为文件系统引起的了,否则就另找原因了。确认症结所在是最重要的。
其二,延缓,因为你是在BSP的目录下用命令行编译bootrom,所以可以修改config/all/bootConfig.c文件(改前备份,最好“本地化”到BSP自己的目录下,在MAKEFILE中添加一个变量指定)。把所有关于你添加了文件系统后所产生的语句块集中起来(剪切出来),放到一起,做成一个单独的函数(严格按它本身的顺序)。把这个函数放在系统啥都搞完了(usrRoot函数调用bootLoop之前,具体名字可能不准确)的最后调用。因为这时候肯定有标准输入输出了。你可以在这个单独的函数中添加打印信息来一个一个调试了。
其三,深入,条件是你有在线调试器,最好还是支持C语言调试的那种(ARM的很多,价格不贵)。那么就一步一步跟踪,复位后执行的第一条语句肯定跟你的bootInit.s中的bootInit()函数的第一条语句是一样的,然后再关注下,是否正确的进行了地址切换,是否正确的执行到了C语言代码,看看解压与文本、数据复制到RAM是否正常完成,一路下来。因为bootrom映象是压缩版的,你可以编译一个非压缩版的bootrom_uncmp来用用,当然你的FLASH得有那么大才好,借助IDA Pro等反汇编工具观察机器执行的代码与你的映象反汇编出来的代码是否符合的。最后,既然机器没有响应了,要么跑飞了,要么死循环。跑非通常都会造成CPU异常,进入某个异常向量地址,死循环的话就更加明显了。
三种方法我觉得第一条很有必要尝试,第二和第三就根据你自己喜欢来了。个人觉得深入更好一些,对自己学习有好处----因为如果无缘无故又变好了,或者“不知道怎么就好了”,对于搞技术的来说,有一种不过瘾的感觉,没有成就感。
还有注意:看是不是死再TRAP_VALUE那里了,早期调试很多人有这个问题。
看看初始化栈指针放在哪里,溢出了没有(怀疑它是因为怕你的板子内存小,或者基于开发板的BSP没有做仔细考虑)。
啊,多嘴了。
好运。
[align=right][color=#000066][此贴子已经被作者于2007-4-4 14:32:06编辑过][/color][/align]这位大哥,我现在用flash programmer软件将bootrom.hex写到flash中不能自动运行,是不是不能对flash进行擦除操作啊?我现在写进去后无法自动运行,但是在软件在线调证明bootrom是没有问题的,(flash没有建立文件系统,整个作bootrom用)
那如果我想放到flash中自动运行该怎么办呢?
to marker:
你好,flash programmer 在写入之前应该是会进行擦除操作的,按照你的描述,我推测非常类似于你的bootrom没有烧对地方。
因为vxWorks编译生成的bootrom中的烧写指定地址通常是从0开始的,打开HEX文件你就会发现这一特点(如果不知道HEX的结构,可以google一下)。这当然绝对不符合我们的要求,我们要求bootrom被烧写到我们的CPU的复位地址,至于是ROM_BASE_ADRS还是ROM_TEXT_ADRS就看你的BSP是咋搞的,每个CPU架构略有区别。
所以,用flash programmer烧写的话,通常需要指定偏移地址,也就说指定你的bootrom烧写的起始地址。。。
可以试试看吧,也许不对,,,有啥现象再交流下。
to marker:
你好,flash programmer 在写入之前应该是会进行擦除操作的,按照你的描述,我推测非常类似于你的bootrom没有烧对地方。
因为vxWorks编译生成的bootrom中的烧写指定地址通常是从0开始的,打开HEX文件你就会发现这一特点(如果不知道HEX的结构,可以google一下)。这当然绝对不符合我们的要求,我们要求bootrom被烧写到我们的CPU的复位地址,至于是ROM_BASE_ADRS还是ROM_TEXT_ADRS就看你的BSP是咋搞的,每个CPU架构略有区别。
所以,用flash programmer烧写的话,通常需要指定偏移地址,也就说指定你的bootrom烧写的起始地址。。。
可以试试看吧,也许不对,,,有啥现象再交流下。
这个地址应该是没有问题的
我的cpu使用的是mpc860,然后烧到了rom_text_adr,这个应该没有问题,烧写时有考虑偏移;
烧完之后我从flash读内容看的很真切,是从rom_text_adr开始有代码的,
其实还有一个现象: 我从flash读内容操作之后 拔掉bdm线 就可以从flash启动了(真是无语);
但是整个重启系统就没有动静??期望继续得到支持...
有奖活动 | |
---|---|
【有奖活动】分享技术经验,兑换京东卡 | |
话不多说,快进群! | |
请大声喊出:我要开发板! | |
【有奖活动】EEPW网站征稿正在进行时,欢迎踊跃投稿啦 | |
奖!发布技术笔记,技术评测贴换取您心仪的礼品 | |
打赏了!打赏了!打赏了! |
打赏帖 | |
---|---|
【换取逻辑分析仪】自制底板并驱动ArduinoNanoRP2040ConnectLCD扩展板被打赏47分 | |
【分享评测,赢取加热台】RISC-V GCC 内嵌汇编使用被打赏38分 | |
【换取逻辑分析仪】-基于ADI单片机MAX78000的简易MP3音乐播放器被打赏48分 | |
我想要一部加热台+树莓派PICO驱动AHT10被打赏38分 | |
【换取逻辑分析仪】-硬件SPI驱动OLED屏幕被打赏36分 | |
换逻辑分析仪+上下拉与多路选择器被打赏29分 | |
Let'sdo第3期任务合集被打赏50分 | |
换逻辑分析仪+Verilog三态门被打赏27分 | |
换逻辑分析仪+Verilog多输出门被打赏24分 | |
【分享评测,赢取加热台】使用8051单片机驱动WS2812被打赏40分 |