stm32mp15-dk2 内核编译

 

如果你使用如下的命令来打补丁:
patch -pN < ../a.patch
那么你可以像下面这样来卸载掉这个补丁:需要根据打补丁的顺序倒序卸载,比如linux内核添加了a补丁,之后又打上了b补丁,那么卸载顺序是先卸载b补丁,然后卸载a补丁
patch -R -p1 < ../a.patch

上面N表示一个自然数,表示去掉补丁路径的第几个部分,假定源码目录是/home/my-linux/work/linux4.19.9

1.新建工作目录

mkdir  -p  /home/work/kernel

2.获取ST官方源码到此目录,如下面列表文件:

........................

........................

0060-ARM-stm32mp1-r0-rc4-hotfix-w904.3-DEVICETREE.patch
0061-ARM-stm32mp1-r0-rc4-hotfix-w904.5-DRIVERS.patch
0062-ARM-stm32mp1-r0-rc4-hotfix-w904.5-DEVICETREE.patch
0063-ARM-stm32mp1-r0-rc4-hotfix-w905.2-DRIVERS.patch
0064-ARM-stm32mp1-r0-rc4-hotfix-w905.2-DEVICETREE.patch
build
fragment-03-systemd.config
fragment-04-optee.config
fragment-05-modules.config
linux-4.19.9
linux-4.19.9.tar
README.HOW_TO.txt
series

3.解压源码,三种格式源码的解压方式

 $> tar xfz <kernel source>.tar.gz
 $> tar xfj <kernel source>.tar.bz2
 $> tar xfJ <kernel source>.tar.xz
对于此文件

tar  xvf  linux-4.19.9.tar

4.进入源码目录

cd  linux-4.19.9

5.打补丁,管理模式

 for p in `ls -1 ../*.patch`; do patch -p1 < $p; done
6.配置内核文件(在源码目录外)

1)进入源码目录

cd   Linux-4.19.9

2)创建编译输出目录

mkdir -p ../build

3)配置内核,

make ARCH=arm O="$PWD/../build" multi_v7_defconfig fragment*.config

如果还有一写小模块功能需要配置,则通过以下命令配置,

$>for f in `ls -1 ../fragment*.config`; do scripts/kconfig/merge_config.sh -m -r -O $PWD/../build $PWD/../build/.config $f; done
$> yes '' | make ARCH=arm oldconfig O="$PWD/../build"

7.编译内核,输出和编译到build目录

1)进入源码目录

cd  linux-4.19.9

2)编译镜像

 make ARCH=arm uImage vmlinux dtbs LOADADDR=0xC2000040 O="$PWD/../build"

3)编译内核模块

 make ARCH=arm modules O="$PWD/../build"

八.生成输出文件

1)创建输出文件路径

make ARCH=arm INSTALL_MOD_PATH="$PWD/../build/install_artifact" modules_install O="$PWD/../build"

2)创建boot目录

 mkdir -p $PWD/../build/install_artifact/boot/
3)拷贝镜像到创建的boot目录

cp $PWD/../build/arch/arm/boot/uImage $PWD/../build/install_artifact/boot/

4)拷贝设备树文件到创建的boot目录

cp $PWD/../build/arch/arm/boot/dts/st*.dtb $PWD/../build/install_artifact/boot/
 

或者直接在build目录编译

1)进入build目录

cd  build

2)编译镜像设备树文件

make ARCH=arm uImage vmlinux dtbs LOADADDR=0xC2000040

3)编译内核模块
 make ARCH=arm modules

4)生成输出文件

a.安装内核模块
 make ARCH=arm INSTALL_MOD_PATH="$PWD/../build/install_artifact" modules_install

b.创建一个boot目录
mkdir -p $PWD/../build/install_artifact/boot/

c.拷贝镜像文件到boot目录
cp $PWD/../build/arch/arm/boot/uImage $PWD/../build/install_artifact/boot/

d.拷贝设备树文件到boot目录
cp $PWD/../build/arch/arm/boot/dts/st*.dtb $PWD/../build/install_artifact/boot/

由于需要把wifi编进内核里面,配置问题解决:

1)make menuconfig O=“..build” 由于我是在build文件夹编译的所有需要这样配置

2)定位到WLAN driver

 

 

这时候光标移动到需要选择的item上,按h按键,会有下面的提示,说明这个模块依赖于NETDEVICES,WLAN 和WLAN_VENDOR_BROADCOM和CFG80211这四个模块。

需要将CFG80211模块从M变成Y,接着找到CFG80211模块驱动

 按Y就表示编进内核了,保存再编译

 

官方编译

Compile and install on a build directory (different of kernel source code directory)
    $> cd <directory to kernel source code>
    * Build kernel images (uImage and vmlinux) and device tree (dtbs)
    $> make ARCH=arm uImage vmlinux dtbs LOADADDR=0xC2000040 O="$PWD/../build"
    * Build kernel module
    $> make ARCH=arm modules O="$PWD/../build"
    * Generate output build artifacts
    $> make ARCH=arm INSTALL_MOD_PATH="$PWD/../build/install_artifact" modules_install O="$PWD/../build"
    $> mkdir -p $PWD/../build/install_artifact/boot/
    $> cp $PWD/../build/arch/arm/boot/uImage $PWD/../build/install_artifact/boot/
    $> cp $PWD/../build/arch/arm/boot/dts/st*.dtb $PWD/../build/install_artifact/boot/
or

$> cd <build directory>
    * Build kernel images (uImage and vmlinux) and device tree (dtbs)
    $> make ARCH=arm uImage vmlinux dtbs LOADADDR=0xC2000040
    * Build kernel module
    $> make ARCH=arm modules
    * Generate output build artifacts
    $> make ARCH=arm INSTALL_MOD_PATH="$PWD/../build/install_artifact" modules_install
    $> mkdir -p $PWD/../build/install_artifact/boot/
    $> cp $PWD/../build/arch/arm/boot/uImage $PWD/../build/install_artifact/boot/
    $> cp $PWD/../build/arch/arm/boot/dts/st*.dtb $PWD/../build/install_artifact/boot/
 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 5
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值