从庖丁解牛说UBOOT如何编译
boot编译

4.建立 boot.img 引导扇区
连接生成的 boot 文件不能直接运行,必须放入软盘(或其他启动介质)中,现使用 bximage 生成一个 1.4 4M 的虚拟软盘(floppy),名字为 boot.img,为 bochs 作准备。
uroot@uroot-pc:~/linux/011$ bximage boot.img ========================================================================
mov ds,ax
mov es,ax
mov [msg1 + 17],ah
!0x07->替换字符串 1 个点符号,喇叭将鸣叫一声
mov cx,#20
!共显示 20 个字符,包括回车换行符
mov dx,#0x1004
!字符串将显示在屏幕第 17 行,第 5 列
mov bx,#0x000c
.org 510
exception(BX_GP_EXCEPTION, 0, 0); break; #endif #endif default: BX_ERROR(("MOV_CdRd: #UD - control register %d index out of range", i->nnn())); exception(BX_UD_EXCEPTION, 0, 0); } } 683 结束
endtext:
.data
enddata:
.bss
endbss:
!
!".globl"伪操作符用于定义随后的标号标识符是外部的或全局的,并且即使不使用也强制引入
petalinux-build_-c_u-boot的编译流程_概述说明

petalinux-build -c u-boot的编译流程概述说明1. 引言1.1 概述本文旨在介绍petalinux-build -c u-boot命令的编译流程。
Petalinux是一款面向嵌入式Linux开发的工具,而U-Boot是一款应用于嵌入式系统的开源引导加载程序。
通过深入了解这两个工具,并对petalinux-build -c u-boot命令进行详细分析,我们可以更好地理解和掌握其编译流程。
1.2 文章结构本文主要分为五个部分:引言、编译流程概述、编译流程详解、注意事项和常见问题解答以及结论。
在引言中,我们将简要介绍文章的内容和目的。
接下来,在第二部分中,我们将概述Petalinux和U-Boot,并重点介绍petalinux-build -c u-boot命令的作用。
第三部分将详细解释编译流程,并包括准备工作、设置环境变量和构建U-Boot镜像等步骤。
在第四部分,我们将讨论常见错误和解决方法,提供编译优化技巧和建议,并指出其他注意事项。
最后,在结论部分,我们将对编译流程进行总结,并展望未来发展。
1.3 目的本文旨在帮助读者全面了解petalinux-build -c u-boot命令的编译流程。
通过讲解Petalinux和U-Boot的基本知识以及具体的编译步骤,读者可以深入了解如何正确地使用该命令,并解决在编译过程中可能遇到的问题。
同时,本文还将提供一些实用的编译优化技巧和建议,以帮助读者提高工作效率。
希望通过本文的阅读,读者能够更好地掌握petalinux-build -c u-boot命令的使用技巧,并在嵌入式Linux开发中取得更好的成果。
2. 编译流程概述:2.1 Petalinux简介:Petalinux是由Xilinx开发的一种嵌入式Linux开发工具套件,用于构建、定制和部署基于Xilinx处理器系统的嵌入式Linux系统。
它提供了一系列工具和文档,方便开发人员进行Linux镜像的配置、编译和调试。
uboot makefile编译过程

uboot makefile编译过程(原创实用版)目录1.U-Boot 编译过程简介2.U-Boot 编译工具链3.U-Boot 编译步骤4.U-Boot 编译选项5.U-Boot 编译常见问题及解决方法正文1.U-Boot 编译过程简介U-Boot(Universal Boot Loader)是一款开源的、通用的 boot loader,广泛应用于嵌入式系统。
U-Boot 的编译过程主要包括以下几个步骤:配置、编译、链接、生成镜像文件。
在编译过程中,需要选择合适的编译工具链、内核版本以及目标硬件平台。
2.U-Boot 编译工具链U-Boot 的编译工具链通常包括以下几个组件:- 编译器(Compiler):如 GCC(GNU Compiler Collection)或者 Clang。
- 汇编器(Assembler):如 gas(GNU assembler)或者 ld(GNU linker)。
- 链接器(Linker):通常与汇编器一同使用,如 ld(GNU linker)。
- 调试器(Debugger):如 GDB(GNU Debugger)。
3.U-Boot 编译步骤U-Boot 编译过程主要包括以下步骤:- 配置(Configure):根据目标硬件平台、内核版本等参数,运行U-Boot 的 configure 脚本进行配置。
配置过程中,可以选择所需的功能、支持的硬件平台、内核版本等。
- 编译(Compile):根据配置结果,编译器会编译源代码,生成.o 文件。
- 链接(Link):链接器将.o 文件链接成可执行文件,生成最终的镜像文件。
- 生成镜像文件(Create Image):镜像文件通常是二进制格式,用于烧写到目标硬件平台。
4.U-Boot 编译选项在编译 U-Boot 时,可以通过添加不同的编译选项来实现特定功能或者优化编译结果。
常见的编译选项包括:- 指定编译器和汇编器:如“CC=gcc”和“AS=gas”。
U-boot介绍及编译的流程

U-boot介绍及编译的流程U-boot介绍及编译的流程[嵌入式]发布时间:2011-10-09 23:56:18U-boot介绍及编译的流程作用:Uboot适用于多种架构、多种操作系统。
目录:进入Uboot目录,可以看到其各级子目录(类似内核)Board:和开发板有关的文件。
每个开发板都有一个子目录。
Common:实现Uboot支持的命令Cpu:与特定CPU架构相关的代码(比如,ARM920T)Doc:文档目录。
很多的文档,值得一读。
Drives:Uboot支持的设备驱动程序都放在该目录,比如网卡。
Include:Uboot使用的头文件。
该目录下configs目录有与开发板相关的配置头文件。
该目录下asm目录有与CPU体系结构相关的头文件。
注意其命名的方法,和开发板的子目录的命名一样,对该开发板进行软硬件的配置。
【这是一个我们在移植时必须修改的文件】编译:Uboot的Makefile从功能上可以分为两个部分:1. 执行每种board相关的配置2. 编译生成uboot.bin文件Uboot.bin的生成分为两个步骤:1. 选择现在使用的是哪个开发板#make EmbedSky_config2. 编译生成u-boot.bin$make CROSS_COMPILE=arm_linux-TQ中用make。
【实际操作流程:】①进入uboot根目录②先清除【这是个好习惯】配置【比内核简单很多】#make EmbedSky_config③编译 #make④得到uboot.bin,拷贝出来。
uboot配置 编译 连接全过程

uboot 配置编译连接全过程分类:Uboot 2011-11-14 20:48 415人阅读评论(1) 收藏举报根据README中Porting Guide 的指示精神,我们要在新板子上移植UBoot,最快速的办法就是查看当前UBoot 代码中是否有对相似于待移植板子的其他板子的支持(这应该又是一个可考虑成为习惯甚至本能的做法。
也即拿到不熟悉的软件包后,看看里面有没有自己熟悉的、或者和自己目前要做的东西很相似的部分,从这个部分入手往往能很快的解决问题)。
很幸运,我们在里面找到了三星公司所生产的SMDK2410参考板,这是三星公司早先为推销其生产的ARM9芯片-S3C2410所推出的一块PCB参考设计板(推出时随板子附加了很多的软硬件资料)。
知道这个后,我们很高兴,因为我们知道我们板子上的CPU——S3C2440正是S3C2410的升级版。
所以,在真正动手移植之前,分析一下新版本UBoot中如何支持SMDK2410的,自然成为接下来要做的事情。
UBoot本身是用GNU工具链开发的,那这就意味着其代码包里面必然会有很多的Makefile文件,因为GNU Make正是用来管理软件项目编译的GNU工具。
而且,正如我们前面说的,UBoot能支持如此多的CPU体系结构和操作系统,那它就必定会有很多的配置选项用于配置。
所以分析支持SMDK2410参考板的具体代码之前,我们必须先弄懂UBoot的配置编译过程。
我们只有对此了然于胸了,才能比较顺利的完成移植。
所幸的是,不像Linux内核代码,UBoot 的代码量并不多,分析起来并不痛苦。
作为UBoot学习移植系列的第一篇文章,我在这里就以SMDK2410板子的支持作为例子,分析新版本UBoot(2010.06)的配置编译过程。
作为前提,你应该知道一些GNU Make以及一些Bash Shell Script的知识。
从UBOOT用户的角度来讲,其编译配置过程倒是非常的简单,只需要在命令行中切换到UBoot目录下输入两个命令:[csicong@juliantec u-boot-2010.06]$ make ARCH=arm CROSS_COMPILE=arm-linux- smdk2410_config[csicong@juliantec u-boot-2010.06]$ make ARCH=arm CROSS_COMPILE=arm-linux-第一个命令完成UBoot for smdk2410参考板的配置,第二个命令则真正编译出所需要的UBoot 二进制映像文件,编译出来之后我们需要将其下载到FLASH中。
u-boot制作编译过程ok

2.1.5 UBOOT的制作过程1.第一步:修改makefile,目的告诉makefile导入的工程名是什么。
1)在/1niuedu/u-boot-1.3.4的Makefile的2494行进行COPY后进行修改,范例如下:将smdk2410_config : unconfig@$(MKCONFIG) $(@:_config=) arm arm920t smdk2410 NULL s3c24x0 复制并修改为:edu2440_config: unconfig@$(MKCONFIG) $(@:_config=) arm arm920t edu2440 NULL s3c24x02)交叉编译143 144修改为(很多u-boot为默认,一般不修改,如不同需要修改)ifeq ($(ARCH),arm)CROSS_COMPILE = arm-linux-说明:在顶层Makefile(u-boot文件中)中为开发板添加新的配置选项,使用已有的配置项目为例复制修改如下代码:Smdk2410_config:unconfig(2497行)(告诉makefile导入的工程名是怎么设置的) @./mkconfig$(@:_config=)arm arm 920t smdk2410 NULL s3c24x0 Arm:CPU架构Arm920t:CPU类型,对应cpu/arm920t目录xyd2440:开发板型号,对应board/xyd2440NULL:开发者s3c2440:片上系统(SOC)2.第二步:配置开发板选项,修改board中相应开发板选项1)在board目录中将smdk2410复制,然后修改名字为edu2440。
2)在board/edu2440目录下将smdk2410.c修改为edu2440.c(可能运行不了,那么再做如下修改)将E:\信盈达常用资料库\嵌入式配套资料\mini2440-20100717光盘资料\linux\bootloader\u-boot-1.1.6\board\open24x0里面的:boot_init.c,open24x0.c两个文件copy到board-edu2440文件下面。
uboot编译流程

uboot编译流程U-Boot是一款开源的嵌入式系统引导加载程序,它可以用于启动各种嵌入式系统,如ARM、MIPS等。
下面是U-Boot编译流程的详细介绍。
1. 下载U-Boot源代码U-Boot的源代码可以从官方网站上下载,也可以从GitHub等代码托管平台上下载。
下载完成后,解压到本地目录。
2. 配置编译环境在编译U-Boot之前,需要先配置编译环境。
具体来说,需要安装交叉编译工具链、make工具、gcc等开发工具。
这些工具的安装方法可以参考各自的官方文档。
3. 配置U-Boot在U-Boot源代码目录下,可以找到一个名为“Makefile”的文件,这个文件是U-Boot的主要配置文件。
通过修改这个文件,可以配置U-Boot的编译选项,如编译器、目标平台等。
具体的配置方法可以参考U-Boot官方文档。
4. 编译U-Boot在完成U-Boot的配置后,可以开始编译U-Boot了。
在终端中进入U-Boot源代码目录,执行“make”命令即可开始编译。
编译过程中,会生成一系列的中间文件和最终的可执行文件。
5. 烧录U-Boot编译完成后,会生成一个名为“u-boot.bin”的二进制文件,这个文件就是U-Boot的可执行文件。
接下来,需要将这个文件烧录到目标设备中。
具体的烧录方法可以参考目标设备的官方文档。
6. 测试U-Boot烧录完成后,可以通过串口等方式连接到目标设备,测试U-Boot是否正常工作。
在启动目标设备时,U-Boot会自动运行,并加载操作系统或其他应用程序。
总结:U-Boot编译流程包括下载源代码、配置编译环境、配置U-Boot、编译U-Boot、烧录U-Boot和测试U-Boot等步骤。
其中,配置U-Boot是最关键的一步,需要根据实际情况进行调整。
在编译完成后,需要将U-Boot烧录到目标设备中,并进行测试,以确保U-Boot正常工作。
从庖丁解牛说uboot如何编译

很多人拿到uboot,编译不知如何下手!其实,这个世界上的万事万物,都有一个“纹理”。
我读中学的时候劈柴,如果顺着木头的纹理劈下去很轻易的就劈开了,但如果反其道而行之不但劈不开而且斧头还会弹回来伤人!呵呵,城里出生的孩子是没这个体会,即使现在农村的孩子因为家里都烧液化气也没有这个机会体验了。
庖丁解牛之所以游刃有余,是因为他掌握了牛的纹理,顺着这些纹理就应该很容易。
那么我们的uboot的纹理在哪里呢?很多初学者,拿到这种代码从来没有去看过它的readme或者document!这两个文本文件是非常重要的东西,可惜呀!很多人不去看readme而去请教别人,google,baidu,跑图书馆。
其实,有些东西当你问到别人的时候,聪明的人也是去看readme然后给你解答的。
下面我们就去找uboot的纹理!本文u-boot版本U-Boot 1.1.4我们按正常人的思维(智商90)来分析。
首先,是要编译,那么编译就要执行命令make,而make实际上就是执行makefile文件。
第一次make肯定是不能成功的。
听从观音菩萨的教诲“从哪里来就到哪里去”!make 出问题,我们就去makefile里找原因。
Makefile里有这样一段话:TOPDIR := $(shell if [ "$$PWD" != "" ]; then echo $$PWD; else pwd; fi)export TOPDIRifeq (include/config.mk,$(wildcard include/config.mk))# load ARCH, BOARD, and CPU configurationinclude include/config.mkexport ARCH CPU BOARD VENDOR SOC# load other configurationinclude $(TOPDIR)/config.mkifndef CROSS_COMPILEifeq ($(HOSTARCH),ppc)CROSS_COMPILE =elseifeq ($(ARCH),ppc)CROSS_COMPILE = powerpc-linux-endififeq ($(ARCH),arm)CROSS_COMPILE = /usr/local/arm/2.95.3/bin/arm-linux-endififeq ($(ARCH),i386)ifeq ($(HOSTARCH),i386)CROSS_COMPILE =elseCROSS_COMPILE = i386-linux-endifendififeq ($(ARCH),mips)CROSS_COMPILE = mips_4KC-endififeq ($(ARCH),nios)CROSS_COMPILE = nios-elf-endififeq ($(ARCH),nios2)CROSS_COMPILE = nios2-elf-endififeq ($(ARCH),m68k)CROSS_COMPILE = m68k-elf-endififeq ($(ARCH),microblaze)CROSS_COMPILE = mb-endifendifendifexport CROSS_COMPILE这段脚本就是设置交叉编译路径CROSS_COMPILE,在设置这个路径前要判断我们所用的平台是什么,即ARCH是什么。