Bootloader简介及UBOOT移植 (转)

嵌入式bootloader 、uboot移植、内核移植 最近在找实习,在一些企业岗位要求理解bootloader、uboot移植、内核移植,在此之前也学过这些,但理解不是很深,于是便找了一些资料进行整理,以此加深自己的理解。 bootloader 概念:就是在操作系统内核运行之前运行的一段小程序。通过这段小程序,我们可以初始化硬件设备、建立内存空间的映射图,从而将系统的软硬件带到一个合适的状态,以便为最终调用操作系统内核准备好正确的环境,它就是所谓的加载程序(Boot Loader)。 u-boot u-boot 是bootloader的一种,也就是bootlo 阅读详情
Bootloader简介及UBOOT移植
1. 引言
嵌入式系统的应用程序一般都被烧录到FLASH或EEPROM或ROM中。在开发的过程中需要
不断地讲程序下载到目标板上运行调试。如果每次都要将程序烧录到FLASH中,一则FLASH
的烧录速度慢(擦除、编程),二则在FLASH中运行时,调试器无法下断点,达不到方便调
试的目的。三则频繁烧录降低FLASH的使用寿命。
一种较好的方法就是将应用程序下载到RAM中,可以解决上面的问题。有两种方法:
1) 通过JTAG将IMAGE下载到RAM中。使用这种方法的前提是目标板上的RAM已经被正确初
始化,否则无法下载。

2) 在目标板上先运行一个程序(程序在Flash中),通过这个程序以某种交互的方式从H
OST将IMAGE下载到RAM中。如通过串口、USB接口、网络接口等方式。这种方式就是boot
loader的方式。
2. bootloader介绍
玩过Linux的人都知道LILO或GRUB,两个非常有名的引导程序,用来引导操作系统。和这
里介绍的bootloader非常类似。所做的工作基本上就是进行一些简单的初始化工作,然
后将控制权转交给要运行的IMAGE(操作系统或应用程序).
一个较好的bootloader会提供一个比较好的交互式界面,并提供一些对于嵌入式开发相
当有用的工具。如查看、修改RAM中的内容,通过多种方式从HOST下载IMAGE到RAM中,能
够将配置信息保存到FLASH中。
为了提供这些功能,bootloader要实现相关设备的驱动。如如果支持从网络接口下载IM
AGE,它要实现网卡的驱动、IP协议、ARP协议、tftp协议等等。串口、FLASH的读写也是
如此。
常见的FREE的bootloader有armboot,用于采用ARM架构CPU的开发板,PPC-boot用于采用
PowerPC架构CPU的开发板。这两种bootloader目前都已停止开发。而将他们合而为一,
成为U-boot。目前版本是0.4.0,在sourceforge.net上可以下载源程序。
3. U-boot介绍
目前Rease版本的u-boot已经被移植到arm720t,arm920t,at91rm9200,i386,mips,m
pc5xx,mpc824x,mpc8260,mpc8xx,ppc4xx,pxa,sa1100平台上,支持的开发板更多
。其他的如支持哪些monitor命令,支持哪些文件系统等等,参看README
4. U-boot移植
说说主要的移植步骤:
1) 确定移植环境,也就是在Win(Cygwin)下,还是在Linux下,强烈建议在Linux进行
移植,在Win(Cygwin)下编译问题很多,非常耽误时间,对此深有体会。
2) 下载Tool Chain,安装,linux下移植到ARM平台,用arm-linux-xx(xx:gcc,objcop
y,as,ld等等)。
3) 下载U-boot,解压缩,看README,相当重要!!!了解一下目录结构。
4) 在board目录和cpu目录下找与你要移植的目标板最相近的,仔细研究。
5) 然后参照README中Building the Software部分进行移植,具体的就不写了
6) 编译完毕之后,就要通过Flash烧录工具讲uboot.bin烧录到板子上。在HOST上运行
超级终端,给板子上电,看看超级终端是否有uboot运行情况。然后重复这个过程进行调
试。
7) 记住首先把RAM初始化,UART的驱动改好超级终端上就应该有动静了。
8) 下面这段程序叫你如何入手,刚从README上看到的 Smile
int main (int argc, char *argv[])
{
sighandler_t no_more_time;
signal (SIGALRM, no_more_time);
alarm (PROJECT_DEADLINE - toSec (3 * WEEK));
if (available_money > available_manpower) {
pay consultant to port U-Boot;
return 0;
}
Download latest U-Boot source;
Subscribe to u-boot-users mailing list;
if (clueless) {
email ("Hi, I am new to U-Boot, how do I get started?");
}
while (learning) {
Read the README file in the top level directory;
Read http://www.denx.de/re/DPLG.html
Read the source, Luke;
}
if (available_money > toLocalCurrency ($2500)) {
Buy a BDI2000;
} else {
Add a lot of aggravation and time;
}
Create your own board support subdirectory;
Create your own board config file;
while (!running) {
do {
Add / modify source code;
} until (compiles);
Debug;
if (clueless)
email ("Hi, I am having problems...");
}
Send patch file to Wolfgang;
return 0;
}
void no_more_time (int sig)
{
hire_a_guru();
5. 结语、感想

在移植之前,首先要知道怎么可以得到Help,之前我我进行移植时,就不知道有个
uboot的maillist,一直在摸索、对照过程中进行的。

移植、调试过程是相当琐碎的,很多细节问题也不是三言两语能说清楚的。不过移
植成功一次,在做类似的工作就很顺手了。一定要坚持,特别是面对很多你不熟悉的东
西而感到挫败时,坚持。
bootloader和uboot详细分析 是我从别的网站上下的,感觉对bootloader和uboot的讲解很详细,而且还能帮助移植,很有用的文档,和大家一起分享 立即下载

相关推荐

bootloader-U-Boot详细移植过程

摘要:嵌入式系统一般没有通用的bootloader,u-boot是功能强大的bootloader开发软件,但相对也比较复杂。文中对u-boot的启动流程作了介绍,详细给出了u-boot在S3C44B0开发板上的移植方法和步骤。

嵌入式资源网站

嵌入式资源网站一 、MailList1.MailList大全网址:http://news.gmane.org/描述:可以查到绝大部分开源项目的Maillist记录,如bluez、uboot等。碰到问题可以在里面搜索一下,相当方便。二、技术论坛 1.ChinaUnix技术社区 网址:http://bbs.chinaunix.net/index.php 描述:国内比较知名的Linux/Unix

dzry2009的专栏 725

k2p官改固件合集(多个固件自行选择,含教程)

为保证完整性,固件采用rar格式提供,下载后请解压为bin文件后再刷入。 版本号命名规则:k2p_57_vxx.bin。 xx为版本号,如k2p_57_v10.bin表示v1.0版本 如果后面有d字母,则表示测试版本,比如k2p_57_v10d.bin表示v1.0的测试版本 vxx后跟数字表示补丁版本,如k2p_57_v11_1.bin表示V1.1的第一个补丁版本 如果后面有breed或opboot字样,则表示此固件自带breed或opboot 固件安装: 1、官改固件可以用WEB手动升级(1.1之后)或在线升级(1.3之后),详情参见【使用说明】 2、可以在opboot或breed中直接刷入 3、官方 V22.5.7.85版本可以在WEB“手动升级”页面直接刷入 4、如果你当前固件是K2P官方固件(22.5.13.27-V22.7.8.2以前版本),请从官方BootLoade刷入 5、如果你当前固件是K2P官方新固件(V22.7.8.2版本及之后),请先用【工具】开启telnet      然后使路由器处于联网状态,用windows telnet登录k2p,执行:     1.wget http://iytc.net/tools/k2p.sh -O /tmp/k2p.sh 2.chmod 755 /tmp/k2p.sh 3./tmp/k2p.sh 复制代码 注意:上面是三行命令,不要点“复制代码”链接,会变成一行命令导致执行出错!最后一行需回车执行! 执行后,路由器会下载固件并自动刷写,两分钟之后自动复位重启,脚本里自带md5校验,不用担心刷错,命令执行结果应该如下图所示:

uboot和BootLoader的区别和联系

1、bootLoader介绍 bootLoader是嵌入式设备中用来引导内核启动的一段代码。内核启动是需要一定条件的,当设备上电后会首先运行BootLoader,BootLoader会初始化必要的硬件,比如DDR、Flash、串口等,相关初始化完成后就会去启动内核。我的理解,BootLoader是一个概念并不是具体的代码,只要满足在设备启动初期启动内核功能的代码都可以叫做BootLoader。 2、uboot介绍 uboot(universal boot)是通用的启动代码,支持多种架构的CPU,并且是

weixin_42031299的博客 4698

Matlab App Designer自学笔记(六):坐标轴控件axis函数绘图方法

作用: 绘制函数显示 显示图像(jpg png tiff) 颜色选项: r(红色) g(绿色) b(蓝色) w(白色) k(黑色) 其他 一、坐标区控件及设置 可以对坐标去进行设计: 二、功能实现及编程 功能:点击“绘图按钮”,能显示曲线。 实现:对按钮设置回调函数 若要多个图像显示在一个坐标系中,需要语句:hold(app.UIAxes,"on"); app.UIAxes是这个坐标轴的名字。 function ButtonP...

陶小桃Blog 3万+

二、ROS2完成Docker容器和宿主机通信,使用ros2 topic list看到,但是无法echo

如果容器和主机权限不一致,则会导致无法通信(我的代码中,docker容器是root,宿主机是普通用户),虽然可以查询到相关话题,但是订阅后没有消息输出。比如,docker容器创建了一个共享内存,其所有者为docker容器用户root,当宿主机去访问的时候,由于用户不同,没有权限访问,也就无法进行信息传递。该方法只是临时修改共享内存的权限,每次运行完,需要重新运行上述命令,才可以进行通信。在运行的过程中,ROS2使用了共享内存机制,会共享内存。运行之后,宿主机和容器可能用户名不同,这是因为。

qq_43280851的博客 1265

Bootloader概述和Uboot

u-boot(Universal Boot Loader)是德国DENX小组开发的用于多种嵌入式CPU的bootloader程序。遵循GPL条款。从FADSROM、8xxROM 、PPCBOOT、Armboot逐步发展演化而来;当前版本号:参考Makefile。

hhltaishuai的博客 1902

OK3588-C开发板Forlinx Desktop系统烧录与多媒体功能实战

本文详细介绍了OK3588-C开发板Forlinx Desktop系统的烧录步骤与多媒体功能实战。从硬件准备到软件工具配置,逐步解析RKDevTool烧录技巧,并深入测试摄像头、视频编解码及音频功能,帮助开发者快速掌握RK3588芯片的强大性能与Ubuntu系统的优化应用。

weixin_29190169的博客 417

Bootloader和U-Boot的区别

本文主要探讨Bootloader和U-Boot的相关概念以及他们之间的区别。

Mr_Jaychong的博客 1646

基于迁移学习的花卉识别系统

本研究采用了预训练的经典深度学习模型,包括ResNet、AlexNet和VGG,通过微调的方式在Oxford-102数据集和一个自制花卉数据集上进行训练,并对图像进行了多种数据增强操作,以提高模型的泛化能力,致力于实现花卉的高效分类。

m0_71146337的博客 2378

宝塔面板 python管理器2.0安装Mrdoc

自从python管理器从1.9升级2.0后,导致原教程不能使用。 故关于2.0新开教程如下。 关于python管理器2.0 最大的区别在于: python管理器2.0不再需要进入虚拟环境,直接在当前环境进行操作,但是需要指定python路径及pip路径。 1、新建mrdoc工程目录,下载源码: 新建目录【mrdoc】,进入mrdoc目录,并在宝塔ssh或或远程ssh中执行 ,下载源码 git clone https://gitee.com/yang_lite/MrDoc.git .

debj031634的专栏 5993

路由器基本常识

一、路由里首先需要了解的是CPU、Flash和内存(RAM),他们分别类似对应电脑的CPU、硬盘和内存。 二、Flash中存储的内容大致可以分为三部分,分别是bootloader、固件和EEPROM。 三、bootloader:类似电脑中的BIOS功能,当路由开机启动时首先运行的就是bootloader,由它分配内存地址,并将固件加载到内存中运行,bootloader有很多种,uboot和breed都属于bootloader。 四、固件:类似于电脑的系统,和电脑系统一样,固件也分许多种,openwrt

refire 3358

UE5.5使用ControlRig实现MetaHumanNPC看向玩家

本文介绍了在虚幻引擎中实现NPC自然看向玩家的技术方案。通过MetaHuman的ControlRig系统,采用面部动画曲线+全身动画Montage的表演方式,结合ControlRig驱动CTRL_lookat控制器实现视线追踪。

平常心 1302

Linux驱动开发移植三巨头——Uboot移植

uboot是一个bootloader,作用是启动Linux或其他系统。由于Linux是运行在DDR里面的,所以uboot本质上就是初始化DDR。

qq_46526760的博客 2033

51单片机———UART串口通信

传统理解就是信息的传输与交换。单片机与单片机之间,单片机与电脑之间,以及单片机与各式各样的模块之间都可以进行通信。如果没有通信,那么单片机的功能仅仅局限于它本身,它没办法从其他设备获取有用信息,也无法将自己产生的信息告诉其他设备,这样子单片机与外围器件的合作就会收到限制,没办法完成更多的功能,就像一个没办法拓展业务的公司。:实现我们程序当中写的P0=0xFC,就是一次同时对8位进行信号的输出;习惯上,我们还称P0、P1、P2、P3为单片机的4组并行总线:实现低位先发 高位在后。

m0_74225397的博客 3296

【100%通过率】华为机试真题 Python 实现【对称美学】【2022.11 Q4 新题】

对称就是最大的美学,现有一道关于对称字符串的美学。 已知: 第1个字符串:R 第2个字符串:BR 第3个字符串:RBBR 第4个字符串:BRRBRBBR 第5个字符串:RBBRBRRBBRRBRBBR相信你已经发现规律了,没错! 就是第i个字符串=第i-1号字符串的取反+第i-1号字符串。取反即(R->B,B->R); 现在告诉你n和k,让你求得第n个字符串的第k个字符是多少。(k的编号从0开始)

MISAYAONE的博客 1万+

BootLoader 介绍 与 uboot 简介

1 BootLoader 的介绍 1.1 BootLoader 的概念 BootLoader 的引入 如果它 能将噪作系统内核复制到内存中运行,无论从本地〔比如Fh)还是从远端(比如通过网络), Bootloader就是这么一小段程序,它 能将噪作系统内核复制到内存中运行,无论从本地(比如 Flash)还是从远端(比如通过网络),它在系统上电时开始执行初始化硬件设备、准各好软件环境,最后调用操作系统内核。 可以增强 Bootloader 的功能,比如增加网络功能、从上通过串口或网络下载文件、 烧写文件、将F

weixin_46640184的博客 3511

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

uboot和bootloader的区别

uboot和bootloader的区别

吻等离子的博客 6489

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

Linux系统Uboot的移植

我们在启动一个Linux系统时,就是按照以上的顺序来依次启动。系统先运行bootload。这段bootloader程序会初始化DDR等外设(虽然I.MUX6ULL的DDR初始化是由内核的内部bootroom完成的),然后将Linux kernel的程序拷贝到内存(DDR)中执行,然后启动内核。

m0_56806782的博客 1118

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

系统移植,GNU命令,Uboot移植

把程序地址转换为文件名和行号 做·调试2、ar建立,修改,提取归档文件3、Id:GNU链接器4、as主要用来编译GNU编译器gcc输出的汇编文件,产生的目标文件由链接器Id链接 类似于gcc -c5、objcopy/arm-linux-objcopy(文件格式转换)6、objdump显示一个或者更多目标文件的信息,主要用于反编译eg:sudo dmesg -c //记录日志./a.outsudo dmesg // 查看日至信息如下。

only_write_bug的博客 1395

Linux驱动开发:uboot移植流程

基于IMX6ULL的uboot快速移植流程教学,包含uboot启动流程的总结概述!

black_sneak的博客 7419

Uboot移植流程

linux-Bootloader(Uboot)移植流程 前言 最近在做ZigBee的温室大棚项目,将自己学习的过程和经验分享给大家。本文基于linux3.4.39内核版本,s5p6818开发板实现。 1、uboot启动简介 uboot启动的过程比较复杂,这里就只贴几张图片了,重点放在后面的uboot移植。。 补充:①Bootloader的两个阶段 ②内核传参:Bootloader启动完成后...

qq_41583666的博客 4536

uboot和bootloader有啥区别

uboot和bootloader都是嵌入式设备中用来启动操作系统内核的一段程序,但是:uboot是一种通用的、可移植的、支持多种处理器架构的bootloader,bootloader是一个泛指,可以有很多不同的实现,例如Redboot、ARMboot、Blob等。uboot是bootloader的一个子集,也就是说uboot是一种特定的bootloader。uboot的核心作用就是启动操作系统内核,uboot的本质就是一段裸机程序。uboot的执行模式有两种,一种是自启动模式,另一种是交互模式。

usstmiracle的博客 2159

嵌入式linux移植篇之Uboot

芯片上电以后先运行一段bootloader程序。这段bootloader程序会先初始化DDR等外设,然后将Linux内核从flash(NAND,NOR FLASH,SD,MMC 等)拷贝到 DDR 中,最后启动Linux 内核。当然了,bootloader 的实际工作要复杂的多,但是它最主要的工作就是启动 Linux 内核。其相当于windows中的BIOS。U-Boot、vivi、RedBoot 等等,这些都是常见的bootloader程序。

飞天鱼 982

Bootloader介绍和Uboot源码结构

本文是对《嵌入式Linux应用开发完全手册》的一个自我总结! 一. Bootloader介绍 1.Bootload引入的原因 Bootloader的作用是在系统启动的时候初始化必要的硬件设备,引导内核镜像文件,传递参数给内核,然后将控制权交给内核以结束自己的使命。总的来说就是为了引导操作系统。 Bootloader非常依赖具体的硬件,对每一个板子都有一个独一无二的Bootloa

u010919352的博客 7179

(二)uboot移植--从零开始自制linux掌上电脑(F1C200S)<嵌入式项目>

bootloader主要的工作就是启动 Linux 内核,bootloader和 Linux内核的关系就跟PC上的BIOS和 Windows的关系一样,bootloader就相当于BIOS。常见的bootloader有 U-Boot、vivi、RedBoot 等等。本文使用uboot作为系统的bootloader,它的全称是,意为"通用引导加载程序"。uboot是一种裸机程序,可以视为是一个汇集了多种裸机功能的综合示例。目前的uboot已经支持液晶显示屏、网络连接、USB等高级功能。uboot官方。

kashine的博客 8095
上一篇: UNIX/LINUX 平台可执行文件格式分析(转)
下一篇: ArmLinux BOOTLOADER全程详解(基于三星2410)
ryman
博客等级 码龄22年 77粉丝 104原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值