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.

[参考译文] TMDSIDK437X:电路板 QSPI-Flash 的闪存编程

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

https://e2e.ti.com/support/tools/code-composer-studio-group/ccs/f/code-composer-studio-forum/1130582/tmdsidk437x-flash-programming-of-the-qspi-flash-for-the-board

器件型号:TMDSIDK437X
主题中讨论的其他器件:UNIFLASHAM4379

大家好、

我正在尝试 通过 XDS100V2 USB 将 AM437x 工业 EVM 刷写到 QSPI。  

使用的软件和工具有:

- CCS 版本11.2

- uniflash_8.0.0

-命令行

硬件:

AM437x IDK 评估硬件

下面是我采取的步骤:

 准备引导加载程序文件: bootloader_boot_qspi_a9host_debug.bin

C:\ti\pdk_am437X_1_0_17\packages/ti\starterware\binary\bootloader\bin\am43xx-evm\gcc\bootloader_boot_qspi_a9host_debug.bin

2.应用程序映像:

a.从.out ->.bin 进行转换
C:\ti.gcc-arm-no-eabi-7-2018-Q2-updates\bin>arm-no-eabi-objcopy -O 二进制文件 C:\users\f2\workspace_v11\Test_Sitara_2\EtherCAT_SLAVE_FULL_AM437x_ARM\AM437x_debug\AM437x_full app.bin

b.要从.bin ->_ti.bin 进行转换、tiimage.exe 在 starterware/tools/ti_image 中作为预编译二进制文件提供。
C:\ti\pdk_am437X_1_0_17\packages/ti\starterware\tools\ti_image>tiimage.exe 0x80000000 none C:\users\Minh.v\workspace_v11\Test_Sitara_2\EtherCAT_SLAVE_FULL_AM437x_ARM\AM437x_debug\app.bin C:\AM437x_bote_2\AM437x_b完整 工作区\AM437x_workspace_bon_bon_workspace\app_ti.bin

3.运行闪存编程器:

C:\ti\uniflash_8.0.0>dslite.bat -模式加载-c:\Users\Minh.v\workspace_v11\Test_Sitara_2\EtherCAT_SLAVE_FULL_AM437x_ARM\targetConfigs\AM4379.ccxml -f C:\uniflash_8.0.0\processors\***\processors\c64k_uarter\AM437x_out_uarter\AM437x_uarter\AM437x_uarter\AM437x_uart

执行以下命令:
>"c:\ti\uniflash_8.0.0\desktopdb\content\TIClash Agent\win\ccs_base\DebugServer\bin\DSLite" load -c:\Users\Minh.v\workspace_v11\Test_Sitara_2\EtherCAT_SLAVE_FULL_AM437x_ARM\targetConfigs\tidx_uartifx_v11\AM437x\AM437x_u.fu.uarter -u.uart_uarm.u.u.uart_1.x\AM437x\AM437x\AM437x_64x_u.u.u.u.uart_

有关更多详细信息和示例、请参阅《UniFlash 快速入门指南》。

DSLite 版本12.0.0.2808
正在配置调试器(首次启动可能需要几分钟时间)...
正在初始化寄存器数据库...
正在初始化:IcePick_D_0
执行启动脚本:IcePick_D_0
正在初始化:CS_DAP_M3
执行启动脚本:CS_DAP_M3
初始化:M3_wakeupSS_1
执行启动脚本:M3_wakeupSS_1
正在初始化:CS_DAP_DebugSS
执行启动脚本:CS_DAP_DebugSS
正在初始化:CortexA9
执行启动脚本:CortexA9
正在初始化:CSSTM_0
执行启动脚本:CSSTM_0
正在初始化:CSETB_0
执行启动脚本:CSETB_0
正在初始化:PRU_ICSS1_PRU0
执行启动脚本:PRU_ICSS1_PRU0
正在初始化:PRU_ICSS1_PRU1
执行启动脚本:PRU_ICSS1_PRU1
正在初始化:PRU_ICSS0_PRU0
执行启动脚本:PRU_ICSS0_PRU0
正在初始化:PRU_ICSS0_PRU1
执行启动脚本:PRU_ICSS0_PRU1
正在连接...
GEL:CortexA9:输出:**** AM437x IDK EVM 初始化正在进行中..........
GEL:CortexA9:输出:****设备类型:GP
GEL:CortexA9:GEL 输出:系统输入时钟为24MHz
GEL:CortexA9:GEL 输出:**** CLKIN=24MHz 的 AM43xx OPP100正在进行中........
GEL:CortexA9:GEL 输出:****将绕过...
GEL:CortexA9:GEL 输出:****已绕过、正在更改值...
GEL:CortexA9:输出:****锁定 PLL
GEL:CortexA9:GEL 输出:**** MPU PLL 已锁定
GEL:CortexA9:GEL 输出:****内核已绕过
GEL:CortexA9:GEL 输出:****现在锁定内核...
GEL:CortexA9:GEL 输出:****内核已锁定
GEL:CortexA9:GEL 输出:****根据 SD Divisor=4计算
GEL:CortexA9:GEL 输出:****每个 DPLL 已绕过
GEL:CortexA9:GEL 输出:****每个 DPLL 锁定
GEL:CortexA9:GEL 输出:****计算得出的 EXTDEV SD 分频值=4
GEL:CortexA9:GEL 输出:**** EXTDEV DPLL 已绕过
GEL:CortexA9:GEL 输出:**** EXTDEV DPLL 锁定
GEL:CortexA9:GEL 输出:**** DISP PLL 配置正在进行中..........
GEL:CortexA9:GEL 输出:**** DISP PLL 已锁定
GEL:CortexA9:GEL 输出:**** DDR DPLL 已绕过
GEL:CortexA9:GEL 输出:**** DDR DPLL 已锁定
GEL:CortexA9:GEL 输出:****设置 DDR3 = 400MHz
GEL:CortexA9:GEL 输出:**** AM43xx OPP100配置已完成..........
GEL:CortexA9:GEL 输出:正在启动 DDR3配置...
GEL:CortexA9:输出:EMIF PRCM 正在进行中..........
GEL:CortexA9:输出:EMIF PRCM 完成
GEL:CortexA9:GEL 输出:启用 EMIF CLK……
GEL:CortexA9:GEL 输出:等待 VTP 就绪........
GEL:CortexA9:GEL 输出:VTP 已就绪!
GEL:CortexA9:GEL 输出:启用 VTP 控制器
GEL:CortexA9:GEL 输出:正在检查 DLL 是否就绪...
GEL:CortexA9:GEL 输出:DLL 已就绪
GEL:CortexA9:GEL 输出:配置 DDR IO 和控制模块寄存器...
GEL:CortexA9:GEL 输出:控制模块寄存器配置完成
GEL:CortexA9:GEL 输出:设置 DDR3 H/W 调平配置...
GEL:CortexA9:GEL 输出:正在启动 EMIF 控制器配置...
GEL:CortexA9:GEL 输出:

DDR3硬件调平完成... 所有的水平结果都很棒!!!

GEL:CortexA9:GEL 输出:PHY_STATUS_12=0x070000BD
GEL:CortexA9:GEL 输出:PHY_STATUS_13=0x070000BD
GEL:CortexA9:GEL 输出:PHY_STATUS_14=0x070000D1
GEL:CortexA9:GEL 输出:PHY_STATUS_15=0x070000D1
GEL:CortexA9:GEL 输出:PHY_STATUS_16=0x00000000
GEL:CortexA9:GEL 输出:PHY_STATUS_7 =0x00000048
GEL:CortexA9:GEL 输出:PHY_STATUS_8 =0x00000045
GEL:CortexA9:GEL 输出:PHY_STATUS_9 =0x00000045
GEL:CortexA9:GEL 输出:PHY_STATUS_10=0x00000044
GEL:CortexA9:GEL 输出:PHY_STATUS_11=0x00000000
GEL:CortexA9:GEL 输出:PHY_STATUS_17=0x001700CB
GEL:CortexA9:GEL 输出:PHY_STATUS_18=0x020100D2
GEL:CortexA9:GEL 输出:PHY_STATUS_19=0x006E00E1
GEL:CortexA9:GEL 输出:PHY_STATUS_20=0x01D400DD
GEL:CortexA9:GEL 输出:PHY_STATUS_21=0x00000000
GEL:CortexA9:GEL 输出:PHY_STATUS_22=0x03D7008B
GEL:CortexA9:GEL 输出:PHY_STATUS_23=0x01C10092
GEL:CortexA9:GEL 输出:PHY_STATUS_24=0x002E00A1
GEL:CortexA9:GEL 输出:PHY_STATUS_25=0x0194009D
GEL:CortexA9:GEL 输出:PHY_STATUS_26=0x00000000
GEL:CortexA9:GEL 输出:

DDR3配置已完成!!!

GEL:CortexA9:GEL 输出:打开 EDMA...
GEL:CortexA9:GEL 输出:EDMA 被打开...
GEL:CortexA9:输出:**** AM437x IDK EVM 初始化完成


正在加载程序:C:\ti\uniflash_8.0.0\processors\FlashWriter\idkAM437x\UART_idkAM437x_flash_programmer.out
正在准备...
PT_LOAD[0]:0x40300000处50404的0
PT_LOAD[0]:32752 of 50404 at 0x40300000:64%
完成:64%
将 PC 设置为入口点:64%
正在运行...
成功

请注意、在此步骤中:终端会保留打印字符"C"

4.闪存引导加载程序文件、偏移量为0x0

C:\ti\uniflash_8.0.0>dslite.bat -模式处理器-c COM8 -f C:\ti\pdk_am437X_1_0_17\packages/ti\starterware\binary\bootloader\bin\am43xx-evm\gcc\bootloader_boot_qspi_a9host_debug.bin -d 2 -o 0x0

执行以下命令:
> c:\ti\uniflash_8.0.0\processors\cProcessorSDKSerialFlash.exe -c COM8 -f C:\ti\pdk_am437X_1_0_17\packages/ti\starterware\binary\bootloader\bin\am43xx-evm\gcc\bootloader_boot_qspi_a9host_debug.bin -d 2 -o 0x0

有关更多详细信息和示例、请参阅《UniFlash 快速入门指南》。

文件扩展名为.bin

--------------------------------------------------
ProcessorSDKSerialFlash CLI 工具
版权所有(C) 2017-2022德州仪器(TI)公司- http://www.ti.com/
版本1.7.0.0
--------------------------------------------------
将映像传输到闪存编程器。

正在传输标头信息..
收割台传输完成!

大小为65608字节的闪存映像
闪存编程成功!

5.刷写偏移量为0x80000的应用程序文件

C:\ti\uniflash_8.0.0>dslite.bat -模式处理器-c COM8 -f C:\Users\Minh.v\workspace_v11\Test_Sitara_2\EtherCAT_SLAVE_FULL_AM437x_ARM\AM437x_DEBUG\app_ti.bin -d 2 -o 0x80000

执行以下命令:
>c:\ti\uniflash_8.0.0\processors\ProcessorSDKSerialFlash.exe -c COM8 -f C:\Users\Minh.v\workspace_v11\Test_Sitara_2\EtherCAT_SLAVE_FULL_AM437x_ARM\AM437x_debug\app_ti.bin -d 2 -o 0x80000

有关更多详细信息和示例、请参阅《UniFlash 快速入门指南》。

文件扩展名为.bin

--------------------------------------------------
ProcessorSDKSerialFlash CLI 工具
版权所有(C) 2017-2022德州仪器(TI)公司- http://www.ti.com/
版本1.7.0.0
--------------------------------------------------
将映像传输到闪存编程器。

正在传输标头信息..
收割台传输完成!

大小为453556字节的闪存映像
闪存编程成功!

6.循环通电或软件复位。

在这个下电上电或软件复位之后、电路板看起来没有运行任何应用。

我有一些顾虑:

-我是否错过了上述步骤?

-我是否需要将 AM437x 工业 EVM 上的任何引脚配置为从 QPSI 引导、或者它将通过一个序列查找有效的接头?

类似来源:

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/900834/ccs-am4379-flashing-qspi-with-uniflash

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1052190/tmdsidk437x-flash-programming-of-the-qspi-flash-on-the-tmdsidk437x

如果我能获得一些问题的建议或提示、那将是很好的。

谢谢你。

Minh Vo