系统版本:Ubuntu18.04-64
编译器版本:gcc version 7.4.0 (Ubuntu/Linaro 7.4.0-1ubuntu1~18.04.1)
uboot版本:2018.07 -linux4sam_6.0
板子型号:at91sama5d3x-xplained
MCU型号:sama5d36
RTC型号:RX8025T
[Datasheet] RX8025T时钟芯片解读
Linux内核中驱动的方式有很多种实现方式,rtx8025是基于iic总线通讯,会使用内核的总线驱动框架,在次基础上实现驱动功能。
驱动开发在调试阶段很难避免要修修改改,如果源码编译到内核里面,每次修改就需要重新编译内核、烧录内核,然后启动文件系统后,再用应用程序去验证驱动的正确性,效率实在是低下;所以很多聪明的大神就想出一招使用模块的方式,动态把驱动程序加载到内核中,可以动态加载和卸载,对应项目实战开发非常高效,也是工作中必备的技能。
一、内核源码中先屏蔽Rtc8025驱动程序
内核中源码必须把rtx8025驱动不能编译进内核,否则驱动注册进去后,就无法再次加载一个名字相同的驱动文件了。
linux-at91-linux-4.19-at91\drivers\rtc\Makefile文件修改,屏蔽掉编译选项;
linux-at91-linux-4.19-at91\drivers\rtc\rtc-rx8025.c就不会编译进内核;
二、把驱动文件复制出来
驱动文件复制一份,做相应的修改
设备树文件添加rtc8025驱动,iic的管脚定义等;
i2c2: i2c@f801c000 {
//根据硬件选择寄存器号,i2c2
dmas = <0>, <0>; /* Do not use DMA for i2c2 */
pinctrl-0 =