跳转至

移植 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 文件里没有这个段,所以就会出现这些告警。

解决方法

  1. 置之不理。这写函数没有被链接到指定的段,功能上不影响,执行性能上可能有所降低,因为按这个宏的本意,这些函数应该是被放在 RAM 中执行~
  2. 在 LD 文件中,增加这个段的描述。

【正文结束】