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-F28069M:从 LAUNCHXL-F28069M 上的闪存运行

Guru**** 2535750 points
Other Parts Discussed in Thread: C2000WARE, LAUNCHXL-F28069M, CONTROLSUITE

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/685105/launchxl-f28069m-running-from-flash-memory-on-the-launchxl-f28069m

器件型号:LAUNCHXL-F28069M
Thread 中讨论的其他部件:C2000WAREcontrolSUITE

您好! 我遇到了一个问题、需要尽快解决! 我需要从外部源为 Launchpad 供电并从闪存运行程序、很抱歉、我无法理解用户指南/参考手册中的技术术语、因为我仅使用 launchpad 大约6个月、 我真的可以使用一些明确的指导、而这正是我必须做的事情。

我在"Project->Build Configurations"->"Set Active->1 Flash"中找到了"select "Flash"编译配置。 "、但我正在运行 CCSV6 (根据建议) 、此选项对我不可用。 我只有1.Debug 和2. 版本。

我认为我应该有 3 个开关: 1 -向上、2 -向上、3 -向下。 这基于另一个线程、但我不确定什么是 JTAG 仿真或仿真引导模式、因此我不知道为什么我需要这样的开关。 我已经尝试理解这一切意味着什么、但我必须缺少一些关键知识。

我已经阅读过可能需要添加代码了吗? 这是否在 cmd 文件中? 再说一次、我不确定这是如何工作的。 我真的很希望能在这里进行演示!

 如果我可以在星期一结束之前让它从闪存中运行、因为这对于我们的 Capstone 项目至关重要!

感谢您的观看!

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

    如果您使用的是 C2000Ware 中的少量工程、则可以选择更改为闪存配置。
    您可以参考 \driverlib\f2837xd\examples\cpu1\led、用于示例项目的 CPU1_flash 配置、以了解设置。

    或使用 \device_support\f2806x\examples\c28\launchxl-f28069m、并在 CCS 项目设置中的预定义符号中定义_FLASH。 必须定义_FLASH 以启用将存储器段从闪存复制到 RAM。

    对于闪存构建配置、您必须使用闪存链接器命令文件。
    示例闪存链接器命令文件位于 \device_support\f2806x \f2806x_common\cmd\f28069.cmd

    有关更多详细信息、请参阅 www.ti.com/.../spra958l.pdf 上的应用手册

    如果您需要更多信息、请告诉我。

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

    您好! 我浏览过 www.ti.com/.../spra958l.pdf,对 BIOS 有疑问。 如何知道我的程序是 BIOS 程序还是非 BIOS? 我们有一个自主线路跟踪机器人、它使用并行数字传感器来检测线路、以及一些数字超声波传感器。 对我来说、这听起来像是一个"基本输入输出系统"、但我看到 BIOS 是易失的? 那么、我们的可能不是 BIOS? 我们目前有一个'F2806x_Headers_nonBIOS.cmd'文件、因此我猜可能是非 BIOS。

    不管怎样、我找到了 cmd 文件、但我也找到了 f28069 & f28069m cmd 文件。 我们采取哪种做法是否重要? 此外、我们是否只会将'F2806x_Headers_nonBIOS.cmd'文件替换为'F28069.cmd'文件? 这是简单吗?\

    此外、在阅读部分文档后、似乎需要决定程序的存储位置。 这真的很重要吗? 我们只是想让它正常工作、没有什么疯狂的事情发生了!

    谢谢!

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    嗨! 我一直在读书,我只是不知道该怎么办。

    我在一个示例项目中找到了这个。 这与此相关吗?

    空 InitFlash (空)

    EALLOW;
    //启用闪存管道模式以提高性能
    /从闪存执行的代码。
    FlashRegs.FOPT.BIT.ENPIPE = 1;

    // 小心
    //闪存操作所需的最小等待状态
    //在给定的 CPU 速率下、必须由 TI 表征。
    //有关最新信息,请参阅数据表。

    //为闪存设置分页等待状态
    FlashRegs.FBANKWAIT.bit.PAGEWAIT = 3;

    //设置闪存的随机等待状态
    FlashRegs.FBANKWAIT.bit.RANDWAIT = 3;

    //设置 OTP 的 Waitstate
    FlashRegs.FOTPWAIT.bit.OTPWAIT = 5;

    // 小心
    //只应使用这2个寄存器的默认值
    FlashRegs.FSTDBYWAIT.bit.STDBYWAIT = 0x01FF;
    FlashRegs.FACTIVEWAIT.BIVEWAIT = 0x01FF;
    EDIS;

    //强制流水线清空以确保写入
    //返回前发生最后配置的寄存器。

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

    初始化闪存需要 InitFlash()代码。 如果按原样使用 controlSUITE 中的实现、则没关系。

    正如我在上一篇文章中所说的、如果您使用中的主文件
    \device_support\f2806x\examples\c28\launchxl-f28069m、请在预定义符号中定义_flash。
    必须定义_FLASH 以启用将存储器段从闪存复制到 RAM。

    请在项目设置中使用提供的项目和 define _FLASH、并检查它是否正常工作。

    与 RAM 配置相比、闪存配置几乎没有变化。
    例如1)使用闪存 cmd 文件2)_FLASH 定义来复制 RAM 函数。 它由主文件中的 memcpy 函数执行。

    我建议在您的项目中进行相同的更改、以便在闪存配置中运行项目。

    您只需使用 F28069.cmd。 如果您在运行项目时发现任何问题、请告知我们。

    谢谢、
    Katta
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    谢谢! 一旦我上学,我就会测试这个!

    根据我所读出的内容、我认为开关应该是:

    SW1 -打开
    SW2-打开
    SW3 -没关系

    是这样吗?

    此外、在我实施闪存后、我能否将其插入 USB 并无问题地调试/修改值?

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

    我导入了您建议的项目、将"#define _FLASH 1"添加到"Example_F2806xLaunchPadDemo.c"的顶部、因为当我在代码中单击"Ctrl"_FLASH 时:

    #ifdef _flash
    memcpy (&RamfuncsRunStart、&RamfuncsLoadStart、(size_t)&RamfuncsLoadSize);
    #endif

    它显示"无法在索引中找到符号'_flash'。 所以我想我必须做的事情。

    不幸的是,这没有解决这个问题。 您知道我的错误吗?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    你好,Katta! 我想我可以使用它!

    我必须让 SW3处于关闭位置、我相信这会使它正常工作。

    当我从外部为其供电时、它会执行整个温度感应例程。 这是否确认它实际上起作用?

    我又回到了克莱什4个小时、所以我只是想向您介绍一下状态!

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

    是的、它正在工作。 如果您有任何问题、请告知我们。

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

    我刚刚发现一个问题、当我插入到计算机中时、我转到调试我的系统、我无法设置任何断点。 是否有解决方法?

    我将全部3个开关都打开。

    此外、我认为它可能与代码片段有关:

    #ifdef _flash
    memcpy (&RamfuncsRunStart、&RamfuncsLoadStart、(size_t)&RamfuncsLoadSize);
    #endif

    如果我将其更改为:

    #if _FLASH
    memcpy (&RamfuncsRunStart、&RamfuncsLoadStart、(size_t)&RamfuncsLoadSize);
    #endif

    或者这是完全不同的问题吗?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    尊敬的 Andrew:

    使用以前的实现、即

    #ifdef _flash
    memcpy (&RamfuncsRunStart、&RamfuncsLoadStart、(size_t)&RamfuncsLoadSize);
    #endif

    并在 CCS 项目的预定义符号中定义_FLASH。

    无论如何、上述代码不是断点不起作用的原因。 您是否在程序暂停或运行时尝试设置断点? 程序不应运行。
    请使用任何现有示例检查相同的方法、以查看它是否是一般问题。 请告诉我。

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

    我已经听过您的声音了一段时间,因此我假设您能够解决您的问题。 如果情况并非如此,请拒绝此解决方案并回复此主题。 如果此主题锁定、请单击"提出相关问题"按钮、然后在新主题中描述您的问题的当前状态以及您可能需要帮助我们帮助解决您的问题的任何其他详细信息。

    此致、
    Katta