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/F28M35H52C:针对我的新硬件修改示例 C2000程序

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/626107/ccs-f28m35h52c-adapting-an-example-c2000-program-for-my-new-hardware

器件型号:F28M35H52C
Thread 中讨论的其他器件: controlSUITE

工具/软件:Code Composer Studio

我刚刚收到一个在 基于 F28M35x controlCARD 的设计中使用 F28M35H52C 的新 PCB、但一些 GPIO 已经被移动。  我正在尝试让一个简单的闪烁程序运行(我使它在 F28M35x controlCARD 上工作)、但我无法让 LED 闪烁。  到目前为止、我所做的是:

我将 blinky_dc_c28和 blinky_dc_m3程序加载到 CC7中、并能够对其进行编译

然后、我创建了自己的 my_pinout.h 文件、其中包含一个 LED 的替代#define 语句...

#define DS_LED_0_DIR_REG GpioG1CtrlRegs.GPADIR.bit.GPIO29
#define DS_LED_0_DAT_REG GpioG1DataRegs.GPADAT.bit.GPIO29

请注意、我在前面添加了"DS_"、对这些语句的更改是 GPIO70更改为 GPIO29、并抛出错误提示 GPIO29在 GPCD 中没有 GPIO29、因此我查找了它并将 GPCD 更改为 GPCA、然后更改了 LED…… 针对 LED0的语句连接到我自己的 DS_LED…… blinky_dc_C28中的语句 、这些语句需要编译代码。

3.我能够将 M3和 C28代码加载到我的新板中。

4.然后,我使用了 debug>conctocard.ccxml 对话框,能够连接到两个内核并控制它们都运行,但我的 LED 不闪烁。  我将 GPIO29输出引脚设置为低电平、 我限定了 X1/X2引脚的范围、并看到一个干净的20MHz 时钟信号。

我想我需要做的是创建我自己的 set_pinout.h 文件、其中重新定义了我的所有 GPIO 和外设、但现在我怀疑还有更多变化、以便切换每个 GPIO 引脚-我很感激提供一些指导。 也许我需要创建一个新的 targetconfiguration.ccxml 文件吗? 我使用了这个想法、但看不到如何使.ccxml 文件拥有示例程序。

TED

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    听起来好像您为 C28创建了一个新的引脚文件、但您是否也为 M3创建了一个引脚文件? 我相信 M3项目中有一些代码将引脚的所有权授予 C28。 您还需要确保为您的新引脚更新了该信息。

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

    我花了更多的时间来查看这一点、问题可能出在引脚权限的设置上。  

    基本上、我要做的就是更改标准双核闪烁程序、将 GPIO29 (PE5)用作从 GPIO70 (PC6)引脚示例程序中驱动 LED0的输出。

    在 blinky_dc_c28.c 中、我更改了以下内容

    第46行和第48行重新引用了 LED_0_DIR_REG 和 LED_0_DAT_REG、因此我查找了这些定义并发现它们位于 F28M35x_set_pinout.h 中、因此我修改了以下引用:

    //#define LED_0_DIR_REG GpioG1CtrlRegs.GPCDIR.bit.GPIO70
    //#define LED_0_DAT_REG GpioG1DataRegs.GPCDAT.bit.GPIO70
    #define LED_0_DIR_REG GpioG1CtrlRegs.GPADIR.bit.GPIO29
    #define LED_0_DAT_REG GpioG1DataRegs.GPADAT.bit.GPIO29

    注意原始行已注释掉。

    LED_0_DAT_REG 在 for (;;)循环中再次引用、因此我认为 c28程序就是这样。

    ----

    在 blinky_dc_m3.c 程序中、我进行了以下更改...

    104至114行是指 LED_0_Periph、LED_0_BASE 和 LED_0_PIN、它们在 set_pinout_f28m35x.h 中定义、我修改如下:

    //
    //用于用户 LED 的 GPIO
    //
    //#define LED_0_Periph SYSCTL_Periph_GPIOC
    #define LED_0_PERIPh SYSCTL_PERIPH_GPIOE // TM GPIO29为 PE5
    //#define LED_0_BASE GPIO_PORTC_BASE
    #define LED_0_BASE GPIO_Porte _BASE
    //#define LED_0_PIN GPIO_PIN_6
    #define LED_0_PIN GPIO_PIN_5

    #define LED_1_PERIPh SYSCTL_PERIPH_GPIOC
    #define LED_1_base GPIO_PORTC_BASE
    #define LED_1_PIN GPIO_PIN_7

    请注意、我已对原始行进行了注释

    blinky_dc_m3.c 程序将 LED_0的控制提供给第109行的 C28内核、如下所示:  

    //为端口 C 引脚6提供 C28控制
    GPIOPinConfigureCoreSelect (LED_0_BASE、LED_0_PIN、GPIO_PIN_C_CORE_SELECT);

    但是、对 set_pinout_f28m35x.h 所做的更改应注意以下事实:我的 LED0位于 GPIO29而不是 GPIO70上

    blinky_dc_m3.c 的其余部分继续设置 LED3并使该 LED 闪烁、但这不应影响我的程序。

    我试过它、它不起作用。  我确信我的 LED 状态良好、并以正确的方式连接-阳极连接到 GPIO29、阴极通过150欧姆电阻接地。

    我重新加载了所有内容、并重新从头开始进行更改、以确保我没有在文件中弄乱任何内容。 仍然不奏效。

    我被卡住了

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    嗯、我刚才尝试对处理器上的 LED1引脚进行范围界定、没有活动-卡在零伏。 我可以看到 X1和 X2引脚上的20MHz 时钟、CCS 显示它正在连接、编程和运行-我还可以暂停程序、并看到它在循环中运行。 我可以执行哪些测试来查看输出多路复用器寄存器的状态、以确保它们设置为输出。 或者我的代码设置中是否缺少某些内容?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您的代码对我来说都是正确的。 我还没有发现问题。 我不怀疑您的定制板有问题、但出于好奇、您是否尝试在 CCARD 上运行代码并查看29引脚是否在此处切换?

    您提到了要检查寄存器--在 CCS 中,您可以转到 View->Registers 以打开一个面板,使您可以在调试时查看寄存器内容。 它将显示您在"Debug"面板中选择的任何内核的寄存器。

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

    谢谢、客户现在已经承认这个芯片可能已经过压-也许高达12伏。  我将更换 PCB 上的芯片。

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

    安装了新处理器、它完全相同。  我会一直看着、想从头开始编写代码、但这令人沮丧。

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

    我认为我对 CCS 环境设置的理解有问题。  我可以让我的板运行、但只能在特定 的操作序列下运行。  如果您可以查看下面我的屏幕截图、我有双路闪烁示例、该示例实际上已设置回标准设置、并且我已将 LED 连接到 GPIO71 (此外、我还能够使用示波器探测 GPIO70) 无论如何、当我使它运行时、我可以看到两个都在"闪烁"、但我只能通过执行以下步骤使它运行:

    1.单击工具栏上的调试按钮或项目1:Blinky_dc_m3 -然后告诉我正在加载程序 blinky_dc_m3.out

    然后、我在调试窗口中看到2个内核、M3已连接但已挂起、C28已断开连接

    然后、我运行 M3部分、显示为"正在运行"(C28显示为"已断开连接")

    然后、我右键单击 C28行并选择连接目标、然后看到 C28内核显示为"已暂停"

    5.在选择了 C28部分的情况下,我单击运行按钮,两个内核随后显示正在运行,GPIO 端口开始闪烁-在此步骤之前两个内核都不闪烁

    6.然后我可以点击停止按钮、退出 CCS 会话中的调试、但硬件在 LED 闪烁的情况下保持运行

    7.如果我对 PCB 进行下电上电、则它不会启动(闪存)(无论 XDS100V2是否已连接都无关紧要

    我认为代码运行后、每当硬件上电时、代码都会启动。  我还认为我应该通过选择其中一个.ccxml 文件来运行-我尝试创建自己的文件、但它不起作用、 当我加载项目时、也不会出现这种情况、即 Concerto Card.ccxml -这些文件似乎加载和控制内核、但当我暂停它们时、它们显示为"正在运行"、处理器内核似乎处于空闲状态。

    您能不能从该描述中说明我的错误? 如果您希望我做进一步的测试、请告诉我。

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

    您将引导模式引脚设置为什么? 这可能是个问题、因为连接仿真器会覆盖引脚设置。

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

    这可能是问题、硬件设计人员没有在引导引脚上提供上拉或下拉-是否有其他方法可以设置这些引脚、或者我是否可以将引导引脚重新分配给其他 GPIO?

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

    我相信你被困在这里。 在电路板旋转之前、您可能需要尝试执行一些跳线焊接、以确保问题确实存在。 我将联系我们的一些引导流程专家、在这里跳转。 他们可能有一些调试步骤来帮助确认问题。

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

    您对调试步骤的描述是正确的。 M3运行后、它将等待 C28准备好发送 IPC 消息、告知 C28如何引导。

    这肯定听起来好像没有为闪存设置引导 GPIO。 您知道他们的状态是什么吗?

    您可以切换用于引导的 GPIO、但这是自 OTP 以来的一次更改。 请参阅以下 TRM (第6.3.1章)中的更多详细信息。 如果该区域已被写入、则无法使用该方法。 但同样、只有在您愿意永久更改用于引导的 GPIO 时才使用此选项。

    http://www.ti.com/lit/spruh22

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

    更新了。  客户意识到他们给了我一个旧的原型芯片、于是他们给我一个修订版1芯片、我将这个芯片换至 PCB 上。  现在、我应该能够将电阻器焊接到未使用的引脚以实现缺失的引导模式引脚、并且、鉴于这是一次性(OTP)操作、我想获得一些有关如何执行此操作的指导。

    参考手册(spruh22h.pdf)在第539页上说明... "要将默认引导模式引脚更改为 GPIOx、请在相应的位字段中对 GPIOx+1进行编程。"

    我知道我需要将(GPIOx+1)数字编程到 Bmode1、2、3、4寄存器中、但我该怎么做?  是在 CCS 中完成的吗?

    提前感谢。

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

    因此、我现在安装了一个替换版本1芯片、这意味着我应该能够将引导模式引脚分配给备用 GPIO 引脚; 我意识到、要将默认引导模式引脚更改为 GPIOx、我需要在 BMODE_Pinx 引脚的相应位字段中对 GPIOx+1进行编程 、但我该怎么做? 它是通过 Code Composer Studio 实现的吗?

    提前感谢。

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

    您对 OTP 的编程与对闪存的编程相同、不同之处在于您只能执行一次 OTP 编程。 使用链接器指定 OTP 中的位置并分配您想要在此处编程的内容。 可以使用 pragma 为该段分配变量(请参阅第6章 www.ti.com/lit/spru514)

    您可以使用 CCS 查看并查看您的值是否已正确编程。

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

    谢谢、我不理解"使用链接器"的建议。  您的意思是、我只需将 pragma 语句添加到代码中、然后刷写器件即可?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    克里斯托弗、我在一个较旧的话题中发现了这一讨论
    e2e.ti.com/.../312626
    现在、我担心我能正确地做到这一点、因为我可能会生锈我的芯片、该芯片已经在 PCB 上被两次更换、第三次将推动 PCB 轨道的运行、这将是一场灾难。

    我完全了解我需要将哪些值放入引导模式寄存器中、我希望将 GPIO68、69、70、71分别设置为 BMODE_pin1、2、3、4。 这些引脚现在设置为在68、69和70上拉、在71上拉。 问题:

    1.如果我添加一条 pragma 语句、是否需要一次性设置所有4个值?
    2.请告诉我该 pragma 语句的语法吗?
    3. pragma 语句是否位于 main.c 代码中? 如果不是、它会走到哪里?
    4.这将如何影响生产? 所有新的 PCB 都需要设置 BMODE_Pinx 值、然后才能工作。

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

    是的、您可以在代码中创建一个新变量、然后使用 pragma 将该变量分配给在链接器中设置的段。 或者、您可以在项目中创建一个 asm 文件、并以这种方式设置一个段。 这仍然需要编辑链接器文件以将该数据分配到存储器中的正确段。

    示例 pragma (它可以进入任何有意义的 C 文件):
    #pragma DATA_SECTION(nameOfVariable、".myNewSection")
    unsigned long nameOfVariable = 0xABCDABCD;

    您可以在第6章 www.ti.com/lit/spru514上阅读有关的更多信息

    对于 asm 文件、您可以执行类似的操作
    .sect ".myNewSection"
    .word 0xABCDABCD

    示例链接器:
    --retain "(.myNewSection)"
    存储器

    OTP:origin =0x00000000,length = 0x4 //例如,地址不正确

    部分

    .myNewSection:> OTP


    建议首先将数据放置在 RAM/Flash (而不是 OTP)中、以查看该值是否被正确编程并指定所需的方式。

    在将器件的 OTP 配置为这些新引脚之前、您的器件不会使用这些引脚。

    此致
    Chris
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我安装了一个新芯片、修订版1、允许将引导模式引脚重新分配给未使用的引脚。我选择了 GPIO68、69、70和71、分别分配给 BMODE_Pins 1、2、3和4。 我似乎能够将代码加载到芯片并通过 CCS 与其通信、但振荡器似乎没有运行-当我示波 X1/X2引脚时、我看不到任何信号。

    我在使用 pragma 语句对 OTP 存储器进行编程方面有一些建议、但我担心即使调试似乎表明器件正在运行、器件甚至不会运行。

    欢迎提供有关测试或如何对 OTP 进行编程的任何建议-是否没有允许我查看 OTP 值的闪存工具?

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

    Chris 不在办公室、今天我将介绍这条线程。 其他客户也做了您想做的事情,如果这有助于您的信心:-)

    e2e.ti.com/.../339389

    上面的线程详细介绍了如何更改 F28M35x 上的引导模式选择引脚。 此外、上面的线程还有一个指向另一个用户的链接、该用户执行了将数据编程到 OTP 中的步骤、就像您尝试执行的那样。

    记录的 OTP 区域应在"Memory"窗口中可用、您也可以在"Expressions"窗口中查看位置值。

    希望这对您有所帮助。

    此外、我不确定这如何影响 X1/X2、您是否提供来自外部振荡器的时钟? 此外、在 XRSn 引脚的作用下、OTP 具有 ECC、因此如果在编程期间与这些值发生任何混乱、将导致 ECC 错误、并且器件可能会返回到背对背复位状态。

    OTP 是一次性可编程的、因此您必须小心、希望您有一些额外的部件放置在实验中。


    此致
    Santosh Athuru
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    谢谢 Santosh、我将阅读您提供的链接、并报告我的工作方式。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    我将#pragma 语句添加到我的 C 文件中、然后进行构建、我的额外行如下所示

    #pragma DATA_SECTION (TedsVariable、".TedsNewSection")
    无符号长整型 TedsVariable = 0x48474645;

    我很确定我需要做的是将0x48474645存储到位置0x680824中、从而使 GPIO71、70、69、68分别成为引导引脚4、3、2、1 -任何可以确认的人、请执行此操作。

    我意识到我需要打开和编辑链接器文件以添加指令、告诉它将我的新变量存储在哪里、并且建议我先在 RAM 或闪存位置中测试它。

    我的问题是、在 CCS 中、我可以在哪里找到、打开和编辑链接器文件?

    谢谢。

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

    是的、该 pragma 设置看起来正确。

    我无法具体说明您的链接器文件在您的项目中的位置。 链接器以".cmd"结束。 如果您在项目浏览器中看不到它、则可能需要在常规或"C2000链接器"文件搜索路径部分下检查项目属性。

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

    Chris、

    我运行的是 CCS 7.2、我使用的是双 Blinky M3示例(我的 PC 上的默认安装位置)、所附图片显示了选项对话框中的页面、请确认我认为 C:\ti\controlSUITE\device_support\f28m35x\V210\Mware\cm\cmF28M35x_generic_m3文件需要编辑 linker.cmd。

    有人建议我使用0x680824以外的其他位置来首次测试、我可以写入数据并查看其写入情况、然后再尝试使用 OTP、 我进入了处理器 f28m35h52c.pdf 的数据表、 在第156页的存储器映射部分中、有一个从0068 0818 - 0070 00FF "已恢复"的块、这让我担心在没有其他更改的情况下写入将不起作用。  此外、您能否建议一个区域从哪个区域中选择一个用于测试写入的地址?

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

    是的、这看起来是该项目的正确链接器。

    您应该能够像任何其他闪存部分一样对 OTP 进行编程、当然、您只能进行一次编程、并且无法撤消。
    您可以尝试在 RAM 或闪存中进行测试写入。 例如存储器部分 C2或 C2或 FLASH1/2。

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

    Chris、

    我今天查看了实际的链接文件、这是存储器部分...

    内存
    {
    
    INTVECS (rwx):origin = 0x20000000,length = 0x01B0
    C0 (rwx) :origin = 0x200001B0,length = 0x1E50
    C1 (rwx) :origin = 0x20002000、length = 0x2000
    BOOT_RSVD (RX):origin = 0x20004000,length = 0x0900
    C2_1 (rwx) :origin = 0x20004900,length = 0x0700
    RESETISR (rwx):origin = 0x20005000,length = 0x0008
    C2_2 (rwx) :origin = 0x20005008、length = 0x0FF8
    C3 (rwx) :origin = 0x20006000、length = 0x2000
    CTOMRAM (RX) :origin = 0x2007F000,length = 0x0800
    MTOCRAM (rwx):origin = 0x2007F800,length = 0x0800
    
    OTPSECLOCK :origin = 0x00680800,length = 0x0004
    OTP_Reserved1:origin = 0x00680804,length = 0x0004
    OTP_Reserved2:origin = 0x00680808,length = 0x0004
    OTP_Z2_FLASH_START_ADDR :origin = 0x00680C,length = 0x0004
    OTP_EMACID :origin = 0x00680810,length = 0x0008
    OTP_Reserved3:origin = 0x00680818,length = 0x0004
    Customer_OTP_MAIN_OSC_CLK_FREQ :origin = 0x0068081C,length = 0x0004
    OTP_Reserved4:origin = 0x00680820,length = 0x0004
    OTP_BOOT_MODE_GPIO_configure :origin = 0x00680824,length = 0x0004
    OTP_Reserved5:origin = 0x00680828,length = 0x0004
    OTP_Entry_point:origin = 0x0068082C,length = 0x0004
    OTP_Reserved6:origin = 0x00680830,length = 0x0010
    } 

    请注意,在这里有一个"otp_boot_mode_gpio_configure:origin = 0x00680824,length = 0x0004",所以我不能只在主代码中写入类似这样的内容。

    OTP_BOOT_MODE_GPIO_configure = 0x48474645; 

    请提供建议。

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

    OTP_BOOT_MODE_GPIO_configure 是器件上该区域定义的存储器范围。 若要将值放置在该文件的链接器"sections "部分、您将执行以下操作:

    .TedsNewSection:> OTP_BOOT_MODE_GPIO_configure


    这将获取您为变量定义的段、并将其放置在该存储器区域中。 您可以将 OTP_BOOT_MODE_GPIO_configure 替换为 C2或 C3以放置在 RAM 中。

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

    嗯、它不起作用。

    我添加了名为 TedsVariable 的变量、为其分配了所需的值、并编辑了.cmd 文件、使其存储在 TedsNewSection 中。  我尝试运行该程序、没有错误。 因此、我在未连接 CCS 的情况下重新启动、发现代码未运行。  重新连接后、我尝试查看0x680824的内容或 TedsVariable 的内容、但我似乎无法在 Debug watch 窗口中看到任何变量... sigh

    现在、我只想查看位于0x680824处的 OTP 引导模式寄存器的内容

    在我看到的某个地方、有一个闪存配置 GUI 工具、这可能有帮助吗?

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

    TED、

    在 CCS 中、连接并调试器件时、您是否尝试了内存浏览器(View->Memory Browser)?

    编辑:如果不编辑通过目标配置文件加载的 GEL 文件,您可能无法在内存窗口中看到它。 您可能正在使用 GEL "f28m35h52c_m3.gel"。 如果您进入 CCS 安装-> CCS_base ->仿真-> GEL 并找到此文件。 使用文本编辑器打开、并将第113行更改为:

      GEL_MapAddStr (0x680C、   0、0x00100、  "R"、  0);     /* OTP 组1应用2       *

    保存并重新启动 CCS、它现在应该在 MEMORY 窗口中可见。

    另外、请注意、此位置具有 ECC、请在 TRM 的"6.5.6 M-Boot ROM User OTP"中阅读更多信息。


    此致
    Chris

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

    我编辑了.gel 文件、现在我可以看到存储器的内容、0x680824包含0xFFFFFFFF、因此很明显、我的代码不允许将值写入 OTP。  我会继续尝试。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我在将0x48474645分配给地址0x680824的行上放置了一个断点、但在单步执行程序时、我从未遇到过该断点、它似乎卡在 C28系统引导加载程序中。 是否可以使用某种寄存器编辑器对内容0x680824进行编程?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我回顾了所有内容、发现我编辑了错误的.cmd 文件。 我一直在编辑 C:/ti/controlSUITE/device_support/f28m35x/v210/MWare/cmd/F28M35x_generic_M3_RAM.cmd、而不是
    C:/ti/controlSUITE/device_support/f28m35x/v210/MWare/cmd/F28M35x_generic_M3_FLASH.cmd

    我修复了该问题并重新编译了代码、我能够运行代码、但在 FFFFFFFF 处0x680824的内容保持不变

    您确定 下面的#pragma 语句将导致值0x48474645写入到我的变量中吗?
    #pragma DATA_SECTION (TedsVariable、".TedsNewSection")
    无符号长整型 TedsVariable = 0x48474645;

    此外、当我进入调试器时、表达式风现在显示 TedsVariable、但 type 为"未知"、值为"未找到标识符:TedsVariable"

    我从构建中得到的报告如下所示:
    '调用:ARM 编译器'
    "c:/ti/ccs_700/ccsv7/tools/compiler/ti-cgt-arm_16.9.0.LTS/bin/armcl /ti/controlSUITE/device_support/f28m35x/v210/F28M35x_examples_Dual/blinky/m3/blinky_dc_m3.c -mv7M3 -code_state=16 -me --include_path="C:/ti/ccs_700/ccsv7/tools/compiler/ti-cgt-arm_16.9.0.LTS/include --include_path="C:/ti/controlSUITE/device_support/f28m35x/v210/MWare "-g --define=CCS --define="_flash"--define=_standalone --diag_suppress=10199 --diag_warning=225 --display_error_express=dc-refline_subsections=dproc-forbon_abi_decon_subsectionsections=-"--ex-abi_companits=d_abi_subsectionsections=d_en_abi_en_subsections=d_abi_subsections=-
    '完成的建筑:C:/ti/controlSUITE/device_support/f28m35x/v210/F28M35x_examples_Dual/blinky/m3/blinky_dc_m3.c '
    '
    '建筑目标:Blinky_dc_m3.out'
    '调用:ARM 链接器'
    "c:/ti/ccs_700/ccsv7/tools/compiler/ti-cgt-arm_16.9.0.LTS/bin/armcl /ti/ccs_700/ccsv7/tools/compiler/ti-cgt-arm_16.9.0.LTS/lib /ti/controlSUITE/device_support/f28m35x/v210/MWare/driverlib/ccs/Debug/driverlib.lib -mv7M3 -code_state=16 -me -g -define=ccs -define="_flash"--define=-diag_suppress=10199 -xml_warning=225 -display_error_number -gen_func_subsections=on -abi=eabi -z -dblinkg-rom_blinkg-"-ine_blinkg-rbline_blinkg-"-rbline_ble.track-"-rbline_bline_bline_bs.ms"-rbline_bline_bline_blinkg-rbs.ms"-rbline_bline_bline_ble.track-"-rbs.ms"-rbline_bline_bline_bline_bline_ble.track_bs.ms"-"-rbline_bline_bline_bline_ble.track_bs.ms"-rbline_bline_bline_ble.track_bs./ti/controlSUITE/device_support/f28m35x/v210/MWare/cmd/F28M35x_generic_M3_FLASH.cmd /ti/ccs_700/ccsv7/tools/compiler/ti-cgt-arm_16.9.0.LTS/include

    警告#10247-D:创建不带段的输出段"ramfuncs"
    规格
    '完成的建筑目标:Blinky_dc_m3.out'
    '

    ****构建完成****
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我回顾了所有内容、发现我编辑了错误的.cmd 文件。 我一直在编辑 C:/ti/controlSUITE/device_support/f28m35x/v210/MWare/cmd/F28M35x_generic_M3_RAM.cmd、而不是
    C:/ti/controlSUITE/device_support/f28m35x/v210/MWare/cmd/F28M35x_generic_M3_FLASH.cmd

    我修复了该问题并重新编译了代码、我能够运行代码、但在 FFFFFFFF 处0x680824的内容保持不变

    您确定下面的#pragma 语句将导致值0x48474645写入到我的变量中吗?
    #pragma DATA_SECTION (TedsVariable、".TedsNewSection")
    无符号长整型 TedsVariable = 0x48474645;

    此外、当我进入调试器时、表达式窗口现在显示 TedsVariable、但 type 为"未知"、值为"未找到标识符:TedsVariable"

    我从构建中得到的报告如下所示:
    '调用:ARM 编译器'
    "c:/ti/ccs_700/ccsv7/tools/compiler/ti-cgt-arm_16.9.0.LTS/bin/armcl /ti/controlSUITE/device_support/f28m35x/v210/F28M35x_examples_Dual/blinky/m3/blinky_dc_m3.c -mv7M3 -code_state=16 -me --include_path="C:/ti/ccs_700/ccsv7/tools/compiler/ti-cgt-arm_16.9.0.LTS/include --include_path="C:/ti/controlSUITE/device_support/f28m35x/v210/MWare "-g --define=CCS --define="_flash"--define=_standalone --diag_suppress=10199 --diag_warning=225 --display_error_express=dc-refline_subsections=dproc-forbon_abi_decon_subsectionsections=-"--ex-abi_companits=d_abi_subsectionsections=d_en_abi_en_subsections=d_abi_subsections=-
    '完成的建筑:C:/ti/controlSUITE/device_support/f28m35x/v210/F28M35x_examples_Dual/blinky/m3/blinky_dc_m3.c '
    '
    '建筑目标:Blinky_dc_m3.out'
    '调用:ARM 链接器'
    "c:/ti/ccs_700/ccsv7/tools/compiler/ti-cgt-arm_16.9.0.LTS/bin/armcl /ti/ccs_700/ccsv7/tools/compiler/ti-cgt-arm_16.9.0.LTS/lib /ti/controlSUITE/device_support/f28m35x/v210/MWare/driverlib/ccs/Debug/driverlib.lib -mv7M3 -code_state=16 -me -g -define=ccs -define="_flash"--define=-diag_suppress=10199 -xml_warning=225 -display_error_number -gen_func_subsections=on -abi=eabi -z -dblinkg-rom_blinkg-"-ine_blinkg-rbline_blinkg-"-rbline_ble.track-"-rbline_bline_bline_bs.ms"-rbline_bline_bline_blinkg-rbs.ms"-rbline_bline_bline_ble.track-"-rbs.ms"-rbline_bline_bline_bline_bline_ble.track_bs.ms"-"-rbline_bline_bline_bline_ble.track_bs.ms"-rbline_bline_bline_ble.track_bs./ti/controlSUITE/device_support/f28m35x/v210/MWare/cmd/F28M35x_generic_M3_FLASH.cmd /ti/ccs_700/ccsv7/tools/compiler/ti-cgt-arm_16.9.0.LTS/include

    警告#10247-D:创建不带段的输出段"ramfuncs"
    规格
    '完成的建筑目标:Blinky_dc_m3.out'
    '

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

    TED、

    [引用 USER="Ted Mawson 3.0">您确定下面的#pragma 语句会导致将值0x48474645写入到我的变量中吗?

    #pragma DATA_SECTION (TedsVariable、".TedsNewSection")
    无符号长整型 TedsVariable = 0x48474645;[/引用]

    以上内容将不起作用。 相反、它所做的是声明一个全局变量并将其放置在.tedsNewSection 中、然后运行时初始化代码将尝试在程序到达 main 之前初始化该变量、它将不起作用。

    尝试向变量中添加"const"、然后查看变量是否发生变化。  

    您可以执行此用户在以下帖子中所做的操作

    e2e.ti.com/.../312626

    pragma RETAIN (BOOT_OTP)
    #pragma LOCATION (BOOT_OTP、0x00680824);
    const unsigned long boot_otp = 0x21212121;

    希望这对您有所帮助。

    此致

    Santosh Athuru

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    说明:在上述示例代码中、分配给 boot_otp var 的值显示为示例、并从链接的论坛帖子中拉出。 您必须使用您得出的值。

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

    Santosh、

    谢谢、我让它对 OTP 进行编程。

    只需在变量声明前面加上"const"就不起作用、但您刚才以正确的值(对于我而言) 0x48474645发布的3行是成功的、我的 F28M35H52C 本身也无法运行。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我最终通过重新编程 C2000以使用不同的引导引脚来工作、请参阅 e2e.ti.com/.../2350546
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    Santosh 帮我解决了这个问题、相关链接是 e2e.ti.com/.../2350546

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

    TED、

    感谢您的确认。 如果您在项目进展时有任何其他问题或反馈、请使用论坛。

    此致
    Santosh Athuru