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.

[参考译文] TMS320F280037C:与 driverlib 及位字段库集成的闪存 API

Guru**** 2039090 points
Other Parts Discussed in Thread: C2000WARE, SYSBIOS
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1326107/tms320f280037c-flash-api-integration-with-driverlib-and-bit-field-libraries

器件型号:TMS320F280037C
Thread 中讨论的其他器件:C2000WARESysBIOS

您好!

我正在尝试将闪存 API 集成到我们的项目中、alreaqday 包含 driverlib 库和位字段编程库。 我不知道该怎么做,也不知道该怎么做。 错误如下:

编译器输出如下:

>>编译失败
sys/subdir_rules.mk:9:目标"sys/FlashMgr.obj"的配方失败
"C:\ti\c2000\c2000_SDK_4_00_00_00\c2000ware\device_support\f28003x\headers\f28003x_sysctrl.h" Ware_Motor、第484行:错误#41:需要一个标识符
"C:\ti\c2000\c2000_SDK_4_00_00_00\c2000ware\device_support\f28003x\headers\f28003x_sysctrl.h" Ware_Motor、第484行:错误#80:预计是一个类型指定符
"C:\ti\c2000\c2000_SDK_4_00_00_00\c2000ware\device_support\f28003x\headers\f28003x_sysctrl.h" Ware_Motor、第484行:错误#170:此处不允许使用函数类型
"C:\ti\c2000\c2000_SDK_4_00_00_00\c2000ware\device_support\f28003x\headers\f28003x_sysctrl.h" Ware_Motor、第724行:错误#41:预期的标识符
"C:\ti\c2000\c2000_SDK_4_00_00_00\c2000ware\device_support\f28003x\headers\f28003x_sysctrl.h" Ware_Motor、第724行:错误#80:预期的类型指定符
"C:\ti\c2000\c2000_SDK_4_00_00_00\c2000ware\device_support\f28003x\headers\f28003x_sysctrl.h" Ware_Motor、第724行:错误#170:此处不允许函数类型
"C:\Git_work\FW_MotorController\Development\Motor Controller\Sys/Inc/svm.h"、第34行:警告#303-D:typedef 名称已声明(同类型)
"..\Sys\Inc\Controller.h"、第132行:警告#303-D:typedef 名称已声明(同类型)
"..\Sys\Inc\ADCMgr.h"第138行:警告#303-D:typedef 名称已声明(同类型)
"../../Sys/FlashMgr.c "、第17行:警告#1181-D:#warning 指令:"Plantar mover al .h"
".../Sys/FlashMgr.c ",第27行:警告#1181-D:#warning 指令:"hacer que peticion de lectura sea comprobendando el Estado de flash por si no está escribiendo ni en error"
"....glas"/Sys/FlashMgr.c,第 escribirá 行:警告#1181-D:#warning 指令:"POR ahora no se ha movido a ram las variables que se escribiran en flash porque a prieral no hace falta,se e dare tamente en sector que no se USA seguro"
"..las /Sys/FlashMgr.c variables"第31行:警告#1181-D:#warning 指令:"meto las variables en sector 0 bank 1. TODO reservar esas directciones en el debugger"
"...LED"/Sys/FlashMgr.c、第32行:警告#1181-D:#warning 指令:"cambiar 变量 de error 示例 POR unified errorReaction y eleir un color de LED"
".../Sys/FlashMgr.c "、第66行:警告#1181-D:#warning 指令:"Plantar mover variables a RAM"
"../Sys/FlashMgr.c ",第116行:WARNING #1181-D:#WARNING DIRECTION:"Pensar en cómo ó n se gestionará ó n el Dato para leer. Dejarlo en Estado de que esta ocupado la flash escribiendo y que espere el maestro"
".../Sys/FlashMgr.c ",第159行: WARNING #1181-D:#WARNING CO令:" Se podría mejorar usando una cola de conflags para cada mensaje, siresto para avechar las escrituras de flash ordenando las peticiones de flash según ó n la direction que queires atacar para de un bubes de la mieltecles positories。 Es es utils para casos donde se escriben muchas veces en flash, coasa que dudo que sea util ahroa mismo"
".../Sys/FlashMgr.c "第185行:警告#1181-D:#WARNING 指令:añadir 令牌 aqui
"...ErrorRecovery"/Sys/FlashMgr.c、第243行:警告#1181-D:#warning 指令:"Reiniciar en unifiedErrorRecovery"
"...d"/Sys/FlashMgr.c,第339行:WARNING #1181-D:#WARNING 指令:añadir funcion de check de si está escrita la dirección è re de flash para retornar algo y que actue en snevencia "
"...>"/Sys/FlashMgr.c、第355行:警告#1181-D:#warning 指令:"para hacer lectrura de los datos:dataLow =*(uint64 *)(u32Index);"
编译"../Sys/FlashMgr.c 时检测到6个错误。
gmake:***[Sys/FlashMgr.obj]错误1

Sys/FlashMgr 是使用 FLASHAPI 库的.c 文件。 错误出现在一个来自 C2000安装的文件中、该文件根本没有修改、我不知道如何能够获取该错误。 我在添加文件 F021_F28003x_C28x.h 时会遇到这些错误。

我正在使用的.cmd 如下所示:

内存
{
  begin             :origin = 0x00080000、length = 0x00000002
  BOOT_RSVD      :origin = 0x00000002、length = 0x00000126

  RAMM0             :origin = 0x00000128、length = 0x000002D8
  RAMM1           :origin = 0x00000400,length = 0x00000380    /*片上 RAM 块 M1 */
  BOOT_RSVD_SYSBIOS:origin = 0x00000780、length = 0x00000080

/* 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 */
  RAMLS04         :origin = 0x00008000、length = 0x00002800
  RAMLS5          :origin = 0x0000A800、length = 0x00000800
  RAMLS6          :origin = 0x0000B000、length = 0x00000800
  RAMLS7          :origin = 0x0000B800、length = 0x00000800
  
  RAMGS0          :origin = 0x0000C000、length = 0x00001000
  RAMGS1          :origin = 0x0000D000、length = 0x00001000
  RAMGS2          :origin = 0x0000E000、length = 0x00001000
  RAMGS3          :origin = 0x0000F000、length = 0x00001000

  BootROM         :origin = 0x003F8000、length = 0x00007FC0
  SECURE_ROM      :origin = 0x003F2000、length = 0x00006000

  复位           :origin = 0x003FFFC0、length = 0x00000002

  /*闪存扇区*/
  /*组0 */
  FLASH_BANK0_SEC0 :origin = 0x080002、length = 0x000FFE
  FLASH_BANK0_SEC1 :origin = 0x081000、length = 0x001000
  FLASH_BANK0_sec2 :origin = 0x082000、length = 0x001000
  FLASH_BANK0_SEC3 :origin = 0x083000、length = 0x001000
  FLASH_BANK0_SEC4 :origin = 0x084000、length = 0x001000
  FLASH_BANK0_SEC5 :origin = 0x085000、length = 0x001000
  FLASH_BANK0_SEC6 :origin = 0x086000、length = 0x001000
  FLASH_BANK0_sec7 :origin = 0x087000、length = 0x001000
  FLASH_BANK0_SEC8 :origin = 0x088000、length = 0x001000
  FLASH_BANK0_SEC9 :origin = 0x089000、length = 0x001000
  FLASH_BANK0_SEC10:origin = 0x08A000、length = 0x001000
  FLASH_BANK0_SEC11:origin = 0x08B000、length = 0x001000
  FLASH_BANK0_SEC12:origin = 0x08C000、length = 0x001000
  FLASH_BANK0_SEC13:origin = 0x08D000、length = 0x001000
  FLASH_BANK0_SEC14:origin = 0x08E000、length = 0x001000
  FLASH_BANK0_SEC15:origin = 0x08F000、length = 0x001000

  /*组1 */
  FLASH_BANK1_SEC0 :origin = 0x090000、length = 0x001000
  FLASH_BANK1_SEC1 :origin = 0x091000、length = 0x001000
  FLASH_BANK1_SEC2 :origin = 0x092000、length = 0x001000
  FLASH_BANK1_SEC3 :origin = 0x093000、length = 0x001000
  FLASH_BANK1_SEC4 :origin = 0x094000、length = 0x001000
  FLASH_BANK1_SEC5_6 :origin = 0x095000、length = 0x002000
  //FLASH_BANK1_SEC5 :origin = 0x095000、length = 0x001000
  //FLASH_BANK1_SEC6 :origin = 0x096000、length = 0x001000
  FLASH_BANK1_SEC7 :origin = 0x097000、length = 0x001000
  FLASH_BANK1_SEC8 :origin = 0x098000、length = 0x001000
  FLASH_BANK1_SEC9 :origin = 0x099000、length = 0x001000
  FLASH_BANK1_SEC10:origin = 0x09A000、length = 0x001000
  FLASH_BANK1_SEC11:origin = 0x09B000、length = 0x001000
  FLASH_BANK1_SEC12:origin = 0x09C000、length = 0x001000
  FLASH_BANK1_SEC13:origin = 0x09D000、length = 0x001000
  FLASH_BANK1_SEC14:origin = 0x09E000、length = 0x001000
  FLASH_BANK1_SEC15:origin = 0x09F000、length = 0x001000

 /*组2 */
  FLASH_BANK2_SEC0 :origin = 0x0A0000、length = 0x001000
  FLASH_BANK2_SEC1 :origin = 0x0A1000、length = 0x001000
  FLASH_BANK2_sec2 :origin = 0x0A2000、length = 0x001000
  FLASH_BANK2_SEC3 :origin = 0x0A3000、length = 0x001000
  FLASH_BANK2_SEC4 :origin = 0x0A4000、length = 0x001000
  FLASH_BANK2_SEC5 :origin = 0x0A5000、length = 0x001000
  FLASH_BANK2_SEC6 :origin = 0x0A6000、length = 0x001000
  FLASH_BANK2_sec7 :origin = 0x0A7000、length = 0x001000
  FLASH_BANK2_SEC8 :origin = 0x0A8000、length = 0x001000
  FLASH_BANK2_SEC9 :origin = 0x0A9000、length = 0x001000
  FLASH_BANK2_SEC10:origin = 0x0AA000、length = 0x001000
  FLASH_BANK2_SEC11:origin = 0x0AB000、length = 0x001000
  FLASH_BANK2_SEC12:origin = 0x0AC000、length = 0x001000
  FLASH_BANK2_SEC13:origin = 0x0AD000、length = 0x001000
  FLASH_BANK2_SEC14:origin = 0x0AE000、length = 0x001000
  FLASH_BANK2_SEC15:origin = 0x0AF000、length = 0x001000





部分
{
  codestart       :> beging, align (8)
  .text           :>> FLASH_BANK0_sec2 | FLASH_BANK0_SEC3 | FLASH_BANK0_SEC4 | FLASH_BANK0_SEC5 | FLASH_BANK0_SEC6 | FLASH_BANK0_SEC7 | FLASH_BANK0_SEC8、ALIGN  (8)
  .cinit          :> FLASH_BANK0_SEC1、 align (8)
  .switch         :> FLASH_BANK0_SEC1、ALIGN (8)
  .reset          :> reset,                 type = DSECT /*未使用,*/

  .stack          :> RAMM1

#if defined (__TI_EABI __)
  .init_array     :> FLASH_BANK0_SEC1、ALIGN (8)
  .bss            :> RAMLS5
  .bss:输出:     > RAMLS04
  bss:CIO:        > RAMLS04
  .data           :> RAMLS5
  .sysmem         :> RAMLS5
  .const          :> FLASH_BANK1_SEC5_6、ALIGN (8)
#else
  .pinit          :> FLASH_BANK0_SEC1、ALIGN (8)
  .ebss           :>> RAMLS5 | RAMLS6
  .esysmem        :> RAMLS5
  CIO            :> RAMLS04
  econst         :> FLASH_BANK0_SEC9、ALIGN (8)
#endif

   ramgs0:> RAMGS0
   ramgs1 :> rammGS0

   /* 分配 IQ 数学领域:*/
  IQMath          :> FLASH_BANK0_SEC1、ALIGN (8)
  IQmathTables    :> FLASH_BANK0_sec2, ALIGN (8)

 组
  {
      .TI.ramfunc
      {-l FAPI_F28003x_COFF_v1.58.01.lib}

  } LOAD = FLASH_BANK0_SEC1、
     RUN = RAMLS04、
     Load_start (_RamfuncsLoadStart)、
     Load_Size (_RamfuncsLoadSize)、
     Load_End (_RamfuncsLoadEnd)、
     RUN_START (_RamfuncsRunStart)、
     RUN_SIZE (_RamfuncsRunSize)、
     RUN_END (_RamfuncsRunEnd)、
     对齐(8)

   /* TBD las variables que se usaran */

   DataBufferSection :> RAMM1, ALIGN(8)

库和链接器的包含选项:

最后、我包含了此运算产生的.map。

此致、

大卫

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

    很遗憾、我无法发布.map 文件。

    大卫

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

    您好!

    由于美国放假、请预计在2月20日前收到答复。

    谢谢。此致、

    辛奇塔

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

    尊敬的 David:

    您有没有机会浏览过此 常见问题解答

    添加闪存 API 时、您是否包含了指向 include 文件夹的正确路径? (C:\ti\cc2000\C2000Ware_x_xx_xx_xx\libraries\flash_api\f28003x\include)

    您是否导入了适用于此闪存支持的正确库? (EABI 与 COFF)

    此致!

    马瑞安

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

    您好、Ryan、

    我不知道那个帖子,我已经检查了说明,我已经改变了一切,因为帖子的状态和编译错误没有消失。 此外、需要说明的是、如果我不包含 F021_F28003x_C28x.h、则该工程会完美地编译、并且我可以使用位域编程。

    添加闪存 API 时,是否包含指向 include 文件夹的正确路径

    flashapi 的路径:C:\ti\c2000\c2000_c2000_sdk_4_00_00\c2000ware\libraries\flash_api\f28003x\include\FlashAPI Ware_Motor

    项目结构如下、我已以 COFF 格式添加了闪存 API 库、但仍未取得进展:

    此致、

    大卫

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

    尊敬的 David:

    F021_F28003x_C28x.h 的 include 标头是否 包含 在文件中? 似乎当你将其包含在项目中时、在包含此标头的内容上可能会有一些冲突。 您能否压缩项目并将其发送出去?

    如果不包含此文件、工程是否能按预期工作?

    此致!

    马瑞安

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

    您好、Ryan、

    可以、此文件包含在我自己的闪存管理器中、就像 c200ware 中的示例1一样。 是的、确切地说、F021_F28003x_C28x 的函数与位域库发生冲突、而不是与我的程序发生冲突。 但是、我担心发送代码是不可行的。

    是的、如果我不包含 F021_F28003x_C28x.h、该项目的运行正常。

    此致、

    大卫

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

    尊敬的 David:

    是的、我认为不需要在您的项目中添加该文件、只要您的文件包含在某个.c 文件的标头中、并且有正确的包含路径即可。 我认为这可能是在尝试将此文件直接添加到您的项目时出现某种循环包含的原因。

    此致!

    马瑞安

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

    您好、Ryan、

    感谢您的帮助、这可能是完全的问题。 一旦项目编译完毕、我将尝试使用这些库、接下来的一周我将再次联系。

    此致、

    大卫

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

    大家好、David 听起来不错、如果您需要任何进一步的帮助、请告诉我!

    此致!

    马瑞安

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

    您好、Ryan、

    我尝试在不包含该文件的情况下编译项目。 编译器会在每个函数处引发错误、因为它们缺少.h 文件的定义。 如果我说没有其他文件来定义这些函数、我会不会再坚持吗? 因此,不会有循环列入的权利?

    此致、

    大卫

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

    定义应来自项目属性中的 include 选项、当您执行#include "name of libraries.h"操作时、

    您能告诉我您在尝试调用这些函数时发生的错误吗?

    此致!

    马瑞安

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

    当然、这些误差是:

    此致、

    大卫

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

    您在哪里调用这些函数? 您是否可以按住 Ctrl 键并左键单击调用这些函数的位置、看看它是否跳到这些函数的定义位置?

    Uint32未定义、因为它在位域中很可能对无符号32位整数使用 uint32_t 模板。

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

    当我包含.h 文件时、Ctrl+LeftClk 会转到该文件。 我注释该行编译、Ctrl+LClick 不会移动到任何位置

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

    BTW、我通过替换 uint32_t 的定义更正了 Uint32错误。 现在、我只看到闪存 API 中与未定义相关的错误。 此外、只能从 Sys 文件夹中的一个名为 FlashMgr.c 的文件调用这些函数。

    大卫

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

    所有这些错误都是来自那个文件吗?

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

    完全是的

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

    我在您的 include 选项中还没有看到另一个用于"{path_to_driverlib}/f28003x/driverlib/inc "的 include 选项、您能否仔细检查一下添加此选项?

    您还可以验证您的{FlashAPI_include_root}是否指向正确的路径吗? 您是否在"Includes the FlashAPI"文件夹下看到?

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

    您好、Ryan、

    添加 driverlib inc 路径不会在生成的编译中产生任何差异:

    C:Ware_Motor

    我更改了路径本身的变量、仍然没有任何进展。 我没有反驳第二个问题。 您是说我是否可以打开闪存 API 中的 include? 如果是、我可以打开 F021_F28003x_C28x .h 文件中的其余 include。

    大卫

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

    尊敬的 David:  

    您能在"Includes"下拉列表中看到这一点吗? 您能否双击 FlashAPI 文件夹并查看各个文件? 我参考的是一个闪存 API 示例。

    此致!

    马瑞安

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

    您好、Ryan、

    让我来展示一下这些文件夹:

    我认为它与 flashAPI rigth 的示例相同吗?

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

    尊敬的 David:

    是的、看起来是一样的。 您是否可以压缩该项目并将其发送给我、以便我来看看?

    此致!

    马瑞安

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

    您好、Ryan、

    是的、我已经与我的经理沟通、只要签署了 NDA、就没有问题。 您能告诉我您的电子邮件吗?

    此致、

    大卫

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

    尊敬的 David:  

    您可以直接通过 E2E 向我发送消息。

    此致!

    马瑞安

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

    尊敬的 David:

    解决此问题的方法是验证包含选项、文件搜索路径以及在主代码开头包含#include "F28x_Project.h"、就像示例中那样。

    之前未正确包含的数据类型现在正被正确实例化。

    此致!

    马瑞安