uboot移植过程

article/2025/10/6 17:47:10

uboot移植过程 IMX6ULL

文章目录

    • uboot移植过程 IMX6ULL
  • 前言
  • 一、从原厂中移植uboot进行测试
  • 二、在U-Boot中添加自己的硬件
    • 1. 添加默认配置文件
    • 2. 添加对应的头文件
    • 3. 添加对应的板级文件夹
      • 3.1 修改Makefile文件
      • 3.2 修改 mx6ull_alientek 目录下的 imximage.cfg 文件
      • 3.3 修改 mx6ull_alientek 目录下的 Kconfig 文件
      • 3.4 修改 mx6ull_alientek 目录下的 MAINTAINERS 文件
    • 4. 修改U-Boot 图形配置文件
    • 5. 修改相关驱动
    • 6. 编译验证
  • 总结


前言

uboot的移植并不是说完完全全从0开始将uboot移植到开发板或开发平台上。这对于我们来说是基本不可能的,这个工作一般是半导体厂商做的,他们会将uboot移植到他们的芯片中,通过他们自己的测试开发板完成移植,确认没问题后会将这个uboot发布出去,而我们将uboot或者Linux kernel移植到硬件上,一般流程是:

  1. 在uboot中找到参考的开发平台(原厂的开发板)
  2. 参考原厂开发板移植uboot到自己使用的硬件中

这里我使用的是IMX6ULL芯片,移植NXP官方开发板uboot为例,并在此基础上添加自己的开发板


一、从原厂中移植uboot进行测试

在NXP官网下载评估板的uboot,并移植到虚拟机中,我使用的是Ubuntu
在这里插入图片描述然后使用解压命令进行解压
在这里插入图片描述

  1. 进入文件中,开始编译

  2. 先清除数据 make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- distclean

  3. 配置uboot make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- mx6ull_14x14_defconfig
    可以在configs文件中选择自己芯片的配置文件
    在这里插入图片描述

  4. 虚拟机开始编译 make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- -j4 V=1
    如图 编译成功
    在这里插入图片描述
    当然如果觉得命令太多,可以写成shell脚本,进行编译(需要给脚本文件赋权限)
    在这里插入图片描述

二、在U-Boot中添加自己的硬件

在uboot中添加自己的开发板或硬件平台有以下步骤:

1. 添加默认配置文件

先在 configs 目录下创建默认配置文件,复制mx6ull_14x14_evk_emmc_defconfig,然后重命名为 mx6ull_alientek_defconfig 并修改内容为在这里插入图片描述
这一步就可以看出需要添加 所使用的芯片中添加相关文件(board/freescale,imx之前是属于freescale的)

2. 添加对应的头文件

头文件都放在include文件下,而我们需要在include/configs中添加,复 制mx6ullevk.h,并重命名为 mx6ull_alientek.h,同时需改头文件的宏定义在这里插入图片描述
在这个文件中有很多配置uboot的宏定义,如I2C SPI USB 网口等功能性配置

3. 添加对应的板级文件夹

也就是在第一步时,配置出现过的文件夹,uboot 中每个板子都有一个对应的文件夹来存放板级文件,比如开发板上外设驱动文件等等。board/freescale 目录下复制 mx6ullevk,将其重命名为 mx6ull_alientek,将该目录下的.c文件同样改为mx6ull_alientek.c

3.1 修改Makefile文件

在这里插入图片描述
输出mx6ull_alientek.o文件,这样才会编译mx6ull_alientek.c文件

3.2 修改 mx6ull_alientek 目录下的 imximage.cfg 文件

在这里插入图片描述
指定使用本目录下的plugin.bin 文件

3.3 修改 mx6ull_alientek 目录下的 Kconfig 文件

在这里插入图片描述
这一步可以判断是否使用该目录下的文件

3.4 修改 mx6ull_alientek 目录下的 MAINTAINERS 文件

在这里插入图片描述

4. 修改U-Boot 图形配置文件

uboot是支持图形界面配置,需要在对应架构下的芯片文件中修改,修改文件arch/arm/cpu/armv7/mx6/Kconfig(如果用的 I.MX6UL 的话,应该修改 arch/arm/Kconfig 这个文件)
在这里插入图片描述
在这里插入图片描述

5. 修改相关驱动

该步骤需要根据硬件进行修改,如使用的LCD不一致,网口GPIO不同等,就需要单独进行配置了,这些配置都是在mx6ull_alientek.c和mx6ull_alientek.h中进行修改,这里以修改LCD为例:默认使用的LCD是 TFT43AB,现在我想使用TFT7016的,
在这里插入图片描述
根据自己显示屏参数进行修改,
在这里插入图片描述
然后打开打开 mx6ull_alientek.h文件,将所有的TFT43AB替换成TFT7016
在这里插入图片描述
到此LCD的参数配置结束

6. 编译验证

在创建的shell脚本中 使用自己添加的uboot配置
在这里插入图片描述
运行脚本文件,等待编译完成,编译完成后输入如下命令,查看mx6ull_alientek.h文件有没有被引用

grep -nR "mx6ull_alientek.h"

如果有很多文件引用了,说明新板子添加成功!
在这里插入图片描述


总结

uboot的移植看似简单,但也是需要细心处理,同时也是需要不断练习吸取经验,这样应当自己不熟悉的芯片,用起来也会得心应手!


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

相关文章

MediaCodec对接到OMX的简单分析

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

MediaCodec(native)状态机分析

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

视频-MediaCodec

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

MediaCodec解析MP4视频

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

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

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

Android:MediaCodec基本原理

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

MediaCodec原理及使用

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

Android MediaCodec

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

android P MediaCodec编解码流程分析

1.MediaCodec初始化流程分析 通过上面流程分析可知,MediaCodecList初始化是通过调用它的getLocalInstance函数,然后在里面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 播放音视频的简易流程: MediaCodec codec MediaCodec.createDecoderByType("video/avc"); MediaFormat …

mediacodec api

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

MediaCodec硬解流程

一 MediaCodec概述 MediaCodec 是Android 4.1(api 16)版本引入的低层编解码接口,同时支持音视频的编码和解码。通常与MediaExtractor、MediaMuxer、AudioTrack结合使用,能够编解码诸如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 播放音视频的简易流程: MediaCodec codec MediaCodec.createDecoderByType("video/avc"); MediaFormat…

mediacodec

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

Android MediaCodec 完全解析

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

Android MediaCodec解析

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

Android原生编解码接口MediaCodec详解

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

MediaCodec视频解码流程详解及参考demo

一、MediaCodec简介 MediaCodec是Android自带的底层多媒体支持架构的一部分(通常与 MediaExtractor,MediaSync,MediaMuxer,MediaCrypto,MediaDrm,Image,Surface 和 AudioTrack 一起使用&#xf…

Android MediaCodec简单总结

#.MedaiCodec简介 MediaCodec是Android中提供的音视频编码、解码工具。它主要是完成上层接口的封装,提供给开发者使用,编解码功能实际是在native底层服务中完成的。 #.MediaCodec工作的宏观流程: ##.包换两个缓冲区队列 一个输入缓冲区队列&a…

软件测试面试指导之自我介绍

面试自我介绍虽然人人都准备,但是做到让人印象深刻可不容易啊。 本篇就具体来聊聊人人都要经历的面试,怎么做自我介绍,才能让你在面试官的眼睛里像金子一样闪闪发光? 面试是什么? 它是个机会,让面试官更…