嵌入式底层驱动开发笔记1

一、开发板
1\ bootloader的工作原理及作用?

Linux 系统要启动就必须需要一个 bootloader 程序,也就说芯片上电以后先运行一段
bootloader程序。这段bootloader程序会先初始化DDR等外设,然后将Linux内核从flash(NAND,
NOR FLASH,SD,MMC 等)拷贝到 DDR 中,最后启动 Linux 内核。当然了,bootloader 的实
际工作要复杂的多,但是它最主要的工作就是启动 Linux 内核,bootloader 和 Linux 内核的关系
就跟 PC 上的 BIOS 和 Windows 的关系一样,bootloader 就相当于 BIOS。所以我们要先搞定
bootloader,有很多现成的 bootloader 软件可以使用,比如 U-Boot、vivi、RedBoot 等

2\ u-boot两个阶段的工作任务有哪些?

第一阶段为汇编阶段、第二阶段为C阶段
第一阶段在SRAM中、第二阶段在DRAM中
第一阶段注重SoC内部、第二阶段注重SoC外部Board内部

3\经常使用的u-boot命令有哪些?
uboot 是支持网络的,我们在移植 uboot 的时候一般都要调通网络功能,因为在移植 linux
kernel 的时候需要使用到 uboot 的网络功能做调试。uboot 支持大量的网络相关命令,比如 dhcp、
ping、nfs 和 tftpboot

4\如何编译u-boot并烧写到开发板?

MfgTool 工具是 NXP 提供的专门用于给 I.MX 系列 CPU 烧写系统的软件

二、内核
1、Linux内核组成模块有哪些?Linux版本号的作用?

进程调度模块、进程间通信模块、内存管理模块、文件系统模块、网络接口模块
Linux内核版本有两种:稳定版和开发版 ,Linux内核版本号由3组数字组成:
第一个组数字.第二组数字.第三组数字
第一个组数字:目前发布的内核主版本。
第二个组数字:偶数表示稳定版本;奇数表示开发中版本。
第三个组数字:错误修补的次数。

2、如何编译配置裁剪内核?
1 直接使用命令 make menuconfig,这样操作的话会配置很多该单板不需要的文件,使得配置后的内核十分臃肿,所以不可取。
2)在Linux内核中找到 ././arch/arm/configs/目录下查看与该单板相适应的配置文件,使用该配置文件即可,如此一来配置好的内核相对精简。
3)使用单板厂商的配置文件进行配置,先将给厂商的配置文件 cp 为 .config文件之后再进行配置。

3、Linux内核的启动流程?
1.Linux 内核入口 stext
2. __mmap_switched 函数 __mmap_switched 函数定义在文件 arch/arm/kernel/head-common.S 中
3.start_kernel 通过调用众多的子函数来完成 Linux 启动之前的一些初始化工作
4.rest_init 函数定义在文件 init/main.c 中
5.kernel_init 函数就是 init 进程具体做的工作,定义在文件 init/main.c 中,

三、
1、根文件系统的作用?

这是 Linux 移植的最后一步,根文件系统
构建好以后就意味着我们已经拥有了一个完整的、可以运行的最小系统。以后我们就在这个最
小系统上编写、测试 Linux 驱动,移植一些第三方组件,逐步的完善这个最小系统。最终得到
一个功能完善、驱动齐全、相对完善的操作系统。

根文件系统首先是内核启动时所 mount(挂载)的第一个文件系统,内核代码映像文件保存在
根文件系统中,而系统引导启动程序会在根文件系统挂载之后从中把一些基本的初始化脚本和
服务等加载到内存中去运行。

2、如何制作根文件系统?

编译 BusyBox 构建根文件系统
一般我们在 Linux 驱动开发的时候都是通过 nfs 挂载根文件系统的
3、nfs、ftp的作用?
nfs 命令
nfs(Network File System)网络文件系统,通过 nfs 可以在计算机之间通过网络来分享资源,
比如我们将 linux 镜像和设备树文件放到 Ubuntu 中,然后在 uboot 中使用 nfs 命令将 Ubuntu 中
的 linux 镜像和设备树下载到开发板的 DRAM 中。这样做的目的是为了方便调试 linux 镜像和
设备树,也就是网络调试,通过网络调试是 Linux 开发中最常用的调试方法。
我们一般使用 uboot 中的 nfs 命令将 Ubuntu 中的文件下载到开发板的 DRAM 中,在使用
之前需要开启 Ubuntu 主机的 NFS 服务,并且要新建一个 NFS 使用的目录,以后所有要通过
NFS 访问的文件都需要放到这个 NFS 目录中。

  • 0
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

躺尸研究员

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值