Zephyr外置CC1101驱动未被west识别的排查问询
Zephyr外置CC1101驱动加载问题排查
问题描述
为TI CC1101亚GHz收发器开发Zephyr外置驱动,项目包含app、drivers、dts等目录。虚拟Python环境编译时,west仅识别应用程序,无法加载驱动,编译报错cc1101_get_reg未定义引用。即使在prj.conf中显式设置CONFIG_CC1101=y,仍提示符号未定义,而CC1101的Kconfig已定义在drivers/cc1101/Kconfig中。项目路径为~/Documents/devel/Zephyr/cc1101,Zephyr基础路径ZEPHYR_BASE=/home/h/Documents/devel/Zephyr/zephyrproject/zephyr。
一、检查驱动Kconfig是否被正确加载
- 通过menuconfig验证:
执行west build -t menuconfig进入配置界面,按/键输入CC1101搜索配置项。若能找到对应选项,说明Kconfig已被加载;若找不到,说明Kconfig未被识别。 - 查看生成的配置文件:
编译后查看build/zephyr/.config文件,执行grep CONFIG_CC1101 build/zephyr/.config。若输出CONFIG_CC1101=y,说明配置已生效;无输出则表示Kconfig未被加载。 - 检查Kconfig引用链:
项目根目录需创建Kconfig文件,添加source "drivers/cc1101/Kconfig",确保Zephyr能扫描到该驱动的Kconfig配置。同时需在项目顶层CMake或应用CMake中配置加载该Kconfig的逻辑。
二、排查路径与配置缺失问题
- 驱动CMakeLists.txt配置:
drivers/cc1101目录下必须包含CMakeLists.txt,内容需符合Zephyr驱动编译规范:
项目根目录的zephyr_library() zephyr_library_sources(cc1101.c)CMakeLists.txt需添加驱动目录的引用:add_subdirectory(drivers/cc1101) - 指定外置驱动模块路径:
若为单项目结构,需在应用目录的CMakeLists.txt中添加:
让Zephyr识别到外置驱动模块的路径。set(ZEPHYR_EXTRA_MODULES ${CMAKE_CURRENT_SOURCE_DIR}/../drivers) - 检查符号导出:
确保cc1101_get_reg函数在驱动源码中通过__EXPORT宏导出,例如:
避免编译时符号未被链接到应用程序中。__EXPORT int cc1101_get_reg(uint8_t reg, uint8_t *val);
内容的提问来源于stack exchange,提问作者HappyCactus
相关产品推荐
相关产品推荐

