uboot源码结构、配置、编译

news2025/1/9 2:37:02

目录

1.uboot源码结构

1.1uboot源码获取

1.2 uboot的特点

1.3 uboot源码结构

2、uboot配置与编译

2.1uboot配置

2.2 uboot编译


1.uboot源码结构

1.1uboot源码获取

uboot是一个开源的软件。开源有两层含义。一是可以免费用、二是开放源代码

uboot源码下载 http://www.denx.de/wiki/U-Boot/

uboot版本命名:

      前期:uboot-1.2.3

      现在:uboot-2008.01

      08年以前uboot是1.2.几1.3.几这样命名08年开始以年份和月份命名。它的更新是非常频繁的。

uboot版本选择

    支持对应的硬件平台

    相对成熟的版本(资料多)

    每当发布新的芯片后uboot就会增加对应芯片的版本。一般和处理器同一时期发布的uboot版本对处理器的支持较好。

1.2 uboot的特点

 代码结构清晰

 支持丰富的处理器与开发板,易于移植

 支持丰富的用户命令

 支持丰富的网络协议

 支持丰富的文件系统

 支持丰富的设备驱动

 更新活跃、用户较多、资料丰富

 开放源代码

 较高的稳定性

 不具有通用性(不同的处理器、开发板uboot不可通用)

1.3 uboot源码结构

   由于uboot的源码特别多所以是由很多个文件夹组成的,同类型的源码放到一个文件夹里

平台相关代码

    即与CPU架构或开发板硬件相关的源码,硬件的改动对应的代码也需要进行修改

    arch:与CPU架构相关的源代码

    board:与开发板相关的源代码,包含各种官方评估板对应的源码

    api: 这个目录下有很多的用户接口 

    arch: 目录下存储的是架构

    board:开发板样例

    boards.cfg:这个文件是配置信息

    common:这下面全是uboot命令的.c文件

    config.mk:也是一个配置文件

    COPYING:这是版权文件虽然是开源软件但是也不能乱用

    CREDITS:这里是代码贡献者名单包括他们的邮箱

   disk:磁盘操作的命令文件夹

    readme:一个说明书或者说帮助文档,这个说明书有5000多行都是一些介绍性的的东西。

    dos:这里是详细的说明书

    drivers:这里面全是驱动文件 

    dts:设备树文件夹,后面学习驱动时在详细学习。

    examples:里面是例程,在不会写的时候可以参考一下

     fs:文件系统,这里面每个文件夹内都是文件系统的源代码和makefile文件这里面ext4是嵌入式领域常用的文件系统。

    include:这里是头文件

    lib:这里是库

    makefile:方便我们编译uboot镜像。它这个makefile是层层调用的每个文件夹下都有,使用make命令后总的makefile文件会调用每层的马克file文件来共同编译出uboot镜像。

    post:上电自检程序

    tools:工具

    net:网络文件夹,这里面是uboot支持的一些网络。

2、uboot配置与编译

为了保证uboot适用所有的开发板,uboot把所有的开发板都写出来了,需要哪个编译哪个

2.1uboot配置

指定当前使用的硬件平台

   make _config(咱们用的是make fs6818_config)

  注1:为当前使用的开发板的名字

  注2:执行该命令的前提是uboot源码支持该开发板

  注3:该命令必须在uboot源码的顶层目录下执行

hq@Ubuntu:~/fs6818_uboot/u-boot-2014.07$ make fs6818_config
Configuring for fs6818 board...

指定编译uboot源码使用的编译器

   $ vi Makefile     进入Makefile将以下内容

198 ifeq ($(HOSTARCH),$(ARCH))
199 CROSS_COMPILE ?=                                      
200 endif

修改为

198 ifeq (arm,arm)
199 CROSS_COMPILE ?= arm-none-linux-gnueabi- 
200 endif

2.2 uboot编译

1.编译uboot

  make   / make all(编译的时间比较长)

  注1:该命令必须在uboot源码的顶层目录下执行

  注2:该命令执行后在uboot源码顶层目录下生成u-boot.bin

 编译需要大概一分钟。编译完多了几个文件,多了一个system.map文件和那些u-boot开头的。

   make在编译的过程中先将.c和.s编译成.o文件。最后把他们链接(ld)成一个可执行文件绿色的那个u-boot。他是elf格式的。我们肯定不能把他刷到板子上。不过在这之后它还会用objcopy把利用elf文件生成bin文件。这里还有一个srec文件这是符合摩托罗拉的二进制文件。

2.清除编译过程中生成的中间文件

  make clean

  make distclean

  注1:该命令必须在uboot源码的顶层目录下执行

   这些中间文件就是.o文件。执行make clean只是清除这些.o文件。执行下面那个会把生成的可执行文件和二进制文件也删除。恢复刚下载的源码状态。

编译问题解决

Make的时候可能出现上面问题,出现上面问题,如下方法解决:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/602626.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

记一次线上MQ堆积问题处理

背景 线上订单服务10个POD节点,某kafka tpoic原有6个分区。 问题现象 上午11.30左右一波下单高峰,根据分布式消息告警发现有少量消息堆积,但是堆积量不大,持续几分钟后恢复正常。 下午1点后出现新一轮高峰,出现了大…

window环境安装kafka

一、配置系统环境变量 JAVA_HOME 二、配置安装zookeeper 1、下载安装包 https://zookeeper.apache.org/releases.html#download 2、 解压并进入ZooKeeper目录,如:D:\kafka\zookeeper\conf, 将“zoo_sample.cfg”重命名为“zoo.cfg”, 3、打开“zoo.c…

机器学习集成学习——GBDT(Gradient Boosting Decision Tree 梯度提升决策树)算法

系列文章目录 机器学习神经网络——Adaboost分离器算法 机器学习之SVM分类器介绍——核函数、SVM分类器的使用 机器学习的一些常见算法介绍【线性回归,岭回归,套索回归,弹性网络】 文章目录 系列文章目录 前言 一、GBDT(Gradient Boos…

PHP学习笔记第三天

前言 作者简介:不知名白帽,网络安全学习者。 博客主页:不知名白帽的博客_CSDN博客-网络安全,CTF,内网渗透领域博主 网络安全交流社区:https://bbs.csdn.net/forums/angluoanquan 目录 PHP if..else PHP switch PHP数组 PHP数…

【AI 孙燕姿 || AI 音色转换】RVC 使用图文教程:教你如何实现无难度男女换声(伪音)以及 AI 孙燕姿!

最近,视频网站音乐区up主掀了“AI孙燕姿”的风潮。这种使用AI技术提取某位歌手的音色,再用其替换另一位歌手音色的方式,可以实现接近歌手本人翻唱的逼真效果。除孙燕姿外,面对周杰伦、陶喆、陈奕迅、王菲等众多具有独特嗓音的歌手…

YOLOv3: An Incremental Improvement 全文翻译

YOLOv3 论文全篇完整翻译 摘要 本文介绍了YOLO的一些更新内容!我们进行了一系列小的设计改进,以使其更好。我们还训练了一个相当不错的新网络。它比上一版稍微大一些,但更加准确。不过不用担心,它依然保持了快速性能。在320320像…

C++数据结构:图结构入门

C数据结构 线性顺序表(数组) 线性顺序表(链表) Python风格双向链表的实现 散列表简单实现(hash表) 栈和队列的应用 二叉树之一(数组存储) 二叉树之二(二叉搜索树&#x…

驱动开发:内核PE结构VA与FOA转换

本章将继续探索内核中解析PE文件的相关内容,PE文件中FOA与VA,RVA之间的转换也是很重要的,所谓的FOA是文件中的地址,VA则是内存装入后的虚拟地址,RVA是内存基址与当前地址的相对偏移,本章还是需要用到《驱动开发&#x…

第二十篇、基于Arduino uno,获取MFRC-522 RFID射频IC卡模块的信息,并进行识别——结果导向

0、结果 说明:先来看看串口调试助手显示的结果,"卡号"对应的是IC卡的卡号,"1号已进入"表示识别到正确的卡,也就是之前录入的卡号,因此可以应用到门禁。如果是你想要的,可以接着往下看…

OLED和LCD对比

OLED和LCD对比 今天等离子已不复存在,OLED 出现了新的竞争者。在本概述中,我们将了解这两种技术之间的差异、优缺点等。 我们将从简短介绍每种显示技术的工作原理开始。我们将使用术语“面板”,因为显示技术是功能性电视屏幕的一个组成部分…

(字符串 ) 151. 反转字符串中的单词 ——【Leetcode每日一题】

❓151. 反转字符串中的单词 难度:中等 给你一个字符串 s ,请你反转字符串中 单词 的顺序。 单词 是由非空格字符组成的字符串。s 中使用至少一个空格将字符串中的 单词 分隔开。 返回 单词 顺序颠倒且 单词 之间用单个空格连接的结果字符串。 注意&…

面向对象编程 实验三 sduwh 子窗口与控件的基本用法、资源的使用 参考实验报告1

源自网络收集,仅供参考 实验三收集到两份完整报告,这是其一,另一份见本专栏下一篇文章。 实验题目 《面向对象程序设计》 实验三 实验题目:子窗口与控件的基本用法、资源的使用 整体目的:理解、窗口之间的消息传送…

DAY08_JavaScrip

目录 1 JavaScript1.1 JavaScript简介1.2 JavaScript引入方式1.2.1 内联脚本1.2.2 内部脚本1.2.3 外部脚本 1.3 JavaScript基础语法1.3.1 书写语法1.3.2 输出语句1.3.3 变量1.3.4 数据类型1.3.5 运算符1.3.5.1 \和区别1.3.5.2 类型转换 1.3.6 流程控制语句1.3.6.1 if 语句1.3.6…

常见设计模式

单例模式 单例对象的类必须保证只有一个实例存在,整个系统只能使用一个对象实例,优点:不会频繁地创建和销毁对象,浪费系统资源。缺点是没有抽象层,难以扩展。 单例模式的常见写法: 饿汉式单例模式的写法&…

免安装版MySQL数据库的安装和卸载

说明:MySQL早些版本有分安装版和免安装版,可在官网(https://dev.mysql.com/downloads/mysql/)下载,推荐使用最新版本,是免安装版的,下载完配置一下就可以用。 推荐使用最新版本 安装 我这里以…

第3章“程序的机器级表示”:过程

文章目录 3.7 过程3.7.1 栈帧3.7.2 转移控制3.7.3 寄存器使用惯例3.7.4 过程示例3.7.5 递归过程 3.7 过程 一个过程调用包括将数据(以过程参数和返回值的形式)和控制从代码的一部分传递到另一部分。另外,它还必须在进入时为过程的局部变量分…

金融人不能错过的中国人民大学与加拿大女王大学金融硕士,你不能不知道

金融行业是一个发展飞速的行业,越来越多的优秀人士的涌入,让本就卷起来的金融行业变得异常拥挤,怎么办,想留有一席之地只能不断的提升与攀登,金融人不能错过的中国人民大学与加拿大女王大学金融硕士,你不能…

架构EA演进

架构演进 目录概述需求: 参考资料和推荐阅读 Survive by day and develop by night. talk for import biz , show your perfect code,full busy,skip hardness,make a better result,wait for change,challenge Survive. happy for hardess to solve den…

spring cloud搭建(service)

天行健,君子以自强不息;地势坤,君子以厚德载物。 每个人都有惰性,但不断学习是好好生活的根本,共勉! 文章均为学习整理笔记,分享记录为主,如有错误请指正,共同学习进步。…

【C++】海量数据处理面试题(位图和布隆过滤器)

都是大厂面试题哦~ 文章目录 一.位图面试题 1.给定100亿个整数,设计算法找到只出现一次的整数 2.给两个文件,分别有100亿个整数,我们只有1G内存,如何找到两个文件交集? 3.1个文件有100亿个int,1G内…