除了printk,内核里面有很多pr_info、pr_err等打印函数,要学会控制打印等级,以及针对不同的场景使用不同的打印函数。2、新手不要直接改defconfig
内核有默认配置文件xxx_defconfig,如果你要修改内核的一些配置,作为新手不要直接去修改xxx_defconfig。
稳妥的做法是执行make menucofig通常菜单进行配置,最后把.config文件覆盖掉xxx_defconfig,然后再上传这个xxx_defconfig。
3、不要直接映射每一个物理地址Linux下操作寄存器一定要先映射,但是通常只映射基地址,通过基址加偏移的方式操作。
不要直接去映射每一个寄存器的物理地址,因为对于某一个驱动,虽然有很多寄存器,但基址都是一样的。
4、不要不学uboot即便你是Linux驱动岗,uboot怎么启动kernel,都传了什么参数,涉及到的地址有哪些,uboot的驱动怎么写这些必须知道。
5、不懂内存,不足以谈驱动一定要多看看内存相关的知识。Linux下操作的都是虚拟地址,写进寄存器的是物理地址,怎么知道虚拟地址对应的物理地址?分配dma一致性内存和分配普通内存有什么区别?
寄存器手册写的地址是物理地址,给我记住了。
dma内存问题,缓存一致性问题等,这些你都逃不掉。