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.

[参考译文] RM46L852:launchxl2-rm46L852 FreeRTOS 闪烁 LED

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1055524/rm46l852-launchxl2-rm46l852-freertos-blinking-led

器件型号:RM46L852
主题中讨论的其他器件:HALCOGEN

大家好!

我正在尝试使用 FreeRTOS 使 LED 闪烁。 我已经为 RM46L852从 halcogen 生成了代码、它是集成的 FreeRTOS、但我在 FreeRTOS 以及 halcogen 生成的代码方面遇到了一些问题...

有人可以 在 https://github.com/babylone25/launchxl2-rm46L852.git 上查看我的项目 吗?

非常感谢!

此致、

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

    您好 Fabian、

    [引用 userid="505290" URL"~/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1055524/rm46l852-launchxl2-rm46l852-freertos-blinking-led "]我遇到了一些 FreeRTOS 以及 halcogen 生成的代码问题[/quot]

    问题是什么? 编译工程时是否有任何错误?  您是否按照 HALCoGen 帮助中的步骤配置器件?

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

    QJ Wang、您好!

    编译时没有任何错误,但我有奇怪的警告:

    问题是、当我在调试模式下运行项目时、我看到我卡在任务主导的创建中。

    此致、

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    [引用 userid="505290" URL"~/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1055524/rm46l852-launchxl2-rm46l852-freertos-blinking-led/3905568 #3905568"]编译时没有任何错误,但我有奇怪的警告:

    我刚刚在 CCS 11中导入了您的项目、并收到了相同的警告:

    Invoking: Arm Linker
    "/home/mr_halfword/ti/ccs1100/ccs/tools/compiler/ti-cgt-arm_20.2.5.LTS/bin/armcl" -mv7R4 --code_state=32 --float_support=VFPv3D16 -me --define=DEBUG --define=__LITTLE_ENDIAN__ --define=CSP_LITTLE_ENDIAN=1 --define=RM46L852 --define=TI_HERCULES_FAMILY --define=WATCHDOG_ENABLE=0 -g --diag_warning=225 --diag_wrap=off --display_error_number --enum_type=packed --abi=eabi --section_sizes=on -z -m"RM46L852.map" --heap_size=0x800 --stack_size=0x800 -i"/home/mr_halfword/ti/ccs1100/ccs/tools/compiler/ti-cgt-arm_20.2.5.LTS/lib" -i"/home/mr_halfword/ti/ccs1100/ccs/tools/compiler/ti-cgt-arm_20.2.5.LTS/include" --reread_libs --diag_wrap=off --display_error_number --warn_sections --xml_link_info="RM46L852_linkInfo.xml" --rom_model -o "RM46L852.out" "./Third_party/FreeRTOS/source/hooks.obj" "./Third_party/FreeRTOS/source/os_croutine.obj" "./Third_party/FreeRTOS/source/os_event_groups.obj" "./Third_party/FreeRTOS/source/os_heap.obj" "./Third_party/FreeRTOS/source/os_list.obj" "./Third_party/FreeRTOS/source/os_mpu_wrappers.obj" "./Third_party/FreeRTOS/source/os_port.obj" "./Third_party/FreeRTOS/source/os_portasm.obj" "./Third_party/FreeRTOS/source/os_queue.obj" "./Third_party/FreeRTOS/source/os_tasks.obj" "./Third_party/FreeRTOS/source/os_timer.obj" "./Third_party/HAL/source/Device_RM46.obj" "./Third_party/HAL/source/Fapi_UserDefinedFunctions.obj" "./Third_party/HAL/source/adc.obj" "./Third_party/HAL/source/can.obj" "./Third_party/HAL/source/crc.obj" "./Third_party/HAL/source/dabort.obj" "./Third_party/HAL/source/dcc.obj" "./Third_party/HAL/source/ecap.obj" "./Third_party/HAL/source/emac.obj" "./Third_party/HAL/source/eqep.obj" "./Third_party/HAL/source/errata_SSWF021_45.obj" "./Third_party/HAL/source/esm.obj" "./Third_party/HAL/source/etpwm.obj" "./Third_party/HAL/source/gio.obj" "./Third_party/HAL/source/het.obj" "./Third_party/HAL/source/i2c.obj" "./Third_party/HAL/source/lin.obj" "./Third_party/HAL/source/mdio.obj" "./Third_party/HAL/source/mibspi.obj" "./Third_party/HAL/source/notification.obj" "./Third_party/HAL/source/phy_dp83640.obj" "./Third_party/HAL/source/pinmux.obj" "./Third_party/HAL/source/pom.obj" "./Third_party/HAL/source/rti.obj" "./Third_party/HAL/source/sci.obj" "./Third_party/HAL/source/spi.obj" "./Third_party/HAL/source/sys_core.obj" "./Third_party/HAL/source/sys_dma.obj" "./Third_party/HAL/source/sys_intvecs.obj" "./Third_party/HAL/source/sys_mpu.obj" "./Third_party/HAL/source/sys_pcr.obj" "./Third_party/HAL/source/sys_phantom.obj" "./Third_party/HAL/source/sys_pmm.obj" "./Third_party/HAL/source/sys_pmu.obj" "./Third_party/HAL/source/sys_selftest.obj" "./Third_party/HAL/source/sys_startup.obj" "./Third_party/HAL/source/sys_vim.obj" "./Third_party/HAL/source/system.obj" "./Third_party/HAL/source/ti_fee_Info.obj" "./Third_party/HAL/source/ti_fee_cancel.obj" "./Third_party/HAL/source/ti_fee_cfg.obj" "./Third_party/HAL/source/ti_fee_eraseimmediateblock.obj" "./Third_party/HAL/source/ti_fee_format.obj" "./Third_party/HAL/source/ti_fee_ini.obj" "./Third_party/HAL/source/ti_fee_invalidateblock.obj" "./Third_party/HAL/source/ti_fee_main.obj" "./Third_party/HAL/source/ti_fee_read.obj" "./Third_party/HAL/source/ti_fee_readSync.obj" "./Third_party/HAL/source/ti_fee_shutdown.obj" "./Third_party/HAL/source/ti_fee_util.obj" "./Third_party/HAL/source/ti_fee_writeAsync.obj" "./Third_party/HAL/source/ti_fee_writeSync.obj" "./application/source/app_led_task.obj" "./application/source/app_main.obj" "../Third_party/HAL/include/F021_API_CortexR4_LE.lib" "../Third_party/HAL/source/sys_link.cmd"  -lrtsv7R4_T_le_v3D16_eabi.lib 
    <Linking>
    warning #10247-D: creating output section ".kernelTEXT" without a SECTIONS specification
    warning #10247-D: creating output section ".kernelHEAP" without a SECTIONS specification
    warning #10247-D: creating output section ".kernelBSS" without a SECTIONS specification
    FILE: RM46L852.out
    CODE  size (bytes): 61832
    CONST size (bytes): 592
    DATA  size (bytes): 11396
    这些警告意味着链接器未看到在链接器命令文件中指定的段、因此将命名段放置在任意的存储器区域中。

     RM46L852/Debug/RM46L852.MAP 链接映射文件显示 .kernelTEXT、 .kernelHEAP 和 .kernelBSS 段都已放置在 FLASH0中。  需要 将.kernelHEAP 和.kernelBSS 段放置在 RAM 中、并会导致程序在闪存中运行时失败(正如链接器命令文件中未指定的段所发生的那样)。

    查看构建中的链接器命令行、CCS 工程将 RM46L852/Third_party/HAL/source/sys_link.cmd 链接器命令文件传递给链接器。 在链接器命令文件中,段不包含 .kernelTEXT、 .kernelHEAP 或.kernelBSS:

    SECTIONS
    {
        .intvecs : {} > VECTORS
        .text    : {} > FLASH0 
        .const   : {} > FLASH0 
        .cinit   : {} > FLASH0 
        .pinit   : {} > FLASH0 
        .bss     : {} > RAM
        .data    : {} > RAM
        .sysmem  : {} > RAM
        
        FEE_TEXT_SECTION : {} > FLASH0 
        FEE_CONST_SECTION : {} > FLASH0
        FEE_DATA_SECTION : {} > RAM
    
    /* USER CODE BEGIN (4) */
    /* USER CODE END */
    }

     RM46L852_FreeRTOS/SOURCE/SYS_LINK_cmd 链接器命令文件包含 .kernelTEXT、 .kernelHEAP 和 .kernelBSS 段:

    SECTIONS
    {
        .intvecs : {} > VECTORS
        /* FreeRTOS Kernel in protected region of Flash */
        .kernelTEXT   : {} > KERNEL
        .cinit        : {} > KERNEL
        .pinit        : {} > KERNEL
        /* Rest of code to user mode flash region */
        .text         : {} > FLASH0 
        .const        : {} > FLASH0 
        /* FreeRTOS Kernel data in protected region of RAM */
        .kernelBSS    : {} > KRAM
        .kernelHEAP   : {} > RAM
        .bss          : {} > RAM
        .data         : {} > RAM    
    
    /* USER CODE BEGIN (4) */
    /* USER CODE END */
    }

    看起来 CCS 工程的设置方式、FreeRTOS 的正确链接器命令文件尚未使用。

    顶级 RM46L852_FreeRTOS 和 RM46L852目录是如何设置的?

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

    切斯特、您好!

    感谢您的详细回答、这有助于我了解这些警告的来源。

    我已经在该目录中执行了很多操作、我将尝试从干净的设置中执行。

    感谢您的付款帮助!

    此致、

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    [引用 userid="505290" URL"~/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1055524/rm46l852-launchxl2-rm46l852-freertos-blinking-led/3905577 #3905577"]顶级 RM46L852_FreeRTOS 是通过 HALCOGEN 设置的、我已经手动完成 RM46852目录、只需从另一个项目中添加文件 hooks.h 和 hook.c 即可。 [/报价]

    如果您将  RM46L852_FreeRTOS/SOURCE /SYS_LINK_cmd 文件复制到 RM46L852/Third_party/HAL/ SOURCE 目录中、即覆盖现有 RM46L852/Third_party/HAL/source/sys_link.cmd、则会删除这些警告。 我刚刚尝试过、没有链接器警告、链接器映射文件显示了看起来正确的段放置方式:

    SEGMENT ALLOCATION MAP
    
    run origin  load origin   length   init length attrs members
    ----------  ----------- ---------- ----------- ----- -------
    00000000    00000000    00006c60   00006c60    r-x
      00000000    00000000    00000020   00000020    r-x .intvecs
      00000020    00000020    00006bf0   00006bf0    r-x .kernelTEXT
      00006c10    00006c10    00000050   00000050    r-- .cinit
    00008020    00008020    00008578   00008578    r-x
      00008020    00008020    00008378   00008378    r-x .text
      00010398    00010398    00000200   00000200    r-- .const
    08000800    08000800    00000140   00000000    rw-
      08000800    08000800    00000140   00000000    rw- .kernelBSS
    08001000    08001000    00002b44   00000000    rw-
      08001000    08001000    00002000   00000000    rw- .kernelHEAP
      08003000    08003000    00000b28   00000000    rw- .bss
      08003b28    08003b28    0000001c   00000000    rw- .data

    但是、将 RM46L852目录设置为具有 FreeRTOS 支持的 HALCoGen 生成的项目可能更容易维护、因此可以在需要时重新生成 HALCoGen 代码。

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

    切斯特、抱歉、我在看到您回答问题之前重新编辑了我的答案...

    实际上、如果我将 RM46L852_FreeRTOS/SOURCE /SYS_LINK_cmd 文件复制到 RM46L852/Third_party/HAL/source 目录中、它会删除这些警告、感谢您!

    但我使用 launchpad 测试了代码、但它不起作用。 我仍在执行任务创建... 我想我将尝试使用具有最低 FreeRTOS 功能的 HALCOGEN 重新生成项目。 非常感谢 Chester 的帮助。

    此致、

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

    自从上周我就完成了!  可在 https://github.com/babylone25/launchxl2-rm46L852.git 上获取。感谢你的帮助。

    此致