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.

[参考译文] AM6442:TMDS64EVM 评估套件上的 LED23

Guru**** 2481465 points
Other Parts Discussed in Thread: TMDS64EVM, SYSCONFIG

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1434691/am6442-led23-on-tmds64evm-evalkit

器件型号:AM6442
主题中讨论的其他器件:TMDS64EVMSysConfig

工具与软件:

您好!

在 TMDS64EVM 上、引导 Linux 后会有一个红色 LED (LED23)闪烁。 此 LED 的功能是什么? 是否有与此 LED 连接的固件或应用程序?    

为什么要问这个问题?  

因为当我  使用以下命令从 u-boot 在内核 R5F0_0 (EVM 套件上闪烁的绿色 LED 29)上启动固件时:

init;load mmc 1:2 0x90000000 /lib/firmware/am64-main-r5f0_0-fw;rproc load 1 0x90000000 0x${filesize};rproc start 1 =>、

我的固件工作正常  LED29按预期闪烁。 但是、我从 uboot 启动"boot"命令后、Linux 立即启动、 一旦红色 LD 23 LED 开始闪烁、我的固件崩溃、绿色 LED LD 29

停止  闪烁。

您是否有一个想法 为什么固件会崩溃,请?  

非常感谢   

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

    您好!

    请共享 Linux 崩溃的日志。

    是否仅当您使用 rpoc 命令加载 R5固件时才发生崩溃?

    此致、
    Aparna

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

    您好!

    没有,没有阿帕尔纳。 Linux 启动/工作正常。 在 Linux 端不会出现崩溃。 我刚刚举一个固件示例、该示例在 R5F_0_0内核(使用 MCU SDK 10.00)上闪烁一个 LED。我将其放在了/lib/firmware.上  

    重新引导后、我将停止 u-boot 并手动键入以下命令以从 u-boot 启动此固件:  

    rproc init;load mmc 1:2 0x90000000 /lib/firmware/am64-main-r5f0_0-fw;rproc load 1 0x90000000 0x${filesize};rproc start 1

    (3.1.1.9. RemoteProc—处理器 SDK AM62x 文档)

    固件工作、因为 LED 闪烁。

    在这之后,我用一个简单的命令手动引导 Linux :" boot"和大约2秒钟后 R5固件崩溃( LED 停止闪烁),但 Linux 继续正常启动。 Linux 不会崩溃、它只是 R5固件。  

    你有什么想法吗?  

    此致  

    S é bastien   
       

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

    您好!

    您能否共享您的 R5应用代码?

    此致、
    Aparna

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

    #include <stdlib.h>
    #include "ti_drivers_config.h"
    #include "ti_board_config.h"
    
    void gpio_led_blink_main(void *args);
    
    int main(void)
    {
        System_init();
        Board_init();
    
        gpio_led_blink_main(NULL);
    
        Board_deinit();
        System_deinit();
    
        return 0;
    }
    

    #include <drivers/gpio.h>
    #include <kernel/dpl/AddrTranslateP.h>
    #include <kernel/dpl/DebugP.h>
    #include <kernel/dpl/ClockP.h>
    #include "ti_drivers_config.h"
    #include "ti_drivers_open_close.h"
    #include "ti_board_open_close.h"
    
    /*
     * This example configures a GPIO pin connected to an LED on the EVM in
     * output mode.
     * The application toggles the LED on/off for 10 seconds and exits.
     */
    
    void gpio_led_blink_main(void *args)
    {
        uint32_t    loopcnt = 35000, delaySec = 1;
        uint32_t    gpioBaseAddr, pinNum;
        DebugP_log("Entre dans gpio_led_blink_main\r\n");
    
        /* Open drivers to open the UART driver for console */
        Drivers_open();
        Board_driversOpen();
    
        DebugP_log("GPIO LED Blink Test Started ...\r\n");
        DebugP_log("LED will Blink for %d seconds ...\r\n", (loopcnt * delaySec * 2));
    
        /* Get address after translation translate */
        gpioBaseAddr = (uint32_t) AddrTranslateP_getLocalAddr(GPIO_LED_BASE_ADDR);
        pinNum       = GPIO_LED_PIN;
        GPIO_setDirMode(gpioBaseAddr, pinNum, GPIO_LED_DIR);
        DebugP_log("GPIO configure : BaseAddr=0x%x, PinNum=%d\r\n", gpioBaseAddr, pinNum);
        while(loopcnt > 0)
        {
            DebugP_log("Nbre de fois dans la boucle...\r\n");
            DebugP_log("Avant GPIO_pinWriteHigh\r\n");
            GPIO_pinWriteHigh(gpioBaseAddr, pinNum);
            DebugP_log("Apres GPIO_pinWriteHigh\r\n");
            ClockP_sleep(delaySec);
            DebugP_log("Avant GPIO_pinWriteLow\r\n");
            GPIO_pinWriteLow(gpioBaseAddr, pinNum);
            DebugP_log("Apres GPIO_pinWriteLow\r\n");
            DebugP_log("Avant ClockP_sleep\r\n");
            ClockP_sleep(delaySec);
            DebugP_log("Apres ClockP_sleep\r\n");
    
            loopcnt--;
        }
    
        DebugP_log("GPIO LED Blink Test Passed!!\r\n");
        DebugP_log("All tests have passed!!\r\n");
    
        Board_driversClose();
        Drivers_close();
        DebugP_log("Sortie de gpio_led_blink_main\r\n");
    }

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

    您好!

    感谢您的分享。 我将在最后查看

    此致、
    Aparna

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

    你好、Aparna

    在 SysConfig 中、我移除了 IPC、仅查看相应的存储器部分。 没有影响。 当我从 u-boot 引导 Linux 时、在引导 Linux 的2秒钟之后、我的 R5F 应用程序停止、并且在 uart1控制台中也停止日志消息。  

    你看你的身边吗? 我已经测试了很多事情没有成功    

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

    您好!

    对延迟响应深表歉意。 我正在将您的线程分配给 rpoc 专家以加快解析速度。

    此致、
    Aparna

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

    塞巴斯蒂安,你好!

    我将与您一起探讨 R5F 和 Linux A53交互。

    请提供其他调试信息

    首先、在 Linux 启动时、您是否看到任何有趣的终端输出? 请随时附上您的完整 Linux 启动日志供我查看。

    请附加工程和 Linux devicetree 的 SysConfig 文件、以便我可以仔细检查您的内存分配。 但是、切勿这样做、直到您阅读完我要链接的文档后。

    您是否已验证 Linux 和 R5F 之间不存在存储器或外设冲突?  

    例如、如果 R5F 工程中的 DDR 存储器分配与 Linux devicetree 文件中的保留存储器区域不对齐、则 Linux 可能会覆盖 R5F 的存储器。 这可能会导致 R5F 崩溃。

    请参阅我们在 AM64x Academy 的多核模块中提供的培训。 这里有一堆有用的信息、但我会先从这些部分开始:

    内存分配: https://dev.ti.com/tirex/explore/node?node=A__AfqqKhh3tdI5s3wpsXrWWw__AM64-ACADEMY__WI1KRXP__LATEST
    外设分配: https://dev.ti.com/tirex/explore/node?node=A__AaRdsK4zRjlChfPY2v0AhQ__AM64-ACADEMY__WI1KRXP__LATEST

    由于您当前未使用 RPMSg 或未使用 Linux Remoteproc 驱动程序引导 R5F、"应用开发"一节中的某些信息不适用于此特定示例。 如果您将来可以做这些事情中的任何一件、那么它仍然值得一读。 但是、"随 Linux 一起调试远程内核"一节非常有用。 我建议在运行时将 CCS 连接到 R5F、以便更好地确切地了解您的 R5F 内核正在做什么:

    https://dev.ti.com/tirex/explore/node?node=A__AZVLTFgnCWyMV5cDwLf4gg__AM64-ACADEMY__WI1KRXP__LATEST

    最后、您可以在此处找到有关初始化内核的不同方法的更多信息:
    https://dev.ti.com/tirex/explore/node?node=A__AbGt66xlJYuq-VIL-2YzSA__AM64-ACADEMY__WI1KRXP__LATEST 

    此致、

    Nick

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

    编辑:昨天我们刚刚推送了最新版本的 AM64x 学院、设置看起来好像有点混乱。 我在上面链接的"最新"URL 将重定向到先前版本(SDK 9.2)、并被滤除。

    您也可以从此处访问 AM64x 学院:
    https://dev.ti.com/tirex/explore/node?node=AAz9Dxht0WlNjAge02XsaQ

    您可以访问上面每个链接
    多核>内存
    多内核>外设
    多核>应用开发>调试远程内核
    多核>启动和禁用处理器内核

    我将进一步了解 URL 行为、希望我们能够尽快修复它。

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

    好的、感谢 Nick 的帮助。  我将在我漏掉某些内容 后立即重新阅读您提到的所有培训课程、并随时向您通报最新情况。 我刚从 AM64微型器件开始、非常感谢您的培训课程。

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

    您好、Nick。

    只是开始:  

    R5F0_0上的存储器配置

    MEMORY CONFIGURATION
    
             name            origin    length      used     unused   attr    fill
    ----------------------  --------  ---------  --------  --------  ----  --------
      R5F_VECS              00000000   00000040  00000040  00000000  RWIX
      R5F_TCMA              00000040   00007fc0  00000000  00007fc0  RWIX
      R5F_TCMB0             41010000   00008000  00000000  00008000  RWIX
      FLASH                 60100000   00080000  00000000  00080000  RWIX
      RTOS_NORTOS_IPC_SHM_M 70000000   0000c000  00000000  0000c000  RWIX
      NON_CACHE_MEM         70060000   00008000  00000000  00008000  RWIX
      MSRAM                 70080000   00040000  00028148  00017eb8  RWIX
      USER_SHM_MEM          701d0000   00000080  00000000  00000080  RWIX
      LOG_SHM_MEM           701d0080   00003f80  00000000  00003f80  RWIX
      DDR_0                 a0100000   00001000  00001000  00000000  RWIX
      DDR_1                 a0101000   00eff000  00000000  00eff000  RWIX
    
    
    SEGMENT ALLOCATION MAP
    
    run origin  load origin   length   init length attrs members
    ----------  ----------- ---------- ----------- ----- -------
    00000000    00000000    00000040   00000040    r-x
      00000000    00000000    00000040   00000040    r-x .vectors
    70080000    70080000    00016078   00016078    r-x
      70080000    70080000    00014da0   00014da0    r-x .text
      70094da0    70094da0    000012d8   000012d8    r-- .rodata
    70096080    70096080    0000f280   00000000    rw-
      70096080    70096080    00003280   00000000    rw- .bss
      70099300    70099300    00008000   00000000    rw- .sysmem
      700a1300    700a1300    00004000   00000000    rw- .stack
    700a5300    700a5300    00001418   00001418    r-x
      700a5300    700a5300    00000ae0   00000ae0    r-x .text.hwi
      700a5de0    700a5de0    000004a0   000004a0    r-x .text.cache
      700a6280    700a6280    000002d0   000002d0    r-x .text.mpu
      700a6550    700a6550    000001c0   000001c0    r-x .text.boot
      700a6710    700a6710    00000008   00000008    r-x .text:abort
    700a6718    700a6718    00000638   00000638    rw-
      700a6718    700a6718    00000638   00000638    rw- .data
    700a6d50    700a6d50    00001400   00000000    r--
      700a6d50    700a6d50    00000100   00000000    r-- .irqstack
      700a6e50    700a6e50    00000100   00000000    r-- .fiqstack
      700a6f50    700a6f50    00001000   00000000    r-- .svcstack
      700a7f50    700a7f50    00000100   00000000    r-- .abortstack
      700a8050    700a8050    00000100   00000000    r-- .undefinedstack
    a0100000    a0100000    00001000   00001000    r--
      a0100000    a0100000    00001000   00001000    r-- .resource_table
    

    在 Linux 端使用 dts、并在 u-boot 端使用 MCU 上的存储器

    我开始使用 CCS XDS 110进行调试。 我看到的是、当 Linux 通过 remoteproc =>在 R5F 上运行应用时 、一切看起来都是正确的。 我可以   正常地对函数 gpio_led_blink_main 进行断点

    如果我在此期间重新启动并停止 u-boot =>则 R5F 处于"复位"状态。 我在引导命令以及 R5F 退出复位模式并运行之后运行此命令 setenv dorprocboot 1。 一切看起来都正确。 但当 Linux 启动达到大约2秒时、R5F 始终在运行、但我的 R5F 的心率 LED 冻结。 如果我断点 simple function gpio_led_Blink_main、 则  不会观察到该断点的进一步遍历、但 R5F 正在运行、看起来会在 SLEEP 函数上定期传递、但在 gpio_led_Blink_main 函数上不会再次传递。  

    奇怪的不?   

       

     

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

    您好!

    好的、我觉得您可以进行内存分配。 很高兴听到 Linux Remoteproc 初始化 R5F 时正在加载和工作正常。

    在启动期间是否会覆盖 SRAM 存储器?  

    SRAM 在 R5 SPL 引导加载程序阶段使用、如下所述:
    https://software-dl.ti.com/processor-sdk-linux/esd/AM64X/10_00_07_04/exports/docs/linux/Foundational_Components U-Boot/UG-General-Info.html#SRAM-MEMORY-LAYOUG-TOURG-R5-spl-bootloader-STAGE

    但是、根据引导流程、我预计 R5 SPL 会在 u-boot 提示符出现之前完成运行。 因此我不希望 R5F SPL 覆盖您的数据: https://software-dl.ti.com/processor-sdk-linux/esd/AM64X/10_00_07_04/exports/docs/linux/Foundational_Components U247-Boot/UG-General-Info.html#boot-flow

    在启动期间、存储器中的某些内容仍然可能会被覆盖。 我不确定是否将 SRAM 用于 uboot 和内核提示符之间的任何事情。 我的假设是、只要 SRAM 存储器区域在 Linux devicetree 文件中分配、就应该保持独立。

    请附加完整的引导日志  

    我想浏览您的启动日志、了解 Linux 与远程内核之间的交互方式。

    此致、

    Nick

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

    塞巴斯蒂安,你好!

    首先、让我们消除不存在的问题  

    我很好奇、如果在 Uboot 中初始化 R5F 子系统的一个 R5F 内核、而同一子系统中的另一个 R5F 内核由 Linux remoteproc 初始化、是否会出现一些问题。 这可能是目前未经过测试的用例。 但是、您需要在 uboot 中初始化所有 R5F 内核、所以这是不相关的。

    我很高兴我们在 Linux 驱动程序连接到远程内核时没有看到任何 remoteproc 错误。

    Linux 启动 R5F 内核时、应用程序运行正常、这一事实告诉我、这不是 Linux devicetree PinMux 问题或典型的资源冲突问题。

    那么... 发生什么事了?  

    您能准确地识别 R5F 代码中它在何处停止吗?

    代码中似乎已经有 print 语句。 如果 R5F 在连接 Linux remoteproc 驱动程序后停止、那么我们只需从 Linux 跟踪日志中检查打印内容:
    https://dev.ti.com/tirex/explore/node?node=A__AbUQ5KHRh.Fi4sFvN-aleA__AM64-ACADEMY__WI1KRXP__LATEST

    我不那么熟悉 CCS 调试方法(除了我在 Academy 中文档介绍的基本工具之外)、但也许在 uboot 初始化 R5F 之后、您可以在处理器仍位于 uboot 中时连接到 R5F 内核? 然后、您可以尝试使用断点来弄清楚 Linux 引导开始后代码会停止的确切位置。

    此致、

    Nick

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

    您好、Nick。

    昨天、我尝试使 LED 闪烁或直接从 R5F 应用程序打印"Hello world"、以解决  Linux devicetree PinMux 问题。

    闪烁 LED 或从 R5F 打印"Hello world"、 行为是相同的。 R5F 应用程序在 Linux 启动后~2秒冻结。 "hello world display"在 Linux 启动后停止。

    所以我试过使用 CCS 和断点进行调试、我看到 R5F 应用程序 在 ClockP_isActive 和 SemaphoreP_PEND 两个函数中循环 。  

    就像环路变得无穷大一样。 但是 Linux 如何在这个部分上进行交互呢? 计时器?  

    uint32_t ClockP_isActive(ClockP_Object *handle)
    {
        ClockP_Struct *obj = (ClockP_Struct *)handle;
    	uint32_t result=0;
        if(obj->timeout > 0U)
        {
        	result = 1;
        }
    
        return result;
    }
    
    
    int32_t SemaphoreP_pend(SemaphoreP_Object *obj, uint32_t timeout)
    {
        SemaphoreP_Struct *pSemaphore = (SemaphoreP_Struct *)obj;
        ClockP_Params      clockParams;
        ClockP_Object      clockObj;
        uintptr_t          key;
        int32_t            status = SystemP_SUCCESS;
    
        /*
         * Always add Clock (but don't start) so that ClockP_isActive() below
         * is valid.  It's OK to add a Clock even when timeout is 0 or forever
         * (but it is not OK to start it).
         */
        ClockP_Params_init(&clockParams);
        clockParams.timeout = timeout;
        (void)ClockP_construct(&clockObj, &clockParams);
    
        if ((timeout != 0U) && (timeout !=(uint32_t)SystemP_WAIT_FOREVER)) {
            ClockP_start(&clockObj);
        }
    
        key = HwiP_disable();
    
        while ((pSemaphore->count == 0U) && (pSemaphore->nestCount == 0U) &&
               ((timeout == SystemP_WAIT_FOREVER) ||
                (ClockP_isActive(&clockObj)!=0U))) {
    
            HwiP_restore(key);
    
            key = HwiP_disable();
        }
    
        if (pSemaphore->count > 0U) {
            (pSemaphore->count)=(pSemaphore->count) - 1U;
            if(pSemaphore->type==(uint32_t)SemaphoreP_TYPE_MUTEX)
            {
                pSemaphore->nestCount = pSemaphore->nestCount + 1U;
            }
            status = SystemP_SUCCESS;
        }
        else {
            if(pSemaphore->type==(uint32_t)SemaphoreP_TYPE_MUTEX)
            {
                pSemaphore->nestCount = pSemaphore->nestCount + 1U;
                status = SystemP_SUCCESS;
            }
            else
            {
                status = SystemP_TIMEOUT;
            }
        }
    
        HwiP_restore(key);
    
        ClockP_destruct(&clockObj);
    
        return (status);
    }

    那么... 发生什么事了?

    我不认为是 Linux 的远程处理器驱动程序"崩溃"R5F 应用程序,因为问题早在启动 Linux 之前就出现了   

      1.521901] Waiting for root device PARTUUID=076c4a2a-02...
    [    1.571796] mmc1: new ultra high speed SDR104 SDHC card at address aaaa
    [    1.579389] mmcblk1: mmc1:aaaa SC16G 14.8 GiB
    [    1.589098]  mmcblk1: p1 p2
    [    1.595373] mmc0: Command Queue Engine enabled
    [    1.599931] mmc0: new HS200 MMC card at address 0001
    [    1.605813] mmcblk0: mmc0:0001 S0J56X 14.8 GiB
    [    1.612351]  mmcblk0:
    [    1.615147] mmcblk0boot0: mmc0:0001 S0J56X 31.5 MiB
    [    1.621715] mmcblk0boot1: mmc0:0001 S0J56X 31.5 MiB
    [    1.628122] mmcblk0rpmb: mmc0:0001 S0J56X 4.00 MiB, chardev (239:0)
    [    1.930110] EXT4-fs (mmcblk1p2): recovery complete
    [    1.936234] EXT4-fs (mmcblk1p2): mounted filesystem 27d406a0-8181-44e9-8e68-0                                                                                                                                                                                                                                                                                                                            7b1dee77e6c r/w with ordered data mode. Quota mode: none.
    [    1.948453] VFS: Mounted root (ext4 filesystem) on device 179:2.
    [    1.957123] devtmpfs: mounted
    [    1.961791] Freeing unused kernel memory: 2432K
    [    1.966446] Run /sbin/init as init process
    [    2.183179] systemd[1]: System time before build time, advancing clock.
    [    2.234105] NET: Registered PF_INET6 protocol family
    [    2.240563] Segment Routing with IPv6
    [    2.244336] In-situ OAM (IOAM) with IPv6
    [    2.288979] systemd[1]: systemd 255.4^ running in system mode (+PAM -AUDIT -S                                                                                                                                                                                                                                                                                                                            ELINUX -APPARMOR +IMA -SMACK +SECCOMP -GCRYPT -GNUTLS -OPENSSL +ACL +BLKID -CURL                                                                                                                                                                                                                                                                                                                             -ELFUTILS -FIDO2 -IDN2 -IDN -IPTC +KMOD -LIBCRYPTSETUP +LIBFDISK -PCRE2 -PWQUAL                                                                                                                                                                                                                                                                                                                            ITY -P11KIT -QRENCODE -TPM2 -BZIP2 -LZ4 -XZ -ZLIB +ZSTD -BPF_FRAMEWORK -XKBCOMMO                                                                                                                                                                                                                                                                                                                            N +UTMP +SYSVINIT default-hierarchy=unified)
    [    2.320899] systemd[1]: Detected architecture arm64.
    
    Welcome to Arago 2023.10!
    
    [    2.349713] systemd[1]: Hostname set to <am64xx-evm>.
    

     

       

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

    Nick、

    我添加、应用在信标函数中持续循环

       while ((pSemaphore->count == 0U) && (pSemaphore->nestCount == 0U) &&
               ((timeout == SystemP_WAIT_FOREVER) ||
                (ClockP_isActive(&clockObj)!=0U))) {
    
            HwiP_restore(key);
    
            key = HwiP_disable();
        }

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

    塞巴斯蒂安,你好!

    我将把您的线程发送给一个更熟悉 RTOS 编程的团队成员、以评论 R5F 程序如何到达信标函数-希望这能够帮助我们了解 Linux 启动期间系统中可能会发生什么情况。

    我能让您确认此时正运行什么代码吗? 例如、未修改的项目、如果是、哪一个? 如果您进行了修改、我可以让您将其附加到我的团队成员要查看的线程中吗?

    此致、

    Nick

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

    Nick、

    我有一个问题,我想你的意见。 SysConfig 中使用的 GPIO 位于 MCU 域中、而不是主域中。 R5F 内核是否可以直接驱动 MCU 域中的 GPIO? 在这种情况下、需要在 RAT 号为?的情况下进行地址转换。 你对此有何看法?  

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

    Sebastien、您好!

    SysConfig 中使用的 GPIO 位于 MCU 域中、而非主域中。 R5F 内核是否可以直接驱动 MCU 域中的 GPIO? 在这种情况下、需要在 RAT 号为?的情况下进行地址转换。 您对此有何看法

    是的、R5F 内核可以直接访问 MCU_GPIO 引脚、并且不需要该引脚的 RAT 区域。  

    请参阅以下切换的项目 MCU_GPIO0_8 来自主域 R5F 内核的 MCU 域中的引脚。

    工程- gpio_toggle_am64x_r5fss0_0_nortos_ti-arm-clang

    此致、

    Tushar

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

    我通常只看到客户需要为 M4F 内核配置 RAT。 有关 RAT 的更多信息、请参阅此文档:
    https://dev.ti.com/tirex/explore/node?node=A__AXBsTEetU2hiTMZSzq4row__AM62A-ACADEMY__WeZ9SsL__LATEST

    我将您指向 AM62Ax Academy 的 MCU 模块、因为我们 还没有带宽来更新 AM64x MCU 模块。 对于未来的读者来说、更新 AM64x MCU 模块没有设定的时间范围、但我预计在2025年会看到一些内容。

    此致、

    Nick

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

    AM64x Linux SDK 默认禁用主域 UART1、因此:

    arch/arm64/boot/dts/ti/k3-am642-evm.dts
    
    /* main_uart1 is reserved for firmware usage */
    &main_uart1 {
        status = "reserved";
        pinctrl-names = "default";
        pinctrl-0 = <&main_uart1_pins_default>;
    };
    
    arch/arm64/boot/dts/ti/k3-am642-sk.dts
    
    &main_uart1 {
        /* main_uart1 is reserved for firmware usage */
        bootph-pre-ram;
        status = "reserved";
        pinctrl-names = "default";
        pinctrl-0 = <&main_uart1_pins_default>;
    };
    

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

    Tushar、您好!

    Sebastien 正在使用 gpio_led_blink 项目。 他的代码如下所示(除非已更改?):
    https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1434691/am6442-led23-on-tmds64evm-evalkit/5505454#5505454

    它在 Uboot 期间启动时运行、但一旦 Linux 启动、代码似乎会卡在 Semaphore_pend 函数中:
    https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1434691/am6442-led23-on-tmds64evm-evalkit/5525305#5525305

    您觉得 gpio_led_blink 项目是如何实现该功能并卡住的吗? 这可以帮助我们弄清 Linux 启动期间发生了什么。

    此致、

    Nick

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

    Tushar、Nick、您好

    昨天、我尝试了使用/实现 FreeRTOS。 不幸的是、行为是相同的。 我收到了 PHYTEC 模块上的系统。 我也尝试过。 尽管 Linux/设备树略有不同、但该行为也是相同的。 Linux 启动后、LED 停止闪烁(大约1.5秒~2秒后)。 Linux 的远程 proc 驱动程序不是原因。      

    @Tushar :在你的例子中,睡眠是短(1000us )。 LED 不以该频率闪烁。 我修改了它。 我尝试了另一个 GPIO。 行为也是一样的。  

    我将尝试逐步修改核心映像以确定问题。    

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

    Sebastien、您好!

    我将尝试逐步修改核心映像以确定问题。   [报价]

    我在做了一些修改后尝试运行该示例、并能够成功运行它。 LED23按预期闪烁。

    请参阅以下随附的工程。

    项目-  gpio_led_blink_am64x_evm_r5fss0_0_nortos_ti_arm_clang.zip

    此致、

    Tushar

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

    Tushar、您好!

     您进行了哪些修改?

    您是否通过从 uboot 终端启动、然后引导 Linux 进行了测试? 如果没有、您是如何测试的?

    此致、

    Nick

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

    您好、Nick。  

    我参考了现有 IPC 示例对 example.syscfg 文件进行了更改。

    我已经通过更新 R5F 固件的 S/W 链接检查了远程内核引导方法。

    您是否从 uboot 终端开始测试、

    不了解上述方法。 您能检查一下并告诉我吗?

    我已附上上述答复中的密码。

    此致、

    Tushar

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

    对于未来的读者,塞巴斯蒂安终于发现了问题的根源: R5F 内核和 Linux 都试图使用相同的计时器外设。 请在此处查看他的解决方案: https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1458588/am6442-am6442-led23-on-tmds64evm-evalkit 

    此致、

    Nick