企业网站申请流程,做网站架构需要什么工具,小轲网站建设,做返利网站能赚钱一.问题平台android8.0 kernel4.9.44#xff0c;想加个i2c驱动#xff0c;打开log都是一件脑瓜疼的事。二.log总结android有三种log。1.kernel下面的#xff0c;就是driver层log。2.kernel上面的#xff0c;init和init.rc启动的程序的log#xff0c;应用层3.kernel上面的想加个i2c驱动打开log都是一件脑瓜疼的事。二.log总结android有三种log。1.kernel下面的就是driver层log。2.kernel上面的init和init.rc启动的程序的log应用层3.kernel上面的android的log就是logcat打印的。三.log打开方式1.kernel下面的就是driver层log。1.1打印log使用printkprintk有如下方式printk(default其实等于KERN_WARNING4);//不加KERN_ERR KERN_DEBUG这些其实等于KERN_WARNINGprintk(KERN_EMERG KERN_EMERG0);printk(KERN_ALERT KERN_ALERT1);printk(KERN_CRIT KERN_CRIT2);printk(KERN_ERR KERN_ERR3);printk(KERN_WARNING KERN_WARNING4);printk(KERN_NOTICE KERN_NOTICE5);printk(KERN_INFO KERN_INFO6);printk(KERN_DEBUG KERN_DEBUG7);1.2系统启动后打印log可以用1.2.1 dmesg 可以打印所有log1.2.2 cat /proc/kmsg 可以打印所有log再次敲命令cat /proc/kmsg只会打印接下来的log就是说log打印完后会被清除掉1.2.3 不想敲命令想在串口看见log要设置串口log级别。查看KERN_ERR3及以下的logdmesg -n 4或者echo 4 /proc/sys/kernel/printk查看KERN_WARNING4及以下的logdmesg -n 5或者echo 5 /proc/sys/kernel/printk查看KERN_DEBUG7及以下的logdmesg -n 8或者echo 8 /proc/sys/kernel/printk2.kernel上面的init和init.rc启动的程序的log应用层2.1 init程序启动后会重定向文件串口是看不见log的。要调试如果程序可以在串口执行试试串口执行或者在init.rc里修改启动方式service logwrapper /system/bin/logwrapper /system/bin/hello用android工具logwrapper 执行服务3.kernel上面的android的log就是logcat打印的。不再赘述。四、调试kernel杂项1.编译烧录kernelmake bootimage -j44然后烧录boot.imgkernel在boot.img分区里面2. 驱动里module_init函数 log不打印 read函数和write函数有logdmesg缓冲区是有大小限制的log太多前面的log已经被清除了。开机后快速dmesg可以得到log的3.编译报错Unknown symbol __class_create (err 0)Unknown symbol device_create (err 0)解决增加声明 MODULE_LICENSE(“GPL”);4. i2c 地址0x18 要左移一位 0x181 0x30是读地址0x31就是写地址dts里面写0x18