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

一.系统移植

系统移植:在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工具

相关推荐
朽棘不雕28 分钟前
可执行程序的格式
linux
IT摆渡者1 小时前
11Panel 部署雷池WAF
linux
学习路上_write1 小时前
Linux黑马命令学习
linux·运维·服务器
那年窗外下的雪.1 小时前
AIDC 学习日志|第 22 天|All-Active/Single-Active 故障演练设计
服务器·网络·学习·算法·哈希算法
yunwei372 小时前
eBPF 教程:追踪 CUDA GPU 操作
linux·后端·性能优化
Android系统攻城狮2 小时前
Linux Gstreamer深度解析之gst_audio_channel_reorder_map调用流程与实战(十八)
linux·运维·服务器·音视频进阶·gstreamer音视频进阶
新时代牛马2 小时前
docker run 起不来?从dockerd、containerd 到runc 一条线讲透
运维·docker·容器
TomEval2 小时前
【App 自动化】14 - App 自动化基础与环境
运维·自动化
cc_yy_zh2 小时前
学习使用kali抓包
服务器·学习·php
盛世宏博智慧档案2 小时前
户外配电柜为什么要装POE供电以太网温湿度传感器?
服务器·网络·人工智能·监控·温湿度·配电柜