主题中讨论的其他器件:UNIFLASH、 AM4379
大家好、
我正在尝试 通过 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 引导、或者它将通过一个序列查找有效的接头?
类似来源:
如果我能获得一些问题的建议或提示、那将是很好的。
谢谢你。
Minh Vo