当前位置: 首页 > news >正文

【DAY38】ARM 架构嵌入式开发核心:最小系统设计、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(设备树文件,硬件平台资源信息)

3. rootfs文件系统

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

  • 所需文件:

uboot.imxzImage.dtbrootfs.tar.gz

uboot.bin -> unoot.imx

vmlinux -> Image -> zImage -> uImage

  • 硬件平台资源

启动方式USBSD卡EMMCNAND

SD卡:系统移植性好

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

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

芯片校验

查看启动方式

找到uboot.imx文件

初始化DDR

将uboot.bin迁移DDR中执行

3.uboot执行代码

3. 开发方式

下载开源代码

启动方式(SD卡、EMMC、网络):

1.uboot->SD卡

2.tftp协议从远端服务器下载zImage 和 .dtb文件到DDR

3.通过bootz命令加载Linux系统

4.nfs协议将Linux文件系统通过网络挂载到远端主机上

启动流程:

1.SD卡启动

2.开发板上电:

    • 执行0x0位置代码:
    • 查看启动方式
    • 到SD卡中找uboot.imx(uboot.bin + DCDbiaotou :时钟寄存器配置+DDR寄存器配置)
    • 将uboot.bin搬移到DDR中运行
    • 关闭看门狗、关闭dchche、初始化串口、初始化网口
      • uboot自搬移高地址
    • uboot进入人机交互
    • 倒计时等待用户输入
    • 用户没有输入则执行bootcmd
    • bootcmd:tftp下载zImage 80800000; tftp 下载.dtb 83000000
    • bootz
    • uboot->

协议

nfs协议

挂载rootfs

TFTP协议

下载zImage .dtb

内核剪裁

cd linux-imx-rel_imx_4.1.15_2.1.0_ga_alientek/
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- distclean
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- imx_alientek_emmc_defconfig
makeARCH=arm CROSS_COMPILE=arm-linux-gnueabihf-menuconfig

  • //进入地图之后选择要启用的驱动,实现内核剪裁//
  • y CH341 zImage (包含CH341驱动) //量产; 静态加载
  • M CH341 ch341.ko(驱动模块加载Linux系统中) //调试阶段;动态加载


make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- all -j16

distclean:表示清除之前的编译内容
imx_alientek_emmc_defconfig:将该配置作为内核的.config配置
menuconfig:通过图形界面配置.config
all -j16:通过16核编译代码
ARCH=arm:编译arm32位平台
CROSS_COMPILE=arm-linux-gnueabihf-:设置编译工具链

制作文件系统

工具

busybox

buildroot *

yacto

驱动

1.静态编译:zImage

driver.c ->指定目录 -> Makefile(obj-y) -> make

kconfig()

2.动态编译: .ko insmod(加载)

obj-m += driver.o

make -C $(kerdir) M=$(sell pwd) modules

1.字符设备驱动

1.cat /proc/devices

设备号:主设备号 + 次设备号

主:设备类型

//cdev_alloc

cdev(结构)-> devno(设备号)

次:设备编号

->操作方法

2.块设备驱动

3.网络设备驱动

http://www.jsqmd.com/news/638084/

相关文章:

  • HEIF Utility:突破Windows平台HEIF格式兼容性壁垒的一站式解决方案
  • 从查重焦虑到降重自由:Paperxie,本科生论文通关的「隐形导师」
  • 保姆级教程:在Simulink里用Three-Phase Fault模块模拟VSG并网线路故障(含单相接地/两相短路)
  • Go语言的sync.Map原子操作与读复制更新在并发写少场景下的设计
  • AIVideo问题解决指南:部署配置、环境变量修改常见问题汇总
  • Llama Factory部署教程:简单几步搭建大模型微调环境
  • 让能源生产融入日常风景——零碳园区光伏+智慧设施集成应用
  • 行为发生的完整机制与统一公式(新版稿2026年4月1)
  • YOLOv11改进:检测头篇 | 红外小目标 | CAMixing + P2头:卷积-注意融合模块和多尺度提取能力
  • VMagicMirror终极指南:5步打造你的虚拟形象直播助手
  • python netCDF4
  • B站缓存视频解锁指南:3步将m4s转换为通用MP4格式
  • CoPaw创意图像描述生成:从抽象概念到具体画面的效果展示
  • 下一代防火墙通用原理
  • SpringBoot微服务集成Phi-4-mini-reasoning指南:构建智能业务逻辑层
  • AI智能体视觉检测系统(TVA)工作原理系列(十六)
  • AI Agent 要抢测试工程师的饭碗了?我测了一下,结论出乎意料
  • NaViT实战:如何用Patch n‘ Pack技术处理任意分辨率图像(附代码示例)
  • Qwen3-VL-8B应用案例:智能客服看图答疑,秒回用户问题
  • python rasterio
  • 5步部署Qwen3-Reranker-0.6B:ARM服务器完整操作流程
  • 可微分物理引擎赋能AI动画
  • python shapely
  • AI智能体视觉检测系统(TVA)工作原理系列(十七)
  • Graphormer模型持续集成与持续部署(CI/CD)流水线搭建
  • cv_unet_image-colorization一文详解:ModelScope Pipeline集成与缓存优化
  • 忽视防雷器安装:潜藏的致命风险与安全隐患
  • 【Proteus仿真Arduino实战】LM35温度传感与串口数据可视化
  • hyperf方案 对接企业微信 实现接口,向指定部门发送图文消息(News),图文包含标题、描述、封面图 和跳转链接,支持多条图文。
  • 一些开发时解决跨域问题(CORS)的方法