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.

[参考译文] CC1312R:CC1312R1F3RGZT UART Linux

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

https://e2e.ti.com/support/wireless-connectivity/sub-1-ghz-group/sub-1-ghz/f/sub-1-ghz-forum/1054275/cc1312r-cc1312r1f3rgzt-uart-linux

器件型号:CC1312R
主题中讨论的其他器件:AM6442CC1310SysConfigUNIFLASH

您好!

我有一个带有 AM6442 CPU (运行 Linux)和 CC1312R1F3RGZT SUB-G 的定制板

TI 团队对电路板设计进行了审查。

CC1312R1F3RGZT <-> AM6442通信应通过 UART 进行。

UART RX (低于 G 到 CPU)连接到 DIO_2。

UART TX (CPU 到低于 G)连接到 DIO_3。

我有另一个可以配置为连接到 DIO_1的 UART CTS 或 GPIO 的信号(我需要使用该信号来刷写 Sub-1器件)、

另一个连接 到 RESET_N 的可配置为 UART RTS 或 GPIO 的信号

我找不到  有关如何 使用 Linux 与此器件进行通信的示例。

如何检查它是否有效(可能是一些神奇的 UART 消息)?

如何从 Linux 刷写它?

您能否参阅 CC1312R1F3RGZT Linux  使用示例

谢谢

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

    -这是否意味着您有一个以前未编程过的 CC1312R? 如果是这种情况、请查看 https://www.ti.com/lit/pdf/swra466 、了解如何通过 UART 接口引导器件。  

    -如果您是指"正常"UART 通信、则必须在 CC1312R 上使用 UART 运行应用程序。 有关  显示 UART 驱动程序用法的一些示例、请参阅 dev.ti.com/.../node  

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

    您好!

    我尝试 与 MCU 的引导加载程序进行交互、但没有成功。

    我 在以下帖子中找到了 SBL 源:

    https://e2e.ti.com/support/wireless-connectivity/bluetooth-group/bluetooth/f/bluetooth-forum/617647/cc2640r2f-sbl-code-on-linux

    我为我的架构(ARM64)编译了 SBL、我尝试与 BooloLoader 交互、但 它卡在"连接"上("加载程序行"移动、但没有发生任何情况)

    ./host_cc13xx-sbl /dev/ttyS1 host_collector cc13x0 -e
    Using USB SBL Interface
    ./host_cc13xx-sbl ccDnld-v1.00.00 -- Dec  5 2021 13:06:21
    
    Device set to: cc13x0
    Opening serial port /dev/ttyS1
    Unrecognized file extension. Supported formats are *.bin and *.hex
    Assuming Intel Hex format
    Open binary file host_collector
    Binary file size = 580200
    Connecting:
    |

    也许您可以帮助解决这个问题?

    谢谢

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

    您好!

    此主题已分配给某人。 他们会给您一些反馈。  

    此致、
    Siddanth

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

    您好!

    [引用 userid="500366" URL"~/support/wireless-connectivity/sub-1-ghz-group/sub-1-ghz/f/sub-1-ghz-forum/1054275/cc1312r-cc1312r1f3rgzt-uart-linux/3919126 #3919126"]我为我的体系结构(ARM64)编译了 SBL,并且尝试与 BooloLoader 交互,但 它停留在“连接”状态(“加载程序行”移动,但没有发生任何情况)

    您能否详细说明您是如何达到这一点的? 这可能有助于我了解可能出现的问题。

    例如、我注意到您提供的"终端输出"中的第5行指示器件是 CC13x0。 这很可能会导致一些问题、因为您的器件是 CC13x2。 我建议尝试一个更更新的示例。 这是 TI 15.4-Stack 网关 Linux SDK 的最新版本。

    https://dev.ti.com/tirex/explore/node?node=AEi1WI7lC-qIyRxxiJnQ3w__oGlG4RW__LATEST

    之后、请确保根据您的特定器件调整示例。

    BR、
    安德烈斯

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

    感谢您的回复。

    没错、它应该是 cc13x2。

    我现在使用  cc13x2尝试了它、但问题未得到解决。

    ./host_cc13xx-sbl /dev/ttyS1 host_collector cc13x2 -e
    Using USB SBL Interface
    ./host_cc13xx-sbl ccDnld-v1.00.00 -- Dec  5 2021 13:06:21
    
    Device set to: cc13x2
    Opening serial port /dev/ttyS1
    Unrecognized file extension. Supported formats are *.bin and *.hex
    Assuming Intel Hex format
    Open binary file host_collector
    Binary file size = 580200
    Connecting:
    /
    

    我将尝试详细介绍以下内容:

    我下载了以下 SDK: https://www.ti.com/tool/download/TI-15-4-STACK-GATEWAY-LINUX-SDK

    然后、  

    在文件夹 linux/ti/ti154stack_linux_x64_3_30_01_02/example/cc13xx-sbl/app/Linux 中

    我 修改了 Makefile 以使用 ARM64编译器

    CC_HOST=aarch64-none-linux-gnu-gcc

    和编译的 host_cc13xx-SBL。

    现在、我尝试使用该 SBL 与引导加载程序进行通信。

    我正在使用虚拟文件(来自 Linux/ti/ti154stack_linux_x64_3_30_01_02/prebuild/bin 文件夹的 host_collector)。

    文件并不重要、我只是尝试与引导加载程序通信并获取响应。

    我有什么问题吗?

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

    您好!

    请允许我运行示例、看看我是否可以重现您看到的内容。 我们将从那里获取它。 我会尽快告知您我的调查结果。

    BR、
    安德烈斯

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

    好的、谢谢。

    同时、我还有另一个问题、  

    在我的设计中、UART 连接为:

    SoC 的 UART RX 连接到 DIO_2。

    SoC 的 UART TX 连接到 DIO_3。

    swra466中的表2-9 表明 :

    UART_RX 焊盘为 DIO2 、UART_TX 焊盘为 DIO3。

    这到底意味着什么?  

    CC1312的 RX 是 DIO2? 还是 SoC 的 RX 应连接到 DIO2?

    我的连接是否正常?

    更新了

    我注意到 SBL_Two_Wire  变量已在  makefile 中进行了注释。

    我未对其进行注释并重新编译了 SBL。

    它仍然不起作用、这是输出:

    ./host_cc13xx-sbl /dev/ttyS1 host_collector cc13x2 -e
    Using Two wrire SBL Interface
    ./host_cc13xx-sbl ccDnld-v1.00.00 -- Dec  9 2021 12:34:13
    
    Device set to: cc13x2
    Opening serial port /dev/ttyS1
    Unrecognized file extension. Supported formats are *.bin and *.hex
    Assuming Intel Hex format
    Open binary file host_collector
    Binary file size = 580200
    Connecting:
    |

    我修改 了 getCmdResponse 函数、以查看我是否从引导加载程序(新的 printf 行)获得响应:

    static CcDnld_Status getCmdResponse(CcDnld_Dev_Ack* bAck)
    {
        uint8_t pIn[2];
        uint32_t recvData = 0;
        uint32_t bytesRecv = 0;
        /* Expect 2 bytes (ACK or NAK) */
        do
        {
            recvData = uartFxns->sbl_UartReadByte();
            printf("RECEIVED DATA: %02x\n", recvData);
            if((recvData&0x00000500) == 0)
            {
                pIn[bytesRecv]=(uint8_t) recvData;
                bytesRecv += 1;
            }
        }
        while(bytesRecv < 2);
    
        if((bytesRecv >= 2) &&
                (pIn[0] == 0x00 &&
                (pIn[1] == CCDNLD_DEVICE_ACK || pIn[1] == CCDNLD_DEVICE_NACK)))
        {
                *bAck = pIn[1];
                return CcDnld_Status_Success;
        }
    
        return CcDnld_Status_Cmd_Error;
    }

    这是我得到的输出:

    ./host_cc13xx-sbl /dev/ttyS1 host_collector cc13x2 -e
    Using Two wrire SBL Interface
    ./host_cc13xx-sbl ccDnld-v1.00.00 -- Dec  9 2021 12:49:27
    
    Device set to: cc13x2
    Opening serial port /dev/ttyS1
    Unrecognized file extension. Supported formats are *.bin and *.hex
    Assuming Intel Hex format
    Open binary file host_collector
    Binary file size = 580200
    Connecting:
    RECEIVED DATA: 00
    RECEIVED DATA: 50
    RECEIVED DATA: 00
    RECEIVED DATA: 50
    RECEIVED DATA: 00
    RECEIVED DATA: 50
    RECEIVED DATA: 00
    RECEIVED DATA: 50
    RECEIVED DATA: 00
    RECEIVED DATA: 50
    RECEIVED DATA: 00
    RECEIVED DATA: 50

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

    您好!

    很抱歉耽误你的时间。 我花了一些时间、因为我需要采购一些硬件并访问 Linux 计算机才能运行示例。

    话虽如此、您肯定已走上 SBL_Two_Wire 标志的正确轨道。

    我有一个问题要问你。 这可能是愚蠢的、但仍然如此。 在测试 SBL 之前、您在 LaunchPad 中使用了什么映像?

    通过您提供的链接:


    使用启用引导加载程序功能的应用程序对 CC13x0器 件进行编程(在 TI CC13x0技术参考手册的引导加载程序一章中进行了说明)。 协处理器示例嵌入式应用演示了引导加载程序功能。 具体而言、协处理器应用通过 DIO13引脚(CC1310 LP 上的按钮1)启用引导加载程序功能。 要强制进入引导加载程序、请执行以下步骤:

    1. 连接 LP。
    2. 启动闪存更新工具;该工具将显示正在连接…
    3. 按住 LP BTN-1。
    4. 按下并释放 LP RESET 按钮。
    5. 应用程序连接并执行闪存更新(请参阅 图115。 以了解连接图)。

    基本而言、器件中的原始应用应启用引导加载程序功能。 在 SysConfig 中、您将具有如下所示的内容:

    或者、为了进行测试、您只需尝试使用已按这种方式配置的协处理器示例。 如果您这样做、您将看到如下所示的内容:

    因此、基本而言、请确保您已将适当的映像刷写到 Launchpad (启用了引导加载程序功能的映像)、然后按照您共享的指南中的说明进行操作。

    BR、
    安德烈斯

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

    您好!

    感谢您的详细回答。

    我不确定   您是指哪款 Launchpad。

    我有一个定制 PCB、其中 CC1312R 通过 UART 连接到 AM64X SoC (PCB 设计已由 TI 团队审查)。

    1个连接到 CC1312R 复位的附加 GPIO。

    1个附加 GPIO 连接到 CC1312R 的 DIO_1 (用作引导加载程序后门)。

    因此、情况是 从未刷写 CC1312R (除非它附带出厂时刷写的默认 FW)、 而 我只是尝试  使用 SBL 测试 SoC<->CC1312R UART 连接。

    从这一点开始、我该怎么做?

    您可以确认以下器件吗?

    In my design, the UART connection is:
    
    SoC's UART RX is connected to DIO_2.
    
    SoC's UART TX is connected to DIO_3.
    
    Table 2-9 in swra466 indicates that:
    
    UART_RX pad is DIO2  and UART_TX pad is DIO3.
    
    What exactly does this mean? 
    
    The CC1312's RX is DIO2? or SoC's RX should be connected to DIO2?
    
    Are my connections good?

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

    您好!

    我本应该更加清楚。 我很抱歉。

    您所依赖的示例(Linux 网关 SDK 中的示例)假设器件(我说的是 launchpad、因为我手头有这种情况)已经有一个启用了引导加载程序功能并且还启用了引导加载程序后门的应用程序。

    因此、该示例本身不能用于您的特定情况。 因此、我想您可以选择使用描述该过程的应用手册、但您必须进行调整、因为如果我没有弄错、应用手册会为基于 Windows 的主机提供说明。

    BR、
    安德烈斯

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

    谢谢、这一点现在已经很清楚了。

    是否确定没有任何应用程序的器件没有"即用型"固件下载程序? 适用于 Linux (ARM64或 Linux 源代码)。

    您希望在 Linux 环境中使用 CC1312R 的客户应该做些什么才能首次刷写器件?

     设计中使用 CC1312R 的所有客户是否都需要自行编写 固件下载程序?

    此外、您能否确认:

    In my design, the UART connection is:
    
    SoC's UART RX is connected to DIO_2.
    
    SoC's UART TX is connected to DIO_3.
    
    Table 2-9 in swra466 indicates that:
    
    UART_RX pad is DIO2  and UART_TX pad is DIO3.
    
    What exactly does this mean? 
    
    The CC1312's RX is DIO2? or SoC's RX should be connected to DIO2?
    
    Are my connections good?

    谢谢。

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

    您好!

    您可以使用多种"即用型"工具。 但这一切取决于您的用例。 我想在这种情况下、您的问题可能会非常关注 SBL 和 UART 方面、这可能会导致我们相信您希望自己实施整个问题。

    让我们后退一步、考虑一下(正如您在上一次答复中提到的)"即用型"工具来刷写您的器件。 我可以考虑至少两种工具来实现这一目的、但由于您需要一种可与 Linux 配合使用的工具、Uniflash 可能是您的最佳选择。

    https://www.ti.com/tool/UNIFLASH

    我只将该工具用于 Launchpad、但从我看到的内容来看、您应该能够直接使用串行器件。

    完成此步骤后、您可以选择图像、COM 端口、UART 速度等

    您可以在此处找到用户指南:

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

    希望这更多是您需要的。

    BR、
    安德烈斯

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

    谢谢。

    很抱歉、 我觉得不够清楚。

    UNIFLASH 无法工作、因为这是一  个 GUI、x86 Linux 工具。

    我打开了一个更加专注和清晰的帖子。

    https://e2e.ti.com/support/wireless-connectivity/sub-1-ghz-group/sub-1-ghz/f/sub-1-ghz-forum/1061426/cc1312r-flashing-an-empty-cc1312r1f3rgzt-from-an-embedded-processor

    感谢您的耐心等待。

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

    您好!

    在这种情况下、我将关闭该线程。

    BR、
    安德烈斯