1 对于一个你不太了解的芯片,如果其寄存器较多, 又由于哪里设置不正确, 这类问题如何查找? 对于挂在其他总线上的设备有类似于i2cdev的程序来配置寄存器么?如果同时需要配置多个寄存器, 这就属于组合问题, 测试的次数会几何级别的增长, 如何解决这类问题?
2.物理地址如何确定? 挂在某种总线上的物理地址是总线地址, 还是要将总线地址转换成从系统总线这边看到的地址? 如果是总线地址, 这cpu是怎样经过总线与设备进行交互的? 即插即用设备的物理地址如何确定?
3,平台设备platform中断号是怎么确定的? 完全有硬件决定的? 对于那些即插即用设备其使用的资源(如物理地址,中断号,端口号等等)是由什么来决定的?
4.在uboot和Linux中如何为不同的设备分配地址空间?在哪些相关文件里?
5. 一个设备驱动, 即要写一些关于其所挂在上面总线的驱动,又要为其自身写设备启动, 那么总线控制器的驱动也属要写么? 如何通过总线控制器来控制设备(有点雷同于第2个问题)?probe函数是如何实现的? linux内核采用2个链表管理总线驱动和设备驱动么?(用于记录已经向系统注册了多少个总线驱动和设备驱动)?
6. I2C的时钟是多少是怎么确定的?
7,对于挂在pCI设备上的I2C设备的驱动怎么写?
8. 编译内核时的工具链的版本如何确定? 编译内核时候与在其上运行的虚拟机内核版本无关么?
9,对那些设备上寄存器读写没有反应时, 应该怎么调试? 如写I2C设备写不了,也读不了。或者读不出gpio引脚值, 用示波器能准确测量SCL或SDA波形么?如果不能, 该用什么仪器测量呢?
10。硬件时序是怎么实现的?
11 宏定义不算位置有关码么?
12 大小端在什么情况下使用?
13 内核符号表怎么生成? 怎么使用?
14 nsleep实际上达不到ns级别,那么如何达到NS级别?usleep
15 i2c_driver结构中id成员如何确定?
16在linux启动时候, 如何获取cpu类型? |