嵌入式Linux学习(第N天)——Linux系统知识总结

吐槽

Emmmm先来吐槽一波,十分不推荐大家读的一本书《ARM嵌入式Linux系统开发详解》,第一个是年代久远,知识点太久远了,Linux发展迅速,很多已经不那么干了…比如我想看的设备树里面就一点点也没有介绍,因为这是最近10年的技术…(10年…可想而知这玩应有多out)…第二点这玩应前后顺序感觉有点坑…我飞速看完了整本书…脑瓜子都痛了…感觉帮助不是很大…所以这就当是我这个栏目的结束吧,把我飞速看完的重点总结一下,大致理解Linux操作系统架构。我觉得大概理解一些,我就可以去看Petalinux了。那个用的是一种交叉编译软件,Petalinux是Xilinx,Zynq系列的一款emmmm我觉得就是快速搭建适合平台操作系统的交叉编译软件。

BootLoader

BootLoader是嵌入式软件开发的第一个环节,他把嵌入式系统的软件和硬件紧密衔接在一起。BootLoader初始化目标硬件,嵌入式操作系统提供硬件资源信息,并装载系统。
介绍一种基于U-boot(一种配置BootLoader的一款软件)的一种启动步骤
在这里插入图片描述

Start标号设置全局变量,供启动程序吧U-boot映像从Flash存储器复制到内存中。
Reset标号配置寄存器
Cpu_init_crit标号刷新cache和TLB
Lowlevel_init复制SMRDATA到内存
Relocate标号把uboot的Stage2从Flash加载到内存
Start_armboot初始化ARM系统硬件和环境变量
main_loop主要包括初始化启动次数限制、设置软件版本号、打印启动信息、解析命令等

解析Linux内核

http://www.kernel.org是linux内核代码的官方站点。在Linux系统上内核通常在/usr/src目录下
几个重要的Linux内核文件
vmlinux:仅包含一个最小功能内核
initrd:BootLoader初始化的内存盘
System.map:是内核符号表,对应一个内核vmlinux映像

嵌入式Linux启动流程

在这里插入图片描述
在这里插入图片描述

交叉编译工具链(未尝试过…没板子…简单介绍)

交叉编译就是在一种平台航编译出能运行在结构不同的另一种平台上的系统,如x86编译出arm上能跑的系统(二者指令集不同),但在x86上就不能跑。
工具包括交叉编译的编译器、连接器、目标库等…Win上最著名的就是ADS。ADS提供的Armcc编译器就可以方便的生成针对ARM CPU的可执行代码。
Linux系统上就要用gcc编译器了。
在运行gcc时,要按照规定格式命名:CPU-PLATFORM-OS,因为gcc只会找命名正确的应用程序路径。ARM的话就是arm-linux-gnu。
构建交叉编译链的3种方法
1、分步手工编译
2、通过脚本编译
3、直接获取交叉编译链
需要源码
1、Linux内核代码
2、glibc库
3、用户常用工具如binutils
4、内核线程包
5、编译器gcc
具体操作略(搭建编译环境)…因为我用Petalinux…之后学习

猜你喜欢

转载自blog.csdn.net/u010594449/article/details/105847670
今日推荐