硬件驱动——系统移植与环境搭建

一.系统移植

系统移植:在IMX6ULL平台移植linux系统

驱动课程:在IMX6ULL平台linux操作系统中适配IMX6ULL外设资源

二.Linux系统移植

1.linux系统:操作系统的内核

shell的作用:保护内核,命令解释器

linux内核的任务:(1)内存管理MMU(2)任务管理(3)网络管理(4)任务间的通信(5)文件系统的管理

2.linux系统移植需要的文件列表

bootloader:(1)初始化硬件外设(2)加载引导启动内核(指定内核启动后寻找的文件系统及其路径)linux系统--->软件(一段代码)--->压缩--->zImage内核镜像

文件系统:提供一个与用户交互的系统结构(支持用户命令,用户安装软件,用户存储文件,用户查看系统信息,用户操作设备)

※三.系统移植的文件及其作用

1.uboot:

一段逻辑代码,主要完成两个功能:初始化硬件外设,加载内核

2.zImage:

一个软件,主要完成五个功能:内存管理,任务管理,进程间通信,网络通信,文件系统管理

3.dtb:

硬件设备的信息,与内核搭配使用的一个保存硬件设备信息的文件,称为设备树文件

4.rootfs:

人机交互系统,文件系统与用户实现交互:shell命令,库文件,文件的管理(linux系统一切皆文件,可以实现对设备操作和内核信息的查看)

四.IMX6ULL的Soc资源

IMX6ULL-Mini平台分为:核心板(系统启动必须具备的资源)和底板(外设资源)

核心板:(1)IMX6ULL芯片:32k Icache,32k Dcache,128k Lcache,128k SRAM(在初始化DDR之前可以使用的不需要初始化的一段内存空间),96k BotROM(厂家固化的代码)

(2)DDR(512M):内存,掉电数据丢失,读写速度快

(3)EMMC(8G):EMMC分为EMMC0和EMMC1,其中一个为核心板上的8GEMMC芯片,另一个为底板的SD卡(32G)的EMMC

内存和外存都需要初始化

内存特点:读写速度快,造价昂贵,掉电数据丢失

外存特点:读写速度慢,造价便宜,掉电数据不丢失

内存与CPU直接交互

都要进行初始化

五.IMX6ULL启动方式

(1)USB启动:在硬件平台没有系统的情况下,上电第一次启动,驱动后,需要通过PC将系统文件通过USB传输给开发板完成启动

(2)SD卡启动:将系统烧录到SD卡上,由SD卡启动,平台代码开发调试时,或者检测硬件平台好坏的时候使用SD卡

(3)EMMC启动:将系统烧录到EMMC上,由EMMC启动,平台代码随开发板完成自启动,使用EMMC

(4)NAND(无法实现):将系统烧录到Nand Flash上,由Nand Flash启动

桥接模式:Ubuntu和windows没有任何关系,直接使用网卡。windows和ubuntu是独立的IP地址,Ubuntu可以作为服务器

NAT模式:ubuntu作为windows下的一个软件开始用软件,windows有网,ubuntu就有网,Ubuntu的IP地址是虚拟出来的,不能作为服务器

※六.IMX6ULL启动流程

BotROM启动阶段:(1)上电启动,执行0x0处的代码(2)执行IMX6ULL,96K,BotROM代码(3)CPU自检,查看启动方式(4)查看imx数据(IVT+BOOTDATA+DCD)(5)初始化DDR(6)读取BOOTDATA(uboot.bin)放入DDR运行

uboot启动阶段:(1)自搬移到高地址(2)初始化硬件外设:UART,i2c,网口,EMMC(3)进入用户交互系统,等待用户输入回车(4)没有输入回车执行bootcmd(5)找到zImage和dtb文件(6)bootz加载内核和设备树文件,将bootargs写入设备树choosen节点,并通过r2将设备地址传给内核

zImage:(1)对所有外设初始化(根据设备树中的配置)(2)实现5大功能(3)根据设备树的配置,寻找文件系统(如果找不到kernel panic)(4)启动init进程(5)init通过fork+exec方式启动所以配置自启动进程任务(6)挂载文件系统(7)启动shell

※bootcmd:uboot倒计时结束后执行的任务

※bootargs:对内核进行传参

※7.uboot

uboot的功能:初始化硬件外设,引导启动内核

uboot工作流程:(1)初始化i2c,DDR,EMMC,Serial,Net(2)进入人机交互环节:用户输入回车进入uboot系统,可以输入命令与uboot交互。用户不输入回车,uboot会执行bootcmd

uboot裁剪:通过make menuconfig进行裁剪,需要的功能选中,不需要的功能去除

uboot编译流程

※8.根文件系统

根文件系统的制作

根文件系统的自启动

根文件系统涉及的脚本:

udev机制,设备驱动加载脚本,busybox,live-build工具

相关推荐
忘梓.3 小时前
Linux的写作日记:Linux基础开发工具(一)
linux·运维·服务器
Gss7773 小时前
LVS 负载均衡
运维·负载均衡·lvs
wanhengidc3 小时前
云计算和云手机之间的关系
运维·网络·游戏·智能手机·架构·云计算
ZLRRLZ3 小时前
【Linux操作系统】Linux基础指令和权限
linux·运维·服务器
monster - r3 小时前
云原生-高级阶段-利用rsync备份全网服务器数据
运维·服务器·云原生·github
手握风云-3 小时前
JavaEE 初阶第二十四期:网络原理,底层框架的“通关密码”(四)
运维·服务器·网络
阿尔法哲1 天前
CentOS系统 OPENSSH一键升级脚本
linux·centos
做运维的阿瑞3 天前
一张脑图吃透Linux用户权限:useradd、usermod、umask、setfacl、chmod特殊位、chown、chage连招大全
linux
handsome123454 天前
CentOS 8.5.2.111部署Zabbix6.0 手把手、保姆级
运维·mysql·centos·zabbix·监控·centos8·zabbix6·linux源