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.

[参考译文] CCS/DK-TM4C129X:GNU TM4C129X NDK 客户端示例链接错误

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/586702/ccs-dk-tm4c129x-gnu-tm4c129x-ndk-client-example-link-errors

器件型号:DK-TM4C129X

工具/软件:Code Composer Studio

我无法找到具有我感兴趣的 HTTP 服务器的 NDK 客户端的 TM4C129X 版本、因此我将 NSP_1_10_03_15/packages/ti/NDK/examples/ndk_evm6748_elf_examples.zip 中的客户端移植到 DK-TM4C129X。  合并和一些更正后、我仍然有三个链接器错误:

****为项目 NDK_CLIENT 构建配置 Debug_GNU ****

 

"C:\\ti\\ccsv6\\utils\\bin\\gmake"-k -j 8全部

正在制作./src/sysbios/sysbios.am4fg ...

gmake[1]:输入目录`C:/Users/bredel1/Desktop/blueFire/Instrument/Networked/firmware/ndk_client/src/sysbios

gmake[1]:没有为`all '执行任何操作。

gmake[1]:离开目录`C:/Users/bredel1/Desktop/blueFire/Instrument/Networked/firmware/ndk_client/src/sysbios

'构建目标:NDK_CLIENT'

'调用:GNU 连接器'

"c:/ti/ccsv6/tools/compiler/gcc-arm-none-eabi-4_9-2015q3/bin/arm-none-eabi-gcc.exe /ti/tirtos_tivac_2_16_01_14/products/TivaWare_C_Series-2.1.1.71b/driverlib/gcc /ti/tirtos_tivac_2_16_01_14/products/TivaWare_C_Series-2.1.1.71b/usblib/gcc /src/sysbios/_BIOS.o /src/sysbios/gates_GateMutex.o /src/sysbios/gnu_ReentSupport.o /src/sysbios/hal_Cache.o /src/sysbios/hal_CacheNull.o /src/sysbios/hal_Hwi_stack.o /src/sysbios/hal_Hwi_startup.o /src/sysbios/knl_Clock.o /src/sysbios/knl_Event.o /src/sysbios/knl_Intrinsics.o -March = armv7e-m -mthumb -mfloat-abi=hard -mfp=fpv4-sp-D16 -fno-exceptions -DPART_TM4C129XNCZAD -ffunexions -fdata-SECTIONS -g -gdwarf-3 -gstrict-dwarf-exceptions -dptar_TM4C129XNCZAD -ff"-ff"-ff."/ti/tirtos_tivac_2_16_01_14/products/TivaWare_C_Series-2.1.1.71b/grlib/gcc "/src/sysbios/gates_GateHwi.o。".intrab.ina.nets.com "/src/sysbios/gnu_SemiHostSupport.o /src/sysbios/hal_Hwi.o /src/sysbios/heaps_HeapMem.o /src/sysbios/knl_Idle.o /src/sysbios/m3_TaskSupport_asm_gnu.o /src/sysbios/m3_TaskSupport.o /src/sysbios/m3_IntrinsicsSupport_asm_gnu.o /src/sysbios/m3_Hwi_asm_switch_gnu.o /src/sysbios/m3_Hwi_asm_gnu.o /src/sysbios/m3_Hwi.o /src/sysbios/lm4_Timer.o /src/sysbios/knl_Task.o /src/sysbios/knl_Swi_andn.o /src/sysbios/knl_Swi.o /src/sysbios/knl_Semaphore.o /src/sysbios/knl_Queue.o -wl、-t"../tm4c129xnczad.lds"-wl、-t"configPkg/linker.cmd"-wl、-start-group -l"usb"-l"driver"-l"gcc"-l"rdimon"-l"c-wl、-end-group

 

C:\ti_tirtos_tivac_2_16_01_14\products\BIOS_6_45_02_31\packages/GNU\targets\arm\rtsv7M\lib\boot.am4fg (startup.om4fg):在函数`_fini'中:

/db/vtree/library/trees/zumaprod/zumaprod-j14/exports/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/gnu/targets/arm/rtsv7M/startup.c:91:`的多重定义

C:/ti/ccsv6/tools/compiler/gcc-arm-none-eabi-4_9-2015q3/bin/../lib/gcc/arm-none-eabi/4.9.3/armv7e-m/fpu/crti.o:(.fini+0x0):首先在此处定义

C:\ti_tirtos_tivac_2_16_01_14\products\BIOS_6_45_02_31\packages/GNU\Targets\arm\rtsv7M\lib\boot.am4fg (startup.om4fg):(.data.__DSO_Handle+0x0):`_DSO_Handle+0x0的多个定义

C:/ti/ccsv6/tools/compiler/gcc-arm-none-eabi-4_9-2015q3/bin/../lib/gcc/arm-none-eabi/4.9.3/armv7e-m/fpu/crtbegin.o:(.data+0x0):首先在此处定义

 

C:\users\bedel1\Desktop\BlueFire\Instrument\Network\firmware\NDK_client\Debug_GNU\configPkg\package\cg\client_pm4fg.om4fg:In Function `ti_SysBIOS_hal_Hwi_HwiProxy_getCoreStackInfo_E':

C:\users\bedel1\Desktop\BlueFire\Instrument\Network\firmware\NDK_client\Debug_GNU\CONFIGPkg/packages/cfg/client_pm4fg.c:15447:未定义对`ti_SysBIOS_family_ARM_m3/Hwi_getCoreStackInfo_E'的引用

 

collect2.exe:错误:LD 返回1退出状态

gmake:***[NDK_client.out]错误1.

gmake:目标`全部'不会由于错误而重制。

 

****构建完成****

为了处理重复的定义、我尝试从工程属性链接器列表中删除各个库、但错误仍然存在。  我不知道如何从链接中删除 crti.o、crtbegin.o 或 boot.am4fg、因此我一直在解决此问题。

似乎文件 Hwi_asm_switch_gun.sv7m 应该提供 ti_sysbios_family_arm_m3_Hwi_getCoreStackInfo__E、但它不提供。  作为临时解决方法、我可以通过提供具有该名称的空函数来消除错误、但这不是解决方案。

 

有人对如何解决这些问题有什么想法吗?

 

谢谢、

Leo Bredehoft

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    用于 TM4C129器件的 EMAC 驱动程序位于用于 TivaC 的 TI-RTOS 中。 您可以从以下位置获取: software-dl.ti.com/.../index.html

    您可以使用一些简单的网络示例(例如 TCP 回显)来确保一切正常运行。 下面是一个有关如何在 TM4C129 LP 上使用 HTTP 服务器的示例: processors.wiki.ti.com/.../TI-RTOS_HTTP_Example

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

    作为这项工作的一部分、我将尝试查看 NDK 是否如此占用内存、以至于它会将我的应用程序挤出去。 我知道 LWIP 是保守的、所以这也是我考虑的一个替代方案。

    完成后、该项目应包含在内
    1) 1) HTTP 服务器
    a)提供 microSD FAT 文件、
    b)提供块化二进制流以获取请求。
    2) 2)基于硬件的 IEEE 1588 ptpd。
    3) 3)用于专有协议的双向插座。
    4) 4) ICMP 对 ping 的响应。
    5) 5) DHCP 客户端。
    6)专有硬件材料。
    7)短文件名的 FatFs (SD 卡访问有问题?)。

    这一切都应在 TI-RTOS 下运行、以允许 Spartan 使用处理器。 我已经在 LM3S9B96上使用 SafeRTOS、NicheStack 和 HCC 嵌入式 FAT FS 实现了这种系统、因此我知道这种系统可以适应、但不允许浪费内存。 如果您有更多意见、欢迎您提出。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    NDK 应该能够处理所有这些。 我给您的 wiki 编写内容包括一个有关从 SD 卡上的 FatFS 获取文件的部分。 此外、还支持长文件名、但如果您需要的话。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    在 Todd 引用的链接之上、这里是另一个可能有用的链接。 processors.wiki.ti.com/.../TI-RTOS_Examples_SemiHosting
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    感谢您提供相关信息。 我在 DK-4C129X 上的 TI 工具下有您建议的运行代码。 经过一些调整后、我认为它几乎是在 GCC 下连接的、这是该项目的一项要求。 我看到以下错误:

    /db/vtree/library/trees/zumaprod/zumaprod-j14/exports/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/gnu/targets/arm/rtsv7M/startup.c:91:`的多重定义
    C:/ti/ccsv6/tools/compiler/gcc-arm-none-eabi-4_9-2015q3/bin/../lib/gcc/arm-none-eabi/4.9.3/armv7e-m/fpu/crti.o:(.fini+0x0):首先在此处定义

    C:\ti_tirtos_tivac_2_16_01_14\products\BIOS_6_45_02_31\packages/GNU\Targets\arm\rtsv7M\lib\boot.am4fg (startup.om4fg):(.data.__DSO_Handle+0x0):`_DSO_Handle+0x0的多个定义
    C:/ti/ccsv6/tools/compiler/gcc-arm-none-eabi-4_9-2015q3/bin/../lib/gcc/arm-none-eabi/4.9.3/armv7e-m/fpu/crtbegin.o:(.data+0x0):首先在此处定义

    C:\Users\bedel1\Desktop\BlueFire\Instrument\Network\firmware\httpServer_withSD\Debug_GNU\configPkg\package\cg\empty_pm4fg.om4fg:In Function `ti_sysbios_hal_hwi_HwiProxy_getCoreStackInfo_E':
    C:\users\bedel1\Desktop\BlueFire\Instrument\Network\firmware\httpServer_withSD\Debug_GNU\configPkg/packages/cfg/empty_pm4fg.c:15827:未定义对`ti_sysbios_family_arm_m3_Hwi_getCoreStackInfo_E_E'的引用

    C:/ti/tirtos_tivac_2_16_01_14/products/tidrivers_tivac_2_16_01_13/packages/ti/drivers/lib/drivers_wifi_tivaware.am4fg (OSI_tirtos.om4fg):在函数`vSimpleLinkSpawnTask'中:
    /db/vtree/library/trees/zumaprod/zumaprod-j14/exports/tirtos_tivac_2_16_01_14/products/tidrivers_tivac_2_16_01_13/packages/ti/drivers/wifi/osi_tirtos.c:475:对`ti_sysbios_KNL_Mailbox_pend_E_E'的引用未定义

    已删除类似的邮箱错误。

    我的问题是:

    1) 1)哪些库/源文件/目标文件以及在哪里包含 TI-RTOS 邮箱功能和用于 GCC 的 getCoreStackInfo()?
    2) 2)如何最好地消除重复的符号?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我目前正在从 cmd 窗口运行一个全新构建的库:

    C:
    cd \ti_tirtos_tivac_2_16_01_14
    C:\ti\xdctools_3_32_00_06_core\gmake -f tirtos.mak gcc_build=true clean
    C:\ti\xdctools_3_32_00_06_core\gmake -f tirtos.mak gcc_build=true 驱动程序 BIOS NDK UIA

    这有望使缺少的邮箱内容重新出现。 从 tirtos.mak 的内容来看、我希望这可以为 TI 和 GNU 工具集重建库。

    "清理"步骤已完成、但构建步骤得到:

    C:\ti_tirtos_tivac_2_16_01_14>\ti\xdctools_3_32_00_06_core\gmake -f tirtos.mak C
    cs_build=false gcc_build=true 驱动程序 BIOS NDK UIA
    正在构建 tirtos 驱动程序...
    gmake[1]:进入目录`c:/ti/tirtos_tivac_2_16_01_14/products/tidrivers_t
    IVAC_2_16_01_13'
    构建驱动程序软件包...制作全部:Thu Apr4 6 09:32:21 MDT 2017 ...
    =========== 接口[./packages/ti/boards ===
    =========== 接口[./packages/ti/drivers ===
    =========== 接口[./packages/ti/drivers/ports ===
    =========== 接口[./packages/ti/mw ===
    =========== 接口[./packages/ti/mw/fatfs ===
    =========== 接口[./packages/ti/mw/wifi/cc3x00 ===
    正在制作 package.mak (由于 package.bld)...
    正在制作 package.mak (由于 package.bld)...
    正在制作 package.mak (由于 package.bld)...
    正在制作 package.mak (由于 package.bld)...
    正在制作 package.mak (由于 package.bld)...
    正在制作 package.mak (由于 package.bld)...
    JS:"C:/ti/tirtos_tivac_2_16_01_14/products/tidrivers_tivac_2_16_01_13/drivers.b
    ld"、第126行:xdc.services.global.XDCException: xdc.package_not _found:c:\ti\ti
    rtos_tivac_2_16_01_14\products\BIOS_6_45_02_31\packages/GNU\targets\arm\package。
    沿包路径找到 XDC,但未找到架构文件。 确保
    软件包'GNU.targets.arm'已完全构建。
    gmake[1]:`没有规则使目标`package.mak '成为.interfaces'所需的目标。 ST
    工作
    xdctools_3_32_00_06_core\gmake.exe:***[packages/ti/drivers/ports、.interfaces]
    错误2

    如何构建 GNU.targets.arm?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    GNU.targets.arm.M4F 似乎是目录 c:\ti\ccsv6\tools\compiler\gcc-arm-nonw-eabi-4_8-2014q3。 此路径下有名为"Makefile"的文件、但没有一个文件看起来像主 makefile。 我尝试了

    C:\ti\xdctools_3_32_00_06_core\gmake -f tirtos.mak 驱动程序 BIOS NDK UIA

    只构建库的 TI 工具集版本、而制造投诉未构建 ti.targets.arm.elf。 构建这些目标的编译脚本/ makefile 在哪里?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我想知道"清理"步骤是否清除了只能由 TI 构建的文件。 我应该从这里到哪里去? CCS 是否重新安装? 我只需手动操作即可完成当前安装、因为 CCS App Center 无法连接到 TI 服务器。 我的手动操作可能导致最初无法构建、从而启动了此线程。 您是否希望 GNU 工具集能够使用此应用程序代码编译到此目标、或者 CCS 下的 GNU 是否存在问题?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    为什么要重建所有 TI-RTOS 产品? 您能否重新安装 TI-RTOS、然后通过 Resource Explorer 导入 TCP Echo 示例(详细信息请参阅《入门指南》)。 它的构建是否正确?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    software-dl.ti.com/.../index.html
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我能够使用 PowerPoint 指令构建您提供给我的 HTTP 服务器代码、这对于我的 DK-TM4C129X 来说非常好。 httpServer_withSD 响应 Internet Explorer、我可以调用.jpg 图像、请参阅 index.htm、CGI 时间函数工作正常。 我昨天晚上开始了,今天早上我到的时候,它仍然在工作。

    现在、我尝试使代码在 GNU 下编译。 我能够替代一些包含目录和链接器设置问题、但我最终遇到了不可链接的代码、上面列出了重复和缺失的符号。 我的假设是 GNU 工具集可能不是完全针对 TI-RTOS 构建的。 重建似乎会有所帮助。

    我将安装 TI_RTOS 并查看使用 GNU 编译的 TCP Echo 示例。 如果它可以正常工作、我想我仍然会遇到 HTTP 服务器的链接问题。

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

    我重新安装 TI-RTOS。  在我修改 ffconf.h 并根据 PowerPoint 重新编译之后、使用 TI 工具集 httpServer_withSD 可以在 Internet Explorer 下正常工作。  TCPEcho_... 对 tcpSendReceive 正确响应。

    使用 Hacked 版本的 tcpEcho.cfg 在 GNU 下构建 httpServer_withSD 时、我只会遇到以下错误:

    /db/vtree/library/trees/zumaprod/zumaprod-j14/exports/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/gnu/targets/arm/rtsv7M/startup.c:91:`的多重定义

    C:/ti/ccsv6/tools/compiler/gcc-arm-none-eabi-4_9-2015q3/bin/../lib/gcc/arm-none-eabi/4.9.3/armv7e-m/fpu/crti.o:(.fini+0x0):首先在此处定义

    C:\ti_tirtos_tivac_2_16_01_14\products\BIOS_6_45_02_31\packages/GNU\Targets\arm\rtsv7M\lib\boot.am4fg (startup.om4fg):(.data.__DSO_Handle+0x0):`_DSO_Handle+0x0的多个定义

    C:/ti/ccsv6/tools/compiler/gcc-arm-none-eabi-4_9-2015q3/bin/../lib/gcc/arm-none-eabi/4.9.3/armv7e-m/fpu/crtbegin.o:(.data+0x0):首先在此处定义

    C:\Users\bedel1\Desktop\BlueFire\Instrument\Network\firmware\httpServer_withSD\Debug_GNU\configPkg\package\cg\empty_pm4fg.om4fg:In Function `ti_sysbios_hal_hwi_HwiProxy_getCoreStackInfo_E':

    C:\users\bedel1\Desktop\BlueFire\Instrument\Network\firmware\httpServer_withSD\Debug_GNU\configPkg/packages/cfg/empty_pm4fg.c:16008:未定义对`ti_sysbios_family_arm_m3_Hwi_getCoreStackInfo_E_'的引用

    这些错误始终是由 GNU 编译导致的。  如果我可以解决这些问题、我可以继续。  如何修复它们?

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

    根据 http://software-dl.ti.com/dsps/dsps_public_sw/sdo_sb/targetcontent/sysbios/6_42_03_35/exports/bios_6_42_03_35/docs/cdoc/ti/sysbios/family/arm/m3/Hwi.html,getCoreStackInfo()是要检查多核处理器上的栈溢出。  如果我提供了一个从不返回溢出指示的假、则链路错误消失。  我可能暂时不进行堆栈检查。  不过、最好最终修复。

    这只留下重复的标签。  我不知道如何从链接中删除重复的目标文件或库、甚至不知道应该删除哪些目标文件或库。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您是否从 GCC (GNU)版的 TCP Echo 开始、或尝试将 TI 编译器示例更改为 GCC? 我强烈推荐前者。 您在.cfg 中遇到了什么?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我从 GNU 版本的 tcpEcho 开始。 以下是差异:

    [bedel1@BREDEL1-L2 httpServer_withSD]# diff ./tcpEcho_DK_TM4C129X_GNU_TivaTM4C129XNCZAD/tcpEcho.cfg empty.cfg
    545a546,548
    > var FatFS = xdc.useModule('ti.mw.fatfs.FatFS');
    >var Timestamp = xdc.useModule('xdc.runtime.Timestamp');
    >var Mailbox = xdc.useModule('ti.sysbios.knl.Mailbox');
    549c552
    < Global.networkOpenHook ="&netOpenHook";
    --
    >/Global.networkOpenHook ="&netOpenHook";
    561c564
    < tcp.receiveBufSize = 1024;
    \文件末尾没有换行符
    --
    >tcp.receiveBufSize = 1024;
    [bedel1@BREDEL1-L2 httpServer_withSD]#
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    如果您可以指示应删除哪些复制、我将很乐意对.o 源或库执行临时手术、等待开发人员的注意。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我认为 TI 可能更愿意保留自己的代码、而不是 GNU 提供的代码、因此我假设 GNU 符号应该被排除。 下面生成的图像可从 Internet Explorer 中正常工作:

    CD /cygdrive/c/ti/ccsv6/tools/compiler/gcc-arm-none-eabi-4_9-2015q3/lib/gcc/arm-none-eabi/4.9.3/armv7e-m/fpu
    cp crtbegin.o crtbegin.o.origin
    cp crti.o crti.o. origin
    /cygdrive/c/ti/ccsv6/tools/compiler/gcc-arm-none-eabi-4_9-2015q3/bin/arm-none-eabi-objcopy crti.o --redefine-sym _fini=_fini_renaled
    /cygdrive/c/ti/ccsv6/tools/compiler/gcc-arm-none-eabi-4_9-2015q3/bin/arm-none-eabi-objcopy crtbegin.o --redefine-sym __DSO_handle=__DSO_handle_renaled.

    但图像长度为236K。 还需要做更多的工作。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    哎呀。 它不能与 IE 一起使用、但它确实获得了一个 DHCP 地址。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    我完成了 PPT 中的步骤、但从 GNU empty 项目开始。 我遇到了符号问题。 有几个未解析的 EFS_*函数。 解决方法是

    1.在库中添加:os.am4fg

    2.将 C:\ti_tirtos_tivac_2_16_01_14\products\NDK_2_25_00_09\packages/ti\NDK\OS\lib\添加到库路径中。

    问题是生成的 linker.cmd 文件中的库的顺序。

    我不确定你采取了什么方法来解决_DSO_Handle 问题。 除了使用 GNU empty 而不是 TI 编译器 empty 项目之外、您能否尝试完全遵循 PPT。 然后在幻灯片21之前、添加上述解决方法。

    Todd

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    编译正在 IE 上进行链接并运行、但它拒绝在 efs_stdio.c 中进行链接、因此所有文件访问都失败、尝试通过半主机:

    Cortex_M4_0:GEL 输出:
    内存映射初始化完成
    Cortex_M4_0:半主机:文件 IO 错误:fopen():0:index.html:没有这样的文件或目录

    如何强制链接器包含 efs_stdio.c 并忽略 EFS 库代码? 我更改了上面的链接器、但这没有帮助。 我在获取 EFS 库代码时没有问题。 我不想这样做。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    按照您的要求、我完成了 PPT 中的步骤、以了解我现在所处的位置。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    从 AddWebFiles()中正确调用 efs_stdio.c 中的 efs_CreateFile()。 efs_stdio.c 在.map 文件中可见。 没有为 efs_stdio.c 中的任何其他函数生成代码 这似乎使 ti.mw.fatfs.am4fg 中的所有 FatFS 例程都无法访问。 在.map 文件中、FatFS 例程和 efs_stdio.c FatFS 接口例程列在"丢弃的输入段"下。 什么使半主机优先于 FatFS? 如果解决了此问题、则可以链接并运行。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我希望能够从调试器或独立运行 GNU 映像、可能需要使用 UART、就像使用 TI 工具一样。 我能否清除我的构建中的半主机并获得该行为?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    在实验关闭 empty.cfg 中的 SemiHostSupport 并将 rdimon 替换为 nosys 之后,将这两个项目都恢复到原来的状态,efs_fopen()现在调用 linaro fopen(),该操作失败,并在 IE 中产生404。 我希望呼叫 FatFS、但它没有。 映射显示了丢弃的输入段中的 fatfs。 为什么?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我在两个版本之间做了"清理"、以防万一。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    CCS 似乎提供了一个文件 I/O 抽象库,如 c:\ti\ccsv6\tools\compiler\ti-cgt-arm-*.*/lib/src/file.h.中所述 自动生成的 Debug/configPkg/package/cfg/*_pm4fg.c 中启用了包含 FatFS、其中 #define _ti__可能是 TI 工具指示符。 这样可防止 GCC 在抽象层中注册 FatFS 访问例程、将其从链接器映射中排除。 根据合理的假设、 #ifdef 表示 GCC 的库中没有抽象支持、GCC 代码对 FatFS 的任何访问都必须是直接的、没有抽象层。 这解释了为什么尝试使用抽象层的 GCC 代码看不到 microSD 文件。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    这是真的吗? 如果是、我是否可以看到 GCC 不支持的其他 TI-RTOS 功能?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    TI-RTOS 在 GCC 下是否受支持?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我在这里找到了答案: e2e.ti.com/.../427531。 我们可以解决该问题。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    这是一个旧线程。 我们在 TM4C 上支持 GCC。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    这是一个很好的消息、但我仍然有一个问题、即在构建生成的调试/configPkg/package/cfg/*_pm4fg.c 中的#ifdef __ti__在使用 GCC 构建时会静默禁用对 FatFS 的调用。  如何解决此问题?  这个问题在这个主题中有更深入的解释。  谢谢。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我刚意识到这个主题被标记为"已回答"、所以我拒绝了答案、这样合适的人就可以看到答案。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    这里有一些鱼。 您可以附加您的构建项目吗?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    我无法使编译发生、因为当目标更改为 GNU 时、Properties->Generic->RTSC Target 和/或 Platform 仍适用于 TI 工具。  我在进行 GNU 编译时知道如何解决这个问题、但我现在还不记得正确的目标。  我们要么等待我找到它、要么您已经知道它。   我目前正在尝试了解如何在 e2e 中附加文件。  我看不到任何"上传"按钮或类似按钮。  我将在了解如何操作时立即发送它。

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

    随附 e2e.ti.com/.../httpServer_5F00_withSD.zipThe 未编译工程。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我只是尝试制作一个全新的 GNU 项目、它甚至没有 RTSC 页面、因此没有关于正确目标名称的提示。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    在尝试重新创建原始的" GNU 下缺少 FatFS "问题时、我会得到所有类型的未定义和重复引用。 我不能花时间猜测我成为 CCS 内部专家的方式。 对我来说、唯一可行的解决方案是让 TI 提供一个 HTTP 服务器的工作示例、该服务器具有 microSD FatFS 和 TI-RTOS、该服务器是使用 GCC 构建的、在 TM4C129X 上运行。 如果无法做到这一点、那就没问题、我将使用 TI 工具、因为至少我可以使用这些工具构建工作映像。 欢迎您使用我发送给您的来源来执行此操作、但我自己无法执行此操作。 谢谢。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您的项目不正确。 您似乎没有从 GCC 空项目开始。 它有几个问题。 您能从 GCC 空示例开始、然后继续 PPT 说明吗? 需要注意的一点是:os.am4fg 库必须手动添加(如前所述)。 如果遇到问题、请不要开始进行更改。 只需发布问题。 我最终很难理解当您进行更改以使其通过问题时发生的情况。 您可以简单地屏蔽后一个弹出的问题。

    我有使用 GCC 构建的示例、但需要找到 SD BoosterPack 才能首先对其进行测试。

    Todd
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    很抱歉给您带来了问题、但今天我尝试将我的工作 TI 工具内部版本切换回 GCC、以便为您生成失败的内部版本。 前面、我按照您的建议使用 PPT 方法解决了 FatFS 问题、我自己决定 TI-RTOS (FatFS)唯一受支持的选项在 TI 工具下、沿着该路径继续。

    出于各种原因、我非常愿意使用 GNU 工具。 例如,我有一个性能关键的60M 位/秒内部循环位打包任务,我使用 G++及其功能非常强大的 asm ()设备进行编码,以获得非常接近手工编码汇编的内容,而无需付出任何努力。 我当前的计划是采用生成的汇编代码、并对其进行实际编辑/重新组装、使其在 TI 工具集下工作。 当然、直接使用 GCC 更可取。 我预计类似的情况也会在晚些时候出现。

    TM4C129X 开发板上有 microSD 插座、因此我不确定为什么需要 Booster Pack。 我们谈论的是同一个电路板吗? 构建的示例是否实际从 FatFS 链接 f_open()、f_read()等? 我非常确信、这正是我的构建无法访问 microSD 的原因。

    非常感谢您的帮助。

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

    我有 LaunchPad。 我找到了 SD BoosterPack。 您需要使用原始 FatFS API (例如 f_open 而不是 fopen)。 借助 TI 编译器、我们可以将必要的函数粘贴到 RTS 调用下(例如 fopen 最终调用 f_open)。 GCC RTS 不同。 您必须为 fopen 提供替代机具(80%肯定...) 我们还没有这样做。 它在列表上、但没有时间范围。 解决方法是使用原始 FatFS API。

    如果您需要、我可以调整示例中的 efs_stdio.c 文件、但我可以最快访问该文件的时间是下周。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    很棒! 确认未实施的 FatFS 就足以让我继续。 我更担心的是、还有更多不在 GCC 下工作的器件、我将假定情况并非如此。 您不需要对 efs_stdio.c 执行任何操作 我将使用 PPT 指令开始复制编译、并更改 efs_stdio.c。 但是、如果您有时间、是否可以在构建后将编译工程压缩在一起、以使其变得很小、然后将其附加到该线程中? 这会加快我的结尾 如果已知有任何其他不能在 GCC 下工作的信息、请告知我。 非常感谢。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    这是项目。 需要修改 efs_stdio.h 以使用 RAW FatFS API。 它也没有任何长的文件名更改(如 PPT 中所述)。 我使用了 CCS 7.1。

    e2e.ti.com/.../HttpGNU.zip

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我安装了 CCS 7.1、将项目导入到 DK_TM4C129X GNU 项目中、修改了 efs_stdio.c 以使用 FatFS、并修改为使用长文件名、如 PPT 中所述。 应用程序对 IE 做出响应,但 f_open()从 f_path()返回 FR_INVALID_NAME。 我开始调试文件名"0:index.html"的 f_open()拒绝。 请提出任何建议。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您是否已尝试使用 FatSD Raw 示例验证 SD 卡等是否正常工作?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我已经切换到了 TI 工具集、因为不管怎样、它的性能会更好。