
第三部分 Linux系统移植篇
我们按照框架学习法的指引,来学习Linux系统移植这一部分,移植无非也就是把这个框架移植到开发板上。
一只流浪小法师
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
i.MX6ULL终结者Linux文件系统的构建完善根文件系统
文章目录1 创建/etc/init.d/rcS文件2 创建/etc/fstab文件3 创建/etc/inittab文件4 生成文件系统镜像1 创建/etc/init.d/rcS文件rcS 是个 shell 脚本,Linux 内核启动以后需要启动一些服务,而 rcS 就是规定启动哪些文件的脚本文件。在rootfs中创建/etc/init.d/rcS 文件,命令如下:mkdir -p etc/init.d/cd etc/init.d/touch rcS然后在rcS文件中输入如下内容(注意每行前面的行原创 2020-11-16 09:31:28 · 204 阅读 · 0 评论 -
i.MX6ULL终结者Linux文件系统的构建BusyBox构建根文件系统
制作根文件系统有专门的工具可以使用,叫做BusyBox,BusyBox是标准Linux工具的一个单个可执行实现。BusyBox包含了一些简单的工具,例如cat和echo,还包含了一些更大、更复杂的工具,例如grep、find、mount以及telnet。有些人将BusyBox称为Linux工具里的瑞士军刀.简单的说BusyBox就好像是个大工具箱,它集成压缩了Linux的许多工具和命令。在本节我们使用BusyBox来制作一个根文件系统。1 获取BusyBox源码BusyBox可以从官网下载,官网地址为:原创 2020-11-14 09:40:29 · 265 阅读 · 0 评论 -
i.MX6ULL终结者Linux文件系统的构建根文件系统目录介绍
在构建根文件系统之前,我们先来看一下根文件系统里面大概都有些什么内容,以 Ubuntu虚拟机为例,根文件系统的目录名字为‘/’,命令如下:cd / //进入到根目录下ls //打印当前目录下的文件进入根目录后,ls查看的内容如图 1所示:图 1上图我们可以看到根目录下有很多的目录和文件,这些都是Ubuntu系统所需要的,有一些目录和文件在嵌入式Linux根文件系统中是不存在的。在这里讲解一下常用的目录文件。1./bin目录系统存放可执行文件的目录,在/bin目录下的指令可以被roo原创 2020-11-14 09:29:31 · 159 阅读 · 0 评论 -
i.MX6ULL终结者Linux文件系统的构建根文件系统简介
尽管内核是Linux的核心,但文件却是用户与操作系统交互所采用的主要工具。这对 Linux 来说尤其如此,这是因为在 UNIX 传统中,它使用文件 I/O 机制管理硬件设备和数据文件。Linux文件系统中的文件是数据的集合,文件系统不仅包含着文件中的数据而且还有文件系统的结构,所有Linux 用户和程序看到的文件、目录、软连接及文件保护信息等都存储在其中。这种机制有利于用户和操作系统的交互。根文件系统首先是一种文件系统,该文件系统不仅具有普通文件系统的存储数据文件的功能,而且相对于普通的文件系统,它的特原创 2020-11-13 09:17:43 · 141 阅读 · 0 评论 -
i.MX6ULL终结者Linux内核启动(三):内核初始化
文章目录1 Start_Kernel 函数2 Rest_Init 函数3 Init 进程start_kernel是所有Linux平台进入系统内核初始化后的入口函数,它主要完成剩余的与 硬件平台相关的初始化工作,在进行一系列与内核相关的初始化后,调用第一个用户进程- init 进程并等待用户进程的执行,这样整个 Linux内核便启动完毕。1 Start_Kernel 函数start_kernel 通过调用众多的子函数来完成 Linux 启动之前的一些初始化工作,由于start_kernel 函数里面调用原创 2020-11-13 09:15:15 · 218 阅读 · 0 评论 -
i.MX6ULL终结者Linux内核启动(二):ARM处理器相关设置
文章目录1 Linux内核入口函数Stext2 _Mmap_Switched 函数当Linux内核自解压完成后,开始执行内核代码。内核的入口函数由链接脚本vmlinux.lds决定,需要编译内核源码,才会生成脚本文件。首先分析Linux内核的链接脚本文件arch/arm/kernel/vmlinux.lds,通过链接脚本可以找到Linux内核的第一行程序是从哪里开始执行的。vmlinux.lds文件部分代码如下:492 OUTPUT_ARCH(arm) 493 ENTRY(stext) 494 j原创 2020-11-12 09:52:02 · 237 阅读 · 0 评论 -
i.MX6ULL终结者Linux内核启动(一):Linux内核自解压过程
Linux内核有两种映像格式:一种是非压缩内核,叫Image,另一种是它的压缩版本,叫zImage。zImage是Image经过压缩形成的,所以它的大小比Image小。但为了能使用zImage,必须在它的开头加上解压缩的代码,将zImage解压缩之后才能执行,因此它的执行速度比Image要慢一些。内核压缩和解压缩代码都在目录kernel/arch/arm/boot/compressed,编译完成后将产生head.o、misc.o、piggy.gzip.o、vmlinux、decompress.o这几个文件原创 2020-11-12 09:47:12 · 255 阅读 · 0 评论 -
i.MX6ULL终结者编译终结者开发板内核
文章目录1 安装第三方库2 编译终结者开发板Linux内核1 安装第三方库在编译Uboot和内核源码之前,我们需要安装三个第三库他们分别是:lzop、libncurses5-dev、u-boot-tools。首先在Ubuntu系统桌面打开终端,如图 1.1所示: 图 1.1然后在终端输入“sudo apt-get install lzop”命令,开始安装lzop库文件,如图 1.2所示: 图 1.2然后回车运行,会提示我们输入用户名密码,输完密码,开始继续安装,最后安装完成,如图 1.3原创 2020-11-10 13:15:02 · 215 阅读 · 0 评论 -
i.MX6ULL终结者内核的编译及移植Linux 5.4.3系统移植
1 获取Linux内核源码NXP官方提供了I.MX6ULL的Linux内核源码,我们可以使用git来获取Linux 5.4.3的内核源码(为了大家学习方便我们给大家提供了下载好的内核源码,保存在光盘资料的“i.MX6UL终结者光盘资料\05_uboot linux源码”目录下“i.MX6ULL_Kernel_5.4.3.tar.bz2”),下面我们讲解一下通过git下载5.4.3内核源码。首先我们使用SecureCRT连接到虚拟机的UBuntu系统,如图 1.1所示:图 1.1然后,我们使用mkd原创 2020-11-10 09:22:10 · 916 阅读 · 0 评论 -
i.MX6ULL终结者内核的编译及移植 Linux 4.1.15系统移植
目录1 Linux 4.1.15系统移植1.1 NXP官方Linux源码编译1.1.1 配置交叉编译工具链1.1.2 配置并编译Linux内核1.2 在Linux中添加自己的开发板1.2.1 添加默认开发板内核配置文件1.2.2 添加开发板对应的设备树文件1.2.3 编译开发板对应镜像1.3 添加简单设备驱动1.3.1 网卡驱动1.3.2 LED灯驱动1 Linux 4.1.15系统移植我们使用NXP官方提供的Linux源码,移植到i.MX6UL终结者开发板上。官方Linux源码可以从网盘资料中获取,路原创 2020-11-09 10:55:17 · 897 阅读 · 0 评论 -
i.MX6ULL终结者编译终结者开发板uboot
1 安装第三方库在编译Uboot和内核源码之前,我们需要安装三个第三库他们分别是:lzop、libncurses5-dev、u-boot-tools。首先在Ubuntu系统桌面打开终端,如图 1.1所示:图 1.1然后在终端输入“sudo apt-get install lzop”命令,开始安装lzop库文件,如图 1.2所示:图 1.2然后回车运行,会提示我们输入用户名密码,输完密码,开始继续安装,最后安装完成,如图 1.3所示:图 1.3然后我们在终端输入“sudo apt-g原创 2020-11-09 10:34:44 · 226 阅读 · 0 评论 -
i.MX6ULL终结者Uboot编译及移植u-boot启动流程
U-boot编译成功后会在源码目录下生成链接脚本u-boot.lds,本文档从链接脚本开始逐步分析启动u-boot的过程。vi u-boot.lds 图 1ENTRY(_start):程序的入口点为_start_start定义在了arch/arm/lib/vectors.S:SECTIONS中的对象按顺序依次存放在内存中。.text: 代码段。*(.__image_copy_start)标签不占内存空间,*(.vectors)初始化异常向量表,存放在开始位置,arch/arm/cpu/a原创 2020-11-07 09:32:24 · 615 阅读 · 0 评论 -
i.MX6ULL终结者Uboot编译及移植u-boot图形化配置
不仅Linux内核源码有图形化配置功能,u-boot也有自己的图形化配置功能,它的目录格式和编译形式和 Linux很相似,而且部分源码也是参考的Linux。主要依靠Makefile,.config,Kconfig,Makefile负责管理整个工程的文件,.config负责配置那些功能模块编译进目标文件,Kconfig负责图形化配置菜单。在图形化界面选中某个功能后,源码顶层目录的.config会增加此配置选项,使用Makefile编译u-boot镜像时会将此功能添加到u-boot。U-Boot使用“ ma原创 2020-11-07 09:19:27 · 405 阅读 · 0 评论 -
i.MX6ULL终结者U-Boot移植
文章目录1 编译NXP官方NAND版本u-boot1.1 环境搭建1.2 更改默认环境变量值1.3 编译2 编译自定义eMMC版本u-boot2.1 环境搭建2.2 添加自己的板级文件夹2.3 增加开发板配置文件2.4 添加头文件2.5 修改配置文件2.6 编译测试1 编译NXP官方NAND版本u-bootNXP官方已经把u-boot移植到了i.MX6ULL上,我们的工作就是要uboot移植到终结者开发板上。1.1 环境搭建解压:tar -vxf uboot-imx-rel_imx_4.1.15_2原创 2020-11-06 09:58:23 · 622 阅读 · 0 评论 -
i.MX6ULL终结者Uboot编译及移植U-Boot介绍
1. u-boot的使用uboot是一段裸机代码,它的实现非常复杂,主要是初始化一些硬件,部署整个计算机系统,将内核读到内存,根据环境变量去启动内核,并向内核传递参数。它的目标就是启动内核,内核启动后它的生命也随之结束。u-boot是SourceForge上的开源项目,由一个人发起,然后由整个世界所有感兴趣的人共同维护发展而来的一个bootloader,bootloader是用来引导和加载内核,向内核传递参数的,是内核引导程序的统称,bootloader除了u-boot还有bios,LilO,redbo原创 2020-11-05 09:29:34 · 949 阅读 · 0 评论