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

相关推荐
嵌入式老牛3 天前
SST专题3-1 基于光分路器的MMC分布式控制系统架构
分布式·架构·驱动·光纤·sst
欲盖弥彰13148 天前
Linux设备驱动 -- TMP75AIDR驱动移植
linux·驱动开发·驱动·驱动移植·嵌入式linux驱动·tmp75aidr
特立独行的猫a16 天前
OpenHarmony海思WS63星闪平台:LVGL UI框架底层显示驱动移植指南
ui·lvgl·移植·openharmony·驱动·ws63
星马梦缘2 个月前
驱动层开发——蜂鸣器驱动
stm32·单片机·嵌入式硬件·hal·驱动
嗯嗯**2 个月前
Neo4j学习3:Java连接图库并执行CQL
java·学习·spring·neo4j·图数据库·驱动·cql
AK_L_____3 个月前
WS1625/CS1625 LED芯片的驱动
驱动
爱学习的大牛1233 个月前
应用层的文件句柄传递给 驱动层 完成文件写入
驱动·文件写入·应用层句柄
染指11103 个月前
28.实现MDL驱动读写-Windows驱动
windows·驱动开发·驱动·mdl
云卓SKYDROID4 个月前
无人机舵机驱动模块技术解析
无人机·驱动·知识科普·高科技·云卓科技