OMAPL138 ARM与DSP冲突

一. NAND与SDRAM冲突


从OMAPL138的架构上看 EMIF总线上连接着NAND和SDRAM

也就是说这2个设备是不能同时访问的


假设NAND上的文件系统是yaffs2, 128page/block, 2kB/page,

如果 DSP程序正在访问SDRAM时进行下面的操作


1. ARM写NAND, 此时会100%造成磁盘坏块, 这些个坏块用 flase_eraseall 命令无法擦除, 只能屏蔽, 用nand srub可以擦除, 证明这个是伪坏块

2. ARM程序读NAND文件, 此时有一定概率, 5%~30%会读错, 文件越大越容易错

3. 加载libc, 这个是最隐含的, 当arm程序第一次调用libc时, 相应的so才会被调入内存, 比如 log10函数, 若第一次调用它的时候, dsp在访问SDRAM就会错


解决方案:

在上面的三种情况下, ARM程序向DSP程序放指令, 让DSP暂停, 此时DSP程序进入while(1)中, 待收到ARM唤醒命令后再恢复访问SDRAM

让DSP暂停/恢复是由ARM/DSP程序自定义的方法实现, 没有标准



二. DDR与DSP冲突

当ARM程序使用DDR作为内存时, 若出现下列情况, ARM程序, 包括整个linux都会变得非常缓慢

1. DSP程序形如

    while (1 );

    改为在while里加sleep能解决

2. DSP程序访问外设, 如AD采样, 随着访问频率的增加, ARM程序会越来越慢

   改为在每个访问操作之间加延时能解决



结论

OMAPL138系列把ARM和DSP集成到一个芯片上降低成本, 降低功耗, 降低空间

带来的是开发成本的增加, 上面这些都是我在开发中慢慢发现的, 耗费了非常多的时间.

陷阱应该还有我没发现的.

总之还是一分钱一分货啊, 下次做开发不能再用几合一的了





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值