现象描述


程序本身没有问题。但是会出现warnings。如上图。

解决方案

添加cmd文件 F2806x_Headers_nonBIOS.cmd

原因分析

在warnings出现的时候,project仅有一个cmd文件28069_RAM_lnk.cmd。具体内容如下

/*
// TI File $Revision: /main/3 $
// Checkin $Date: March 3, 2011   13:45:43 $
//###########################################################################
//
// FILE:    28069_RAM_lnk.cmd
//
// TITLE:   Linker Command File For F28069 examples that run out of RAM
//
//          This ONLY includes all SARAM blocks on the F28069 device.
//          This does not include flash or OTP.
//
//          Keep in mind that L0,L1,L2,L3 and L4 are protected by the code
//          security module.
//
//          What this means is in most cases you will want to move to
//          another memory map file which has more memory defined.
//
//###########################################################################
// $TI Release: $
// $Release Date: $
//###########################################################################
*//* ======================================================
// For Code Composer Studio V2.2 and later
// ---------------------------------------
// In addition to this memory linker command file,
// add the header linker command file directly to the project.
// The header linker command file is required to link the
// peripheral structures to the proper locations within
// the memory map.
//
// The header linker files are found in <base>\F2806x_headers\cmd
//
// For BIOS applications add:      F2806x_Headers_BIOS.cmd
// For nonBIOS applications add:   F2806x_Headers_nonBIOS.cmd
========================================================= *//* ======================================================
// For Code Composer Studio prior to V2.2
// --------------------------------------
// 1) Use one of the following -l statements to include the
// header linker command file in the project. The header linker
// file is required to link the peripheral structures to the proper
// locations within the memory map                                    *//* Uncomment this line to include file only for non-BIOS applications */
/* -l F2806x_Headers_nonBIOS.cmd *//* Uncomment this line to include file only for BIOS applications */
/* -l F2806x_Headers_BIOS.cmd *//* 2) In your project add the path to <base>\F2806x_headers\cmd to thelibrary search path under project->build options, linker tab,library search path (-i).
/*========================================================= *//* Define the memory block start/length for the F2806xPAGE 0 will be used to organize program sectionsPAGE 1 will be used to organize data sectionsNotes:Memory blocks on F28069 are uniform (ie samephysical memory) in both PAGE 0 and PAGE 1.That is the same memory region should not bedefined for both PAGE 0 and PAGE 1.Doing so will result in corruption of programand/or data.Contiguous SARAM memory blocks can be combinedif required to create a larger memory block.
*/MEMORY
{PAGE 0 :/* BEGIN is used for the "boot to SARAM" bootloader mode   */BEGIN       : origin = 0x000000, length = 0x000002RAMM0       : origin = 0x000050, length = 0x0003B0RAML0_L3    : origin = 0x008000, length = 0x002000  /* RAML0-3 combined for size of .text *//* in Example_F2806xSWPrioritezedInterrupts */RESET       : origin = 0x3FFFC0, length = 0x000002FPUTABLES   : origin = 0x3FD860, length = 0x0006A0  /* FPU Tables in Boot ROM */IQTABLES    : origin = 0x3FDF00, length = 0x000B50    /* IQ Math Tables in Boot ROM */IQTABLES2   : origin = 0x3FEA50, length = 0x00008C    /* IQ Math Tables in Boot ROM */IQTABLES3   : origin = 0x3FEADC, length = 0x0000AA    /* IQ Math Tables in Boot ROM */BOOTROM    : origin = 0x3FF3B0, length = 0x000C10PAGE 1 :BOOT_RSVD   : origin = 0x000002, length = 0x00004E     /* Part of M0, BOOT rom will use this for stack */RAMM1       : origin = 0x000400, length = 0x000400     /* on-chip RAM block M1 */RAML4       : origin = 0x00A000, length = 0x002000     /* on-chip RAM block L4 */RAML5       : origin = 0x00C000, length = 0x002000     /* on-chip RAM block L5 */RAML6       : origin = 0x00E000, length = 0x002000     /* on-chip RAM block L6 */RAML7       : origin = 0x010000, length = 0x002000     /* on-chip RAM block L7 */RAML8       : origin = 0x012000, length = 0x002000     /* on-chip RAM block L8 */USB_RAM     : origin = 0x040000, length = 0x000800     /* USB RAM          */
}SECTIONS
{/* Setup for "boot to SARAM" mode:The codestart section (found in DSP28_CodeStartBranch.asm)re-directs execution to the start of user code.  */codestart        : > BEGIN,      PAGE = 0#ifdef __TI_COMPILER_VERSION__#if __TI_COMPILER_VERSION__ >= 15009000.TI.ramfunc : {} > RAMM0,      PAGE = 0#elseramfuncs         : > RAMM0,      PAGE = 0   #endif
#endif .text            : > RAML0_L3,   PAGE = 0    .cinit           : > RAMM0,      PAGE = 0.pinit           : > RAMM0,      PAGE = 0.switch          : > RAMM0,      PAGE = 0.reset           : > RESET,      PAGE = 0, TYPE = DSECT /* not used, */.stack           : > RAMM1,      PAGE = 1.ebss            : > RAML4,      PAGE = 1.econst          : > RAML4,      PAGE = 1.esysmem         : > RAML4,      PAGE = 1IQmath           : > RAML0_L3,   PAGE = 0IQmathTables     : > IQTABLES,   PAGE = 0, TYPE = NOLOAD/* Allocate FPU math areas: */FPUmathTables    : > FPUTABLES,  PAGE = 0, TYPE = NOLOADDMARAML5            : > RAML5,      PAGE = 1DMARAML6            : > RAML6,      PAGE = 1DMARAML7            : > RAML7,      PAGE = 1DMARAML8            : > RAML8,      PAGE = 1   /* Uncomment the section below if calling the IQNexp() or IQexp()functions from the IQMath.lib library in order to utilize therelevant IQ Math table in Boot ROM (This saves space and Boot ROMis 1 wait-state). If this section is not uncommented, IQmathTables2will be loaded into other memory (SARAM, Flash, etc.) and will takeup space, but 0 wait-state is possible.*//*IQmathTables2    : > IQTABLES2, PAGE = 0, TYPE = NOLOAD{IQmath.lib<IQNexpTable.obj> (IQmathTablesRam)}*//* Uncomment the section below if calling the IQNasin() or IQasin()functions from the IQMath.lib library in order to utilize therelevant IQ Math table in Boot ROM (This saves space and Boot ROMis 1 wait-state). If this section is not uncommented, IQmathTables2will be loaded into other memory (SARAM, Flash, etc.) and will takeup space, but 0 wait-state is possible.*//*IQmathTables3    : > IQTABLES3, PAGE = 0, TYPE = NOLOAD{IQmath.lib<IQNasinTable.obj> (IQmathTablesRam)}*/}/*
//===========================================================================
// End of file.
//===========================================================================
*/

而后添加的 F2806x_Headers_nonBIOS.cmd 文件,其内容如下:

/*
//###########################################################################
//
// FILE:    F2806x_Headers_nonBIOS.cmd
//
// TITLE:   F2806x Peripheral registers linker command file
//
// DESCRIPTION:
//
//          This file is for use in Non-BIOS applications.
//
//          Linker command file to place the peripheral structures
//          used within the F2806x headerfiles into the correct memory
//          mapped locations.
//
//          This version of the file includes the PieVectorTable structure.
//          For BIOS applications, please use the F2806x_Headers_BIOS.cmd file
//          which does not include the PieVectorTable structure.
//
//###########################################################################
// $TI Release: F2806x C/C++ Header Files and Peripheral Examples V151 $
// $Release Date: February  2, 2016 $
// $Copyright: Copyright (C) 2011-2016 Texas Instruments Incorporated -
//             http://www.ti.com/ ALL RIGHTS RESERVED $
//###########################################################################
*/MEMORY
{PAGE 0:    /* Program Memory */PAGE 1:    /* Data Memory */DEV_EMU     : origin = 0x000880, length = 0x000105     /* Device Emulation Registers */SYS_PWR_CTL : origin = 0x000985, length = 0x000003     /* System Power Control Registers */FLASH_REGS  : origin = 0x000A80, length = 0x000060     /* Flash Registers */CSM         : origin = 0x000AE0, length = 0x000020     /* Code Security Module Registers */ADC_RESULT  : origin = 0x000B00, length = 0x000020     /* ADC Results Register Mirror */CPU_TIMER0  : origin = 0x000C00, length = 0x000008     /* CPU Timer0 Registers */CPU_TIMER1  : origin = 0x000C08, length = 0x000008     /* CPU Timer1 Registers */CPU_TIMER2  : origin = 0x000C10, length = 0x000008     /* CPU Timer2 Registers */PIE_CTRL    : origin = 0x000CE0, length = 0x000020     /* PIE Control Registers */PIE_VECT    : origin = 0x000D00, length = 0x000100     /* PIE Vector Table */DMA        : origin = 0x001000, length = 0x000200     /* DMA Registers */CLA1        : origin = 0x001400, length = 0x000080     /* CLA Registers */USB0        : origin = 0x004000, length = 0x001000     /* USB0 Registers */McBSPA      : origin = 0x005000, length = 0x000040     /* McBSP-A Registers */ECANA       : origin = 0x006000, length = 0x000040     /* eCAN-A Control and Status Registers */ECANA_LAM   : origin = 0x006040, length = 0x000040     /* eCAN-A Local Acceptance Masks */ECANA_MOTS  : origin = 0x006080, length = 0x000040     /* eCAN-A Message Object Time Stamps */ECANA_MOTO  : origin = 0x0060C0, length = 0x000040     /* eCAN-A Object Time-Out Registers */ECANA_MBOX  : origin = 0x006100, length = 0x000100     /* eCAN-A Milboxes */COMP1       : origin = 0x006400, length = 0x000020     /* Comparator + DAC 1 Registers */COMP2       : origin = 0x006420, length = 0x000020     /* Comparator + DAC 2 Registers */COMP3       : origin = 0x006440, length = 0x000020     /* Comparator + DAC 3 Registers */EPWM1       : origin = 0x006800, length = 0x000040     /* Enhanced PWM 1 Registers */EPWM2       : origin = 0x006840, length = 0x000040     /* Enhanced PWM 2 Registers */EPWM3       : origin = 0x006880, length = 0x000040     /* Enhanced PWM 3 Registers */EPWM4       : origin = 0x0068C0, length = 0x000040     /* Enhanced PWM 4 Registers */EPWM5       : origin = 0x006900, length = 0x000040     /* Enhanced PWM 5 Registers */EPWM6       : origin = 0x006940, length = 0x000040     /* Enhanced PWM 6 Registers */EPWM7       : origin = 0x006980, length = 0x000040     /* Enhanced PWM 7 Registers */EPWM8       : origin = 0x0069C0, length = 0x000040     /* Enhanced PWM 8 Registers */ECAP1       : origin = 0x006A00, length = 0x000020     /* Enhanced Capture 1 Registers */ECAP2       : origin = 0x006A20, length = 0x000020     /* Enhanced Capture 2 Registers */ECAP3       : origin = 0x006A40, length = 0x000020     /* Enhanced Capture 3 Registers */HRCAP1      : origin = 0x006AC0, length = 0x000020  /* High Resolution Capture 1 Registers */HRCAP2      : origin = 0x006AE0, length = 0x000020     /* High Resolution Capture 2 Registers */EQEP1       : origin = 0x006B00, length = 0x000040     /* Enhanced QEP 1 Registers */EQEP2       : origin = 0x006B40, length = 0x000040     /* Enhanced QEP 2 Registers */HRCAP3      : origin = 0x006C80, length = 0x000020   /* High Resolution Capture 3 Registers */HRCAP4      : origin = 0x006CA0, length = 0x000020   /* High Resolution Capture 4 Registers */GPIOCTRL    : origin = 0x006F80, length = 0x000040     /* GPIO Control Registers */GPIODAT     : origin = 0x006FC0, length = 0x000020     /* GPIO Data Registers */GPIOINT     : origin = 0x006FE0, length = 0x000020     /* GPIO Interrupt/LPM Registers */SYSTEM      : origin = 0x007010, length = 0x000030     /* System Control Registers */SPIA        : origin = 0x007040, length = 0x000010     /* SPI-A Registers */SPIB        : origin = 0x007740, length = 0x000010     /* SPI-B Registers */SCIA        : origin = 0x007050, length = 0x000010     /* SCI-A Registers */SCIB         : origin = 0x007750, length = 0x000010     /* SCI-B Registers */NMIINTRUPT  : origin = 0x007060, length = 0x000010     /* NMI Watchdog Interrupt Registers */XINTRUPT    : origin = 0x007070, length = 0x000010     /* External Interrupt Registers */ADC         : origin = 0x007100, length = 0x000080     /* ADC Registers */I2CA        : origin = 0x007900, length = 0x000040     /* I2C-A Registers */PARTID      : origin = 0x3D7E80, length = 0x000001     /* Part ID Register Location */CSM_PWL     : origin = 0x3F7FF8, length = 0x000008     /* Part of FLASHA CSM password locations */
}SECTIONS
{/*** PIE Vect Table and Boot ROM Variables Structures ***/UNION run = PIE_VECT, PAGE = 1{PieVectTableFileGROUP{EmuKeyVarEmuBModeVarFlashCallbackVarFlashScalingVar}}/*** Peripheral Frame 0 Register Structures ***/DevEmuRegsFile    : > DEV_EMU,     PAGE = 1SysPwrCtrlRegsFile: > SYS_PWR_CTL, PAGE = 1FlashRegsFile     : > FLASH_REGS,  PAGE = 1CsmRegsFile       : > CSM,         PAGE = 1AdcResultFile     : > ADC_RESULT,  PAGE = 1CpuTimer0RegsFile : > CPU_TIMER0,  PAGE = 1CpuTimer1RegsFile : > CPU_TIMER1,  PAGE = 1CpuTimer2RegsFile : > CPU_TIMER2,  PAGE = 1PieCtrlRegsFile   : > PIE_CTRL,    PAGE = 1Cla1RegsFile      : > CLA1,        PAGE = 1DmaRegsFile       : > DMA,         PAGE = 1/*** Peripheral Frame 1 Register Structures ***/ECanaRegsFile     : > ECANA,       PAGE = 1ECanaLAMRegsFile  : > ECANA_LAM,   PAGE = 1ECanaMboxesFile   : > ECANA_MBOX,  PAGE = 1ECanaMOTSRegsFile : > ECANA_MOTS,  PAGE = 1ECanaMOTORegsFile : > ECANA_MOTO,  PAGE = 1ECap1RegsFile     : > ECAP1,       PAGE = 1ECap2RegsFile     : > ECAP2,       PAGE = 1ECap3RegsFile     : > ECAP3,       PAGE = 1EQep1RegsFile     : > EQEP1,       PAGE = 1EQep2RegsFile     : > EQEP2,       PAGE = 1GpioCtrlRegsFile  : > GPIOCTRL,    PAGE = 1GpioDataRegsFile  : > GPIODAT,     PAGE = 1GpioIntRegsFile   : > GPIOINT,     PAGE = 1HRCap1RegsFile    : > HRCAP1,    PAGE = 1HRCap2RegsFile    : > HRCAP2,      PAGE = 1HRCap3RegsFile    : > HRCAP3,    PAGE = 1HRCap4RegsFile    : > HRCAP4,       PAGE = 1/*** Peripheral Frame 2 Register Structures ***/SysCtrlRegsFile   : > SYSTEM,      PAGE = 1SpiaRegsFile      : > SPIA,        PAGE = 1SpibRegsFile      : > SPIB,        PAGE = 1SciaRegsFile      : > SCIA,        PAGE = 1ScibRegsFile      : > SCIB,         PAGE = 1NmiIntruptRegsFile: > NMIINTRUPT,  PAGE = 1XIntruptRegsFile  : > XINTRUPT,    PAGE = 1AdcRegsFile       : > ADC,         PAGE = 1I2caRegsFile      : > I2CA,        PAGE = 1/*** Peripheral Frame 3 Register Structures ***/Comp1RegsFile     : > COMP1,    PAGE = 1Comp2RegsFile     : > COMP2,    PAGE = 1Comp3RegsFile     : > COMP3,    PAGE = 1EPwm1RegsFile     : > EPWM1,    PAGE = 1EPwm2RegsFile     : > EPWM2,    PAGE = 1EPwm3RegsFile     : > EPWM3,    PAGE = 1EPwm4RegsFile     : > EPWM4,    PAGE = 1EPwm5RegsFile     : > EPWM5,    PAGE = 1EPwm6RegsFile     : > EPWM6,    PAGE = 1EPwm7RegsFile     : > EPWM7,    PAGE = 1EPwm8RegsFile     : > EPWM8,    PAGE = 1McbspaRegsFile    : > McBSPA,   PAGE = 1Usb0RegsFile      : > USB0,     PAGE = 1/*** Code Security Module Register Structures ***/CsmPwlFile        : > CSM_PWL,  PAGE = 1         /*** Device Part ID Register Structures ***/PartIdRegsFile    : > PARTID,   PAGE = 1}/*
//===========================================================================
// End of file.
//===========================================================================
*/

另一篇博客中有对于cmd文件的详解
28069_RAM_lnk.cmd中,MEMORY伪指令和SECTION伪指令仅仅做了一些基础的设置,如.text, .cinit等。
F2806x_Headers_nonBIOS.cmd中,MEMORY和SECTION伪指令在此基础上做了更加详细的区间分配,如

EPwm1RegsFile     : > EPWM1,    PAGE = 1

如果不使用F2806x_Headers_nonBIOS.cmd文件,则未分配空间的内容将会交给dsp自动进行。因此会出现warning

DSP F28069 build 出现warning : creating output section “xxxx“ without a SECTIONS相关推荐

  1. creating output section “HRCap1RegsFile“ without a SECTIONS

    CCS编译的时候,类似出现这种creating output section "xxx" without a SECTIONS的提示,只需要两个步骤: 1.是否添加对应型号的DSP ...

  2. CCS报错 creating output section XXXXXXXXX without SECTIONS specification 解决方法

    是CMD的问题,标题中XXXXXXXXX可能为某段程序.在CMD文件中未定义程序存放的位置. 比如说,报了 creating output section csmpasswds without SEC ...

  3. FPGA问题记录之:Warning (13024): Output pins are stuck at VCC or GND

    FPGA问题记录之: Warning (13024): Output pins are stuck at VCC or GND Warning (21074): Design contains 16 ...

  4. warning MSB8004: Output Directory does not end with a trailing slash.

    当在VC里编译时,发现这个警告,就是说设置的目录参数不是以反斜杠结束的目录名称,如下: 1>C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\V ...

  5. __attribute__((section(”XXXX“)))的编译属性---section

    __attribute__((section("name")))是gcc编译器支持的一个编译特性(arm编译器也支持此特性),实现在编译时把某个函数/数据放到name的数据段中. ...

  6. 安装phpcms时出现Warning: ob_start(): output handler \'ob_gzhandler\' conflicts with \'zlib

    1. 解决方法一: 打开phpcms/base.php,在第57行,修改如下:if(pc_base::load_config('system','gzip') && function_ ...

  7. postfix过滤器名称不一致导致postfix/qmg:warning: connect to transport xxxx: No such file or directory...

    今天在做postfix+clamav时,出现了一个问题: 1.在 main.cf中定义的 content_filter = virus_scan:[127.0.0.1]:10025 2.在master ...

  8. DSP程序 调试总结

    1.warning: entry point symbol _c_int00 undefined 使用C写DSP时,在rts.lib库中定义了入口地址:_c_int00 而使用汇编语言编程,就不用包括 ...

  9. c语言 __at定位编译报错,david

    标签: 博客七周年 我的博客今天2岁137天了,我领取了徽章. 2010.08.01,我在新浪博客安家. 2010.08.05,我写下了第一篇博文:<IC翻新货识別法>. 至今,我的博客共 ...

最新文章

  1. Spring AOP与IOC
  2. JavaScript继承详解(四)
  3. 种豆得豆,种瓜得瓜 : 你的网络就是一片自留地
  4. 大数据查询——HBase读写设计与实践--转
  5. 地贝扫地机器人维修_扫地机器人常见故障及维修方法
  6. 如何确认自己的电脑是否可以更新到win11
  7. unbuntu cmake安装mysql_Ubuntu下源码安装MySQL-5.5.25a
  8. php项目导入其他包,将一个外部项目导入Thinkphp环境中
  9. 【Redis】Redis 乐观锁
  10. Windows的图形设备接口(GDI)入门 上篇
  11. 工作中应该发火,勿感情用词
  12. K-means对地震数据进行处理
  13. 导出excel 手动拼装复杂表头
  14. 局域网的主要特点是什么?为什么局域网采用广播通信方式而广域网不采用呢?
  15. 成长笔记4:教育是什么
  16. C++开发的论坛系统 - BBS
  17. 实验5 基于stm32的HF高频RFID通信协议
  18. 护士护理报告PPT模板
  19. 如何向您的WordPress用户发送短信
  20. cdr如何画空心字?

热门文章

  1. 新版个人所得税python123_【Python教程】02.基础语法
  2. 国外和国内高校官网的差异
  3. 深度:戴尔中国十年之变
  4. 第1期技术: DQN算法原理及实现过程
  5. 学习日常英语(每天更新10+—)
  6. linuxService
  7. 人工智能辅助药物发现(5)药物属性预测
  8. Android系统快速编译方式ninja
  9. HDU 6148 Valley Numer (数位dp)
  10. pc、h5微信授权登录