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

一.系统移植

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

相关推荐
爱写代码的森7 小时前
鸿蒙三方库 | harmony-utils之ImageUtil图片保存到本地详解
服务器·华为·harmonyos·鸿蒙·huawei
大耳朵-小飞象9 小时前
电力安全运维的智能密码:BACS如何破解设备全生命周期管理难题,让电网安全“看得见、管得住”?
运维·安全·智慧城市·能耗系统·楼宇智控·未来生活
极客侃科技10 小时前
制造企业 MES/APS 选型:SAP PP/DS 集成、ERP-MES 边界划分与一体化架构要点
运维·架构·制造
HLC++10 小时前
Linux的进程间通信
android·linux·服务器
华清远见IT开放实验室12 小时前
实验室建设案例 | 石家庄科技信息职业学院嵌入式实验室——从底层硬件到系统应用,一所应用型高校的嵌入式人才培养这样落地
linux·arm开发·stm32·嵌入式硬件·高校·实验室建设
白露与泡影12 小时前
Arthas 实战指南:从方法耗时定位到 JVM 变量热修改
服务器·jvm·c#
神奇霸王龙13 小时前
Claude Code屠榜:MiMo与Grok紧追Codex
服务器·网络·人工智能·gpt·ai·ai编程
Web极客码13 小时前
WordPress SEO优化:提升网站排名的13个关键步骤
服务器·seo·wordpress
生活爱好者!13 小时前
我把NAS当作下载机,docker一键部署qb
运维·docker·容器
groundhappy14 小时前
idalib安装和codex ida-mcp配置
linux·开发语言·python