Android 驱动(17)---如何在linux中添加新的kernel module
如何在linux中添加新的kernel module
该SOP针对客户如何添加一个kernel module,并把生成的.ko打包进system.img的过程。
解决方案
L版本(version>=5.0)支持编译为内核moudle(.ko文件)的config选项默认是关闭的。
因此,如在L版本上编译.ko文件,需先在项目defconfig文件中打开内核配置选项CONFIG_MODULES。
(一)准备module的C文件,如下为一个示例:
(二)把准备好的C 文件放置到alps/kernel的适当路径下,如下的路径为一个示例:
(三)修改源码所在的上一级目录中的Makefile文件,如下示例为./kernel/drivers/ 路径下的Makefile:
(四)在源码所在路径下,创建新的Makefile文件,如下为一个示例:
obj-m 目标中的-m参数表明所添加模块为动态加载模块,即.ko类型。
(五)快速编译所添加的模块
L之前版本参考命令如下:
编译完成后,会在./kernel/drivers/testmod/路径下,生成helloworld.ko文件:
如果在./kernel/drivers/testmod/路径下,没有helloworld.ko文件,可能是因为不同的工程设置,编译的.o文件位置不同,可以在alps路径下执行 find ./kernel/out -name xxx.ko。
L及之后版本:
(1)可以通过编译kernel或boot.img时生成.ko,参考命令make bootimage ,生成文件将在out 下的KERNEL_OBJ对应driver目录下。
(2)也可以采用build module的方式,方法请参考FAQ13428,不过在编译时需要加modules 参数。如:
make ARCH=arm64 -j8 O=out drivers/misc/mediatek/eccci/ modules
(六)快速打包所生成的模块
6-1 把生成的.ko文件拷贝到./out/target/product/$(PROJECT)/system/lib/modules
6-2 执行打包命令
L之前版本参考以下命令;
L版本打包system.img的命令为:
make snod 或make systemimage-nodeps.
则helloworld.ko将被打包进system.img
Android 驱动(17)---如何在linux中添加新的kernel module相关推荐
- linux 添加新的系统调用,如何在Linux中添加新的系统调用
如何在Linux中添加新的系统调用 2010-01-29 eNet&Ciweek #define __NR_mycall 191 系统调用号为191,之所以系统调用号是191,是因为Linux ...
- ubuntu添加路由_如何在Ubuntu,Linux中添加新路由?
ubuntu添加路由 I have a box with Ubuntu Linux and I want to add a new route to my box. Because I want to ...
- wordpress添加媒体_如何在WordPress中添加新帖子并利用所有功能
wordpress添加媒体 Are you trying to create a new post in WordPress? Do you want to learn about all the W ...
- 如何在OpenWrt中添加新的profile【以百度音乐盒为例】
一个profile包含了一个或者多个路由器型号,一般来说,同一个厂家的路由器定义,会放在同一个profile中. 下面就以添加百度音乐盒为例: 添加一个baidu.mk文件,路径如下图: 里面的内容如 ...
- 怎么给当前计算机添加一个用户,如何在win7中添加新账户 2种创建win7新用户方法总结...
对于很多家庭电脑或者共用电脑用户来说,往往会在电脑中创建多个登录用户,以满足不同用户不同桌面需求.那么在日常电脑使用过程中,我们应该如何计算机添加新账户呢?接下来脚本之家编辑针对时下最流行的Win7系 ...
- 怎样在linux中创建硬盘,在linux中添加新硬盘并创建LVM组
1.以虚拟机为例,给虚拟机添加一块新硬盘,并创建LVM组,将新硬盘用于存放oracle数据库文件. 2.fdisk -ll查看新添加的硬盘是否被识别,如图已经识别出sdb. 3.# pvcreate ...
- 如何在xcode中添加新字体【ttf】
1. 将你的font的ttf文件导入到项目里. 2. 找到项目的info.plist文件. 如果你没有手动修改过上述的文件,它的默认名字应该是[项目名]-info.plist 3. 在该plist里添 ...
- OBS 基础 16 如何在CMake中添加新的lib库、头文件等
目录 一.OBS项目 1.新增的.h .cpp文件 .h .cpp .ui 2 新增 的 include路径 3 新增的li
- linux上无法发送163邮件,如何在linux中发送邮件,使用163邮箱发信。
linux中,可以使用mail命令往外发送邮件,在使用前,只需要指定如下简单配置即可,这里演示用 163.com 邮箱发送至 qq.com 编辑 /etc/mail.rc,写入下方的参数 se ...
最新文章
- poj1905(二分查找)
- 设计模式(访问者模式)
- java 基于tcp客户端服务端发送接收数据
- 大数据系列文章-Hadoop的HDFS读写流程(二)
- html叠加层,JavaScript实现多个重叠层点击切换效果的方法
- 学习日常笔记day12jsp基础
- java消除整型数组中重复的元素,排序后输出新数组
- ngx-bootstrap使用04 carousel组件
- 查看php-fpm进程数_查看php-fpm开启的进程数以及每个进程的内存限制
- python列表姓氏,Python程序可以打印完整姓氏的名字的缩写吗?
- 无Xaml的WPF展示
- Waymo已经开始绘制亚特兰大地图数据,自动驾驶汽车路测地点又添新城
- 俄罗斯方块c语言教程codeblocks,C语言俄罗斯方块修改结尾
- 手机抢答器正在替代传统抢答器
- C语言链表与指针的知识点,C/C++知识点之C语言链表详解
- UMTS基础知识汇总
- 怎么能快速学会计算机,初学者怎样学习电脑能够快速入门(免费科普电脑基础知识)...
- qq第三方登录所需appid
- 从事互联网经营就要办理icp许可证吗
- 用Wireshark抓包分析协议 计算机网络
热门文章
- mysql报错注入实战_手工注入——MySQL手工注入实战和分析
- Linux GPIO
- STM32学习——GPIO的操作
- XXX.C(261): error C100: unprintable character 0xA1/3 skipped
- 用anaconda保证64位和32位的python共存
- QT5开发及实例学习之十二Qt5图像坐标变换
- java面试中mysql_面试官:Mysql 中主库跑太快,从库追不上怎么整?
- 云端服务器怎么维护,云端服务器怎么维护
- c语言ics什么意思,[转载]C网来话筛选(ICS)业务及实现
- linux虚拟机备份树莓派,为树莓派做系统备份镜像(for Linux #038; Mac),