嵌入式技术william hill官网
直播中

最强海贼王

8年用户 1344经验值
擅长:MEMS/传感技术
私信 关注
[问答]

4.1.0版本内核问题软件包和有些驱动编译报错是何原因

更新了4.1.0版本的内核,但是发现有好多之前用的软件包,编译后报错,可能是缺少某些头文件造成的,还有RTC驱动,4.0.5版本和4.1.0版本的内核,在RTT-setiing内使能后,编译也会报错,4.0.3版本的就可以,希望哪位大神看一下呗

回帖(5)

杨秀英

2022-11-9 14:11:34
你是创建工程时选择的低版本的内核,然后编写应用之后用把这个工程的内核版本手动修改成 4.1.0 的了?这样的话修改内核版本后编译有错是正常的,因为不同版本的内核代码不太一样。这种情况你需要把报错的信息贴上来,解决一下报错的原因。

可以创建工程的时候就选择4.1.0,然后再编写应用代码。
举报

最强海贼王

2022-11-9 14:11:44
我就是创建的时候直接选择的4.1.0版本的内核
举报

杨秀英

2022-11-9 14:11:53
嗯嗯,RTC的驱动代码是有一点问题,编译会报错,之前使用时也是有错误,不过简单修改一下就可以正常使用了
举报

杨秀英

2022-11-9 14:12:08
我也测试过 4.0.3内核的 RTC 是没问题的,4.0.4有问题。后来我自己修改了一下就可以正常使用了,如果你的代码报的错误和我的一样,可以参照我的修改方法进行修改

错误提示1:提示不能识别 time_t,错误提示如下所示:

../drivers/drv_rtc.c:38:8: error: unknown type name 'time_t'
../drivers/drv_rtc.c:42:15: error: storage size of 'tm_new' isn't known
解决办法:在 drivers/drv_rtc.c 里面增加头文件 #include

错误提示2:提示 rt_hw_rtc_register 重复定义,提示如下:

../drivers/drv_rtc.c:211:17: error: conflicting types for 'rt_hw_rtc_register'
static rt_err_t rt_hw_rtc_register(rt_device_t device, const char *name, rt_uint32_t flag)
                 ^
In file included from F:rttatk-f429rt-threadcomponentsdriversinclude/rtdevice.h:33:0,
                 from ../drivers/drv_rtc.c:13:
F:rttatk-f429rt-threadcomponentsdriversinclude/drivers/rtc.h:42:10: note: previous declaration of 'rt_hw_rtc_register' was here
rt_err_t rt_hw_rtc_register(rt_rtc_dev_t  *rtc,
          ^
解决办法:将 components/drivers/include/drivers/rtc.h 中 rt_hw_rtc_register 的注释掉即可,
注释后的代码如下图所示
1.jpg
按照上面的方法就能解决 RTC 驱动报错的问题,解决之后经测试使用没有问题。
举报

张红

2022-11-9 14:12:17
找了好久的问题,就是这儿要注释掉,4.1.0版本,为什么driversdrv_rtc.c里面有注册函数rt_hw_rtc_register,而rt-threadcomponentsdriversrtcrtc.c里面又来一个rt_hw_rtc_register,两个函数的入参还不一样,这个应该修复才对。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分