DSP28016每个内存地址对应的都是16位(2字节),没有8位的整数
来源:互联网 发布:镭射切割编程 编辑:程序博客网 时间:2024/06/13 12:56
把ARM Cortex M3上的一段代码移植到DSP TMS320F28016上时,发现这个定点DSP中没有UINT8的类型,只有16位和32位的整数。定义一个char实际上也是占用一个字(16位)。并且每一个内存地址对应的也是一个字(2个字节)。
typedef union unCanFrameData{BYTE abyData[8];WORD awdData[4];UINT32 auiData[2];//UINT64 uiData;}UN_CAN_FRAME_DATA;typedef struct stCanFrame_t{UINT32 uiId;ST_CAN_FRAME_INFO stFrameInfo;UN_CAN_FRAME_DATA unData;}ST_CAN_FRAME;
通过调试发现,UN_CAN_FRAME_DATA实际上占用8个字,即abyData[0]和awdData[0]对应同一地址,abyData[1]和awdData[1]对应同一地址。而不是之前想的那样,abyData[0]和abyData[1]共用一个字,与awdData[0]共用内存。
这样就违背了union的初衷。程序只好换一种写法,以适应定点DSP的思维方式。
- DSP28016每个内存地址对应的都是16位(2字节),没有8位的整数
- DSP没有8位的存储单元,都是16位的
- 位、字节、字、地址的联系
- STM32位带操作(bit_band)位带区字节的位所对应的位带别名区地址计算公式的解释
- 51中位地址与字节地址的区别
- 输出64位系统的内存地址
- 字节的位操作
- 打造自己的字节序转换函数(16位、32位和64位)
- 打造自己的字节序转换函数(16位、32位和64位)
- 打造自己的字节序转换函数(16位、32位和64位)
- c#设置或者获取byte(字节、8位二进制整数)某位的的值的代码
- c#设置或者获取byte(字节、8位二进制整数)某位的的值的代码
- 求一个整数对应的二进制中的1的个数(位操作)
- 每个字节实现位倒序
- 返回所有n位整数,每个整数里的值是单调递增的
- 交换一个整数的相邻奇数位与偶数位(即第0位与第1位交换,第2位与第3位交换...)
- 获取16位无符号整数高字节的三种方法(基于小端存储)
- 位运算实现反转字节和求二进制整数中1的个数(无循环)
- C++中 public,protected, private 访问标号小结
- pycharm 2.7 快捷键
- Android 在自己的Activity中获取系统中联系人的姓名,电话等信息 .
- 条款43:学习处理模板化基类内的名称
- android <初级篇> 界面布局<一> ——菜鸟的学习之路
- DSP28016每个内存地址对应的都是16位(2字节),没有8位的整数
- android中的2D绘图基础知识
- POJ 2017 No Brainer(超级水题)
- 实现C字符串常用函数
- Delphi 提示“access violation at address”错误
- HTML特殊符号对照表
- 分享一些OpenCV实现立体视觉的经验
- Netty初步之hello world
- dota==玩物丧志 ?NO