移植 ZephyrRTOS 到 G32R501 补遗¶
上一篇文章《移植 ZephyrRTOS 到 G32R501》介绍了总体的移植过程。在移植的过程中,会出现一些小问题,这里记录一下处理办法。
同上一篇文章一样,本文首发在 21IC BBS 论坛,这里是个备份,也做了些调整。
移植中出现的问题/告警的处理¶
unknown vendor prefix 'geehy'¶
west 工具在处理 dts 想内容时,会出现类似下图的告警信息,提示 geehy 这个厂商/供应商是未知的。

这个告警出现的原因移植目录 dts\bindings 下的 .yaml 中,compatible 节点下前缀 geehy 没有“登记注册”。
解决方法:移植目录 dts\bindings 下创建 vendor-prefixes.txt 文件,内容:
# Device tree binding vendor prefix registry. Keep this list in
# alphabetical order.
#
# This isn't an exhaustive list, but you should add new prefixes to it
# before using them to avoid name-space collisions.
#
# The contents of this file are parsed during documentation generation.
# Anything that starts with a '#' is treated as a comment and ignored.
# Non-empty lines should be in this format:
#
# <vendor-prefix><TAB><Full name of vendor>
# zephyr-keep-sorted-start
geehy Geehy Semiconductor Co., Ltd.
有效的内容是最后一行,也就是登记 geehy 这个前缀~最后一行之前的内容,引用自 zephyr 源码目录对应文件。
再次编译,之前的告警信息就不会再出现了。
No SOURCES given to Zephyr library¶
配置阶段出现如下图的这一类提示:

出现这个提示的原因是 zephyr 源码中对应的文件夹没有任何源码被编译。这个是正常的,因为我们这个移植中,驱动代码都是在移植目录,而不是 zephyr 源码目录。这个提示不影响代码的编译和功能。
暂时没有办法消除这个提示。
orphan section 'itcm.ramfunc'¶
链接阶段出现 orphan section 'itcm.ramfunc' 的告警信息,如下图所示:

出现这个告警的原因是 G32R501 的 SDK 源码中,有一部分函数在声明是使用 SECTION_ITCM_RAMFUNC 进行修饰,这个宏展开后是这样:
#define SECTION_ITCM_RAMFUNC __attribute__((section("itcm.ramfunc")))
也就是这些被修饰的函数,是被要求链接到 itcm.ramfunc 这个段。但是我们的 LD 文件里没有这个段,所以就会出现这些告警。
解决方法:
- 置之不理。这写函数没有被链接到指定的段,功能上不影响,执行性能上可能有所降低,因为按这个宏的本意,这些函数应该是被放在 RAM 中执行~
- 在 LD 文件中,增加这个段的描述。
【正文结束】