Chinaunix首页 | 论坛 | 博客
  • 博客访问: 239358
  • 博文数量: 49
  • 博客积分: 2591
  • 博客等级: 少校
  • 技术积分: 515
  • 用 户 组: 普通用户
  • 注册时间: 2008-03-15 00:03
文章分类

全部博文(49)

文章存档

2009年(3)

2008年(46)

我的朋友

分类: 嵌入式

2009-07-11 20:51:53

   
    最近生产几块刚回来的板子,都是之前调试过的,以为能很轻松的一路下来, 谁知道在忙活了好几天,在兼容性上栽了跟头。

刚开始使用flash完全烧入出现了错误,所有板子无法启动成功,bootloader无法被成功启动
奇怪的是,每个板子出现同样的问题:
进入系统后崩溃,打印:!!!abort_handler=......, 系统随后宕机


经过多次试验:
自己从头开始分别烧写 bootloader + kernel + ramdisk,在insmod 模块后,还是会出现data abort!!!
在axd中调试时,在单步执行到0x500000358时,出现错误,也许是使能了cache之类的,仿真器无法跟踪直接错误退出了

接下来在无意中发现,使用仿真器偶尔可以启动:
在重新烧写flash后,可以进行正常启动,而且没有任何错误,说明保存下来的image是可以正常使用的,但是为什么取下仿真器后就无法正常启动了呢?
    考虑下才明白,这里仿真器需要对一些SDRAM控制器寄存器进行设置,在烧写flash时,程序会在SDRAM中执行。这时复位系统,就可以正常启动了。取下仿真器后,启动代码无法进行SDRAM控制器的设置,这样就无法访问SDRAM,自然不能启动了。

在intel IXP42X specification upd.pdf中查到一条:
部分A0步进处理器可能和一些SDRAM不兼容,但是没有说B0步进处理器的兼容性

在每次烧写flash之后,只要不断电,这时通过仿真器脚本配置的SDRAM控制器的内容是正确的,所以直接重启可以正常运行。

把HY57V561620BT-H 换成 MT48LC16M16A2就可以正常运行了(晕死,拆器件还弄掉了四个焊盘,飞线伺候),虽然现在的器件基本都是pin to pin兼容,但是最好还是参照厂商的文档,选用合适的器件。
阅读(2297) | 评论(0) | 转发(0) |
0

上一篇:【转载】转义字符的完整诠释

下一篇:没有了

给主人留下些什么吧!~~