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.

[参考译文] LAUNCHXL-F2.8069万M:如何在独立模式下引导

Guru**** 2599385 points
Other Parts Discussed in Thread: CONTROLSUITE

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/662045/launchxl-f28069m-how-boot-in-stand-alone-mode

部件号:LAUNCHTXL-F2.8069万M
主题:controlSUITE中讨论的其他部件

尊敬的各位:

我是C2000微控制器的新手。  我正在使用controlSUITE中的gPIO_setup示例执行项目,并且可以在仿真模式下运行它。  我看过论坛上发布的主题,也读过958 l sp和平 行,但我仍然无法理解如何以独立模式运行我的项目。 如果有人能以简单的步骤指导我,这将对我大有帮助。 我只使用f2.8069万M启动板。

谢谢你。

此致,

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    你好
    我建议查看controlSUITE中的“FLASH_2.8069万”示例。 简单地说,您必须将项目加载到闪存中,而不是RAM内存中。
    如果要将"gPIO_setup"转换为独立项目,以下步骤可能会很有帮助:

    1)右键单击您的项目,选择"属性"。 在“属性”窗口中,转至“CCS常规”选项卡。 在该选项卡的底部,选择“链接器命令文件”列表中的“F2.8069万.cmd”文件。 此链接器文件将代码映射到MCU的闪存。

    2)将文件"F2806X_CodeStartBranch.ASM"添加到项目中(此文件位于"C:\ti\controlSUITE\device_support\f2806x\v151\F2806X_common\source"。2806。 此文件包含简单代码,可在重置后将程序分支到闪存。

    3)在“void main ()”开头添加“memcpy (&RamfuncsRunStart,&RamfuncsLoadStart,(size_t)&RamfuncsLoadSize)”的调用;
    "函数。 此函数将把一些代码从复制到RAM (特别是函数"InitFlash()")。 可能需要在"Main()"之前声明外部变量:
    外部UINT16 RamfuncsLoadStart;
    extern UINT16 RamfuncsLoadSize;
    外部UINT16 RamfuncsRunStart;
    这些变量在“F2.8069万.cmd”文件中定义,它们帮助“memcpy()”确定时间关键型代码的位置以及必须将其复制到的位置。

    4)在"memcpy()"之后调用函数"InitFlash()"。 此功能将设置闪存以获得最佳速度。

    然后编译该项目,将其加载到MCU的内存中。 加载后,按调试角度的"重置CPU"按钮,然后按"运行"。 如果一切正常,您会发现您的程序正在运行。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的Disona:

    非常感谢您的快速响应和从头开始的解释,但我在使用RamfuncsLoadSize时遇到了问题;它没有在 “F2.8069万.cmd”文件中声明。 我是否需要在cmd文件中声明该函数

    此致,

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

    你好

    定义代码大小的方法有多种,必须复制这些代码。 例如,在我的“F2.8069万.cmd”中,我有脚本的以下部分:

    Ramfuns :负载= FLASHD,
    RUN = RAML0,
    load_start(_RamfuncsLoadStart),
    load_end (_RamfuncsLoadEnd),
    run_start(_RamfuncsRunStart),
    			load_size (_RamfuncsLoadSize),
    页面= 0 

    脚本的这一部分告诉链接器,代码的这一部分 必须存储在闪存中,但从RAM内存运行。 您可以告诉链接器保存闪存的地址,代码的存储位置,RAM的保存地址,代码必须复制到的位置以及必须复制的代码的大小。

    我建议使用两种方法来获取_RamfuncsLoadSize:

    1)尝试将字符串"load_size(_RamfuncsLoadSize)添加到cmd脚本中,就像上面的代码示例中一样。 我不确定这是否与旧的链接器兼容(我使用编译器v.links.0 17.9),但这是最简单的方法。

    2)如果不起作用,则在"main.c"中声明变量"extern UINT16 RamfuncsLoadEnd",而不是"extern UINT16 RamfuncsLoadSize"。 然后在"memcpy()"函数中传递"(size_t)(&RamfuncsLoadEnd -&RamfuncsLoadStart)",而不是"(size_t)&RamfuncsLoadSize"。 您可以这样做,因为实际大小= ENDAD址- STARTADDRESS。

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

    尊敬的Disona:
    再次感谢。 我尝试了这两个选项,但仍然不起作用。它显示警告“正在创建输出节"ramfuncs"而没有节规范”。旧链接器的意思是什么。我是否需要更新我的编译器版本。 在此 示例中使用"Delay_US(1000*1000);"函1000函数是否有任何问题。 如果您可以给我一个链接,让我成为C2000编程专家,或者提供一些从一开始就学习的指导,这将非常有帮助。
    谢谢你。
    此致,
    佛像

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

    嗯,这很奇怪。  该警告意味着您有一些功能,必须将这些功能放在特殊的“ramfuncs”部分(将从闪存复制到ram)中,但您没有在cmd文件中描述该部分。 这很奇怪,因为此部分必须在“F2.8069万.cmd”中

    是否可以尝试将附加的文件复制到项目中? 但从项目中删除其他"F2.8069万.cmd"或"2.8069万_RAM_lnk"文件。 请小心,不要删除"F2806X_Headers_nonBIOS.cmd"。 因此,您的项目中必须有两个“cmd”文件:“F2.8069万M.cmd”(它附于此POST中)和 “F2806x_Headers_nonBIOS.cmd”(它是一个带有外设的链接器脚本,需要它)。 然后转至项目属性选项卡“常规”并确保“链接程序命令文件”选项为空。 如果不是-请将其留空。 这是必需的,因为编译器必须从项目中获取"F2.8069万M.cmd"。

    您可以在项目属性中的同一“常规”选项卡上检查生成工具(编译器+链接器+汇编器+等)。 如果您有15.x.x或更高版本-还可以。

    您在"delay_US"方面遇到了什么问题? 问题是什么? 项目不编译? 或者程序挂起?  

    如果您想升级C2000的技能,也许您应该看一下研讨会:

    e2e.ti.com/.../F2.8069万M.zip

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    尊敬的Disona:
    感谢您的大力支持。 现在它开始工作了。 我认为是.asm文件的问题。 我没有更新链接位置,因为它已经存在。 再次感谢您的巨大帮助。

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

    我遇到了传真问题...

    我尝试在2.8069万 Launchpad中以独立模式运行SCI echoback程序。 我做到了
    将2.8069万_RAM_lnk.CMD更改为F2.8069万.CMD

    和使用

    memcpy (&RamfuncsRunStart,&RamfuncsLoadStart,(size_t)&RamfuncsLoadSize);

    正如您所建议的...

    它在仿真器模式和独立模式下都能正常工作
    不更改启动板中给定的启动开关位置。

    我们在启动板中尝试了相同的过程来运行我们的应用程序。

    我们开发的应用程序代码基于回声像样例,通过向其添加ADC和PWM函数。
    但是,此剂量并不完全有效...

    从意义上说,代码是部分执行的。 在for环路工作之前完成的一些GPIO初始化(启动板中的LED按预期工作),但代码的其余部分未执行。

    代码似乎未完全复制到闪存中。

    请帮助解决...

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

    你好

    您能否提供一些其他信息?

    您的程序是否崩溃或发生了什么?

    您是否可以共享您的代码(如果它不是太大)?

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

    你(们)好

     我已附加项目文件。

    谢谢

    Lenin。

    e2e.ti.com/.../GDT_5F00_EV_5F00_LeadAcid_5F00_24V_5F00_75W_5F00_Rev-1.zip

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

    为了获得最佳帮助,我鼓励您自行开始发布。

    此致
    Chris