【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协议

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