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

学习嵌入式之驱动

一、基础搭建

1.基础:

  c语言   软件编程语言
  数据结构   软件编程思想

2.驱动实现目标

  •         如果将Linux系统细致到开发板平台上?
  •         Liunx系统与硬件设备的适配

3.自我能力的锻炼

  • 继续强化C语言
  • 锻炼大型代码阅读和分析能力
  • 学习大型项目的代码搭建和管理的能力
  • 大型项目的软件编程思想
  • 硬件调试能力
  • 软件代码的开发和集成能力
  • Linux系统配置能力

4.Linux系统功能

(1)内存管理:虚拟地址和物理地址的映射和管理
(2)多任务的管理:管理多任务的状态
(3)网络的管理:网络的协议栈
(4)多任务间的通信:进程、线程、管道、共享内存
(5)文件系统的管理

5.shell功能(用户不能直接操作内核原因)

  • 保障Linux内核安全
  • shell命令解释器

6.移植Linux系统到IMX6ULL平台需要的文件列表

(1)bootloader:初始化硬件设备,引导内核启动,为加载内核做准备        u-boot.imx

(2)内核镜像:Linux内核核心代码(屏蔽底层不同的硬件,为上层应用提供统一接口,实现5大功能)                         ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        zimage

(3)设备树文件:硬件设备资源信息                                                imx6ull-alientek-emmc.dtb
(4)文件系统:与用户交互的系统                                                                rootfs.tar

7.IMX6ULL板子存储图

8.启动方式

(1)USB启动:上电后从USB连接的设备中读取系统文件信息并启动

(2)SD卡启动:上电后从SD卡设备中读取系统文件信息并启动

(3)EMMC启动:上电后从EMMC设备中读取系统文件信息并启动

(4)Nand Flash启动(无法使用):上电后从Nand Flash设备中读取系统文件信息并启动

9.SD烧录

Windows系统烧录方法:

        mfqtool:NXP官方提供的工具,实现系统烧录,烧录到SD卡上

二、配置Uboot启动烧录

1.烧录原理

2.烧录方式(3种)

(1)直接烧录到emmc

(2)烧录到SD卡

(3)每次从服务器下载,只把Uboot烧到SD中,Uboot起来之后,需要的文件,从Ubuntu中服务器下载,DDR又文件,通过NFS方式挂载在文件系统下,有点在于,重新修改内核和设备树,只需要更新Ubuntu的文件,文件系统修改也可同步,Uboot不用更新

3.网络配置

(1)NAT模式:

  •         (1)Windows有网,Ubuntu就有网
  •         (2)Ubuntu的IP地址是虚拟的
  •         (3)因为(2),所以NAT模式不能作为服务器,(band不了);

(2)桥接模式

  •         (1)Windows与Ubuntu公用同一个网卡,但网络是独立的;
  •         (2)Ubuntu的IP地址是独立的
  •         (3)桥接模式可以作为服务器,上网比较难(网络拥挤,需要的IP更多);
  •         (4)学校不得行!学校一个账号只有一个IP地址;

ping -》 操作开发板(ifconfig)- 》串口线-》安装minicom工具-》apt-get工具集

4..配置tftp服务器

        配置tftp的管理目录:下载从管理目录中下载,上传向管理目录中上传

5.配置nfs服务器

  • 上电 ->SD卡启动 ->uboot ->
  • tftp 80800000 zImage
  • tftp 83000000 imx6ull-alientek-emmc.dtb
  • bootz 80800000-83000000
  • ->uboot 设置bootargs 参数:说明文件系统通过nfs挂载到 192.168.1.100:/home/inux/nfs/rootfs 文件夹下

http://www.dtcms.com/a/343376.html

相关文章:

  • 3.2.6 混凝土基础施工
  • Chrome 内置扩展 vs WebUI:浏览器内核开发中的选择与实践
  • C++入门自学Day16-- STL容器类型总结
  • Git标准化开发流程
  • iOS 应用上架多环境实战,Windows、Linux 与 Mac 的不同路径
  • 详解开源关键信息提取方案PP-ChatOCRv4的设计与实现
  • 哈尔滨云前沿服务器租用类型
  • IoTDB如何解决海量数据存储难题?
  • 多模态大模型研究每日简报【2025-08-21】
  • Python学习-- 数据库和MySQL入门
  • 在线课程|基于SprinBoot+vue的在线课程管理系统(源码+数据库+文档)
  • 华为仓颉语言的函数初步
  • rust语言 (1.88) egui (0.32.1) 学习笔记(逐行注释)(三) 文本标签、按钮、文本框基本使用
  • Rust 入门 模块 (二十二)
  • 意象驱动下的感知与认知信息结构:上古汉语同源词研究视角——基于黄易青《上古汉语同源词意义系统研究》的理论框架
  • Eject配置
  • 常见的端口扫描
  • 从零到一:RAGFlow 本地部署全攻略
  • Python工程师向项目管理转型的深度分析与学习道路规划
  • 容器化与云安全实践:ChartMuseum、私有仓库、云安全、应用部署、生命周期、定时任务、HPA管理案例流程
  • visual studio更改git提交的用户名和邮件
  • LT8712SX,Type-C/DP1.4 /eDP转 DP1.4/HD-DVI2.0 带音频
  • 服务区小汽车违停检测算法创新与实践
  • Android系统框架知识系列(十二):通知中枢 - Notification Manager Service深度解析
  • 工厂模式全解析:简单、方法、抽象工厂详解
  • comfyUI背后的一些技术——Checkpoints
  • leetcode_238 除自身以外的数组乘积
  • 图--常见面试问题
  • 面试可能问到的问题思考-Redis
  • 开源后台管理系统