在线时间17 小时
UID3054762
注册时间2015-5-8
NXP金币0
该用户从未签到
注册会员

- 积分
- 147
- 最后登录
- 2018-9-28
|
各位好,本人前一阵做keaz128的bootloader,发现flash烧写代码有下列代码,大体的作用应该是烧写补充字节,但是对 BIG_ENDIAN(下面代码的第一行) 的定义,不理解,这个是做什么用的?我在工程中找它的定义没有找到,因此来此求助,有清楚的吗?帮忙解惑
#if defined(BIG_ENDIAN)
u32DwData0 = 0;
pData = (uint8_t*)pDwData; // pointer to the left bytes
for(i = u8WrLeftBytes; i >0; i--)
{
u32DwData0 <<= 8;
u32DwData0 |= *pData++; // MSB byte first
}
// Calculate how many bytes need to be filled with 0xFFs
// in order to form a single longword for the left bytes of data
u8WrLeftBytes = 4 - u8WrLeftBytes;
//
for(i = u8WrLeftBytes; i >0; i--)
{
u32DwData0 <<= 8;
u32DwData0 |= 0xFF; // MSB byte first
}
#else
u32DwData0 = 0xFFFFFFFFL;
pData = (uint8_t*)pDwData+u8WrLeftBytes-1; // pointer to the left bytes
for(i = u8WrLeftBytes; i >0; i--)
{
u32DwData0 <<= 8;
u32DwData0 |= *pData--; // MSB byte first
}
#endif
最佳答案
number573 发表于 2017-4-10 13:02
明白了,那这个模式在哪可以看到呢?去数据手册的看吗?
你可以直接用IDE 仿真下就知道了。比如写入地址是0x123456, 然后查看内存是不是123456,还是数据高低位倒了下。 ...
|
|