移植 zephyr 到 G32R501 的补遗
本帖最后由 wangqy_ic 于 2025-7-19 12:15 编辑#申请原创# #技术资源# @21小跑堂
之前的两篇文章,介绍了移植 zephyr 到 G32R501 的方法:
[*] 来了来了 G32R501 可以用上 Zephyr 了:https://bbs.21ic.com/icview-3467596-1-1.html
[*] 来了来了 G32R501 可以用上 Zephyr 了 之二:https://bbs.21ic.com/icview-3470904-1-1.html
LED 正常闪烁,串口也能正确打印日志,移植算是成功了~
但构建中出现了一些“小瑕疵”,作为精益求精的工程师,需要找到原因解决他们,也就有了这篇《补遗》。
移植中出现的问题/告警的处理
1. 告警: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 源码目录对应文件。
再次编译,之前的告警信息就不会再出现了。
2. 提示:No SOURCES given to Zephyr library
配置阶段出现如下图的这一类提示:
出现这个提示的原因是 zephyr 源码中对应的文件夹没有任何源码被编译。
这个是正常的,因为我们这个移植中,驱动代码都是在移植目录,而不是 zephyr 源码目录。这个提示不影响代码的编译和功能。
暂时没有办法消除这个提示 {:sad:}
3. 告警: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 文件中,增加这个段的描述。
暂时发现的问题及处理方法就是上面的内容了,以后还发现问题的话,我会更新到这个帖子。
如果有疑问也可以在这个帖子下留言,我能解答的一定知无不言~
楼主这是生怕我们编译不成功呀!
谢谢楼主分享了!
我觉得Zephyr的高度与门槛还是把我挡在门外了 黄昏收获 发表于 2025-7-21 15:22
楼主这是生怕我们编译不成功呀!
谢谢楼主分享了!
我觉得Zephyr的高度与门槛还是把我挡在门外了 ...
如果只是编译的话,其实还好。那个 bat 文件脚本应该就没问题。
麻烦的还是源码的拉取和环境的搭建。 好帖共赏~期待大佬新的系列帖
非常详细,感谢分享!对于未知厂商前缀的处理方法很有帮助。
页:
[1]