【系统移植】(六)第三方驱动移植

【系统移植】(六)第三方驱动移植

编译驱动进内核
   a.  选择驱动存放目录 (或任意目录。源码下的drivers/char目录,同时修改目录下的makefile)
   b.  改Makefile
   c.  改Kconfig  (界面可配置)

编译驱动为独立的模块
   a. 配置为模块方式
   b. make modules 编译为模块
   c. 创建设备节点(应用访问驱动的入口)
   d. 运行测试驱动的应用程序

1.编译驱动进内核

一、驱动编译进内核Makefile
	1、首先找内核中是否已经支持设备的驱动  选配
	2、内核中没有的驱动移植进来 --第三方驱动移植

	将第三方驱动代码放到linux源码树中的driver目录中
	修改 Makefile Kconfig(界面配置) 
	修改过的和新添加的代码会重新编译
	程序需要在板子上运行 就需要使用交叉编译工具编译
	mknod /dev/led c或者b  主设备号  此设备号

方法一:编译makefile

  1. 选择驱动存放目录,源码下的drivers/char目录,同时修改目录下的makefile

image-20241221155810139

  1. 仿照其他文件的格式,编写同名文件的.o后缀

image-20241221160235703

  1. 回到源码顶层目录,执行make uImage编译内核

  2. 把生成的uImage传到开发板上面

image-20241221160736473

搞一个应用程序,测试这个LED点灯程序,Linux下一切皆文件,那么访问应用层访问底层的入口就是/dev/led文件image-20241221161011705

  1. 在开发板上生成这个设备号文件

image-20241221161329106

  1. 通过交叉编译,把应用程序发到板子上面运行监测即可

方法二:编译kconfig

由方法一可知,添加一个驱动还行,如果有n个呢?就很难维护。所以有了此方法

二、make menuconfig、Makefile、Kconfig、.config 
	三者的关系
	Makfile 具体编译文件
	Kconfig 选配,生成图形化界面,这个只是配置make menuconfig后的界面,具体编译模块还是看makefile
	在Kconfig中添加一个灯的选项
	界面修改好了, 还需要再次修改 Makfile
	[] 只有两种选项编译(y)或者不编译(n)  <> 三种选项 编译(y)、不编译(n)或者编译成模块(m)
	obj-y obj-n obj-$(CONFIG_XXX)	//编译,不编译,根据kconfig确定
	方便驱动管理

如何关联起来kconfig和makefile。(之前直接写的-y就写死了)

image-20241221165323969

方法三:编译成模块

之前编译的都是跟内核原本的驱动目录都在一块呢,如果我们写了很多驱动的话还是很乱,这个部分就是把自己写的驱动与Linux原本驱动分离开来。

这部分的内容放到Linux驱动里面讲,在这里不再详细展示。

换成tristate就可有三种模式选择,可编译不可编译,编译编译成模块

image-20241221172322382

2.字符设备框架

image-20241222105753981

### 将第三方ROM移植到搭载澎湃芯片的手机 #### 设备准备与环境搭建 为了成功将第三方ROM移植到搭载澎湃芯片的设备上,需先确保拥有必要的硬件和软件资源。这包括但不限于目标设备本身、一台用于开发的计算机以及相应的驱动程序和支持工具。 对于RT-Thread操作系统而言,在嵌入式开源社区有着丰富的经验和技术积累[^1]。然而值得注意的是,RT-Thread主要应用于物联网领域的小型化智能终端产品中,并不是常见的智能手机所使用的Android或其他大型移动操作系统之一;因此关于具体针对搭载澎湃处理器系列产品的第三方ROM适配工作可能并不适用于RT-Thread平台。 #### 获取源码与编译配置 如果计划基于Android系统进行ROM定制,则需要获取官方AOSP(Android Open Source Project)源代码库或者是小米公司提供的MIUI ROM源代码作为基础版本。接着按照官方文档说明完成构建环境设置并下载对应分支标签下的全部文件。 由于不同型号之间存在架构差异,还需要特别关注CPU指令集兼容性和内核模块的支持情况。对于采用自研SoC方案如澎湃S1/S2这样的特殊机型来说,往往涉及到更多私有化的接口定义和服务实现细节,这些都需要开发者自行探索解决办法。 #### 修改启动加载器与分区表结构 在实际操作过程中,修改Bootloader引导程序可能是不可避免的一个环节。这是因为大多数厂商都会对出厂固件施加一定的安全机制限制,防止未经授权的操作行为发生。而要绕过此类保护措施通常意味着解锁BL权限甚至刷写全新的Fastboot镜像来替代原有的那一套逻辑控制流程。 与此同时,重新规划存储介质内部的空间布局同样重要——即调整EFS/MBR/GPT等格式描述符参数值以适应新系统的安装需求。此部分改动建议参照同类案例分享资料来进行实践尝试。 #### 测试验证与优化改进 最后一步就是进行全面的功能测试了。从最基本的开机画面显示正常与否到最后一个应用程序能否稳定运行都应当逐一排查确认。期间难免会遇到各种各样的Bug或者性能瓶颈问题等待着被修复完善。此时可以借助日志分析工具链定位错误根源所在位置进而采取针对性策略加以处理直至达到预期效果为止。 ```bash adb logcat | grep "error" ``` 上述命令可以帮助快速过滤出安卓调试桥接器传递过来的日志信息中的异常记录片段供进一步研究诊断之用。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

橘猫.exe

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值