本文讲述在系统启动后,出现某个service一直启动失败,init: process 'xxxservice' killing any children in process group
log持续输出的问题。
Linux Kernel裁剪--ksize的使用
在Linux Kernel裁剪–menuconfig的使用文章中我们讲了使用menuconfig来做Kernel的裁剪。
在yocto项目中提供了一个ksize.py
的脚本,可以输出当前编译中所有模块的大小,通过这些大小信息,我们可以决定裁剪哪个模块。
使用wifi连接adb
背景:
客户有个TBox需要与我们的车机相连,通过USB将TBox的画面投到车机,车机枚举TBox为cdc ncm
的网卡设备。为了测试网络带宽,需要在车机和TBox上安装iperf
工具。然后分别做server
和client
启动iperf
。但是只有一个USB口没法同时做adb和cdc ncm
网卡设备,所以想到使用wifi连接adb。下文以一台vivo的Android手机进行测试,步骤如下:
Linux驱动中配置支持特定USB HUB
本文主要讲述在Linux中配置打开或关闭USB HUB功能。
配置USB Host和USB Device full-speed工作
在开发嵌入式产品的时候,有时因为干扰而遇到严重的USB兼容性问题时,我们需要将USB速度从high-speed降到full-speed,在保证数据的可靠性的前提下进行测试。
本文以i.MX6为例,讲述怎么配置使其USB Host Controller和USB Device Controller工作在full-speed。
Linux Cached high memory usage
本文主要解释cached
占用内存高的原因,以及如何释放cached
的内存占用。
Linux Kernel优化--优化dts
将dts中没必要的设备删掉以及defconfig中没必要的配置删掉,可以加快kernel的启动时间。
本文主要讲述如何通过dt_to_config
工具,将dts中的设备与.config中的配置匹配起来,通过它们之间的匹配关系,来决定优化哪些设备和模块。
Ubuntu下无法删除文件
问题:
在repo sync
更新代码的时候,发现更新错了,ctrl+c
强制退出,后面要将整个工程目录XXX/
删掉,报了如下的错误:
1 | rm: 无法删除 "/work2/XXX/.repo/projects/vendor/imx/genivi.git/refs/tags/xxx_v1/master/usb_test" : 输入/输出错误 |
dmesg
查看到内核有如下提示:
1 | EXT4-fs error (device sdb1): ext4_lookup:1584: inode #23997360: comm rm: deleted inode referenced: 23998390 |
看着情况,有可能是文件系统出问题了,本文主要讲述如何解决这个问题。
Linux Kernel优化--关闭串口打印
使用如下patch,关闭串口打印,可以至少节省几百ms的时间。
1 | diff --git a/arch/arm64/configs/xxx_defconfig b/arch/arm64/configs/xxx_defconfig |
查找Kernel中编译的文件
需求:
使用SourceInsight查看源代码。要么将整个kernel的源代码添加进去,要么是需要哪个文件就添加哪个。
有没有什么办法可以将Kernel目录中编译到的.c
文件统一生成一个文件,然后导入到SourceInsight去加载对应的.c文件。
我们注意到,编译kernel,如果编译了.c
文件,那么在与之对应的目录下生成.o
或.mod.o
文件。因此,可以递归索引查找kernel目录下所有的文件,将.o
过滤出来,与之对应的.c文件就是我们要查找的文件,因此有了下面的python代码。