• 连接命令文件.cmd


    编译器

    编译器产生可以重新定位的数据和代码模块称为段。

    • 默认将全局和动态变量分配到.ebss或bss段。如SciaRegs和SicbRegs.
    • 寄存器文件变量采用# pragma DATA_SECTION命令分配到数据空间(.ebss或bss段)

    #pragma DATA_SECTION

    利用CCS进行DSP编程时,如果不指定变量的存储位置,那么编译器会自动给变量分配存储位置,但是,有些时候,需要将某个变量存放到某个特定的位置,这个时候就可以利用#pragma DATA_SECTION指令了

    第一步,利用#pragma DATA_SECTION指令将变量xxxCmdBuf关联到SECTIONS“ramdata”;

    #pragma DATA_SECTION(xxxCmdBuf,“ramdata”);
    uint16_t xxxCmdBuf[4];

    第二步,修改CMD文件使得“ramdata”映射到指定的地址空间。

    MEMORY
    {
    PAGE 0 :   /* Program Memory */
    ......
    
    PAGE 1 :   /* Data Memory */
    ......
    RAML_XXXCMD     : origin = 0x00BFF0, length = 0x000004     
    }
    ......
    
    SECTIONS
    {
    ......
    ramdata         : > RAML_XXXCMD,   PAGE = 1
    ......
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17

    只需完成上述简单的两步就可以将某个变量指定到特定的位置。

    TI 的技术文档《Programming TMS320x28xx and 28xxx Peripherals in C/C++》(SPRAA85D–November 2005–Revised January 2013)对该方法也有相应的描述

    SECTIONS
    {
    /* Allocate program areas: */
    ......
    ramfuncs       : LOAD = FLASHD, 
                     RUN = RAML0_1,                                    
                     LOAD_START(_RamfuncsLoadStart),
                     LOAD_END(_RamfuncsLoadEnd),
                     RUN_START(_RamfuncsRunStart),
                     PAGE = 0
    
    上面代码中, 
    LOAD = FLASHD, //指定了要加载程序在Flash里的地址段 
    RUN = RAML0_1, //指定了在RAM里运行程序的RAM地址段 
    LOAD_START(_RamfuncsLoadStart), // 所要加载程序在Flash里的初始地址 
    LOAD_END(_RamfuncsLoadEnd), // 所要加载程序在Flash里的结束地址 
    RUN_START(_RamfuncsRunStart), // 程序运行的起始地址
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17

    例# pragma

    #pragma 可将变量分配到数据段
    如将变量SicaRegs分配到命为SIciaRegsFile的数据段。

    • 然后这两个数据段直接映射到SCI寄存器所占的存储空间。
    # ifdef  _cplusplus
    # pragma DATA_SECTION("SciaRegsFile")
    #else
    # pragma DATA_SECTION(SciaRegs,"SciaRegsFile")
    #endif
    volatile struct SIC_REGS SciaRegs;
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    将外设寄存器变量分配到数据daunt。

  • 相关阅读:
    ISO26262功能安全概述
    [Python进阶] Pyinstaller打包程序时为程序添加图标
    2.10 负载均衡原理- url hash 与 least_conn
    java多线程
    Android 10.0 禁用adb shell input输入功能
    【DevOps系列】Docker数据卷(volume)详解
    昨天阅读量900
    读书笔记之C Primer Plus 6
    linux内核获取本机网卡的统计信息
    无锡地铁4号线一期工程天河停车场项目中智能照明监控系统的应用
  • 原文地址:https://blog.csdn.net/qq_45578181/article/details/134543045