实验报告
课程名称:嵌入式系统设计指导老师:马永昌成绩:________________ 实验名称:嵌入式系统的启动实验类型:验证型同组学生姓名:__孙凡原_______ 一、实验目的和要求(必填)二、实验内容和原理(必填)
三、主要仪器设备(必填)四、操作方法和实验步骤
五、实验数据记录和处理六、实验结果与分析(必填)
七、讨论、心得
一、实验目的和要求
⏹初步了解嵌入式系统的开发流程
⏹初步了解嵌入式系统的启动流程
⏹掌握Linux内核编译
二、实验内容和原理
⏹编译Linux内核
⏹烧写内核镜像并启动
⏹启动参数配置
三、主要仪器设备
树莓派、PC机
四、操作方法和实验步骤
1 安装编译内核的交叉编译工具链
2 配置内核,编译生成内核镜像文件。
3 替换SD卡中原先的内核镜像文件,启动树莓派。
五、实验数据记录和处理
1.创建root用户
sudo passwd root
输入密码,创建root用户密码
su root
切换到root用户
2.安装编译内核的交叉编译工具链
将交叉编译工具链压缩文件gcc-linaro-arm-linux-gnueabihf-raspbian-x64.tgz放入到虚拟机/home (从图形界面打开/home的方法:ubuntu侧栏Files->Devices->Computer->home, 注意不是“Home”)下,解压。
tar xzvf gcc-linaro-arm-linux-gnueabihf-raspbian-x64
设置环境变量
export PATH=$PATH:/home/gcc-linaro-arm-linux-gnueabihf-raspbian-x64/bin
此时运行
arm-linux-gnueabihf-gcc --version
可以看到版本号表明交叉编译工具链安装完成。
3.配置内核并编译
将内核源代码压缩文件放入到虚拟机/home下,解压
tar xzvf linux.tgz
配置内核
cd linux
KERNEL=kernel7
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- bcm2709_defconfig
编译内核
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- zImage modules dtbs
4.安装内核镜像
插入SD卡,通过虚拟机选项->可移动设备将SD卡连接到虚拟机中。
查看SD卡分区
lsblk
会发现SD卡存在两个分区为:
sdb
⏹sdb1
⏹sdb2
运行如下命令挂载SD卡到相应的目录下
mkdir /mnt/fat32
mkdir /mnt/ext4
sudo mount /dev/sdb1 /mnt/fat32
sudo mount /dev/sdb2 /mnt/ext4
安装内核模块
sudo make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf-INSTALL_MOD_PATH=/mnt/ext4 modules_install
5.安装内核镜像
安装内核镜像
sudo cp /mnt/fat32/$KERNEL.img /mnt/fat32/$KERNEL-backup.img
sudo scripts/mkknlimg arch/arm/boot/zImage /mnt/fat32/$KERNEL.img
sudo cp arch/arm/boot/dts/*.dtb /mnt/fat32/
sudo cp arch/arm/boot/dts/overlays/*.dtb* /mnt/fat32/overlays/
sudo cp arch/arm/boot/dts/overlays/README /mnt/fat32/overlays/
sudo umount /mnt/fat32
sudo umount /mnt/ext4
mount用于挂载Linux系统外的文件
umount用于卸载已经加载的文件系统
6.启动系统
将SD卡插入到树莓派开发板上,上电启动。
打开终端,运行
uname -a
可以发现内核版本号已经发生改变
六、实验结果与分析
七、讨论、心得。