【DAY38】嵌入式 Linux 系统移植与驱动开发入门指南

一、ARM总结

单片机最小系统:

  1. 电源电路
  2. 晶振电路
  3. 复位电路

ARM裸机:大内存 + 大外存(SD卡)

(IMUX6ULL) 512M + 8G

ARM -> 处理架构 -> Cortex-A7 (有MMU) 消费电子 图像、音视频处理

单片机:小内存 + 小外存

256byte + 4k

Cortex-M3/M3 (没有MMU) 工业控制、IOT

ARM逻辑

1.启动流程

2.IMX6ULL时钟系统

3.中断系统

4.GPIO

5.Timer PWM

6.UART

7.I2C

8.SPI(时序)

9.RGBLCD

10.ADC

11.USB

12.SDIO

二、学习驱动目标

1. IMX6ULL平台移植Linux操作系统

  • 任务调度(多任务)
  • 协议栈(网络、USB、CAN)
  • 文件系统
  • 进程间通信
  • 设备管理

2. 软硬件裁剪

增加需要的功能

删除冗余的功能

3.外设驱动的适配

字符设备驱动编写 #《Linux设备驱动开发详解》-宋宝华#

三、开发板烧写LINUX系统

1. 烧写工具

2. 烧写程序

Linux系统:

1.bootloader(UBOOT) :一段加载引导系统启动的逻辑代码,为加载执行内核做前期的准备(初始化硬件设备、加载资源)

设置栈指针寄存器

初始化DDR

初始化其余外设

2.Linux内核:纯C语言编写的软件程序

zImage(内核镜像)

dtb(设备树文件)

内存管理

多任务管理

进程间通信

网络协议

文件系统管理

  1. rootfs文件系统

用户层与内核层交互、对文件系统管理和操作

  • 所需文件

|-----------|--------|------|---------------|
| uboot.imx | zImage | .dtb | rootfs.tar.gz |

uboot.bin -> unoot.imx

vmlinux -> Image -> zImage -> uImage

  • 硬件平台资源

|------|-----|-----|------|------|
| 启动方式 | USB | SD卡 | EMMC | NAND |

SD卡:系统移植性好

1.上电启动,加载0x0位置代码(出场一段BotROM代码)

2.执行BotROM代码(IMUX6ULL的RAM中执行)

芯片校验

查看启动方式

找到uboot.imx文件

初始化DDR

将uboot.bin迁移DDR中执行

3.uboot执行代码

3. 开发方式

协议

nfs协议

TFTP协议

相关推荐
深念Y2 天前
AMD 芯片组驱动触发高频 SSD 写入的问题及解决方案
windows·bug·ssd·日志·芯片·驱动·amd
Dlrb12118 天前
Linux驱动---PinCtrl 与 GPIO 子系统详解以及基于PinCtrl 与 GPIO的 LED 驱动编写
linux·arm·imx6ull·驱动·gpio子系统·pinctrl
W.W.H.8 天前
将驱动编译成模块并安装到rootfs
linux·物联网·wifi·rootfs·驱动
你的强来了99815 天前
好用的USB设备信息查看工具USBList(四)——驱动文件操作
注册表·驱动·usb·inf·驱动版本·硬件id
FORCECON117 天前
力控SCADA驱动 :告别传统寻址,EIP协议全新适配升级
自动化·驱动·scada·监控组态软件·采集监控平台
纪伊路上盛名在21 天前
NVML ERROR_ RM has detected an NVML_RM version mismatch
linux·数据库·gpu·驱动
嵌入式老牛2 个月前
去饱和检测+前沿消隐+两级关断:SiC MOSFET 短路保护方案
驱动·sic·短路保护
程序猿玖月柒2 个月前
ubuntu22.04.2安装英伟达驱动
驱动开发·驱动·英伟达·端侧ai
嵌入式老牛2 个月前
三电平栅极驱动电路案例
驱动·igbt·sic
feasibility.3 个月前
nvidia-smi 失灵,显存凭空消失?—— NVML 驱动版本错配的记录
linux·运维·服务器·经验分享·nvidia·驱动