博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【嵌入式Linux之QEMU模拟器】3、编译Linux内核与dtb文件
阅读量:2028 次
发布时间:2019-04-28

本文共 1868 字,大约阅读时间需要 6 分钟。

1、下载Linux内核

除了以下两种正统方法,还可以到我的云盘下载。<链接>

方法一:

在终端使用git clone git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable.git/进行自动下载。

下载的速度如果慢的无法忍受的话,建议使用第二种官网下载

方法二:

官网<>

在这里插入图片描述

下载LTS的4.4.×版本。

2、下载完毕后,将其拖曳到Ubuntu中,输入tar xvf linux-4.4.195.tar.xz解压缩.

在这里插入图片描述

3、进入到解压后的文件夹,然后输入vi Makefile

在这里插入图片描述

在vi的一般模式下,输入/CROSS_COMPILE,进行搜索CROSS_COMPILE。**

修改ARCHCROSS_COMPILE的值,如下图所示。

在这里插入图片描述

针对我的linux-4.4.195版本的是在257行~258行

ARCH            ?= armCROSS_COMPILE   ?= arm-linux-gnueabi-

4、修改配置文件

在正式修改配置文件之前,先看一下我们的仿真开发板所在位置。

①、输入cd ./arch可以看到QEMU支持的多种架构CPU,其中我们要关注是ARM

在这里插入图片描述

②、输入cd ./arm可以看到ARM支持的开发板

在这里插入图片描述

其中有我们本次要使用的vexpress开发板,当然还包括了其他好多,比如三星的S3C2440等!

下面让我们来查看仿真开发板的配置文件所在目录及具体内容

①、输入cd ./configs在这里插入图片描述

②、输入vi vexpress_defconfig

针对不同的开发板,Linux内核都有一个不同的配置文件

进入可详细查看,针对vexpress的内核配置。

其中...=y中的y表示编译器内核,即静态编译。而相对的y表示动态编译。

接下来便是正式配置环节

①、退回到内核的根目录,即./linux-4.4.195目录下!

输入make vexpress_defconfig

在这里插入图片描述

输入ll可查看刚刚生成的.config文件

在这里插入图片描述

②、输入make zImage -j6,进行编译内核。【且同时开启了6个线程】

(时间蛮长的…)

在这里插入图片描述

编译完成后…

在这里插入图片描述

编译生成的内核为ach/arm/boot中的zImage。【zImage和平台无关】

③、输入make modules -j4,进行编译内核模块

在这里插入图片描述

④、输入make dtbs,进行编译dtbs文件

dtbs和具体开发板有关

在这里插入图片描述

⑤、输入qemu-system-arm -M vexpress-a9 -m 512M -kernel arch/arm/boot/zImage -dtb arch/arm/boot/dts/vexpress-v2p-ca9.dtb -nographic -append "console=ttyAMA0",用以验证内核是否编译成功。

在这里插入图片描述

最后还是跟之前一样,我们还有挂载文件系统而已,稍后便可解决!


这里再学习两个技巧:

技巧一:

最后的这个进程无法用普通的ctrl + C的方法关闭,可以采用下面方法。

①、新打开一个终端,输入ps -a,查看对应的PID号
在这里插入图片描述
②、输入kill 121088

技巧二:

发现最后一个执行的内容挺长的,这里我们可以制造一个脚本,通过运行脚本的方式,直接编译!

①、在内核./QEMU根目录下,输入touch boot.sh
②、为这个脚本的所有执行用户赋予可执行的权限,输入chmod a+x boot.sh
③、通过输入vi boot.sh,将上述长命令拷贝进来!【太长的话可以换行,行间需要加入\】【如下代码】
④、输入./boot.sh即可执行该脚本
【注意,目录要变得话,里面的路径也需要变。也就是说该脚本只能固定存放在某个目录下!(以上所述例子是在./QEMU目录下!)】

qemu-system-arm \        -M vexpress-a9 \        -m 512M \        -kernel linux-4.4.195/arch/arm/boot/zImage \        -dtb linux-4.4.195/arch/arm/boot/dts/vexpress-v2p-ca9.dtb \        -nographic \        -append "console=ttyAMA0"

脚本换行,有一个需要注意的问题,必须让后面的换行符高亮,如果呈现白色说明,上下两行之间空格太多,应重新回车换行!

在这里插入图片描述

转载地址:http://bknaf.baihongyu.com/

你可能感兴趣的文章
javaweb学习总结——编写自己的JDBC框架
查看>>
javaweb学习总结——事务
查看>>
javaweb学习总结——获得MySQL数据库自动生成的主键
查看>>
javaweb学习总结——使用JDBC进行批处理
查看>>
JavaWeb学习总结——使用JDBC处理Oracle大数据
查看>>
【zabbix教程三】——centos7 安装zabbix客户端并监控
查看>>
SpringMVC
查看>>
多线程
查看>>
设计模式之一适配器模式
查看>>
MyBatis和Hibernate的区别个人感悟
查看>>
Python3.x爬虫教程:爬网页、爬图片、自动登录
查看>>
Python验证码识别处理实例
查看>>
那些年,我开发过的软件
查看>>
进程和线程的定义及区别、线程同步、进程通讯方式总结
查看>>
栈,堆,全局,文字常量,代码区总结
查看>>
24天学会设计模式----门面模式(外观模式)
查看>>
24天学会设计模式------工厂方法模式
查看>>
Get与Post区别与范例讲解
查看>>
servlet和Jsp生命周期解读
查看>>
Oracle与Mysql主键、索引及分页的区别小结
查看>>