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

《嵌入式驱动(一):系统移植》

系统移植  


一、Linux系统移植需要的文件  

        1.uboot
一段逻辑代码,主要完成两个功能:
初始化硬件外设
加载内核
2.zImage
一个软件,主要完成如下5打功能:
内存管理
任务管理
多任务间的通信
网络管理
文件系统管理
3.dtb
与内核搭配使用的一个包含硬件信息的文件,称为设备树文件
4.rootfs
文件系统,与用户实现交互
shell命令
库文件
文件的管理(Linux系统一切皆是文件,可以实现对设备的操作和内核信息的查看)

二、IMX6ull SOC资源  


IMX6uLL-Mini平台分为:核心板(系统启动必须具备的资源)和底板(外设资源)
核心板:
IMX6uLL芯片
32K ICache           指令缓存
32K DCache         数据缓存
128K L2Cache     指令和数据缓存
128K SRAM         在初始化DDR之前可以使用的不需要初始化的一段内存空间
96k  BotROM      厂家固化的启动代码
DDR 512M
内存,掉电数据丢失,读写速度快
EMMC 8GEMMC分为EMMC0和EMMC1,其中一个为核心板上的8GEMMC芯片、另一个为底板的SD卡
(32G)的EMMC

三、IMX6uLL启动方式


启动方式:
USB启动:驱动后,需要通过PC将系统文件通过USB传输给开发板完成启动在硬件平台没有系统的情况下,第一次启动使用USB启动
SD卡启动:将系统烧录到SD卡上,由SD卡启动平台代码开发调试时,或者检测硬件平台好坏的时候,使用SD卡
EMMC启动:将系统烧录到EMMC上,由EMMC启动平台代码随开发板完成自启动,使用EMMC
NAND(无法实现):将系统烧录到Nand Flash上,由Nand Flash启动

四、烧录方法

  
1. Windows烧录到 SD卡上
mfgtool  NXP
2. Widows烧录到EMMC上
3. Ubuntu烧录到SD卡上
4. Ubuntu烧录到EMMC上
5. tftp + nfs网络启动

五、IMX6uLL启动流程

1. 上电启动,执行0x0处的代码(中断向量表 -> 复位异常 -> 跳转到对应函数实现启动)
2. 执行IMX6ull内部的96k的BotROM代码
完成对CPU信息校验
查看启动方式
根据启动方式寻找可执行代码(IVT + BOOT DATA[uboot.bin] + DCD [DDR寄存器信息])
BotROM代码会找到DCD并对DDR实现初始化
将uboot.bin拷贝到DDR中运行
3. uboot
重新设置中断向量表的位置(协处理器 CP15)
初始化硬件外设
串口
网口
EMMC
加载引导内核启动
uboot会实现自搬移,为内核腾出来内存空间
在EMMC上寻找zImage和DTB文件(或者利用tftp从服务器下载),并加载到DDR中
通过bootz命令来启动内核zImage
uboot将文件系统相关的参数 bootargs 写入到设备树的choosen节点中
uboot向内存传参:r0  固定值  r1 CPU ID号    r2 设备树内存地址
内核根据设备树信息重新初始化外设
内核会找到choosen节点查找文件系统所在位置
内核引导启动文件系统中的内核进程进程 fork + exec启动其余所有进程任务
其中有一个进程shell终端
系统启动完成进入人机交互的界面

六、uboot  


uboot的功能:
初始化硬件外设
引导启动内核
uboot工作流程:
初始化i2c、DDR、EMMC、Serial、Net
进入人机交互环节
用户输入回车进入uboot系统,可以输入命令与uboot交互
用户不输入回车,uboot会执行bootcmd

重点


1. Linux系统移植都需要哪些文件?每个文件的作用?
2. Linux系统的启动流程?
3. uboot中bootcmd和bootargs的含义?

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

相关文章:

  • C语言(长期更新)第22讲:文件操作(一)
  • 财务管控——解读79页集团财务业务管控方法及信息化应用案例【附全文阅读】
  • 火语言RPA:解锁开发者工作流的“自动化密码”
  • 用户行为数据可视化
  • jdbc-数据更新与删除
  • 【GitLab】GitLab-CI(shell方式)入门配置
  • Python入门 | 三个if语句程序作业和基础语法笔记
  • BeanPropertyRowMapper
  • 深入解析Java中String的不可变性
  • windows-安装kafka并启动
  • linux 驱动私有数据
  • 信息系统监理师软考备考指南:组织协调与沟通管理专题精讲
  • 【开题答辩全过程】以 JAVA农产品销售系统为例,包含答辩的问题和答案
  • Python 网络爬虫生态全景综述
  • MCP— Model Context Protocol(模型上下文协议)
  • 解决ubuntu无法连接上security.ubuntu.com:80 (185.125.190.81)的问题
  • SHAP分析 | MATLAB实现XGBoost极限梯度提升树多输入单输出回归预测+SHAP可解释分析分析(预测新数据,多指标评价)
  • 磁共振成像原理(理论)11:梯度回波 (Gradient Echoes)
  • odoo18全局菜单搜索
  • langchain链中的高级组件
  • 鸿蒙:使用animation或animateTo实现图片无限旋转效果
  • 02)阿里 Arthas(阿尔萨斯)开源的 Java 诊断工具原理分析、JVM动态加载“代理程序“(Agent) 的机制、vm.loadAgent原理
  • [学习笔记][机器学习-周志华] 第1章 绪论
  • Node.js面试题及详细答案120题(111-120) -- 进阶与扩展篇
  • 鞋底布线前传:CAD三维建模如何实现精准凸起设计
  • 华为无线网络技术基础
  • Django 模型与 ORM 全解析(二):数据库操作
  • Python 2025:AI与自动化运维的融合新纪元
  • MySQL 核心函数与约束详解
  • 设计模式简要