[教程] [经验技巧] 任意手机移植ROM 教程,超详细ROM 技术学习

一、Android的ROM结构
1)Android的分区
Android的分区,不说清楚这个,下面都不好讲,Android一般都分这几个区: bootloader分区用来存储uboot,system分区存储Android,data分区用来存储用户数据,boot分区用来存储内核文件和ramdisk,recovery分区存储内核文件和recovery程序,其他还有misc和cache等等。当然各个公司会根据各自需求增加一些别的分区。启动过程是先由bootloader启动uboot,然后uboot启动内核,内核会根据init.rc里的指令mount system data等这些分区,mount好以后,Android就开始启动了。你应该注意到上面的分区里有两个分区都存有内核文件,就是boot和recovery,boot是正常启动流程会用到的内核文件,如果启动过程中发现有特殊按键,uboot就会读取recovery分区里的内核和ramdisk。这就是为什么你启动时按着某个组合键就会进入recovery程序。进入recovery模式以后,直接面对用户的是跑在内核上的recovery程序。这个时候除了recovery分区以外的其他分区你想写谁都可以了。recovery去读取rom文件,根据文件里的内容来更新系统,如果是img文件就直接dd到分区里,如果是文件夹就把文件里的东西copy到相应分区里(好像是这样)。更新完按正常启动过程重启机器就o了。内核文件在boot.img里的,boot.img是由内核文件和ramdisk.img组成的,刷在boot分区里。你如果打开一个rom文件,如果里面如果有boot.img,哪说明刷这个rom的时候它是要更新内核的。但一般第三方定制的rom是不会去动你的内核的,只刷system。所以你在里面找不到内核文件。如果你找不到system.img,那里面应该有一个叫system的文件夹吧。是img就dd到system分区,是文件夹就copy到system分区。

2)刷机包rom
刷机包rom,一般的刷机包包括一个/meta-inf目录和一个/system目录,/meta-inf中包含了刷机的脚本和证书,/system中就是我们需要的rom包,有些其他的rom还有/data。至于你说的bootloader,这个相当于电脑中的bios一般刷机是不用bootloader的,用recovery刷机;recovery刷机时先检查.zip下的签名然后按照脚本中的代码执行,例如:判断机型,挂载需要刷机的分区,然后格式化,写入待刷文件,最后卸载分区。

3)META_INF文件
在META_INF文件夹下层层寻找会找到updater_script,这个文件是现有recovery进行解析,然后根据内容执行 格式化,释放,刷入,删除,改变属性,执行脚本等动作。以此来完成刷机或OTA动作。

二、从内核基于linux开始

整个系统就运行在一个虚拟机上,这是安卓的一大特征!!

那么我们移植的时候要修改哪一部分?

这就是我们这个帖子的重点了

参考本链接
http://www.miui.com/thread-3660267-1-1.html
交流学习

通俗易懂的流程,主体框架不会改变。固定的目录结构,移植不同设备,根据不同的需求对几个特定文件进行修改。最后重新进行压缩zip,zip包名改为update便于区分新版本。最后使用特定工具加签名,到此新的刷机ROM包已经打包完成。只需拷贝到手机SD卡上,安装即可。

  • 12
    点赞
  • 76
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
以下是一个较为详细教程,介绍了如何在GD32微控制器上移植lwIP: 1. 下载lwIP软件包:从lwIP官方网站(https://www.savannah.nongnu.org/projects/lwip/)下载最新版本的lwIP软件包。 2. 创建项目:使用适合的IDE创建一个新的GD32项目,并配置好编译器和调试工具链。 3. 添加lwIP源码:将lwIP软件包中的源码文件添加到你的项目中。lwIP源码包括核心的lwip目录以及一些移植文件和示例代码。 4. 配置lwIP:在lwip目录中找到lwipopts.h文件,打开并根据你的需求进行配置。这个文件定义了网络参数、协议选项和功能选项等。根据你的硬件平台和应用需求,进行相应的配置。 5. 添加网络驱动:GD32微控制器通常会有网络接口控制器(如以太网MAC),你需要为GD32选择合适的网络驱动,并将其添加到你的项目中。这个网络驱动将与lwIP协同工作,处理底层数据链路层的通信。 6. 实现硬件相关功能:根据GD32的硬件特性,可能需要实现一些硬件相关的功能,如时钟初始化、中断处理等。这些功能的具体实现取决于你使用的GD32系列和开发环境。 7. 修改lwIP配置:根据你的硬件平台和网络驱动,可能需要对lwIP的配置进行一些修改。这包括适配网络接口、调整内存大小、设置IP地址等。 8. 编写应用程序:根据你的应用需求,编写lwIP的应用程序代码。这包括创建套接字、发送和接收数据等操作。 9. 编译和调试:使用IDE编译你的项目,并将生成的可执行文件下载到GD32微控制器上进行调试和验证。 此外,以下是一些额外的建议和注意事项: - 阅读lwIP官方文档:lwIP官方文档提供了详细的说明和示例代码,可以帮助你更好地理解和使用lwIP。 - 参考GD32微控制器文档:GD32微控制器的官方文档通常提供了关于网络接口控制器和相关功能的详细说明和示例代码。 - 参考示例代码:lwIP软件包中通常会包含一些示例代码,可以作为你移植和开发的参考。 - 注意资源限制:lwIP在嵌入式系统中需要占用一定的内存和CPU资源。根据GD32微控制器的资源限制,进行适当的配置和优化,确保系统稳定运行。 - 进行测试和验证:在移植和开发完成后,进行全面的测试和验证,确保lwIP在GD32微控制器上正常工作。 希望这个教程对你有所帮助!请记得参考官方文档和示例代码,以及根据具体的硬件平台和开发环境进行适当的调整和修改。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值