天天看点

配置并交叉编译树莓派linux内核windows系统和linux系统启动过程linux源码目录树树莓派linux源码配置

目录

windows系统和linux系统启动过程

linux源码目录树

树莓派linux源码配置

windows系统和linux系统启动过程

windows启动过程:

1.启动电源,BOIS启动windows,windows识别C盘,C盘运行APP.

linux启动过程:

1.启动电源,bootloader启动linux内核,linux内核识别根文件系统,根文件系统运行APP。

linux源码目录树

使用sudo apt-get install tree安装tree指令

配置并交叉编译树莓派linux内核windows系统和linux系统启动过程linux源码目录树树莓派linux源码配置

树莓派linux源码配置

驱动代码的编译需要一个提前编译好的内核,编译内核就需要配置内核。

配置的最终目标会生成。config文件,该文件知道Makefile去把有用东西组织成内核

 第一种方式:  

厂家配linux内核源码,树莓派linux内核源码

cp 厂家.config  .config

第二种方式:

make menuconfig 一项项配置,通常是基于厂家的config来配置

第三种方式:

自己配置

配置树莓派linux内核操作步骤如下:

树莓派2,3的工程是bcm2709_defconfig

第一种方式使用树莓派的bcm2709_defconfig:

输入指令:ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- KERNEL=kernel7 make bcm2709_defconfig

第二种方式使用make  menuconfig进行配置:

1.安装必要的库:

sudo apt-get install bc

sudo apt-get install libncurses5-dev libncursesw5-dev

sudo apt-get install zlib1g:i386

sudo apt-get install libc6-i386 lib32stdc++6 lib32gcc1 lib32ncurses5

2.输入指令:ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- KERNEL=kernel7 make menuconfig( 说明:ARCH指定架构,CROSS_COMPILE指定编译器,KERNEL指令内核)

配置并交叉编译树莓派linux内核windows系统和linux系统启动过程linux源码目录树树莓派linux源码配置

驱动两种加载方式:

*编译进内核    zImage包含了驱动

M模块方式生成驱动文件 xxx.ko  系统启动后,通过命令insmod

3.编译内核指令如下:

ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- KERNEL=kernel7 make -j4 zImage modules dtbs (说明:j4使用了4个内核进行编译,zImage生成内核镜像,modules要生成驱动模块,dtbs生成配置文件)

4.编译成功后,看到目录多了vmlinux,失败则说明编译失败。目标zlmage镜像在目录arch/arm/boot底下。

配置并交叉编译树莓派linux内核windows系统和linux系统启动过程linux源码目录树树莓派linux源码配置

5.打包zImage成树莓派可用的xxx.img,输入以下指令:

./scripts/mkknlimg arch/arm/boot/zImage ./kernel_new.img

6.将SD卡插入电脑,使用指令dmesg查看是否挂载成功

配置并交叉编译树莓派linux内核windows系统和linux系统启动过程linux源码目录树树莓派linux源码配置

7.挂载U盘:

     7.1创建两个文件夹,输入指令 :mkdir  data1  和mkdir  data2

     7.2将SD的内容挂载到data1目录和data2目录:

    输入如下指令:sudo mount /dev/sdb1    data1(说明:sdb1是fat分区,是boot相关的内容,kernel的img文件就放在这个分区里面)

                             sudo  mount /dev/sdb2   data2(说明:sdb2是ext分区,也就是系统的根目录分区)

配置并交叉编译树莓派linux内核windows系统和linux系统启动过程linux源码目录树树莓派linux源码配置

8.安装modules(设备驱动文件 HDMI USB WIFI  IO .....)

输入以下指令:

sudo ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- KERNEL=kernel7 make INSTALL_MOD_PATH=/home/lizhiwen/data2 modules_install(说明:安装的时候要加上绝对路径)

9.安装更新的kernel.img ,镜像名字是kernel7.img

     先将原先的镜像进行备份,输入以下指令:

      cp kernel7.img kernel7OLD.img

配置并交叉编译树莓派linux内核windows系统和linux系统启动过程linux源码目录树树莓派linux源码配置

10.再把编译新生成镜像拷贝到data1,起名为kernel7.img

     输入以下指令:

          cp  kernel_new.img /home/lizhiwen/data1/kernel7.img

配置并交叉编译树莓派linux内核windows系统和linux系统启动过程linux源码目录树树莓派linux源码配置

11.使用指令md5sum查看是否拷贝成功

配置并交叉编译树莓派linux内核windows系统和linux系统启动过程linux源码目录树树莓派linux源码配置

12.拷贝配置文件

cp arch/arm/boot/dts/.*dtb* /home/lizhiwen/data1

cp  arch/arm/boot/dts/overlays/.*dtb*   home/lizhiwen/data1/overlays

cp  arch/arm/boot/dts/overlays/README   home/lizhiwen/data1/overlays

配置并交叉编译树莓派linux内核windows系统和linux系统启动过程linux源码目录树树莓派linux源码配置

13.将SD拔下插入树莓派,启动树莓派之后使用uname -r查看版本号

配置并交叉编译树莓派linux内核windows系统和linux系统启动过程linux源码目录树树莓派linux源码配置

继续阅读