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.

[参考译文] HS-AM243X:通过 usb_dfu_uniflash.py 写入 HS-SE 转换密钥写入器时、MCU-PLUS-SDK 失败60-80%其他闪存写入器工作一致。

Guru**** 2463330 points
Other Parts Discussed in Thread: UNIFLASH

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1468060/mcu-plus-sdk-am243x-fails-60-80-when-writing-hs-se-conversion-key-writer-via-usb_dfu_uniflash-py-other-flash-writers-work-consistently

器件型号:MCU-PLUS-SDK AM243X
主题中讨论的其他器件:UNIFLASH

工具与软件:

我们一直在尝试使用  usb_dfu_uniflash.py 将 HS-SE 转换密钥写入器写入 AM243x MCU、但结果不一致。

如果我们通过  uart_uniflash.py 将相同的密钥写入器写入 MCU、则会保持一致的工作状态。

我们在三种设置和四种不同的板上进行了测试。 在最好的情况下、它10次中有6次失败。 它在其他电路板和设置上更经常失败、意识到10-30次尝试不是一个大型统计样本。

尝试时、它是我们为产品编写的配置脚本的一部分、首先擦除 MCU (如果尚未找到已擦除的 MCU)。 擦除状态是通过使用 dfu-util -l 确定的、并查看返回的器件 USB 路径:

09:49:14 592 [INFO] Results of script:
dfu-util 0.11

Copyright 2005-2009 Weston Schmidt, Harald Welte and OpenMoko Inc.
Copyright 2010-2021 Tormod Volden and Stefan Schmidt
This program is Free Software and has ABSOLUTELY NO WARRANTY
Please report bugs to sourceforge.net/.../

Found DFU: [0451:6165] ver=0200, devnum=15, cfg=1, intf=0, path="3-1.2.2.4", alt=1, name="SocId", serial="01.00.00.00"
Found DFU: [0451:6165] ver=0200, devnum=15, cfg=1, intf=0, path="3-1.2.2.4", alt=0, name="bootloader", serial="01.00.00.00"

然后、脚本使用  USB_DFU_uniflash.py 写入 MCU、此脚本不会失败。 以下日志的输出示例。

09:49:14 594 [INFO] Executing script: /Users/markwar/workspace/calamari/calamari/am243x/usb_dfu_uniflash.py --cfg /Users/markwar/workspace/calamari/tmp_conv_3-1.2.2.4_cu.usbserial-312300.cfg -p 3-1.2.2.4 and expecting "All\ commands\ from\ config\ file\ are\ executed" (RegEx)
09:49:14 594 [INFO] Script start ----------------------------------------

09:49:16 183 [INFO] Results of script:
dfu-util 0.11

Copyright 2005-2009 Weston Schmidt, Harald Welte and OpenMoko Inc.
Copyright 2010-2021 Tormod Volden and Stefan Schmidt
This program is Free Software and has ABSOLUTELY NO WARRANTY
Please report bugs to sourceforge.net/.../

dfu-util: Warning: Invalid DFU suffix signature
dfu-util: A valid DFU suffix will be required in a future dfu-util release
Opening DFU capable USB device...
Device ID 0451:6165
Device DFU version 0110
Claiming USB DFU Interface...
Setting Alternate Interface #0 ...
Determining device status...
DFU state(2) = dfuIDLE, status(0) = No error condition is present
DFU mode device DFU version 0110
Device returned transfer size 512
Warning: Overriding device-reported transfer size
Copying data from PC to DFU device

Download	[                         ]   0%            0 bytes
Download	[=                        ]   4%        14848 bytes
Download	[==                       ]   8%        29184 bytes
Download	[===                      ]  12%        43520 bytes
Download	[====                     ]  16%        57856 bytes
Download	[=====                    ]  20%        72192 bytes
Download	[======                   ]  24%        86528 bytes
Download	[=======                  ]  28%       100864 bytes
Download	[========                 ]  32%       115200 bytes
Download	[=========                ]  36%       129536 bytes
Download	[==========               ]  40%       143872 bytes
Download	[===========              ]  44%       158208 bytes
Download	[============             ]  48%       172544 bytes
Download	[=============            ]  52%       186880 bytes
Download	[==============           ]  56%       201216 bytes
Download	[===============          ]  60%       215552 bytes
Download	[===============          ]  63%       228864 bytes
Download	[================         ]  64%       229888 bytes
Download	[=================        ]  68%       244224 bytes
Download	[==================       ]  72%       258560 bytes
Download	[===================      ]  76%       272896 bytes
Download	[====================     ]  80%       287232 bytes
Download	[=====================    ]  84%       301568 bytes
Download	[======================   ]  88%       315904 bytes
Download	[=======================  ]  92%       330240 bytes
Download	[======================== ]  96%       345088 bytes
Download	[=========================] 100%       358431 bytes
Download done.
DFU state(6) = dfuMANIFEST-SYNC, status(0) = No error condition is present
DFU state(2) = dfuIDLE, status(0) = No error condition is present
Done!

Parsing config file ...
Parsing config file ... SUCCESS. Found 1 command(s) !!!

Executing command 1 of 1 ...
Found flash writer ... sending /Users/markwar/workspace/calamari/tests/resources/sbl_tiboot3_otp_data_idx_0_ff.bin
>>> sudo /opt/homebrew/bin/dfu-util -l -p 3-1.2.2.4
----------------------------------------------------------------------------
Executing DFU command with alt_setting=0 interface=0 transfer_size=512
----------------------------------------------------------------------------
>>> sudo /opt/homebrew/bin/dfu-util -a 0 -i 0 -t 512 -D /Users/markwar/workspace/calamari/tests/resources/sbl_tiboot3_otp_data_idx_0_ff.bin -p 3-1.2.2.4
Sent flashwriter /Users/markwar/workspace/calamari/tests/resources/sbl_tiboot3_otp_data_idx_0_ff.bin of size 358431 bytes in 1.49s. Bandwidth = 234.92kbps

All commands from config file are executed !!!

09:49:16 183 [INFO] Script end (/Users/markwar/workspace/calam) ----------------------------------------

在  使用  usb_dfu_uniflash.py 脚本运行上述操作后、我们 可以查看 MCU 的 UART 输出。 我们通常会看到 MCU 无法完成引导。 它并非在所有情况下都悬挂在同一个位置、但下面的示例是我们看到它悬挂的最常见位置。

Starting Keywriting
Set GPIO0_74 high to enable VPP 1.8v 
Please ent

在不太常见的情况下、它看起来是 MCU 引导、我们得到了 sbl_keywriter #提示符、但 MCU 会因响应 start_program_key 命令而挂起。 这里是我们尝试时从日志中看到的输出的几个示例、并非总是位于同一个位置。

sbl_keywriter # START_PROGRAM_KEY
Start programming OTP keys: 
keys Certificate found: 0x70052600 

sbl_keywriter # START_PRO

sbl_keywriter # START_PROGRAM_KEY
Start programming OTP keys: 
keys Certificate found: 0x'

当该操作正常时、我们会看到以下输出。

sbl_keywriter # START_PROGRAM_KEY
Start programming OTP keys: 
keys Certificate found: 0x70052600 
Keywriter Debug Response:0x0 
Success Programming Keys 
Set GPIO0_74 low to disable

再次明确的问题:当通过 UART 和 USB 加载时、TI 是否测试了此 HS-SE 转换密钥写入器?

如何通过 USB 使此过程可靠?

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

    我忘记了要添加到该 TT 中的重要信息。   通过 USB 将 usb_dfu_uniflash.py 用作我们的应用代码的闪存写入器没问题、我们不会对 USB 和 UART 使用相同的闪存写入器、但我们的配置脚本支持写入闪存的两种方式。 因此我认为我们知道我们器件上的 USB 端口运行良好、因此我们认为硬件良好。

     要么因为我们的密钥写入器固件无法用于 USB (但在通过 UART 写入 MCU 时确实无法工作)、要么因为  usb_dfu_uniflash.py 无法 支持将密钥写入器写入 MCU。

    我的同事将描述她对密钥编写器代码的更改。

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

    我们对 TI Keywriter 所做的唯一更改是添加:
    1) 1)在对密钥进行编程之前和对密钥进行编程之后、通过 GPIO 切换 VPP 电压。  
    2)添加简单的命令行界面,允许用户键入命令开始编程密钥。  

    注意使用 UART 引导时完全相同的二进制文件运行良好、但在切换到 USB 引导后不稳定。  我们没想到此处会看到不同引导模式之间的差异。  

    在 Keywriter 中禁用 UART0 ISR 后、此处的故障行为在 USB 引导情况下是相同的、这是 Prashant 在另一个线程中建议的。  

    谢谢!  
    Hong  

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

    我回去测试直接从发行版构建的 Keywriter 二进制。 仅从两行注释中删除了 setVPP、因为我们的电路板上没有相同的器件。 我注意到了 UART 引导和 USB 引导之间的区别。  

    UART 引导、由于未设置 VPP、因此失败。  

    Starting Keywriting
    keys Certificate found: 0x70046500
    Keywriter Debug Response:0x20000000
    Error occured...


    USB 引导时、它会在早期阶段挂起、如下所示。  

    Starting Keywriting
    keys Certificate found: 0x7004


    请注意、此处的 Keywriter 版本来自 SDK 9.1版本。   

    谢谢!  
    Hong  

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

    您好、Hong:

    故障签名强烈表明 UART 中断问题。 您能否分享您如何在 Keywriter 中禁用 UART 中断模式?

    如果可能、请共享 keywriter syscfg 文件。

    此致、

    Prashant

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

    您好 Prashant:  

    下面是禁用 UART0 ISR 的更改、  



    我也重复同样的失败使用 Keywriter 从 SDK10的释放昨晚与 USB 启动.  故障行为完全相同。  

    谢谢!  
    Hong  

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

    您好 Prashant:  

    我能够在 TI 的 EVM 上重现同样的问题、此处是使用 JTAG 进行的捕获  

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

    您好、Hong:

    调用跟踪建议 UART 驱动程序等待读取数据。 您是否无法在控制台上输入任何内容?

    您是否尝试过注释 DebugP_scanf 并且仍然看到问题?

    此致、

    Prashant

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

    您好 Prashant:  

    当我使用 JTAG 捕获上述屏幕截图时、无法在控制台上输入任何内容。 UART 已挂起。   

    我还没有尝试注释掉 DebugP_scanf。

    我认为此信息足以让 TI 使用 TI EVM 再现 TI 侧的情况、因为这不限于我们的电路板。  

    谢谢!  
    Hong  

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

    我确实看到其他 SDK 示例使用了 DebugP_scanf。 它在内部调用 UART_read。 我在这里看不到调试 P_scanf 应该引起的任何问题。  

    我们需要从 UART 接口接收输入命令、因此我们不能绕过该命令。 相反、TI 能否帮助了解在使用 USB 引导模式时、DebugP_scanf 为何在 TI 的 Keywriter 中挂起?  

    谢谢!  
    Hong  

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

    您好 Prashant:  

    您能告诉我您运行重复测试的设置是什么吗?  对于 USB 引导、我认为需要下电上电或复位才能在下一轮中加载。 您是否为上述测试使用 USB 引导?  Keywriter 是否实际对密钥进行编程?


    我可能很幸运能够在 EVM 板上重现上述问题。 今天、我确实使用相同的二进制文件运行了多个测试、但我无法在我这边使用 EVM 重现相同的问题。  

    与我们的端点代码和您的端点代码的唯一区别是、我们使用的是%s、而不是您端的%c。  

    int ret = DebugP_scanf ("%s"、cmd);

    谢谢!  
    Hong  


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

    您好、Hong:

    我确实会在 USB DFU 引导模式下启动 Keywriter。 通过手动关闭/开启 EVM 并输入"y"字符来完成重复启动。 使用以下命令生成 Keywriter 证书:

    ./gen_keywr_cert.sh -t tifek/ti_fek_public.pem --msv 0xC0FFE --msv-ovrd

    即使使用自动设置、我也没有看到大约1800次运行 Keywriter 二进制的任何问题。

    ============

    我使用以下补丁程序启用了 DebugP_scanf

    我在 Keywriter v09.01.00上确实看到此补丁随机故障、默认情况下该补丁将 UART0配置为中断模式。 但是、如果将模式更改为轮询模式、即使在运行了大约6900次的 Keywriter 二进制后、我也没有看到任何问题。

    ============

    简而言之、如果 UART 配置为轮询模式、那么在两个 Keywriter 版本中都没有看到任何问题。

    此致、

    Prashant

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

    您好 Prashant:  

    您可以帮助使用输入字符串"start_program_key"及 echo 测试该字符串来打印输出吗?


    int ret = DebugP_scanf("%s", cmd);


    这是我能看到的我们这边与你们这边的唯一区别。  

    谢谢!  
    Hong  

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

    您好 Prashant:  

    我能够使用 Keywriter 9.1并在 UART0上禁用 UART ISR 时、在 TI 的 EVM 上重现。  以上关于 JTAG 捕捉的处理是在 SDK 10的 Keywriter 上完成的。 此捕获在 SDK 9.1的 Keywriter 上。  

    其失败方式与下面相同。 UART0现在挂起  

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

    您好 Prashant:  

    我转储了 UART 寄存器值、如下所示、您能否帮助再次确认 ISR 是否按预期被禁用?

    0x027FFEE0	00000000	00000000	00000000	00000000	00000000	00000000	00000000	00000000	00000000	00000000	00000000	00000000	00000000	00000000	00000000	00000000	00000000	00000000	00000000	00000000	00000000	00000000	00000000	00000000
    0x027FFF40	00000000	00000000	00000000	00000000	00000000	00000000	00000000	00000000	00000000	00000000	00000000	00000000	00000000	00000000	00000000	00000000	00000000	00000000	00000000	00000000	00000000	00000000	00000000	00000000
    0x027FFFA0	00000000	00000000	00000000	00000000	00000000	00000000	00000000	00000000	00000000	00000000	00000000	00000000	00000000	00000000	00000000	00000000	00000000	00000000	00000000	00000000	00000000	00000000	00000000	00000000
    0x02800000	UART0_MEM_DLL, UART0_MEM_RHR, UART0_MEM_THR
    0x02800000	00000000
    0x02800004	UART0_MEM_DLH, UART0_MEM_IER_CIR, UART0_MEM_IER_IRDA, UART0_MEM_IER_UART
    0x02800004	00000000
    0x02800008	UART0_MEM_EFR, UART0_MEM_FCR, UART0_MEM_IIR_CIR, UART0_MEM_IIR_IRDA, UART0_MEM_IIR_UART
    0x02800008	000000C1
    0x0280000C	UART0_MEM_LCR
    0x0280000C	00000003
    0x02800010	UART0_MEM_MCR, UART0_MEM_XON1_ADDR1
    0x02800010	00000000
    0x02800014	UART0_MEM_LSR_CIR, UART0_MEM_LSR_IRDA, UART0_MEM_LSR_UART, UART0_MEM_XON2_ADDR2
    0x02800014	00000060
    0x02800018	UART0_MEM_MSR, UART0_MEM_TCR, UART0_MEM_XOFF1
    0x02800018	00000000
    0x0280001C	UART0_MEM_SPR, UART0_MEM_TLR, UART0_MEM_XOFF2
    0x0280001C	00000000
    0x02800020	UART0_MEM_MDR1
    0x02800020	00000000
    0x02800024	UART0_MEM_MDR2
    0x02800024	00000000
    0x02800028	UART0_MEM_SFLSR, UART0_MEM_TXFLL
    0x02800028	00000000
    0x0280002C	UART0_MEM_RESUME, UART0_MEM_TXFLH
    0x0280002C	00000000
    0x02800030	UART0_MEM_RXFLL, UART0_MEM_SFREGL
    0x02800030	00000000
    0x02800034	UART0_MEM_RXFLH, UART0_MEM_SFREGH
    0x02800034	00000000
    0x02800038	UART0_MEM_BLR, UART0_MEM_UASR
    0x02800038	00000040
    0x0280003C	UART0_MEM_ACREG
    0x0280003C	00000000
    0x02800040	UART0_MEM_SCR
    0x02800040	000000C0
    0x02800044	UART0_MEM_SSR
    0x02800044	00000004
    0x02800048	UART0_MEM_EBLR
    0x02800048	00000000	00000000
    0x02800050	UART0_MEM_MVR
    0x02800050	47424603
    0x02800054	UART0_MEM_SYSC
    0x02800054	00000000
    0x02800058	UART0_MEM_SYSS
    0x02800058	00000001
    0x0280005C	UART0_MEM_WER
    0x0280005C	000000FF
    0x02800060	UART0_MEM_CFPS
    0x02800060	00000069
    0x02800064	UART0_MEM_RXFIFO_LVL
    0x02800064	00000000
    0x02800068	UART0_MEM_TXFIFO_LVL
    0x02800068	00000000
    0x0280006C	UART0_MEM_IER2
    0x0280006C	00000000
    0x02800070	UART0_MEM_ISR2
    0x02800070	00000003
    0x02800074	UART0_MEM_FREQ_SEL
    0x02800074	0000001A
    0x02800078	UART0_MEM_ABAUD_1ST_CHAR
    0x02800078	00000000
    0x0280007C	UART0_MEM_BAUD_2ND_CHAR
    0x0280007C	00000000
    0x02800080	UART0_MEM_MDR3
    0x02800080	00000000
    0x02800084	UART0_MEM_TX_DMA_THRESHOLD
    0x02800084	00000000
    0x02800088	UART0_MEM_MDR4
    0x02800088	00000000
    0x0280008C	UART0_MEM_EFR2
    0x0280008C	00000000
    0x02800090	UART0_MEM_ECR
    0x02800090	00000018
    0x02800094	UART0_MEM_TIMEGUARD
    0x02800094	00000000
    0x02800098	UART0_MEM_TIMEOUTL
    0x02800098	00000000
    0x0280009C	UART0_MEM_TIMEOUTH
    0x0280009C	00000000
    0x028000A0	UART0_MEM_SCCR
    0x028000A0	00000007
    0x028000A4	UART0_MEM_ERHR, UART0_MEM_ETHR
    0x028000A4	00000000
    0x028000A8	UART0_MEM_MAR
    0x028000A8	00000000
    0x028000AC	UART0_MEM_MMR
    0x028000AC	00000000
    0x028000B0	UART0_MEM_MBR
    
    

    谢谢!  
    Hong  

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

    您好 Prashant:  

    我很高兴知道你有一个成功的前锋在你身边。  对于复制粘贴挂起案例、您能帮助我们了解根本原因吗?  我们也为使用相同 AM243 MCU 的应用固件提供命令行界面支持、但根本没有出现复制粘贴挂起问题。 此问题仅发生在 Keywriter 上。   

    根据上述 Mark 报告的故障情况、UART 打印稿可挂在任意位置、而不仅限于 DebugP_scanf 接收输入期间的位置。 我希望通过了解这里的 root原因 可以帮助我们解决其他挂起的情况以及为 Keywriter。  


    谢谢!  
    Hong

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

    您好 Prashant:  

    还有一个关于 FIFO_EN 位的问题。  

    根据 AM243 TRM、需要将 FIFO_EN 设置为0才能进行 FIFO 轮询模式操作。  

     12.1.5.4.6.3 FIFO 轮询模式运行
    在 FIFO 轮询模式下(UART_FCR[0] FIFO_EN 位设置为0、相关中断由禁用
    UART_IER _UART 寄存器)的情况下、可以通过轮询线路状态来检查接收器和发送器的状态
    寄存器(UART_LSR_UART)。
    这个模式是 FIFO 中断运行模式的替代方法、在这个模式中、接收器和的状态被置
    通过向主机 CPU 发送中断来自动确定发送器。

    在 SDK UART 驱动程序的 uart_v0_lld.c 文件中、我看到 SDK 9和 SDK 10的 FIFO_EN 始终设置为1。   

      /*启用 FIFO */
      fcrValue |= UART_FCR_FIFO_EN_MASK;

    您能否帮助我了解 UART 是否在 FIFO 轮询模式下运行、并且 SDK 的 FIFO_EN 位设置为1?  

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

    您好!

    对于复制粘贴挂起案例、您能帮助我们了解根本原因吗?

    DebugP_scanf 函数旨在逐字符接收和回显输入字符。

    https://github.com/TexasInstruments/mcupsdk-core/blob/next/source/kernel/nortos/dpl/common/DebugP_uartScanf.c#L40-L40

    因此、在 UART 控制台上复制并粘贴整个字符串时、数据可能会在轮询模式下丢失、从而导致 UART 驱动程序始终等待进一步的输入。

    您能否尝试使用较短的字符串作为输入、如 SPK (适用于 start_program_key)作为输入、并查看问题是否仍然出现?

    我在 TI EVM 上尝试过、没有发现任何问题。

    到目前为止、我只看到以下情况的问题:

    • UART 处于中断模式(默认)时的 Keywriter v09_01_00会导致 随机故障 输入时。
    • 轮询模式下的 Keywriter v09_01_00和 v10.00.08会导致 始终如一的故障 在将较大的串作为输入时使用。 仅当复制粘贴整个字符串时才会发生此故障。
      • 逐字符键入字符串时未出现任何问题。
      • 在复制粘贴最多3 - 4个字符的字符串时未出现任何问题。

    此致、

    Prashant

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

    和、

    [报价 userid="531297" url="~/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1468060/mcu-plus-sdk-am243x-fails-60-80-when-writing-hs-se-conversion-key-writer-via-usb_dfu_uniflash-py-other-flash-writers-work-consistently/5646812 #5646812"]Keywriter v09_01_00、UART 处于中断模式(默认)会产生 随机故障 获取输入时。[/QUOT]

    这是一个一般的 UART 中断问题。

    [报价 userid="531297" url="~/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1468060/mcu-plus-sdk-am243x-fails-60-80-when-writing-hs-se-conversion-key-writer-via-usb_dfu_uniflash-py-other-flash-writers-work-consistently/5646812 #5646812"]Keywriter v09_01_00和 v10.00.08在轮询模式下将产生 始终如一的故障 在将较大的串作为输入时使用。 仅当复制粘贴整个字符串时才会发生该故障。

    甚至在 SBL NULL 引导加载程序中也可以看到这种情况

    [17:35:21.797] Starting NULL Bootloader ...
    
    [17:35:21.797] DMSC Firmware Version 9.1.6--v09.01.06 (Kool Koala)
    [17:35:21.813] DMSC Firmware revision 0x9
    [17:35:21.814] DMSC ABI revision 3.1
      
    [17:35:21.814] Please enter 'START_PROGRAM_KEY' to continue
    [17:35:21.814] # START_PR

    简而言之、我目前为止没有看到任何键盘写入器特定问题。

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

    当天的上次更新:

    即使在 SBL NULL 引导加载程序中也可以看到此情形

    在 SDK v09_00_00_35的 SBL NULL 引导加载程序中未发现该问题。

    我将 UART 驱动程序从此 SDK 版本移植到了 SDK v09_01_00_41、因此没有看到以下问题。

    [报价 userid="531297" url="~/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1468060/mcu-plus-sdk-am243x-fails-60-80-when-writing-hs-se-conversion-key-writer-via-usb_dfu_uniflash-py-other-flash-writers-work-consistently/5646812 #5646812"]Keywriter v09_01_00和 v10.00.08在轮询模式下将产生 始终如一的故障 在将较大的串作为输入时使用。 仅当复制粘贴整个字符串时才会发生该故障。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好 Prashant:  

    感谢您帮助理解此处的问题。  

    根据我的理解、UART 的 TX 和 RX FIFO 大小均为64字节。 我不明白为什么 DebugP_scanf 无法处理接收字符、并以足够快的速度回送该字符、以便仅容纳10个以上的字符。 我试着增加 rxTriggerLevel 来看看它是否有区别,但我在这里没有运气。  

    在我们的用例中、我们不使用复制粘贴、但我们用 python 脚本来处理 START_PROGRAM_KEY 的发送字符。 此操作失败的方式与上面 EVM 板上的复制-粘贴示例相同。  

    我也有关于 SDK 的 uart_v0.c 中的 FIFO_EN 设置的上述问题、这似乎与 TRM 对 UART 轮询模式的建议相冲突。 我认为、在正确的设置下、具有800 MHz MCU 时钟频率的 AM243x 应该能够在115k 的 UART 时钟下正确处理字符的接收和回显;除非有其他内容我们尚未了解。  

    谢谢!  
    Hong  

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

    您好、Hong:

    [报价 userid="531297" url="~/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1468060/mcu-plus-sdk-am243x-fails-60-80-when-writing-hs-se-conversion-key-writer-via-usb_dfu_uniflash-py-other-flash-writers-work-consistently/5646812 #5646812"]Keywriter v09_01_00和 v10.00.08在轮询模式下将产生 始终如一的故障 在将较大的串作为输入时使用。 仅当复制粘贴整个字符串时才会发生该故障。

    我已经确定了该错误的根本原因。 这显然是由 uart_fifoRead 函数中待读取的剩余数据的错误处理引起的。

    请尝试以下补丁、并告知我们问题是否仍然存在:

    diff --git a/source/drivers/uart/v0/lld/uart_v0_lld.c b/source/drivers/uart/v0/lld/uart_v0_lld.c
    index 0b4b10c..8b96376 100644
    --- a/source/drivers/uart/v0/lld/uart_v0_lld.c
    +++ b/source/drivers/uart/v0/lld/uart_v0_lld.c
    @@ -2460,7 +2460,7 @@ static uint32_t UART_fifoRead(UARTLLD_Handle hUart, uint8_t *buffer,
     
         isRxReady = UART_statusIsDataReady(hUart);
     
    -    while (((Bool)TRUE == isRxReady) && (0U != readSizeRemaining))
    +    while (((Bool)TRUE == isRxReady) && (0U != tempReadSizeRemaining))
         {
             /* once the H/w is ready  reading from the H/w                        */
             *tempBuffer = (UInt8) UART_readByte(hUart);
    

    应用补丁后、我看不到复制粘贴问题。

    此致、

    Prashant

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我已确定此错误的根本原因。 这显然是由 UART_fifoRead 函数中待读取的剩余数据的错误处理引起的。[/QUOT]

    这已在 SDK v10_01_00_32中通过以下补丁修复

    am263x:UART:修复了 UART 读取问题·TexasInstruments/mcupsdk-core@0cf5573

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

    您好 Prashant:  

    很高兴知道已确定根本原因。  

    我们一直直接使用从 SDK 发布的库。  为 SDK 应用上述补丁是否意味着我们需要重新构建库 drivers.am243x.r5f.ti-arm-clang.debug.lib?

    谢谢!  
    Hong  

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    为 SDK 应用上述补丁时、是否意味着我们需要重新构建库 drivers.am243x.r5f.ti-arm-clang.debug.lib?
    [报价]

    正确。

    software-dl.ti.com/.../MAKEFILE_BUILD_PAGE.html

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

    您好、Hong:

    请告知我们问题是否已解决、无需进一步的支持。

    谢谢!

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

    您好 Prashant:  

    感谢您的检查。  

    此问题已通过 SDK UART 驱动程序的补丁解决。  

    可以关闭此窗口。  
    Hong  

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

    "谢谢你的澄清。"

    也要关闭以下内容:

    e2e.ti.com/.../am2432-after-programming-otp-tisci_msg_flag_ack-flag-is-not-received