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.

[参考译文] TMS320F28P550SJ:SCI 闪存编程

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1368666/tms320f28p550sj-sci-flash-programming

器件型号:TMS320F28P550SJ

工具与软件:

您好  

我无法理解如何使用 SCI 将代码载入 F28P55的闪存、即使我阅读了应用手册:"C2000 微控制器的串行闪存编程"

段落。 似乎表明 F28P55是双核。 示例命令在两个 CPU 上加载代码。  

"

5.按如下所述输入带有参数的命令:•示例:serial_flash_programr.exe -d f28p55x -k flash_kernel_c28x_dual_ex1_c28x1.txt -a led_ex1_c28x_dual_blinky_cpu1.txt -n l ed_ex1_c28x_dual_blinky_cpu2.txt -b 9600 -p COM34 -v -t app_flash_banks_and_sectors.txt

        "

将固件写入 F28P55x 闪存的正确命令是什么?

如何使用 Code Composer Studio 生成的二进制代码生成.txt 文件?

是否有 GUI 应用程序选项可将固件加载到 F28P55x?

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

    尊敬的 Ari:

    我将致电我们的串行闪存编程器专家来协助解决这个问题。 您能否确认您只是尝试遵循串行闪存编程应用手册中的指南? 或者您是否执行了应用手册中未包含的任何自定义配置?

    谢谢!

    卢克

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

    尊敬的 Ari:

    >第5.4节。 似乎表明 F28P55是双核。 示例命令在两个 CPU 上加载代码。  

    第5.4节指出 F28P55x 器件具有单核、只有 CPU1。 第5.1节还说明了以下步骤不适用于 F28P55x 器件。

    >将固件写入 F28P55x 闪存的正确命令是什么?

    示例命令:
    serial_flash_programr.exe -d f28p55x -k flash_kernel_ex3_sci_flash_kernel.txt -a led_ex1_blinky.txt -b 9600 -p COM42 -v

    >如何从 Code Composer Studio 生成的二进制代码中生成.txt 文件?
    当为内核或应用生成您的 CCS 工程时、您需要从   应用手册的第2节中添加以下行:

    进入以下 CCS Build Settings 窗口:

    >是否有 GUI 应用程序选项可将固件加载到 F28P55x 上?
    是的、您可以通过 CCS 在工具栏菜单中转到加载程序按钮来加载内核或应用的固件:

    谢谢。此致、

    查尔斯

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

    您好、Charles

    我不明白应用手册中的某些要点:

    如果内核位于 ROM 中、为什么当 CPU 以串行引导模式引导时、内核不在 ROM 本身中运行? 这样就无需通过串行端口将内核与应用程序一起加载?

    即使内核只能访问在 RAM 中运行的闪存、为什么 ROM 中的启动代码不传输内核以在 RAM 中运行?

    是否有必要编译"f28p55x_flash_ex3_sci_flash_kernel"示例以生成内核.txt 文件?

    为什么未提供此文件的现成文件和.txt 格式文件?

    我还注意到、f28p55x_flash_ex3_sci_flash_kernel 示例用于具有20MHz 晶体的电路板、而我的电路板使用了内部振荡器。 我是否需要更改示例固件以便其在电路板上正常工作?

    阿里

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

    尊敬的 Ari:

    >如果内核位于 ROM 中,为什么当 CPU 以串行引导模式引导时,内核不在 ROM 中运行? 这样就无需通过串行端口将内核与应用程序一起加载?

    默认 SCI 闪存内核工程驻留在 RAM 中并从 RAM 运行、而不是从 ROM 中运行。 如果未使用 CCS 加载内核(独立使用)、则 可以通过器件的 SCI ROM 引导加载程序将内核发送到器件。  加载后、控制权将从 SCI ROM 引导加载程序传输到在 RAM 中运行的 SCI 闪存内核。

    >即使内核只能访问在 RAM 中运行的闪存,为什么 ROM 中的启动代码不传输内核在 RAM 中运行?

    ROM 中的启动代码会将内核转移到器件中。 加载后、内核将获得控制并在 RAM 中运行。

    >是否需要编译"f28p55x_flash_ex3_sci_flash_kernel"示例以生成内核.txt 文件?

    可以。  

    >为什么此文件尚未提供现成的和.txt 格式文件?

    这些项目在没有特定构建设置的情况下可供用户根据自身需要进行修改。

    >我还注意到 f28p55x_flash_ex3_sci_flash_kernel 示例用于一个有20MHz 晶体的板上,我的板使用了内部振荡器。 我是否需要更改示例固件以便其在电路板上正常工作?

    可以、在项目的 Device 文件夹中、有一个  device.h 头文件、其中包含用于更改电路板所需振荡器的符号。  

    第270行有一条注释"要使用 INTOSC 作为时钟源,请注释#define USE_PLL_SRC_XTAL,并取消注释#define USE_PLL_SRC_INTOSC"。

    谢谢。此致、

    查尔斯

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

    尊敬的 Charles:

    "默认 SCI 闪存内核项目驻留在 RAM 中并从 RAM 运行、而不是从 ROM 中运行。 如果未使用 CCS 加载内核(独立使用)、则 可以通过器件的 SCI ROM 引导加载程序将内核发送到器件。  加载后、控制权将从 SCI ROM 引导加载程序传输到在 RAM 中运行的 SCI 闪存内核。"

    "ROM 中的启动代码确实会将内核传输到器件中。 加载后、内核将获得控制并在 RAM 中运行。"

    如果我理解您写入的内容、那么如果我使用 GPIO28/GPIO29引脚上的默认设置 SCIA、那么我是否无需配置、编译和加载内核"f28p55x_flash_ex3_sci_flash_kernel.txt"?

    如果是、那么在不加载内核的情况下、将固件加载到闪存中的命令是什么? 因为我想使用默认的内核、也就是微控制器 ROM 中的内核。

    "...如果不使用 CCS 来加载内核(独立使用)"。 为什么要使用 CCS 加载内核?

    阿里

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

    尊敬的 Ari:

    我应该澄清的是、在内核(作为.text 文件)通过 SCI ROM 引导加载程序加载后、它将位于 RAM 中并从 RAM 中运行。

    您仍然应该配置和编译项目以生成文本文件。  

    >如果是,什么命令将固件加载到闪存中,而不需要加载内核?

    serial_flash_programr_appln.exe -d f28p55x -k flash_kernel_ex3_sci_flash_kernel.txt -a led_ex1_blinky.txt -b 9600 -p COM42 -v

    注意:如果使用此版本的命令、则必须通过 CCS 加载内核(作为.out 文件)并  在使用此命令之前执行。

    >为什么要使用 CCS 加载内核?

    CCS 可用于加载内核以进行调试、以及仅将应用文件发送到器件。

    谢谢。此致、

    查尔斯

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

    Charles

    我得到的是、如果您要开发定制内核、则需要使用 CCS 加载内核、然后使用 serial_flash_programr_appln.exe 可执行文件加载应用固件。

    ROM 中的引导代码唯一能做的就是与 PC 上运行的 serial_flash_programr.exe 应用进行通信、并将内核加载到 RAM 中、然后 RAM 中的内核继续加载固件到闪存中。

    现在我想我理解了这个过程、我只是不明白为什么它如此复杂。 因为固件要加载到微控制器自身的闪存中、而不仅仅是任何外部闪存中。

    非常感谢您的帮助和耐心。

    阿里