梦中蝶舞 发表于 2024-8-6 08:54

MOTOROLA E6 内核开发手册

前言:

Motorola开源了基于Linux的手机源代码,包括A780、E680、A1200、E2、E6等等,官方网址:

https://sourceforge.net/motorola/wiki/Projects/

我修改的内核,支持SDHC 32G内存卡。

https://download.csdn.net/download/MYMOTOE6/14017283

一、编译BLOB

BLOB是摩托罗拉Linux系列使用的引导加载器,它是开机时首先运行的一段代码,作用是进行自检和加载引导内核,摩托公布了BLOB,所以我们可以直接编译运行,编译的时候一定要配置好交叉编译器的路径,交叉编译器摩托也公布了源代码,可以自己直接编译一个或者下载一个已经编译好的。注意在编译之前先要配置好内核的配置文件和路径,我是使用了一个脚本编译。

#!/bin/bash



export CC=arm-linux-gcc

export CXX=arm-linux-g++

export CFLAGS=-O2

export CXXFLAGS=-O2



export AR=arm-linux-ar

export AS=arm-linux-as

export LD=arm-linux-ld

export STRIP=arm-linux-strip

export RANLIB=arm-linux-ranlib

export OBJCOPY=arm-linux-objcopy



./configure --build=i68-linux-gnu --host=arm-linux --prefix=/mmc/mmca1/.system --with-board=lubbock --with-cpu=pxa262 --with-linux-prefix=/root/Moto-dev/linux-2.4.17 --enable-usb --enable-lcd



#make

#make install

编译完成的文件保存在src/blob/blob,把blob复制到刷机包替换cg32-blob.bin, cg32-blob.bin是由sbf刷机包拆解工具解开的一个文件。Sbf工具后面提供源代码,注意只能使用在E6上,如果要解开其他的刷机包,请自行修改,全部使用C语言编写。

二、编译内核

我主要使用的手机是E6,所以下载了所有E6的源代码,遗憾的是E6目录中并不包括内核代码,作为和A1200E同期发布的产品,估计其内部配置应该一致,所以参考了E6和A1200的电路图,确定它们使用的是同一款CPU英特尔的PXA270和同一款内存型号PF38F4476VVUBPD。所以下载了A1200E的内核源代码,通过查看原代码,发现编译要注意参数的配置,通过编译成功运行在了E6上,在内核源码根目录有一个setup.sh文件,安装好交叉编译器之后,进入linux-2.4.17目录,执行如下命令:

//在这里一定要使用澳门版配置,有两种配置:

//MACAU支持G网

//MACAUEDGE支持EDGE网

//配置内核为澳门版,支持18BPP

#.setup.sh PRODUCT=MACAUEDGE LCD=18BPP

# make bzImage //编译内核

# make modules //编译模块

编译完成的内核保存在arch/arm/boot/zImage ,把zImage复制到刷机包中,替换cg33-zImage



注意:cg33-zImage文件是我编写的linux系统下E6专用的一个刷机包编辑工具sbf解开的文件,使用这个工具可以简化很多步骤,不用再补齐FF,不用计算校验和等等。编译出的文件只要重命名并覆盖源文件即可。

使用方法是

# sbf –r e6.sbf //解开一个刷机包

# sbf –c e6.sbf //打包一个刷机包

第二个参数e6.sbf是需要修改的刷机包,这里为了简化重命名为e6.sbf,在打包时也要带上这个参数。新的刷机包文件名为New-e6.sbf。

三、刷机

把New-e6.sbf复制到windows系统,使用RSD-3.8刷机,刷完将拥有自己修改的全新内核。


页: [1]
查看完整版本: MOTOROLA E6 内核开发手册