应用程序要从ARM移植到ARM64,ARM64沿用ARM的设备树dtb文件,在使用ARM64内核启动过程中遇到RTC无法正常工作错误,于是在内核里添加了调试信息,具体是在函数 i2c_register_driver添加了 printk(KERN_INFO "debug driver [%s] registered\n", driver->driver.name);
重新编译了下内核,发现并没有设备树RTC节点对应的driver 被 registered,于是在内核目录看了下RTC节点对应的.c文件,发现没被编译进去,没有配置CONFIG_RTC_DRV_RV8803,即内核没有配置好。 drivers/rtc/Makefile:
obj-$(CONFIG_RTC_DRV_RV8803) += rtc-rv8803.o
而我看了ARM的配置文件,因为ARM64的配置是按照ARM配置项进行配置的,然而ARM也没配置CONFIG_RTC_DRV_RV8803,但ARM启动RTC却是正常的,挺奇怪的。
最后选中了配置项CONFIG_RTC_DRV_RV8803,ARM64再次沿用ARM的设备树文件来启动,RTC正常了。