U-Boot移植

article/2025/10/6 17:40:44

一、U-Boot

Linux 系统要启动就必须需要一个 bootloader 程序,芯片上电以后先运行一段bootloader程序。

bootloader程序会先初始化DDR等外设,然后将Linux内核从flash(NAND,NOR FLASH, SD, eMMC 等)拷贝到 DDR 中,最后启动 Linux 内核。所以,bootloader的作用:启动Linux内核

现在有很多现成的 bootloader 软件可以使用,比如 U-Boot、 vivi、 RedBoot ,其中以 U-Boot 使用最为广泛
 

uboot (Universal Boot Loader):uboot 是一个遵循 GPL 协议的开源软件, uboot 是一个裸机代码,可以看作是一个裸机综合例程,支持液晶屏、网络、 USB 等高级功能
 

二、Windowns下移植

开发板出厂已经固化系统到核心板上的 eMMC 或 NandFlash 存储介质里。使用上位机工具 mfgtool,这种固化系统方式可以使用 PC 机在线直接固化系统
 

设置启动方式,先将底板拨码开关 BOOT_CFG 设置如下,设置为 USB 连接方式,“1”代码 ON,“0”代表“OFF”。将拨码数字 2 处拨到 ON:  01xx xxxx ,串行下载,可以通过USB烧写镜像文件

然后使用 USB 连接线连接底板的 USB_OTG 接口与 电脑

打开mfgtool文件夹,根据核心板选择不同的vbs脚本,以我的为例,核心板类型:eMMC(8GB)
DDR 大小为 512MB

Mfgtool2-eMMC-ddr512-eMMC.vbs 脚本解释

-eMMC:代表核心板上的存储介质为 eMMC
-ddr512: 指核心板上的 DDR 大小为 512MB
-eMMC: 选择此脚本是把固件烧写到 eMMC 上

若固化系统到TF卡,双击Mfgtool2-eMMC-ddr512-SDCard.vbs,等待安装驱动完成后, mfgtool 上位机界面会提示已经连接到设备 HID-compliant device, 注意请不要打开虚拟机,如果虚拟机正在开启, OTG 会连接到虚拟机上去。弹出如下界面,插入TF卡

 需开发板先上电后再将 TF 卡插进卡槽,否则上电时会检测 TF 卡,这样 mfgtool 会连接不到开发板设备,若没有 “符合HID...” ,检测OTG是否连接正确。

直接点击 mfgtool 的 Start 按钮进行固化系统到 SD 卡。下图为点击 Start 按钮后的截图。固化系统到 SD 卡需要几分钟时间,请耐心等待

 固化完成如上图,点击 Stop 后再点 Exit 退出 mfgtool 上位机软件即可

测试从 SD 卡启动系统,拨码开关拨至 SD 卡启动方式 10000010,启动系统即可
测试界面串口打印信息

 

若固化系统到 eMMC,请双击 Mfgtool2-eMMC-ddr512-eMMC.vbs 这个 vbs 脚本文件进行固化,固化时不要插入 SD 卡(其余步骤和上面一样),选择固化到eMMC 的 vbs 文件,固化完成后,将拨码开关拨至 eMMC 启动方式 10100110,启动系统即可
 

三、Linux下移植

脚本固化系统一般可用于批量固化与升级系统, 不像 mfgtool 上位机那样还需要 PC 机和USB T字口数据线,且每次只能打开一个 mfgtool 上位机,用户可以自行修改好固化系统脚本,进行自动化固化测试

若固化系统到 TF(SD)卡:

先将 mfgtool->Profiles->Linux->OS Firmware->files 整个文件夹到 Ubuntu 虚拟机,使用 chmod 指令修改固化 TF 卡系统脚本 imx6mksdboot.sh 的权限

chmod +x imx6mksdboot.sh

然后TF 卡用读卡器插到 Ubuntu 虚拟机,输入sudo fdisk -l 指令查看 SD 卡挂载节点

 挂载的节点为/dev/sdb

执行./imx6mksdboot.sh --help 查看脚本的使用方法

 imx6mksdboot.sh [选项] <(必选)-device> <(可选)-flash> <(可选)-ddrsize>
(1) -device:指明设备节点(TF 卡挂载的节点如/dev/sdx), 必需加这个参数
(2) -flash:指明核心板上的媒体存储介质,可选为(emmc|nand)
(3) -ddrsize:指明核心板上的 ddr 容量大小,可选为(512|256) MB

我的核心板的 ddr 容量大小是 512MB,媒体存储介质是 eMMC。 SD 卡挂载节点为/dev/sdb。那么固化 SD 卡的指令:

sudo ./imx6mksdboot.sh -device /dev/sdb -flash emmc -ddrsize 512

执行指令后脚本会有中文再次询问 SD 卡所挂载的节点是否对应,将会清空 SD 卡上的所有数据,请注意备份重要的数据

 

注意:在使用sd卡前一定要格式化sd卡,然后用SDFormatter软件重做SD卡
 

然后按连接 TF 卡到 Ubuntu 的方法,再点击断开即可退出 TF 卡。 固化完成后,将拨码开关拨
至 TF 启动方式 10000010,启动系统即可

若固化系统到 eMMC:同样的将相应的嗯files文件拷贝在Linux下,修改 eMMC 固化脚本的权限
,执行./imx6mkemmcboot.sh --help 查看脚本的使用说明,使用 fdisk 指令查看 eMMC 挂载节点,一般挂载节点为/dev/mmcblk1,测试的 eMMC 为 8GB存储容量的
 

chmod +x imx6mkemmcboot.sh
./imx6mkemmcboot.sh --help
fdisk -l

 用法: imx6mkemmcboot.sh [选项] <(必选)-device> <(可选)-ddrsize>
(1) -device:指明设备节点(eMMC 挂载的节点如/dev/mmcblk1), 必需加这个参数
(2) -ddrsize:指明核心板上的 ddr 容量大小,可选为(512|256) MB

 固化指令

./imx6mkemmcboot.sh -device /dev/mmcblk1 -ddrsize 512

固化完成后,将拨码开关拨至 eMMC 启动方式 10100110,启动系统即可
 

补充:拔码开关设置

根据核心板上的存储介质类型,选择不同的方式启动动系统

 解释: OFF 为 0, ON 为 1。
(1) USB OTG 烧写设置: 0100 0000
(2) SD 卡启动设置: 1000 0010
(3) EMMC 启动设置: 1010 0110
(4) NAND FLASH 启动设置: 1000 1001
用户选择正确的启动方式后,开发板上电,进入系统后, 开发板自动登录,无需输入用户
名及密码,文件系统已经设置 root 用户自动登录。


http://chatgpt.dhexx.cn/article/V5ce1r3n.shtml

相关文章

uboot移植

一、我们知道uboot就是一个Bootloader。但是&#xff0c;arm不像我们的pc机一样&#xff0c;用一个老毛桃随便找一个网站下一个windows镜像就可以直接装了。 我们的uboot对应的就是老毛桃里面刷的引导程序。 虽然uboo支持很多架构很多不同的厂家的板子&#xff0c;但是UBOOT它…

【Linux】系统移植篇四--uboot移植

系统移植篇四--uboot移植 一、uboot源码结构1、uboot源码获取2、uboot特点3、uboot源码结构 二、uboot的配置与编译1、uboot配置2、uboot编译 前言&#xff1a;本篇主要介绍uboot的一些结构与相关配置&#xff0c;uboot是一款免费开源的芯片启动软件&#xff0c;代码完全开源&a…

uboot移植过程

uboot移植过程 IMX6ULL 文章目录 uboot移植过程 IMX6ULL 前言一、从原厂中移植uboot进行测试二、在U-Boot中添加自己的硬件1. 添加默认配置文件2. 添加对应的头文件3. 添加对应的板级文件夹3.1 修改Makefile文件3.2 修改 mx6ull_alientek 目录下的 imximage.cfg 文件3.3 修改 m…

MediaCodec对接到OMX的简单分析

一、引言&#xff1a; nuplayer播放器是使用MediaCodec来进行编解码的&#xff0c;而OMX组件则是MediaCodec的解码核心&#xff0c;但是因为涉及的面太过底层&#xff0c;往往是芯片公司才会涉及到这一块&#xff0c;所以就做一个简单分析&#xff0c;对通路有个大致了解就行。…

MediaCodec(native)状态机分析

一、引入&#xff1a; MediaCodec这条通路的调用逻辑是MediaCode->ACodec->OMX&#xff0c;因为OMX有自己的状态机&#xff0c;所以MediaCodec和ACodec也分别基于OMX组件的调用维护了其状态机&#xff0c;这篇博客就先分析MediaCodec的状态机是如何运转的。 二、MediaCo…

视频-MediaCodec

1.解析视频可以使用android 提供的api MediaPlayer,实现简单的播放暂停&#xff0c;提取视频中的一帧或者编辑视频&#xff0c;需要另一个api MediaCodec&#xff08;硬解&#xff0c;控制DSP芯片&#xff09;或者 ffmpeg(软解&#xff0c;耗时)&#xff0c;选择的优先级一定要…

MediaCodec解析MP4视频

MediaCodec讲解 MediaCodec是Android提供的用于对音视频进行编解码的类&#xff0c;它通过访问底层的codec来实现编解码的功能。是Android media基础框架的一部分&#xff0c;通常和 MediaExtractor, MediaSync, MediaMuxer, MediaCrypto, MediaDrm, Image, Surface和AudioTra…

Android视频编解码之MediaCodec简单入门

本篇只是简单入门&#xff0c;后面会继续写文章详细讲解&#xff1a; 由于MediaCodec涉及内容众多&#xff0c;原本想一篇文章把所有内容概括&#xff0c;但是后来发现不太可能&#xff0c;限于自己能力&#xff0c;想要考虑全面太难&#xff0c;我也是刚开始学习需要借助网上…

Android:MediaCodec基本原理

最近需要使用MediaCodec做一些工作&#xff0c;因此对MediaCodec做了些研究和代码编写&#xff0c;在此先对MediaCodec的一些基础原理、工作流程、常用API等做个初步总结&#xff0c;方便后续开发过程中查阅。 1.MediaCodec简介 1.1 MediaCodec来历 Android从最初的API 1.0版…

MediaCodec原理及使用

使用MediaCodec目的 MediaCodec是Android底层多媒体框架的一部分&#xff0c;通常与MediaExtractor、MediaMuxer、AudioTrack结合使用&#xff0c;可以编码H264、H265、AAC、3gp等常见的音视频格式 MediaCodec工作原理是处理输入数据以产生输出数据 MediaCodec工作流程 Medi…

Android MediaCodec

Android中可以使用MediaCodec来访问底层的媒体编解码器&#xff0c;可以对媒体进行编/解码。 MediaCodec可以处理的数据有以下三种类型&#xff1a;压缩数据、原始音频数据、原始视频数据。这三种类型的数据均可以利用ByteBuffers进行处理&#xff0c;但是对于原始视频数据应提…

android P MediaCodec编解码流程分析

1.MediaCodec初始化流程分析 通过上面流程分析可知&#xff0c;MediaCodecList初始化是通过调用它的getLocalInstance函数&#xff0c;然后在里面new的MediaCodecList对象。在MediaCodec的CreateByType函数中new了MediaCodec对象。 allocateNode调用流程是在ACodec.cpp中的onA…

MediaCodec_Analyze-3-start

MediaCodec Analyse – start Refrence: https://source.android.google.cn/devices/media 一 APK调用的核心API Android APK使用 MediaCodec API 播放音视频的简易流程&#xff1a; MediaCodec codec MediaCodec.createDecoderByType("video/avc"); MediaFormat …

mediacodec api

mediacodec api 官网&#xff1a; https://developer.android.com/reference/android/media/MediaCodec 中文&#xff1a; https://www.apiref.com/android-zh/android/media/MediaCodec.html 学习mediacodec api的使用说明&#xff0c;在android源码查看&#xff1a; andro…

MediaCodec硬解流程

一 MediaCodec概述 MediaCodec 是Android 4.1(api 16)版本引入的低层编解码接口&#xff0c;同时支持音视频的编码和解码。通常与MediaExtractor、MediaMuxer、AudioTrack结合使用&#xff0c;能够编解码诸如H.264、H.265、AAC、3gp等常见的音视频格式。MediaCodec在编解码的过…

MediaCodec_Analyze-1-create

MediaCodec Analyse – create Refrence: https://source.android.google.cn/devices/media 一 APK调用的核心API Android APK使用 MediaCodec API 播放音视频的简易流程&#xff1a; MediaCodec codec MediaCodec.createDecoderByType("video/avc"); MediaFormat…

mediacodec

MedaiCodec简介 MediaCodec是Android中提供的音视频编/解码工具。它主要是完成上层接口的封装&#xff0c;供给开发者使用&#xff0c;编解码功能实际是在native底层服务中完成的 MediaCodec工作流程 包括两个缓冲区队列 一个输入缓冲区队列&#xff0c;包含一组输入缓冲区(格…

Android MediaCodec 完全解析

MediaCodec是什么&#xff1f; MediaCodec类为开发者提供了能访问到Android底层媒体Codec&#xff08;Encoder/Decoder&#xff09;的能力&#xff0c;它是Android底层多媒体基础架构的一部分&#xff08;通常和MediaExtractor、MediaSync、MediaMuxer、MediaCrypto、MediaDrm…

Android MediaCodec解析

Android MediaCodec解析 1 引言 MediaCodec是Android平台提供的一个底层的音视频编解码框架&#xff0c;它是安卓底层多媒体基础框架的重要组成部分。它经常和 MediaExtractor, MediaSync, MediaMuxer, MediaCrypto, MediaDrm, Image, Surface, AudioTrack一起使用。解码的作…

Android原生编解码接口MediaCodec详解

作者&#xff1a;躬行之 了解了音视频的相关知识&#xff0c;可以先阅读同系列文章&#xff1a; 音视频开发基础知识音频帧、视频帧及其同步Camera2、MediaCodec录制mp4 MediaCodec 是 Android 中的编解码器组件&#xff0c;用来访问底层提供的编解码器&#xff0c;通常与 Me…