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.

[参考译文] RTOS/PROCESSOR-SDK-AM335X:构建问题

Guru**** 2586355 points
Other Parts Discussed in Thread: SYSBIOS

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/633118/rtos-processor-sdk-am335x-build-questions

器件型号:PROCESSOR-SDK-AM335X
Thread 中讨论的其他器件:SYSBIOS

工具/软件:TI-RTOS

(所有这些都是为了尝试在 StarterWare 库中调试"SysDeplay")

从"Project | New | Sys/BIOS Typical"项目开始...

BeagleBone Black、GNU 编译器6.3.1、XDC 3.32.1.22、仅选中了"Sys/BIOS 6.46.5.55"。  它会构建。

从"StarterWare 2.0.1.1"添加 GPIO 功能、如下所示:

void taskFxn (UArg a0、UArg A1)
{
DMTimer7ModuleClkConfig();
SysDelayTimerSetup();//设置 TMR7,并将 ISR 设置为其处理程序*/
while (1){
Sysdelay(1000);

GPIOPinWrite (SOC_GPIO_1_regs、21、1);
GPIOPinWrite (SOC_GPIO_1_regs、22、1);
GPIOPinWrite (SOC_GPIO_1_regs、23、1);
GPIOPinWrite (SOC_GPIO_1_regs、24、1);
Sysdelay(1000);

GPIOPinWrite (SOC_GPIO_1_regs、21、0);
GPIOPinWrite (SOC_GPIO_1_regs、22、0);
GPIOPinWrite (SOC_GPIO_1_regs、23、0);
GPIOPinWrite (SOC_GPIO_1_regs、24、0);


}
} 

将 StarterWare 所需的三个库添加到项目中、例如

${BIOS_libraries}
gcc
m
nosys
"c"

驱动
程序平台
系统 

当然还有编译器和链接器的必要搜索路径...  尝试构建它、并获得以下结果:

Makefile:149:针对目标'BasicGnuSleep.out'的配方失败
C:\Users\Scott\workspace_v7\BasicGnuSleep \src\SysBIOS\SysBIOS.aa8fg (GNU_ReentSupport.o):
在函数中`

`ti_SysBIOS_Correcture_RTSSupport_Module_Startup_E':[GNU_Refug_IDSection_1]1:/ti/bios_6_46_05_55/packages/ti/sysbios/rts/gnu/ReentSupport.c
:und_Ref_Ref_Isle_Ref_Ref_Ref_Isle_1:g1:g1:uneground_Ref_Ref_Ref_Isle_Ref_Ref_Ref_Ref_Ref_Isle_Ref_Isle_Isle_Ref_Isle_Ref_Isle_Ref_

在花了一整天的时间尝试找出问题后、我能找到的最好的一个 wiki 条目是确保您链接到正确的 C libs。  我是。 它们被"向导"自动包括 (以及为什么自动生成的默认项目包含两次 c lib?)  一次在引号中、一次在没有??)  

processors.wiki.ti.com/.../Processor_SDK_RTOS_FAQ

(对于这一点、为什么所有 wiki 支持文档都告诉我以这种或那种方式修改链接器命令、而 CCS 环境不允许您进行这些更改????  所有这些都是通过对话框和 XDC 隐藏的

接下来、由于我已经与此进行了一天的斗争、我创建了一个新项目、只是为了拥有一个干净的项目、我可以演示这个问题。  重复上述所有步骤。  它构建...

因此、我花了另一天的时间尝试找出差异。  比较 CFG 文件、搜索路径、链接器顺序...  每次我尝试"清理"项目时、我都会在消息框中盯着它... 它说已经完成了、但盒子就在那里大约2分钟。

我突然看到:

"${XDC_FIND:GNU/Targets/ARM/libs/install-native/ARM-none-eabi/lib/FPU:${ProjName}" 

链接器搜索路径中。  它与库无关、它只是一个搜索路径...  但它导致了链路阶段成功。

这是什么?  链接器成功与失败之间的区别是什么?  我想知道... 因此、下次我可以节省12个小时来尝试弄清为什么不会构建这些东西。

(我还会指责"新项目"步骤将其包括一次、而不是另一次、但在花了12个小时更改和重试设置后、我无法再确定它最初的作用)

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    RTOS 团队已收到通知。 他们将在这里作出回应。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    Chris、

    这里还讨论了这个问题:
    e2e.ti.com/.../450479

    当 SYSBIOS 与 GNU GCC 编译器半宿主库支持一起使用时、这就像是一个问题。

    另外、如果您使用的是 GPIO、我们建议使用 GPIO LLD 示例而不是 Starterware API、尤其是在您使用中断模式时。 Starterwaren`t 中断设置与 HWI 接口配合使用时效果良好。 LLD 驱动程序使用一个 OS 抽象层、此抽象层允许与 TI RTOS HWI 模块对接。

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

    Rahul、

    显然、Sys/BIOS 不想处理已经被公众使用的任何东西...

    例如、Sysdelay 使用计时器7并触发中断。  但在使用 Sys/BIOS 时未配置它使用的 IVT。   我尝试过它、程序只是分支到某个地方的深太空中。   

    不要尝试使用 StarterWare 入口点在程序启动时进行设置...  启动代码无法链接到_BSS_START 和_BSS_END、因为它们现在已在链接器脚本中重命名。

    如果我尝试自己使用定时器7、为了使 Sysdelay 正常工作、旧 StarterWare 中的许多其他软件包都依赖 Sysdelay、我们不知道在套件下 SYS/BIOS 会执行什么操作。  当然、旧版 StarterWare 中的这些库软件包并非全部在新版本的 PDK 中提供。

    所以... 不存在向后支持。  实际上、不支持后向、因为网页都说不支持。  吉...  谢谢。

    -CSW