嵌入式Linux

uboot

1. 什么是bootloader

Linux 系统的启动必须需要一个 bootloader 程序 , bootloader它作为系统启动过程钟运行的第一段代码,它的基本职责是为了操作系统的启动做好准备,可以把bootloader当作一本书的目录,指导系统如何找到操作系统章节 并开始阅读, 在电脑或者嵌入式设备钟, bootloader首先被执行,它初始化时钟,看门狗,SDRAM等外设,然后将linux内核从flash 钟拷贝到SDRAM钟,最后启动Linux内核

2. uboot 启动过程中做了那些事情

第一阶段:主要负责准备系统硬件以及软件环境,为操作系统的加载做准备,主要的任务包括初始化时钟,关闭看门狗,关闭中断,关闭MMU, 初始化SRAM,初始化flash。
第二阶段: 完成了硬件的初始化和基本配置后,uboot进入第二阶段,负责加载操作系统到内存,并设置内核参数参数,启动它

3. 为什么要传递参数给内核

在完成了之前的硬件初始化,可以说内核已经适应了开发板,然而内核并不是适配所有的开发板,此时它对于开发板还一无所知,需要传递一些必要的信息(开发板的ID , 内存的大小等)来告诉内核所处的环境

根文件系统

什么是根文件系统

首先根文件系统是一种文件系统,它不仅具备普通文件系统储存数据的功能,它还有其特殊性,** 它是linux系统启动后所挂载的第一个文件系统,内核代码的映像文件就保存在根文件系统中 ** 。引导启动程序**会在根文件系统挂载之后把一些初始化脚本(rcs,inittab服务)加载到内存中去运行,里面包含了linux系统所能够运行的必要吃程序,库等,比如给用户提供linux的控制界面的shell程序,动态连接程序运行时所需要的glibc库等。

根文件系统就像是linux系统的“家”,电脑启动时首先需要到“家”来获取所有必要的东西,比如程序, 文件,工具等,好让系统正常运行。系统**

如何构建根文件系统

  1. 明确目标系统的需求
    在开始之前,需要明确系统的需求,包括硬件平台,预期功能,性能目标以及内存 , 存储空间等
  2. 选择基础系统:
    根据需求分析的结果,选一个适合的基础系统或者发行版作为起点,对于嵌入式系统,通常会选择Buildroot、Yocto Project或者是直接基于一个最小化的Linux发行版。
  3. 配置内核
    定制Linux内核,确保对目标硬件和所需功能的必要驱动和模块
  4. 构建文件系统
    使用工具链编译 和 安装基本的工具和库。这可能包括标准的C库(如glibc或musl)、shell、核心工具集(如BusyBox),以及任何特定于应用的软件包。
    安排文件系统层次结构,确保遵循标准的Linux文件系统结构,这对于系统的维护和扩展至关重要
  5. 优化和定制
    根据需要定制和优化根文件系统。这包括移除不必要的软件包和模块、优化启动脚本和服务以加快启动时间,以及应用可能的安全加固措施。
  6. 测试和验证
    在目标硬件或模拟器上测试构建的根文件系统,验证所有功能正常工作,性能符合预期,且没有安全漏洞
  7. 维护和更新
    准备好对根文件系统进行必要的更新和维护策略,包括安全更新和功能升级

malloc , kmalloc 以及vmalloc 的区别

  • malloc 是在用户空间使用, 分配的是进程虚拟空间的内存, 最终系统调用mmap与内核进行交互。分配的是连续的虚拟内存空间但物理内存不一定连续。
  • kmalloc 使用场景是在内核空间, 分配的也是虚拟连续物理不一定连续的内存空间, 但是使用kmalloc的花销较大,因为要维护更复杂的页表映射,同时它也能分配很大的内存空间,如几十到几千字节或者更大
  • vmalloc:使用场景是在内核空间, 分配的也是虚拟连续 物理也连续的内存空间。用与分配较小的内存空间,所以它的访问的速度比kmalloc快,因为不需要维护复杂的页表映射
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值