树莓配等芯片带操作系统的启动过程

C51、stm32(裸机)》》》》》直接操作底层寄存器实现相关事务。业务流程的裸机代码
遥控灯:while(1)
垃圾桶:wemosD1 LOOP
恩智浦智能车:stm32

X86 Intel Windows
启动过程:电源———》BIOS————》Windows内核——》C,D盘——》程序启动(QQ)

嵌入式产品:树莓派,mini2440,mini6410,nanopi,海思,RK(瑞芯微)----------人脸识别打卡器
启动过程:电源——》BOOTLoader——》Linux内核——》文件系统(根据功能性来组织文件夹,带访问权限)——》人脸识别打卡器,

BootLoader:1阶段让CPU和内存,flash、串口、IIC、IIS、数据段、打交道,驱动这些设备(主要是汇编和C结合)
2阶段引用Linux内核启动(纯C)
安卓:
启动过程:电源——》fastBoot/BootLoader——》Linux内核——》文件系统——》虚拟机——》HOME应用程序——》点击屏幕打开APP

树莓派Linux源码目录分析

大约1.3W个C文件,1100W行代码
Linux是一个开源的,支持多架构多平台代码
可以执行非常高,但Linux内核编译出来就几M
因为支持多平台,多架构,所以编译前要配置,配置成适合的目标平台来用

如:ARM
海思 友善之臂 RK 树莓派 nanoPi

树莓派Linux源码配置

驱动代码的编写:驱动代码的编译需要一个提前编译好的内核-----》编译内核就必须配置
配置的最终目标会生成.config文件,该文件指导makefile去把有用东西组织成内核

厂家配Linux内核源码,如买树莓派,树莓派Linux内核源码
第一种方式:cp 厂家.config .config
第二种方式:make menuconfig 一项一项的配置,通常是基于厂家的config来配置
第三种方式:完全自己来

如何配置树莓派Linux的内核

驱动两种加载方式
1、* 编译进内核 zimage包含驱动
2、M 模块方式生成驱动文件xxx.ko 系统启动后,通过命令inmosd xxx.ko 加载

内核配置:
ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- KERNEL=kernel7 make bcm2709_defconfig
指定ARM架构 指定编译器 树莓派 主要核心指令

5、 树莓派Linux内核编译

5.1编译:
ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- KERNEL=kernel7 make -j4 zImage modules dtbs
-j4:指定用多少电脑资源进行编译
zlmage生成内核镜像
modules要生成驱动模块
dtbs生成配置文件
5.2编译成功后,看到源码目录多了VMLinux,失败则无此文件;成功后,目标zimage镜像arch/arm/boot底下
在这里插入图片描述

5.3打包zimage成树莓派可用的xxx.img
./scripts/mkknlimg arch/arm/boot/zImage ./kernel_new.img
在本目录生成一个kernel_new.img文件,这个文件就是要放到sd卡中的文件。
注:网上很多地方说的用 tools/mkimage/imagetool-uncompressd.py 的方法不行!!

5.4 数据拷贝
mkdir data1 data2
挂载U盘
sudo mount /dev/sdb1 data1 一个fat分区,是boot相关的内容,kernel的img
sudo mount /dev/sdb2 data2 一个是ext4分区,也就是系统的根目录分区。

安装modules, 设备驱动文件: hdmi usb wifi io …
sudo ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- KERNEL=kernel7 make INSTALL_MOD_PATH=/home/chenlc/data2 modules_install

安装更新 kernel.img 文件,注意镜像名字是kernel7.img

先备份
cd /home/chenlc/data1
cp kernel7.img kernel7OLD.img
再把编译新生成的拷贝到data1,起名kernel7.img
cp kernel_new.img /home/hxx/data1/kernel7.img
在这里插入图片描述
拷贝配置文件
cp arch/arm/boot/dts/.dtb /home/hxx/data1
cp arch/arm/boot/dts/overlays/.dtb /home/hxx/date1/overlays/
cp arch/arm/boot/dts/overlays/README /home/hxx/date1/overlays/
在这里插入图片描述
在这里插入图片描述

Logo

CSDN联合极客时间,共同打造面向开发者的精品内容学习社区,助力成长!

更多推荐