This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] TMS320F280037:Cla1ProgRunStart = 0

Guru**** 2526700 points
Other Parts Discussed in Thread: C2000WARE

请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1553652/tms320f280037-cla1progrunstart-0

器件型号:TMS320F280037
主题:C2000WARE 中讨论的其他器件

工具/软件:

Cla1ProgRunStart 设置为 0、不确定原因。

这来自.map 文件。  

page  address   name                             
----  -------   ----                             
0     00000000  Cla1ProgRunStart                 
0     00000000  Cla1Task1                        
0     00000400  __stack                          
0     00000600  __TI_STACK_END                   
0     00001480  gFromCLA                         
0     00001500  SwingCommutationA                
0     00001506  SwingCommutationB                
0     0000150c  SwingCommutationC                
0     00001512  ValveCommutationA                
0     00001518  ValveCommutationB                
0     0000151e  ValveCommutationC                
0     00001540  gToCLA                           
0     00001636  __claabi_addd                    
0     00001d9e  __TI_frcdivd                     
0     00002270  __claabi_mpyd                    
0     00002654  __claabi_divd                    
0     00002944  __claabi_mpyll                   
0     00002ad8  __TI_frcmpyd                     
0     00002c5a  __claabi_cmpull                  
0     00002d8a  __claabi_asrll                   
0     00002eb4  __claabi_lslll                   
0     00002fba  __claabi_cmplli                  
0     000030bc  __claabi_lsrll                   
0     000031be  __claabi_fltid                   
0     000032aa  __claabi_cvtdf                   
0     0000336c  __claabi_cvtfd                   
0     000033fe  __claabi_addll                   
0     0000346c  __claabi_subd                    
0     000034a6  __claabi_memset                  
0     000034d8  Cla1Task2                        
0     000034e0  Cla1Task3                     
 

这来自 f280037_cla_flash_link.cmd 中的存储器部分

 BEGIN            : origin = 0x00080000, length = 0x00000002
   BOOT_RSVD        : origin = 0x00000002, length = 0x00000126

   RAMM0            : origin = 0x00000128, length = 0x000002D8
   RAMM1            : origin = 0x00000400, length = 0x000003F8
   // RAMM1_RSVD       : origin = 0x000007F8, length = 0x00000008 /* Reserve and do not use for code as per the errata advisory "Memory: Prefetching Beyond Valid Memory" */
   //shared by CPU and CLA
   RAMLS0           : origin = 0x00008000, length = 0x00000800
   RAMLS1           : origin = 0x00008800, length = 0x00000800
   RAMLS2           : origin = 0x00009000, length = 0x00000800
   RAMLS3           : origin = 0x00009800, length = 0x00000800
   //RAMLS4           : origin = 0x0000A000, length = 0x00000800
   //RAMLS5           : origin = 0x0000A800, length = 0x00000800
   //RAMLS6           : origin = 0x0000B000, length = 0x00000800
   RAMLS4_5_6		: origin = 0x0000A000, length = 0x00001800
   RAMLS7           : origin = 0x0000B800, length = 0x00000800

   RAMGS0           : origin = 0x0000C000, length = 0x00001000
   RAMGS1           : origin = 0x0000D000, length = 0x00001000
   RAMGS2           : origin = 0x0000E000, length = 0x00001000
   RAMGS3           : origin = 0x0000F000, length = 0x00000FF8
   // RAMGS3_RSVD      : origin = 0x0000FFF8, length = 0x00000008 /* Reserve and do not use for code as per the errata advisory "Memory: Prefetching Beyond Valid Memory" */

   BOOTROM          : origin = 0x003F8000, length = 0x00007FC0
   SECURE_ROM       : origin = 0x003F2000, length = 0x00006000

   RESET            : origin = 0x003FFFC0, length = 0x00000002

这来自同一文件的各个部分。

// CLA program memory */
#if defined(__TI_EABI__)
    Cla1Prog        : LOAD = FLASH_BANK0,
                      RUN = RAMLS4_5_6,
                      LOAD_START(Cla1ProgLoadStart),
                      RUN_START(Cla1ProgRunStart),
                      LOAD_SIZE(Cla1ProgLoadSize),
                      ALIGN(8)
#else
    Cla1Prog        : LOAD = FLASH_BANK0,
                      RUN = RAMLS4_5_6,
                      LOAD_START(_Cla1ProgLoadStart),
                      RUN_START(_Cla1ProgRunStart),
                      LOAD_SIZE(_Cla1ProgLoadSize),
                      ALIGN(8)
#endif

当我尝试编译时、收到以下错误:

../28003x_cla_flash_lnk.cmd“、第 158 行:错误#10099-D:程序无法放入可用内存中、或者该段包含一个需要无法为该段生成的蹦床函数的调用站点。 对于“Cla1Prog"段“段(大小为 0x3510 第 0 页)、带对齐/分块的运行放置失败。 可用存储器范围:
RAMLS4_5_6 大小:0x1800 未使用:0x1800 最大孔:0x1800

报告的 THS 大小 (0x3510) 是 CLATask8 的位置、大小 应约为 0x1300。

在采用 C2000W2_00_00_02 和较旧版本编译器的 280049 处理器上、代码运行正常。 我无法在当前安装的 C2000Ware 和编译器上编译旧代码。   

感谢您的帮助。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    我删除了任务 1 中除一行之外的所有代码。  程序编译、任务 1 位于预期位置。

    我想现在的问题是、为什么代码比在早期版本上编译时大 3 倍。  两种情况下均关闭了优化。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    我删除了一半的 CLA 代码、创建了一个大型 LSRAM 段、并获得了要构建的代码。  CLATask 包含大量旧版本中不存在的代码。  这是编译器设置吗?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    这是 EABI 迁移过程。  将输出格式更改为 COFF 并重新编译 driverLib 似乎修复了问题。