这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 嵌入式开发 » MCU » 文件系统移植求助

共20条 1/2 1 2 跳转至

文件系统移植求助

菜鸟
2007-04-04 05:15:58     打赏

各位高手好!小弟请教:我在4510最小系统(无文件系统)调试运行成功的情况下尝试添加文件系统到BSP中,但在FLASH:

SST39VF040烧写bootroom后板子跑不起来,最基本的串口调试窗口都没有显示信息,小弟百思不得其解,已经调试了整整两

天了还是没有任何进展,各位高手你们有遇到过类似的问题吗?请帮忙赐教!小弟不胜感激!先谢谢了~




关键词: 文件     系统     移植     求助    

菜鸟
2007-04-04 05:37:00     打赏
2楼
有仿真器跟踪一下,在关键地方设几个断点。映象与文件系统在一个Flash上,是否把bootrom搞坏掉了。另外提醒:如果bootrom在Flash中运行,对Flash的插除操作是不能搞的。。。主要还是跟踪下。。

菜鸟
2007-04-04 06:45:00     打赏
3楼
以下是引用yaopg在2007-4-3 21:37:00的发言:
有仿真器跟踪一下,在关键地方设几个断点。映象与文件系统在一个Flash上,是否把bootrom搞坏掉了。另外提醒:如果bootrom在Flash中运行,对Flash的插除操作是不能搞的。。。主要还是跟踪下。。

yaopg你好!谢谢你的建议,我可以用这种方法检查一下!但现在问题是我的bootrom跟文件系统不在同一块FLASH上,应该不会存在破坏的问题吧,所以对没有启动现象的板子我还是没太有思路,还请指点谢谢!


菜鸟
2007-04-04 19:41:00     打赏
4楼
bootrom使用的flash地址应该在flash的开始部分,并且boot部分的二进制文件必须直接读取,不能通过文件系统操作,检查一下flash的开始部分的内容,不要被文件系统创建的时候给格式化了。

菜鸟
2007-04-04 22:31:00     打赏
5楼

拙见:

按你的描述,推断是加了文件系统支持才出现这一现象的。。。。我考虑有三种可参考的解决方法:

其一,确认,把文件系统支持去掉(把相应开关“关掉”),编译下载,看是不是又变好了。如果确实变好了,那么可以非常肯定的所是因为文件系统引起的了,否则就另找原因了。确认症结所在是最重要的。

其二,延缓,因为你是在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]

菜鸟
2007-04-05 05:59:00     打赏
6楼

谢谢楼上各位高手的指点~小弟问题已经解决!过两天调试完成把心得贴出来供大家一块分享,提意见!呵呵!

特别感谢yaopg高手 又给我的学习和研究指点很多正确的前进方向!!!


菜鸟
2007-04-05 17:47:00     打赏
7楼
以下是引用yaopg在2007-4-3 21:37:00的发言:
有仿真器跟踪一下,在关键地方设几个断点。映象与文件系统在一个Flash上,是否把bootrom搞坏掉了。另外提醒:如果bootrom在Flash中运行,对Flash的插除操作是不能搞的。。。主要还是跟踪下。。

这位大哥,我现在用flash programmer软件将bootrom.hex写到flash中不能自动运行,是不是不能对flash进行擦除操作啊?我现在写进去后无法自动运行,但是在软件在线调证明bootrom是没有问题的,(flash没有建立文件系统,整个作bootrom用)

那如果我想放到flash中自动运行该怎么办呢?


菜鸟
2007-04-05 18:33:00     打赏
8楼

to marker:

你好,flash programmer 在写入之前应该是会进行擦除操作的,按照你的描述,我推测非常类似于你的bootrom没有烧对地方。

因为vxWorks编译生成的bootrom中的烧写指定地址通常是从0开始的,打开HEX文件你就会发现这一特点(如果不知道HEX的结构,可以google一下)。这当然绝对不符合我们的要求,我们要求bootrom被烧写到我们的CPU的复位地址,至于是ROM_BASE_ADRS还是ROM_TEXT_ADRS就看你的BSP是咋搞的,每个CPU架构略有区别。

所以,用flash programmer烧写的话,通常需要指定偏移地址,也就说指定你的bootrom烧写的起始地址。。。

可以试试看吧,也许不对,,,有啥现象再交流下。


菜鸟
2007-04-05 18:54:00     打赏
9楼
以下是引用yaopg在2007-4-5 10:33:00的发言:

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启动了(真是无语);

但是整个重启系统就没有动静??期望继续得到支持...


院士
2007-04-05 18:55:00     打赏
10楼

楼上的marker小弟

钻研精神值得称道


共20条 1/2 1 2 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]