Uboot-程序员宅基地

技术标签: 嵌入式软件  linux  

目录

​编辑

一、何为uboot?

二、Uboot获取

三、为什么要移植uboot?

四、正点原子官方uboot编译

1、编译UBOOT的时候需要先配置

五、通过imxdownload软件烧录bin文件到sd卡


一、何为uboot?

1、uboot是一个裸机程序,比较复杂。

2、uboot就是一个bootloader,作用就是用于启动Linux或其他系统。Uboot最主要的工作就是初始化DDR。因为Linux是运行在DDR里面的。一般Linux镜像zImage(uImage)+设备树(.dtb)存放在SD、EMMC、NAND、SPI FLASH等等外置存储区域。

       这里就牵扯到一个问题,需要将Linux镜像从外置flash拷贝到DDR中,再去启动

       Uboot的主要目的就是为系统的启动做准备。

       Uboot不仅仅能启动Linux,也可以启动其他系统,比如vxworks。

       Linux不仅仅能通过uboot启动。

       Uboot是个通用的bootloader,他支持多种架构。

二、Uboot获取

       1、首先就是uboot官网。缺点就是支持少,比如某一款具体芯片驱动等不完善。

       2、SOC厂商会从uboot官网下载某一个版本的uboot,然后在这个版本的uboot上加入相应的SOC以及驱动。这就是SOC厂商定制版的uboot。NXP官方的I.MX6ULL EVK板子,

       3、做开发板的厂商,开发板会参考SOC厂商的板子。开发板必然会和官方的板子不一样。因此开发板厂商又会去修改SOC厂商做好的uboot,以适应自己的板子。

U-Boot 2016.03-gee88051 (Nov 05 2021 - 17:59:02 +0800)//uboot的版本

CPU:   Freescale i.MX6ULL rev1.1 792 MHz (running at 396 MHz)
CPU:   Industrial temperature grade (-40C to 105C) at 44C
Reset cause: POR
Board: I.MX6U ALPHA|MINI
I2C:   ready
DRAM:  512 MiB
MMC:   FSL_SDHC: 0, FSL_SDHC: 1         //相关硬件配置信息
*** Warning - bad CRC, using default environment

In:    serial
Out:   serial
Err:   serial
switch to partitions #0, OK
mmc1(part 0) is current device
Net:   FEC1
Error: FEC1 address not set.

Normal Boot
Hit any key to stop autoboot:  0    //在倒计时的3s内按键盘上的任意键就会进入uboot模式
switch to partitions #0, OK
mmc1(part 0) is current device
switch to partitions #0, OK
mmc1(part 0) is current device
reading boot.scr                //读取boot.src
** Unable to read file boot.scr **
reading zImage                    //读取镜像
6785568 bytes read in 225 ms (28.8 MiB/s)
Booting from mmc ...
reading imx6ull-14x14-emmc-7-1024x600-c.dtb    //读取设备树
39299 bytes read in 20 ms (1.9 MiB/s)
Kernel image @ 0x80800000 [ 0x000000 - 0x678a20 ]
## Flattened Device Tree blob at 83000000
   Booting using the fdt blob at 0x83000000
   Using Device Tree in place at 83000000, end 8300c982

Starting kernel ...        //开始启动内核

[    0.000000] Booting Linux on physical CPU 0x0
[    0.000000] Linux version 4.1.15-gb8dc0d4 (alientek@ubuntu) (gcc version 5.3.0 (GCC) ) #1 SMP PREEMPT Fri JulST 2022
[    0.000000] CPU: ARMv7 Processor [410fc075] revision 5 (ARMv7), cr=10c53c7d
[    0.000000] CPU: PIPT / VIPT nonaliasing data cache, VIPT aliasing instruction cache
[    0.000000] Machine model: Freescale i.MX6 ULL 14x14 EVK Board
[    0.000000] Reserved memory: created CMA memory pool at 0x98000000, size 128 MiB
[    0.000000] Reserved memory: initialized node linux,cma, compatible id shared-dma-pool
[    0.000000] Memory policy: Data cache writealloc
[    0.000000] PERCPU: Embedded 12 pages/cpu @97b8f000 s16780 r8192 d24180 u49152
[    0.000000] Built 1 zonelists in Zone order, mobility grouping on.  Total pages: 130048
[    0.000000] Kerne
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/qq_43482790/article/details/126067907

智能推荐

MAC系统安装PHP环境_mac 安装php-程序员宅基地

文章浏览阅读617次。使用pecl install redis 命令安装redis即可。安装方法,可以自己查询,下面是实现一种方式。,确认自己需要安装的php版本。_mac 安装php

Clickhouse一级索引优化方案_clickhouse 索引优化-程序员宅基地

文章浏览阅读2.7k次。Clickhouse一级索引优化方案及知识点_clickhouse 索引优化

2022年面试工具篇Jmeter接口面试题及答案_jmeter接口测试面试题-程序员宅基地

文章浏览阅读4.6k次,点赞2次,收藏41次。问题列表•在项目中如何用jmeter进行http接口测试?•Jmeter 常用元件有哪些?•jmeter 如何管理cookie和session信息?•jmeter中如何实现关联?•jmeter中断言方式?•jmeter参数化的方式有哪几种可以实现?•Jmeter怎么录制,怎么过滤?•JMeter结果树响应数据中文乱码如何解决?•用户定义的变量和用户参数的区别?•Jmeter 怎么实现持续集成测试?在项目中如何用jmeter进行http接口测试?(重点)•在Jmeter 安装目录bin..._jmeter接口测试面试题

结合Flask + TensorFlow 构建出实时的医疗聊天机器人_flask机器人聊天-程序员宅基地

文章浏览阅读1.1k次。2017年,谷歌开发了一款基于TensorFlow的聊天机器人Chatbot。Chatbot是一个可以和用户沟通、进行简单信息查询的应用程序。它可以理解普通人类的语言,并提供有效的信息反馈。近几年来,随着AI技术的飞速发展,越来越多的公司在产品中嵌入了聊天机器人的功能。例如,苹果公司iMessage Messenger应用就内置了专用的聊天机器人,通过可靠、高质量的服务,可以给用户提供即时、准确的建议;亚马逊Alexa和微软Cortana都是这方面的佼佼者。_flask机器人聊天

NEFU OJ3 K-Matrix_{,}oj3-程序员宅基地

文章浏览阅读283次。很经典的一道问题,必须求出每个子矩阵的解。有些类似动态规划的思想,a[i][j]表示o-i行,0-j列元素的值,通过它求出每个子矩阵的值。#include#includeusing namespace std;int a[51][51] = {0};int main(){ int n,sum,x,result,flag; while(cin>>n>>sum) { flag _{,}oj3

浅谈c/c++中main(),int main(),void main(),int main(void)四者之间的区别-程序员宅基地

文章浏览阅读1.2w次,点赞70次,收藏267次。main():相当于int main()int main():int是main()函数的返回类型。这表明main()函数返回的值是整数且授受任何数量的参数。void main():void为空型。这表明main函数无返回值目受任何数量的参数。int main(void):main不接受任何参数且返回的值是整数。另外请注意:main()为老式的写法。返回类型int在新型的编泽器通不可以省略,否则会有警告:void main()为老式的写法。6.0及之前的vC使用这祥的写法。_int main(void)

随便推点

Linux重启网卡报错Device eth0 does not seem to be present_device ens5f0 does not seem to be prevent-程序员宅基地

文章浏览阅读5k次。Centos6.8重启网卡报错Device eth0 does not seem to be present虚拟机安装Centos系统以后,导出镜像,然后倒入镜像,修改IP后发现网卡启动失败:# service network restartShutting down loopback insterface: _device ens5f0 does not seem to be prevent

如何使用 API 网关实现 API 请求签名和验证-程序员宅基地

文章浏览阅读917次,点赞22次,收藏22次。1.背景介绍API 网关是一种在云计算中广泛使用的架构模式,它作为应用程序和服务之间的中介,负责接收来自客户端的请求并将其转发给后端服务。API 网关通常负责实现 API 请求的签名和验证,以确保请求的安全性和有效性。在本文中,我们将讨论如何使用 API 网关实现 API 请求签名和验证,以及相关的核心概念、算法原理、代码实例和未来发展趋势。2.核心概念与联系2.1 API 网关A..._网关做appid验签的目的是

c语言程序一些常见的不足,C语言常见错误分析及解决方法-程序员宅基地

文章浏览阅读2.4k次。C.C语言的应用很广泛,越来越多的程序员希望能够学好C由于C语言的编译系统对语法的检查不如其他语言那么严格,因此C语.下面将C语言中初学者最常见的错误分析如下;1 语句书写错误由于大部分学生都是初次接触程序设计语言,缺乏程序设计的实践,对C语言语句又比较陌生,因此在编写程序时经常出现丢三落四、画蛇添足的情况.语句书写错误主要有:(1)语句结束未加分号或多加分号.C语言规定,分号作为语句的终止符,是..._写c语言自己的薄弱点怎么写

android studio aapt err,Android Studio 3.0,AAPT2编译失败 – 资源文件中的dimen无效-程序员宅基地

文章浏览阅读244次。我在ArchLinux上使用Android Studio 3.0 Canary 3,我正在尝试制作一个小应用程序.在发布问题之前进行了一些研究,但我发现的解决方案都不适用于我.任何帮助将非常感激.谢谢Error:Execution Failed for task ':app:mergeDebugResources'.> Error: java.lang.RuntimeException: j..._aapt: error: invalid dimen.

关于在intellij IDEA下创建web项目时没有web目录下没有WEB INF和web.xml解决方法_idea中resource of path webapp/web-inf/web.xml not e-程序员宅基地

文章浏览阅读8.6k次,点赞3次,收藏8次。如图,许多小萌新使用intellij IDEA创建web项目时出现如下的情况,即标题所说的其实解决这问题很简单,在创建java web项目时,我们在java EE version选择Java EE 7,而不是选择Java EE 8;接着在最下面勾选Create web.xml就行了。如下图:..._idea中resource of path webapp/web-inf/web.xml not exist

RBF神经网络及其应用【神经网络】_newrbe函数-程序员宅基地

文章浏览阅读5.2k次,点赞3次,收藏44次。RBF神经网络典型案例分析【例6-1】考虑具有3输入2输出的一组数据,如表6-1所示。>> clear all;xite=0.10;alfa=0.05;W=rands(5,2);W_1=W;W_2=W_1;h=[0,0,0,0,0]';c=2*[-0.5 -0.25 0 0.25 0.5;-0.5 -0.25 0 0.25 0.5;-0.5 -0.25 0 0.25 0.5]; b=10; xs=[1,0,0]; %样本输入ys=[1,0]; %样本输出OU_newrbe函数

推荐文章

热门文章

相关标签