嵌入式Linux系统

计算机专业基础笔记目录可以点这儿:计算机专业基础笔记目录

知识构架及层次

Linux内核由三部份构成:

嵌入式Linux系统构成及启动略析

嵌入式Linux启动类同4X100米接力跑,是由多个部份共同完成,包括:

嵌入式Linux三剑客之uboot技术Bootloader概念

Bootloader是操作系统内核运行前运行的一段小程序。

功能:

初始化硬件设备,如对CPU、SDRAM、Flash、串口等进行初始化;加载内核到显存并执行内核代码;提供一些命令工具,如操作flash、从PC机搬运内核到开发板等功能。

Bootloader相当于PC机上BIOS和GRUB功能集合体。

UBOOT

常见的Bootloader:

UBOOT简介

U-Boot是一个主要用于嵌入式系统的引导加载程序,可以支持多种不同的计算机系统结构,包括PPC、ARM、AVR32、MIPS、x86、68k、Nios与MicroBlaze。这也是一套在GNU通用公共许可证之下发布的自由软件。

这个项目起源于MagnusDamm.在8xxPowerPC构架下写的引导加载程序:8xxROM。1999年三月,WolfgangDenk将项目移转回linux安全加固,但不容许数字开头的项目名称,所以更名为PPCBoot。2002年11月PPCBoot更名为U-Boot。

UBOOT优势UBOOT功能UBOOT工作模式UBOOT源码目录

UBOOT编译过程解压缩uboot源码到目录下按照开发板进行配置

makesmdk2440编译uboot

make烧录uboot.bin到开发板(使用仿真器完成)启动开发板后linux 原理 内核 面试,uboot就运行上去

典型uboot命令

复印环境变量:printenv

功能:复印开发板上的环境变量值

例:

Uboot> printenv
baudrate=115200
ipaddr=192.168.1.1
ethaddr=12:34:56:78:9A:BC
serverip=192.168.1.5
Environment size: 80/8188 bytes

设置环境变量:setenv变量值

功能:设置开发板上的环境变量值

例:

Uboot> setenv ethaddr 12:34:56:78:9A:BC
Uboot> setenv ipaddr 192.168.1.1
Uboot> setenv serverip 192.168.1.254   
			(tftp服务器的地址)

保存环境变量:saveenv

功能:保存开发板上的环境变量值

网路加载内核:tftp待加载到的显存地址待加载文件名

功能:通过网路将坐落PC机上tftp服务器目录(如为/tftpdroot)下的文件加载到开发板显存地址

例:把server(IP=环境变量中设置的serverip)中/tftpdroot/下的vmlinux通过TFTP读入到化学显存32000000处。

Uboot> tftp 32000000 vmlinux

启动内核命令:bootm内核显存地址

功能:将坐落内核显存地址处的内核启动上去

例:

Uboot> bootm 0x30008000
## Booting image at 30008000 ...
Starting kernel ...
Uncompressing
Linux......................................................................
done.

NandFlash操作命令:nand命令码参数

功能:

嵌入式Linux三剑客之内核技术内核介绍(功能)

内核是嵌入式Linux系统的核心,负责管理系统的进程、内存、文件系统、网络和设备驱动等。假如把月球称作计算机系统,内核就是管理计算机资源的“政府”,内核中的每位功能模块相当于政府中的每位部门,如右图所示。

从功能角度来看:

内核就是一系列功能模块构成,包括:

Linux内核中每位模块独立完成相应功能,并能与其它模块互相配合。

Linux内核源码及组织

Linux内核源代码采用树状结构进行组织,十分合理地把功能相关的文件都置于同一个子目录下,致使程序更具可读性。

内核源代码下载地址:

Linux内核源码目录:

Linux内核剪裁及编译

内核面试题_linux 原理 内核 面试_linux内核面试常见问题

具体的先省略。。。我也没怎样读懂。。。

Kconfig的五种基本结构

嵌入式Linux三剑客之文件系统技术

此处的文件系统是应用程序等数据文件的集合体。

BusyBox

BusyBox最初是由BrucePerens在1996年为DebianGNU/Linux安装盘编撰的。

其目标是在一张软驱上创建一个可引导的GNU/Linux系统

BusyBox使用了符号链接便于使一个可执行程序看上去像好多程序一样。对于BusyBox中包含的每位工具来说,就会这样创建一个符号链接,这样就可以使用这种符号链接来调用BusyBox了。BusyBox之后可以通过argv[0]来调用内部工具。

Glibc

Glibc是提供系统调用和基本函数的C库。

glic库一般使用于X86构架的Linux系统,它似乎十分完备,然而却十分庞大,对于嵌入式系统来说,使用它意味着显存的消耗也会特别巨大。

uClibc是一个大型的C库,应用于嵌入式Linux系统开发。它基本实现了glibc的功能,几乎所有glibc支持的应用程序都能在uClibc上运行。

linux内核面试常见问题_linux 原理 内核 面试_内核面试题

课后作业

1.嵌入式Linux操作系统包括(bootloader)、(Linux内核)、(根文件系统)三部份组成。

2.在PC机上Linux系统编译使用的编译器名为(gcc),ARM处理器嵌入式编译器名为(arm-linux-gcc)。

3.从C语言角度来理解,嵌入式Linux内核仅是诸多(函数)的集合体,其有一个类似于main的函数linux 原理 内核 面试,名称为(start_kernel)。

4.阐述bootloader的功能:

初始化硬件设备linux视频,如对CPU、SDRAM、Flash、串口等进行初始化;加载内核到显存并执行内核代码;提供一些命令工具,如操作flash、从PC机搬运内核到开发板等功能。

5.在uboot中,复印开发板带环境变量值的命令为(printenv),设置IP地址为192.168.1.1的命令为(setenvipaddr192.168.1.1),如果嵌入式内核名为vmlinux,通过tftp加载内核的命令为(tftp32000000vmlinux),启动嵌入式Linux内核的命令为(bootm0x32000000)。

6.嵌入式Linux内核剪裁命令为(makemenuconfig);剪裁完成后生成配置选择文件(.config);编译内核命令为(makezImage)。

7.启动linux后常用的命令如ifconfig、cp、ls等一般坐落(文件系统)中;嵌入式Linux环境下生成文件系统的常用工具为(mkyaffs2img);以yaffs方式为例,将嵌入式文件夹压缩成一个yaffs2格式的文件系统命令为(mkyaffs2img文件夹镜像文件名)。

8.建立嵌入式Linux系统时,烧录bootloader的工具为(hjtag);烧录Linux内核通常使用(bootloader)来烧录,烧录文件系统通常使用(bootloader)来烧录。

测验:

写出嵌入式Linux内核剪裁基本步骤(要求写出具体命令)

make menuconfig
make zImage
# Ubuntu可以使用: make uImage

假如向内核添加RC5加密代码rc5.c,拟储存到linux内核文件夹crypt目录下,并要求能以图形形式供用户剪裁,关联宏为CONFIG_RC5_ENCRYPT。写出该文件夹下Makefile文件和Kconfig文件更改内容。

Kconfig文件添加的内容:

config RC5ENCRYPT
	bool "RC5 ENCRYPT SUPORT"
	help 
		this is a simple test ,no use

Makefile文件添加的内容:

obj-$(CONFIG_RC5_ENCRYPT) += rc5.o

linux内核面试常见问题_linux 原理 内核 面试_内核面试题

小测验

1、构建嵌入式Linux系统是嵌入式开发的重要内容,包括bootloader剪裁和编译、Linux内核剪裁和编译以及文件系统剪裁和制做等流程。请简答:

(1)阐述通用bootloader核心功能(2分)。

(2)写出嵌入式Linux内核剪裁基本步骤(要求写出具体命令)(3分)

(3)假如向内核添加RC5加密代码rc5.c,拟储存到linux内核文件夹crypt目录下,并要求能以图形形式供用户剪裁,关联宏为CONFIG_RC5_ENCRYPT。写出该文件夹下Makefile文件和Kconfig文件更改内容。(3分)

(1)

初始化硬件设备,如对CPU、SDRAM、Flash、串口等进行初始化;加载内核到显存并执行内核代码;提供一些命令工具,如操作flash、从PC机搬运内核到开发板等功能。

(2)

make menuconfig
make zImage

(3)

Kconfig文件添加的内容:

config RC5ENCRYPT
	bool "RC5 ENCRYPT SUPORT"
	help 
		this is a simple test ,no use

Makefile文件添加的内容:

obj-$(CONFIG_RC5_ENCRYPT) += rc5.o

2、简述sqilte的移植步骤(写出具体命令)。(2分)

(1)下载源码包并解压缩

(2)生成Makefile

./configure CC=arm-linux-gcc –prefix=/opt/sqlite –host=arm-linux

(3)编译及安装

make
make install

安装后可以在/opt/sqilte下看到移植好的可执行程序及

本文原创地址:https://www.linuxprobe.com/qrslxtjsjzyj.html编辑:刘遄,审核员:暂无