编译适配小米2S的CM Linux内核源代码及问题解决

时间:2022-01-03 14:50:55

1. 下载内核源代码

首先进入CM官网与小米2S相关的页面:

http://wiki.cyanogenmod.org/w/Aries_Info

在页面中可以找到Kernel后面的链接:

http://www.github.com/cyanogenmod/android_kernel_xiaomi_aries

单击该链接进入github下载页面,可以通过git clone下载,也可以直接下载zip压缩版本。

2. 编译内核源代码

进入下载后的目录,将MakeFile中的两行修改为:

ARCH		?= arm
CROSS_COMPILE ?= arm-none-linux-gnueabi-

如果未安装交叉编译器请安装交叉编译器。

之后执行以下命令:

make cyanogen_aries_defconfig
make

编译过程可能会遇到如下问题,给出了解决方式,但不知是否有潜在bug。

(1)报错:

drivers/mmc/host/msm_sdcc.c: In function 'msmsdcc_probe': 
drivers/mmc/host/msm_sdcc.c:5516:19: warning: 'sup_voltages' may be used uninitialized in this function [-Wuninitialized]
解决方法:

在drivers/mmc/host/msm_sdcc.c文件5517行后面(在使用sup_voltages之前)添加:

sup_voltages = devm_kzalloc(dev, sup_volt_len / sizeof(*sup_voltages) * sizeof(*sup_voltages), GFP_KERNEL);
(2)报错:
drivers/mmc/host/msm_sdcc.c: In function 'msmsdcc_probe':drivers/mmc/host/msm_sdcc.c:5556:24: warning: 'clk_table' may be used uninitialized in this function [-Wuninitialized]
解决方法:

在drivers/mmc/host/msm_sdcc.c文件5517行后面(在使用clk_table之前)添加:

clk_table = devm_kzalloc(dev, clk_table_len / sizeof(*clk_table) * sizeof(*clk_table), GFP_KERNEL);
(3)报错:
drivers/staging/prima/CORE/HDD/src/wlan_hdd_main.c: In function 'wlan_hdd_scan_abort':drivers/staging/prima/CORE/HDD/src/wlan_hdd_main.c:7201:9: warning: 'status' may be used uninitialized in this function [-Wuninitialized]
解决方法:

将drivers/staging/prima/CORE/HDD/src/wlan_hdd_main.c文件7201行(status定义所在行)修改为:

int status = VOS_STATUS_SUCCESS;