本帖最后由 silverpal 于 2013-12-20 09:29 编辑
今天偶然发现AM335x的手册中一个奇葩的问题。我在用AM335x的DMA访问USB控制器时,发现USB QUEUE Manager的某些寄存器被定义到Memory Map中标明是“Reserved”的区域中去了,导致我访问这些寄存器时进入Data Abort异常。例如:QUEUE_0_A相对于USB Queue Manager寄存器的基地址0x4740_4000的偏移是0x2000,那么它的实际地址为0x4740_6000,而这个地址位于Memory Map中标记为“Reserved”的区域。这种事情也能发生?TI的手册不会是乱写的吧?更奇葩的是TI提供的StarterWare也是按这种定义实现的!那么他们真的测试过这种情况并且通过了?或者他们根本没有做过全面的测试。
我用的手册版本是:spruh73h 2013年4月修订版,大家可以自己查证。 |