在移植rdk4.0时遇到了spi寄存器无法读取的调试过程
在内核中打印发现,按内核启动顺序打印,在spi最开始时可以访问寄存器,而在后来马上又无法访问寄存器,不知是在哪个地方做了什么动作使得无法访问,内存打印如下:
在调试过程中,在内核代码:./init/main.c文件中发现内核启动程序,kernel_init,在其中的do_basic_setup函数主要做的是驱动等设备初始化工作,
其中driver_init是驱动初始化之前的动作,之前有段时间认为这个函数是驱动初始化工作,浪费了大量时间。
在do_initcalls函数才是驱动函数运行函数,
其中,fn对应的值为函数在内存中的位置,可通过system.map来查找运行的哪个函数,最后定位是哪个函数出了问题
有了上面的知识,后面就好做了,最终锁定是./arch/arm/mach-davinci/clock.c文件中的一个clk_disable_unused函数引起的,该问题也得到了大方面的前进