最近再搞DM368 SPI的UBL启动,没有可以参考的资料,发现有一个问题,请大家看看
RBL在启动时要从SPI EEPROM读取幻数,来判断SPI EEPROM是按16bit地址操作,还是按24bit操作;
先说说测得的时序,板子上电后,CPU通过SPI发起读操作,以24bit的方式读取了0地址的4字节内容(测得一个CS低电平时8X8脉冲);
由读到的第一个字节来判断,以16bit地址操作,还是按24bit操作(我用的是16bit操作的SPI EEPROM),那么问题就来了。
如果描述符的前4个字节是0xA1ACED01
但是512Kbit以下的EEPROM都是16bit的寻址,那16bit寻址时序如下
这样的话,CPU如何正确获得0xA1ACED01中的0x01这个字节呢,按24bit寻址时,CPU会把0xED当做第一个字节,这是怎么回事儿呢??
目前我的测试,CPU从0地址读4个字节,再从0地址读20个节字,然后再重复,始终不会去读后面描述符的内容,也不会读UBL的.bin文件,头晕死了!!!
我的困惑是:
CPU到底又没有把描述符的第一个字节正确读取?
文件描述符到底哪里错了,导致CPU一致重新读取?
我的文件描述符如
{0x01,0xED,0xAC,0xA1,
0x4C,0x5B,0x00,0x00,
0x00,0x00,0x00,0x00,
0x01,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,
0x20,0x00,0x00,0x00,
0x20,0x00,0x00,0x00};
