ZHCACD3A march   2023  – april 2023 TMS320C28341 , TMS320C28342 , TMS320C28343 , TMS320C28343-Q1 , TMS320C28344 , TMS320C28345 , TMS320C28346 , TMS320C28346-Q1

 

  1.   1
  2.   摘要
  3.   商标
  4. 1引言
  5. 2字节与字术语
  6. 3需要考虑的要点
    1. 3.1 不支持 8 位数据类型
    2. 3.2 存储器大小用 16 位表示
    3. 3.3 数组和结构:各个元素偏移量是不同的
    4. 3.4 标准数据类型宽度的差异
    5. 3.5 处理 8 位通信协议
  7. 4参考文献
  8. 5修订历史记录

数组和结构:各个元素偏移量是不同的

  • 在 C28x 中,每 16 位有一个唯一地址,而 Arm 器件中为 8 位。

    示例:

    uint32_t  Array32[4]   = {1,2,3,4};
    uint16_t  Array16[4]   = {1,2,3,4};
    uint8_t   Array8[4]    = {1,2,3,4};
    GUID-20230206-SS0I-FWV5-ZFVG-F5SDBCMRRQTF-low.png图 3-1 C28x 内核中的存储器分配
    GUID-20230206-SS0I-QCTJ-QTCS-TJGBVSMJ7VVJ-low.png图 3-2 Arm 内核中的存储器分配
  • 使用数组时,基于索引的访问和基于指针增量的访问将在两个器件中产生相同的结果。但是,如果您尝试使用硬编码偏移,则会产生不同的结果。
    GUID-20230206-SS0I-6HWB-SWVP-VDGN4LD4QDP7-low.png
  • 这同样适用于结构体。struct.element 在两个器件中提供相同的结果,而使用 (baseaddr + offset) 访问结构体。