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.

[参考译文] CCS/TMDSHVMTRPFCKIT:tmdshvmtrpfckit

Guru**** 2589300 points
Other Parts Discussed in Thread: TMS320F28035

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/721053/ccs-tmdshvmtrpfckit-tmdshvmtrpfckit

器件型号:TMDSHVMTRPFCKIT
主题中讨论的其他器件: TMS320F28035

工具/软件:Code Composer Studio

尊敬的团队:
我正在用 tms320f28035控制卡编写有关 TMDSHVMTRPFCKIT 的感应电机控制的白皮书、但由于该套件上的 GPIO 引脚有限、连接到套件主板中的其他外部电路。我之前用于加载8位数据 GPIO 16、17、18、19、22、24、25、26引脚。 也是 AD7305的 GPIO 06到/LDAC;GPIO 32、33、39连接到 AD7305的 A0、A1、/WR。 这些 GPIO 引脚未连接外部电路(即空闲)。我想加载我的算法中的外壳扭矩、速度和磁通的结果、以便在 DAC 输出(AD7305器件)处显示和绘制图。 但我遇到代码错误。 下面随附与此问题相关的所有信息

UPDATE_AD7305 ();
//显示 DAC 输出引脚上的系统值
AD7305_CH_A=(pi_out*25);
AD7305_CH_B=(扭矩*25);
//绘制实际定子磁通的圆形轨迹
AD7305_CH_C=((d_fluxe*255)+255)/2;
AD7305_CH_D=((q_fluxe*255)+255)/2;

//================================================

void update_AD7305 (void)

temp=GpioDataRegs.GPADAT.all;
TEME&=0xF8B0FFFF;
GpioDataRegs.GPBCLEAR.All=0x00000003;
GpioDataRegs.GPADD.All=temp|AD7305_CH_A;
GpioDataRegs.GPBCLEAR.bit.GPIO39=1;
GpioDataRegs.GPBSET.bit.GPIO39=1;
GpioDataRegs.GPBSET.bit.GPIO32=1;
GpioDataRegs.GPADD.All=temp|AD7305_CH_B;
GpioDataRegs.GPBCLEAR.bit.GPIO39=1;
GpioDataRegs.GPBSET.bit.GPIO39=1;
GpioDataRegs.GPBSET.bit.GPIO33=1;
GpioDataRegs.GPADD.All=temp|AD7305_CH_D;
GpioDataRegs.GPBCLEAR.bit.GPIO39=1;
GpioDataRegs.GPBSET.bit.GPIO39=1;
GpioDataRegs.GPBCLEAR.bit.GPIO32=1;
GpioDataRegs.GPADD.All=temp|AD7305_CH_C;
GpioDataRegs.GPBCLEAR.bit.GPIO39=1;
GpioDataRegs.GPBSET.bit.GPIO39=1;
GpioDataRegs.GPACLEAR.bit.GPIO06=1;
GpioDataRegs.GPASET.bit.GPIO06=1;

//========================================================================================

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

    请在此添加的文件中添加#include "PeripheralHeaderIninclude.h"、并在项目中设置正确的#include 搜索路径。
    请参阅"DSP2803x_GPIO.h"中的 GPIO 定义,没有"GPIO06",它是"GPIO6"。

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

    非常感谢。 我可以根据您的意见进行修复。 但我遇到了另一个错误。 如何解决它。

    "./sources/28035_RAM_lnk.cmd "、第85行:错误#10263:开始内存范围
    已指定
    "./sources/28035_RAM_lnk.cmd "、第85行:错误#10264:开始内存范围

    与现有存储器范围开始重叠
    >>编译失败
    "../sources/28035_RAM_lnk.cmd、第86行:错误#10263:RAMM0内存范围有
    已指定
    "./sources/28035_RAM_lnk.cmd "、第86行:错误#10264:RAMM0内存范围
    与现有存储器范围 RAMM0重叠
    "./sources/28035_RAM_lnk.cmd "、第87行:错误#10263:RAML0L1存储器范围具有
    已指定
    "./sources/28035_RAM_lnk.cmd "、第87行:错误#10264:RAML0L1存储器范围
    与现有存储器范围 RAML0L1重叠
    "../sources/28035_RAM_lnk.cmd、第88行:错误#10263:复位存储器范围
    已指定
    "./sources/28035_RAM_lnk.cmd "、第88行:错误#10264:重置存储器范围
    与现有存储器范围复位重叠
    "./sources/28035_RAM_lnk.cmd "、第89行:错误#10263:IQTABLES 范围
    已指定
    "./sources/28035_RAM_lnk.cmd "、第89行:错误#10264:IQTABLES 范围
    与现有存储器范围 IQTABLES 重叠
    "./sources/28035_RAM_lnk.cmd "、第90行:错误#10263:IQTABLES2内存范围
    已指定
    "./sources/28035_RAM_lnk.cmd "、第90行:错误#10264:IQTABLES2内存范围
    与现有存储器范围 IQTABLES2重叠
    "./sources/28035_RAM_lnk.cmd "、第91行:错误#10263:IQTABLES3内存范围
    已指定
    "./sources/28035_RAM_lnk.cmd "、第91行:错误#10264:IQTABLES3内存范围
    与现有存储器范围 IQTABLES3重叠
    "../sources/28035_RAM_lnk.cmd、第93行:错误#10263:BootROM 存储器范围有
    已指定
    "./sources/28035_RAM_lnk.cmd "、第93行:错误#10264:BootROM 存储器范围
    与现有存储器范围 BootROM 重叠
    "./sources/28035_RAM_lnk.cmd "、第98行:错误#10263:BOOT_RSVD 内存范围
    已指定
    "./sources/28035_RAM_lnk.cmd "、第98行:错误#10264:BOOT_RSVD 内存范围
    与现有存储器范围 BOOT_RSVD 重叠
    "./sources/28035_RAM_lnk.cmd "、第99行:错误#10263:RAMM1存储器范围有
    已指定
    "./sources/28035_RAM_lnk.cmd "、第99行:错误#10264:RAMM1存储器范围
    与现有存储器范围 RAMM1重叠
    "./sources/28035_RAM_lnk.cmd "、第100行:错误#10263:RAML2内存范围有
    已指定
    "./sources/28035_RAM_lnk.cmd "、第100行:错误#10264:RAML2内存范围
    与现有存储器范围 RAML2重叠
    "./sources/28035_RAM_lnk.cmd "、第101行:错误#10263:RAML3内存范围有
    已指定
    "./sources/28035_RAM_lnk.cmd "、第101行:错误#10264:RAML3内存范围
    与现有存储器范围 RAML3重叠
    警告#10247-D:在没有 SECTIONS 规范的情况下创建输出段"csm_rsvD"
    警告#10247-D:在不使用 SECTIONS 规范的情况下创建输出段"csmpasswds"
    "./28035_RAM_lnk.cmd"、第112行:错误#10099-D:程序将无法放入可用内存中。 对齐/分块放置在".text"段大小0x1295页0中失败。 可用存储器范围:
    RAML0L1大小:0xc00未使用:0xc00最大孔洞:0xc00
    错误#10010:链接期间遇到错误;未构建"dtcimc.out"
    gmake:***[dtcimc.out]错误1.
    gmake:目标`全部'不会由于错误而重制。

    ****构建完成****

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

    看起来 cmd 文件不正确、某些存储器范围已定义重叠。 您可能会看到下面的链接、了解如何设计链接器命令文件以将代码链接到控制器、因为我们没有您的整个项目文件。

    processors.wiki.ti.com/.../C2000_Piccolo_One-Day_Workshop_Module_1

    processors.wiki.ti.com/.../Category:C2000_Training

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

    非常感谢您的帮助、建议和评论、知道我遇到了这种类型的错误

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    抱歉、cmd 文件似乎不正确、找不到某些段或段的定义不正确。 我无法告诉您如何解决这个问题、因为您发布的信息不足。 请发布整个 cmd 文件或工程。 如上所述、您可能需要查看培训材料以了解如何设计 cmd 文件。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    这是错误、我附加了下面的整个代码。 该代码在 ccsv6.e2e.ti.com/.../dtcimc.rar 上编写

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    ".text"的长度似乎不够、您没有定义正确的段、您可能需要查看以下线程来了解.cmd 文件以重新设计它、并且您最好根据正确的示例.cmd 文件设计自己的.cmd 文件。

    试用《TMS320C28x 优化 C/C++编译器 v5.0.0用户指南》(www.ti.com/.../spru514p.pdf)。

    此外、您可能还会发现此 wiki 文章对您有所帮助:
    processors.wiki.ti.com/.../C28x_Compiler_-_Understanding_Linking

    如果您没有机会查看研讨会材料、我认为这将有助于揭秘一些术语和架构。
    processors.wiki.ti.com/.../C2000_Archived_Workshops
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

     罗燕明、您好!

    感谢您不断地重复我的问题。  当我使用 下面所附的文件名 F28035_RAM_HVACI_Sensored.CMD 时、我构建代码时、它不会显示错误。 但我在这个 cmd 文件中有一个问题。  

    *
    --diag_suppress=16002

    存储器

    第0页:
    /*请注意,下面的内存分配不会根据需要创建段
    F2803x 上的 CLA。
    *

    开始:origin = 0x000000,length = 0x000002
    BOOT_RSVD:origin = 0x000002,length = 0x00004E
    RAMM0:origin = 0x000050、length = 0x0003B0

    程序:origin = 0x008000,length = 0x001800

    IQTABLES:origin = 0x3FE000,length = 0x000B50 //引导 ROM 中的 IQMath 表*/
    IQTABLES2:origin = 0x3FEB50,length = 0x00008C //引导 ROM 中的 IQMath 表*
    IQTABLES3:origin = 0x3FEBDC,length = 0x0000AA /*引导 ROM 中的 IQMath 表*/

    复位:origin = 0x3FFFC0,length = 0x000002
    BootROM:origin = 0x3FF27C,length = 0x000D44


    第1页:

    RAMM1:origin = 0x000480,length = 0x000380

    DataRAM:origin = 0x009800,length = 0x000800

    CLA_CPU_MSGRAM:origin = 0x001480,length = 0x000080
    CPU_CLA_MSGRAM:origin = 0x001500,length = 0x000080



    部分

    codestart:> begin,page = 0
    ramfuncs:>RAMM0,page = 0

    .text:>程序,page = 0

    .cinit:> RAMM0,page = 0
    .pinit:> RAMM0,page = 0
    switch:>RAMM0,page = 0
    .reset:> reset,page = 0,type = DSECT

    .stack:>RAMM1,PAGE = 1.

    .ebss:> DataRAM,page = 1.
    econst :>DataRAM,page = 1.

    .esysmem:>RAMM1,PAGE = 1.

    IQMath:>程序,page = 0
    IQmathTables :>IQTABLES,PAGE = 0,TYPE = NOLOAD

    Cla1ToCpuMsgRAM:>CLA_CPU_MSGRAM,page = 1.
    CpuToCla1MsgRAM:>CPU_CLA_MSGRAM,PAGE = 1.

    如何知道此 cmd 文件与我的代码结果相关的工作正常? 是带代码的 cmd 文件接口存储器的唯一函数