查看: 6754|回复: 4

[已解决] keaz128 bootLoader相关的flash烧写问题

[复制链接]

该用户从未签到

14

主题

64

帖子

0

注册会员

Rank: 2

积分
147
最后登录
2018-9-28
发表于 2017-4-10 12:05:18 | 显示全部楼层 |阅读模式
各位好,本人前一阵做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,还是数据高低位倒了下。 ...
回复

使用道具 举报

该用户从未签到

723

主题

6382

帖子

0

超级版主

Rank: 8Rank: 8

积分
25448
最后登录
2025-9-4
发表于 2017-4-10 12:08:26 | 显示全部楼层
大端模式,是指数据的高字节保存在内存的低地址中,而数据的低字节保存在内存的高地址中,这样的存储模式有点儿类似于把数据当作字符串顺序处理:地址由小向大增加,而数据从高位往低位放;这和我们的阅读习惯一致。
小端模式,是指数据的高字节保存在内存的高地址中,而数据的低字节保存在内存的低地址中,这种存储模式将地址的高低和数据位权有效地结合起来,高地址部分权值高,低地址部分权值低。
没定义说明就是小端模式。
回复 支持 反对

使用道具 举报

该用户从未签到

14

主题

64

帖子

0

注册会员

Rank: 2

积分
147
最后登录
2018-9-28
 楼主| 发表于 2017-4-10 13:02:27 | 显示全部楼层
小恩GG 发表于 2017-4-10 12:08
大端模式,是指数据的高字节保存在内存的低地址中,而数据的低字节保存在内存的高地址中,这样的存储模式有 ...

明白了,那这个模式在哪可以看到呢?去数据手册的看吗?
回复 支持 反对

使用道具 举报

该用户从未签到

723

主题

6382

帖子

0

超级版主

Rank: 8Rank: 8

积分
25448
最后登录
2025-9-4
发表于 2017-4-10 13:20:17 | 显示全部楼层
number573 发表于 2017-4-10 13:02
明白了,那这个模式在哪可以看到呢?去数据手册的看吗?

你可以直接用IDE 仿真下就知道了。比如写入地址是0x123456, 然后查看内存是不是123456,还是数据高低位倒了下。
回复 支持 反对

使用道具 举报

该用户从未签到

14

主题

64

帖子

0

注册会员

Rank: 2

积分
147
最后登录
2018-9-28
 楼主| 发表于 2017-4-10 14:00:04 | 显示全部楼层
小恩GG 发表于 2017-4-10 13:20
你可以直接用IDE 仿真下就知道了。比如写入地址是0x123456, 然后查看内存是不是123456,还是数据高低位倒 ...

只能这样了,以为在数据手册或者pe配置文件中会有。。。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 注册/登录

本版积分规则

关闭

站长推荐上一条 /3 下一条

Archiver|手机版|小黑屋|恩智浦技术社区

GMT+8, 2025-9-6 14:27 , Processed in 0.090400 second(s), 25 queries , MemCache On.

Powered by Discuz! X3.4

Copyright © 2001-2024, Tencent Cloud.

快速回复 返回顶部 返回列表