共2条
1/1 1 跳转至页
SD,MMC 关于SD/MMC卡的高低字节倒转的问题。
问
请问各位大侠:
我按照SD卡的协议,由高位到地位的送出数据。然后我用WINHEX这个软件来看卡上的数据,但是卡上的数据是高字节和低字节反过来了。
例如,我往SD卡上0x10000地址上写入一个字0x12345678. 应该0x12在最高字节,然后才到0x34.
但我在winhex上却看到
0 1 2 3
0x10000 12 34 56 78 变成了0x78在高字节的位置上了。
请问有没有那位大侠碰到过此问题的?
请不吝赐教。感激不尽!
答 1: 这是文件系统的小端存储方式 答 2: 还再请教一下。不好意思,来迟了。感谢busy兄的回复。
刚才上网查了一下小端存储和大端存储的区别,概括的说小端存储是高字节就摆在高地址上, 低字节摆在低地址上,而大端存储则相反。
例子如下:
如果我们将0x12345678写入到以0x0000开始的内存中,则结果为
big-endian little-endian
0x0000 0x12 0x78
0x0001 0x34 0x56
0x0002 0x56 0x34
0x0003 0x78 0x12
还想请问一下busy兄及各位大侠:
是不是由于我的ARM设定的是大端的模式,然后用这种模式去和SD卡传输数据才会造成这种情况?
谢了!
答 3: 已经确定了我们的ARM是小端存储方式。刚才问了我们的同事,确定了我们的ARM芯片用的是小端存储的方式。
照这样的推论是否是SD卡的存储方式就是是大端存储,才会造成这样的结果。
我也查了一下SD卡的资料,暂时没有发现有设定SD卡是大端存储还是小端存储的命令。
同时也不知道是不是winhex软件看的结果是否就是真实的SD卡内的存储结果。
不知道busy兄说的文件系统的小端存储方式是什么意思?
请各位大侠多指教。谢!
答 4: SD卡是8位的存储器! 答 5: RE“小端存储是高字节就摆在高地址上, 低字节摆在低地址上,而大端存储则相反”正是这样!
你应该确认“ARM芯片是否真的配置在”小端存储的方式“!!!!
如果你的ARM芯片真的配置在小端存储方式,那就应该检查你的程序了! 答 6: 不管大端小端,写进去,读出来应一致的 答 7: 调整你的FAT的写入方式就可以了。调整你的FAT的写入方式就可以了。跟SD的协议没有关系。ARM 使用的是Little Endian 模式的,这点和X86是反过来的。 答 8: FAT是大端模式前些天开发USB的时候自己些格式化程序,做BPB表的时候发现BPB表里面的参数都是大端模式存放。你存放数据的时候按照字节一个一个存放应该不会有问题的。但是要确定ARM用的是哪种格式。 答 9: FAT是小端模式吧?低字节在先的。
我按照SD卡的协议,由高位到地位的送出数据。然后我用WINHEX这个软件来看卡上的数据,但是卡上的数据是高字节和低字节反过来了。
例如,我往SD卡上0x10000地址上写入一个字0x12345678. 应该0x12在最高字节,然后才到0x34.
但我在winhex上却看到
0 1 2 3
0x10000 12 34 56 78 变成了0x78在高字节的位置上了。
请问有没有那位大侠碰到过此问题的?
请不吝赐教。感激不尽!
答 1: 这是文件系统的小端存储方式 答 2: 还再请教一下。不好意思,来迟了。感谢busy兄的回复。
刚才上网查了一下小端存储和大端存储的区别,概括的说小端存储是高字节就摆在高地址上, 低字节摆在低地址上,而大端存储则相反。
例子如下:
如果我们将0x12345678写入到以0x0000开始的内存中,则结果为
big-endian little-endian
0x0000 0x12 0x78
0x0001 0x34 0x56
0x0002 0x56 0x34
0x0003 0x78 0x12
还想请问一下busy兄及各位大侠:
是不是由于我的ARM设定的是大端的模式,然后用这种模式去和SD卡传输数据才会造成这种情况?
谢了!
答 3: 已经确定了我们的ARM是小端存储方式。刚才问了我们的同事,确定了我们的ARM芯片用的是小端存储的方式。
照这样的推论是否是SD卡的存储方式就是是大端存储,才会造成这样的结果。
我也查了一下SD卡的资料,暂时没有发现有设定SD卡是大端存储还是小端存储的命令。
同时也不知道是不是winhex软件看的结果是否就是真实的SD卡内的存储结果。
不知道busy兄说的文件系统的小端存储方式是什么意思?
请各位大侠多指教。谢!
答 4: SD卡是8位的存储器! 答 5: RE“小端存储是高字节就摆在高地址上, 低字节摆在低地址上,而大端存储则相反”正是这样!
你应该确认“ARM芯片是否真的配置在”小端存储的方式“!!!!
如果你的ARM芯片真的配置在小端存储方式,那就应该检查你的程序了! 答 6: 不管大端小端,写进去,读出来应一致的 答 7: 调整你的FAT的写入方式就可以了。调整你的FAT的写入方式就可以了。跟SD的协议没有关系。ARM 使用的是Little Endian 模式的,这点和X86是反过来的。 答 8: FAT是大端模式前些天开发USB的时候自己些格式化程序,做BPB表的时候发现BPB表里面的参数都是大端模式存放。你存放数据的时候按照字节一个一个存放应该不会有问题的。但是要确定ARM用的是哪种格式。 答 9: FAT是小端模式吧?低字节在先的。
共2条
1/1 1 跳转至页
回复
有奖活动 | |
---|---|
【有奖活动】分享技术经验,兑换京东卡 | |
话不多说,快进群! | |
请大声喊出:我要开发板! | |
【有奖活动】EEPW网站征稿正在进行时,欢迎踊跃投稿啦 | |
奖!发布技术笔记,技术评测贴换取您心仪的礼品 | |
打赏了!打赏了!打赏了! |