当前位置:首页 » 编程软件 » linux怎么重新编译uboot

linux怎么重新编译uboot

发布时间: 2022-08-16 15:40:28

Ⅰ rk3188的uboot.img怎么编译

U-Boot编译命令对于mini2440开发板,编译U-Boot需要执行如下的命令:$makemini2440_config$makeall使用上面的命令编译U-Boot,编译生成的所有文件都保存在源代码目录中。为了保持源代码目录的干净,可以使用如下命令将编译生成的文件输出到一个外部目录,而不是在源代码目录中,下面的2种方法都将编译生成的文件输出到/tmp/build目录:$exportBUILD_DIR=/tmp/build$makemini2440_config$makeall或$makeO=/tmp/buildmini2440_config(注意是字母O,而不是数字0)$makeall为了简化分析过程,方便读者理解,这里主要针对第一种编译方式(目标输出到源代码所在目录)进行分析。2.1.2U-Boot配置、编译、连接过程U-Boot开头有一些跟主机软硬件环境相关的代码,在每次执行make命令时这些代码都被执行一次。1.U-Boot配置过程(1)定义主机系统架构HOSTARCH:=$(shelluname-m|\sed-es/i.86/i386/\-es/sun4u/sparc64/\-es/arm.*/arm/\-es/sa110/arm/\-es/powerpc/ppc/\-es/ppc64/ppc/\-es/macppc/ppc/)“sed–e”表示后面跟的是一串命令脚本,而表达式“s/abc/def/”表示要从标准输入中,查找到内容为“abc”的,然后替换成“def”。其中“abc”表达式用可以使用“.”作为通配符。命令“uname–m”将输出主机CPU的体系架构类型。作者的电脑使用IntelCore2系列的CPU,因此“uname–m”输出“i686”。“i686”可以匹配命令“sed-es/i.86/i386/”中的“i.86”,因此在作者的机器上执行Makefile,HOSTARCH将被设置成“i386”。(2)定义主机操作系统类型HOSTOS:=$(shelluname-s|tr'[:upper:]''[:lower:]'|\sed-e's/\(cygwin\).*/cygwin/')“uname–s”输出主机内核名字,作者使用linux发行版Ubuntu9.10,因此“uname–s”结果是“Linux”。“tr'[:upper:]''[:lower:]'”作用是将标准输入中的所有大写字母转换为响应的小写字母。因此执行结果是将HOSTOS设置为“linux”。(3)定义执行shell脚本的shell#Setshelltobashifpossible,otherwisefallbacktoshSHELL:=$(shellif[-x"$$BASH"];thenecho$$BASH;\elseif[-x/bin/bash];thenecho/bin/bash;\elseechosh;fi;fi)"$$BASH"的作用实质上是生成了字符串“$BASH”(前一个$号的作用是指明第二个$是普通的字符)。若执行当前Makefile的shell中定义了“$BASH”环境变量,且文件“$BASH”是可执行文件,则SHELL的值为“$BASH”。否则,若“/bin/bash”是可执行文件,则SHELL值为“/bin/bash”。若以上两条都不成立,则将“sh”赋值给SHELL变量。由于作者的机器安装了bashshell,且shell默认环境变量中定义了“$BASH”,因此SHELL被设置为$BASH。(4)设定编译输出目录ifdefOifeq("$(originO)","commandline")BUILD_DIR:=$(O)endifendif函数$(origin,variable)输出的结果是一个字符串,输出结果由变量variable定义的方式决定,若variable在命令行中定义过,则origin函数返回值为"commandline"。假若在命令行中执行了“exportBUILD_DIR=/tmp/build”的命令,则“$(originO)”值为“commandline”,而BUILD_DIR被设置为“/tmp/build”。ifneq($(BUILD_DIR),)saved-output:=$(BUILD_DIR)#.$(shell[-d${BUILD_DIR}]||mkdir-p${BUILD_DIR})若${BUILD_DIR}表示的目录没有定义,则创建该目录。#Verifyifitwassuccessful.BUILD_DIR:=$(shellcd$(BUILD_DIR)&&/bin/pwd)$(if$(BUILD_DIR),,$(erroroutputdirectory"$(saved-output)"doesnotexist))endif#ifneq($(BUILD_DIR),)若$(BUILD_DIR)为空,则将其赋值为当前目录路径(源代码目录)。并检查$(BUILD_DIR)目录是否存在。OBJTREE:=$(if$(BUILD_DIR),$(BUILD_DIR),$(CURDIR))SRCTREE:=$(CURDIR)TOPDIR:=$(SRCTREE)LNDIR:=$(OBJTREE)……MKCONFIG:=$(SRCTREE)/mkconfig……ifneq($(OBJTREE),$(SRCTREE))obj:=$(OBJTREE)/src:=$(SRCTREE)/elseobj:=src:=endifCURDIR变量指示Make当前的工作目录,由于当前Make在U-Boot顶层目录执行Makefile,因此CURDIR此时就是U-Boot顶层目录。执行完上面的代码后,SRCTREE,src变量就是U-Boot代码顶层目录,而OBJTREE,obj变量就是输出目录,若没有定义BUILD_DIR环境变量,则SRCTREE,src变量与OBJTREE,obj变量都是U-Boot源代码目录。而MKCONFIG则表示U-Boot根目录下的mkconfig脚本。2.makemini2440_config命令执行过程下面分析命令“makemini2440_config”执行过程,为了简化分析过程这里主要分析将编译目标输出到源代码目录的情况。mini2440_config:unconfig@$(MKCONFIG)$(@:_config=)其中的依赖“unconfig”定义如下:unconfig:@rm-f$(obj)include/config.h$(obj)include/config.mk\$(obj)board/*/config.tmp$(obj)board/*/*/config.tmp\$(obj)include/autoconf.mk$(obj)include/autoconf.mk.dep其中“@”的作用是执行该命令时不在shell显示。“obj”变量就是编译输出的目录,因此“unconfig”的作用就是清除上次执行make*_config命令生成的配置文件(如include/config.h,include/config.mk等)。$(MKCONFIG)在上面指定为“$(SRCTREE)/mkconfig”。$(@:_config=)为将传进来的所有参数中的_config替换为空(其中“@”指规则的目标文件名,在这里就是“mini2440_config”。$(text:patternA=patternB),这样的语法表示把text变量每一个元素中结尾的patternA的文本替换为patternB,然后输出)。因此$(@:_config=)的作用就是将mini2440_config中的_config去掉,得到mini2440。因此“@$(MKCONFIG)$(@:_config=)”实际上就是执行了如下命令:./mkconfigmini2440即将“mini2440”作为参数传递给当前目录下的mkconfig脚本执行。在mkconfig脚本中给出了mkconfig的用法:#Parameters:TargetArchitectureCPUBoard[VENDOR][SOC]因此传递给mkconfig的参数的意义分别是:mini2440:Target(目标板型号)arm:Architecture(目标板的CPU架构)arm920t:CPU(具体使用的CPU型号)mini2440:Boardsamsung:VENDOR(生产厂家名)s3c24x0:SOC

Ⅱ 大家好,小弟一直不明白对linux或uboot源码包打补丁的原因。在网上查了资料也没有详细的介绍。

1、配置源码需要重新编译,而重新编译系统会花费大量的时间,而且Linux系统并不是修改源码就能编译通过,还涉及到很多的Makefile,那么要你单独一个个的修改工作量也会比较大。但是源码补丁可以自动识别和替换需要的,方便了一些并不是太熟悉Linux的人,而且减轻了用户的工作量。
2、既然是补丁,肯定都是针对某一些特殊情况开发的,并不是所有人都会遇到这些情况,也并不是所有人都需要这些补丁。Linux发布的源码都是一些Linux比较大的升级时候发布一次的,而源码是提供给所有人的,那么也不是每个人都需要这个补丁的源码呀,一般都只是下载和自己所从事专业有关的。

补丁的话随便你自己,因为不是所有人都需要那个补丁,就算你不装,也没什么问题的

Ⅲ linux怎么进入uboot菜单

linux下的dnw配置步骤以下:1
下载源码
源码:dnw_linux
这个是在1个论坛上搜到的,这个不需要注册,就能够免费下载奥,感谢作者的辛苦劳动和忘我的奉献精神,呵呵...2
解压这个下载完以后是rar格式的,还得到windows下解压。解压后到linux下便可。其中secbulk.c是pc端usb驱动,
dnw.c是写入工具。3
编译并加载secbulk模块$cd
secbulk$make
-c
/lib/moles/`uname
-r`/build
m=`pwd`
moles编译成功后在当前目录下可以看到secbulk.ko
用insmod命令加载模块,这需要root权限$sudo
insmod
./secbulk.ko4
编译dnw写入工具$gcc
-o
dnw
dnw.c编译成功后生成可履行dnw5
使用dnw下载使用方式和windows下基本1致。在终端下输入相应的uboot命令,当出现“usb
host
is
connected.
waiting
a
download.”时,在pc端linux上用dnw工具写入要下载的文件便可。切换到root权限,履行dnw下载.$./dnw
/path注:这个/path就是所要下载的文件的路径及名称,例:/home/linux⑵.6.30.4/arch/arm/boot/zimage写入完成后提示成功100%
xxxxxxx
bytes
ok可以把编译好的dnw拷贝到/usr/sbin下或是usr/bin下,以后使用就直接使用dnw
/path
便可。至此,完成内核的下载,下载文件系统一样的方法便可。注意:注意:有时候由于内核的升级,运行时会提示can
not
open
/dev/secbulk0的毛病,此时需要重新到secbulk目录履行$make
-c
/lib/moles/`uname
-r`/build
m=`pwd`
moles,然后加载模块$sudo
insmod
./secbulk.ko便可!

Ⅳ 从庖丁解牛说uboot如何编译

其实,这个世界上的万事万物,都有一个“纹理”。我读中学的时候劈柴,如果顺着木头的纹理劈下去很轻易的就劈开了,但如果反其道而行之不但劈不开而且斧头还会弹回来伤人!呵呵,城里出生的孩子是没这个体会,即使现在农村的孩子因为家里都烧液化气也没有这个机会体验了。 庖丁解牛之所以游刃有余,是因为他掌握了牛的纹理,顺着这些纹理就应该很容易。 那么我们的uboot的纹理在哪里呢? 很多初学者,拿到这种代码从来没有去看过它的readme或者document!这两个文本文件是非常重要的东西,可惜呀!很多人不去看readme而去请教别人,google,,跑图书馆。其实,有些东西当你问到别人的时候,聪明的人也是去看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 TOPDIR ifeq (include/config.mk,$(wildcard include/config.mk)) # load ARCH, BOARD, and CPU configuration include include/config.mk export ARCH CPU BOARD VENDOR SOC # load other configuration include $(TOPDIR)/config.mk ifndef CROSS_COMPILE ifeq ($(HOSTARCH),ppc) CROSS_COMPILE = else ifeq ($(ARCH),ppc) CROSS_COMPILE = powerpc-linux- endif ifeq ($(ARCH),arm) CROSS_COMPILE = /usr/local/arm/2.95.3/bin/arm-linux- endif ifeq ($(ARCH),i386) ifeq ($(HOSTARCH),i386) CROSS_COMPILE = else CROSS_COMPILE = i386-linux- endif endif ifeq ($(ARCH),mips) CROSS_COMPILE = mips_4KC- endif ifeq ($(ARCH),nios) CROSS_COMPILE = nios-elf- endif ifeq ($(ARCH),nios2) CROSS_COMPILE = nios2-elf- endif ifeq ($(ARCH),m68k) CROSS_COMPILE = m68k-elf- endif ifeq ($(ARCH),microblaze) CROSS_COMPILE = mb- endif endif endif export CROSS_COMPILE 这段脚本就是设置交叉编译路径CROSS_COMPILE,在设置这个路径前要判断我们所用的平台是什么,即ARCH是什么。我们这里以ARM为例。1 2

Ⅳ linux编译u-boot时显示[arch/arm/dts/zynq-zc702.dtb]错误

在编译uboot的时候,会出现出错,因此我们要首先做  make disclean. 将原来的一些中间文件清理干净。

因此在编译Uboot依次执行  1.make disclean

                                                   ​2.make smdk2440_config

                                                   ​3. make

就可以编译通过了

Ⅵ uboot用什么编译软件啊 请尽量说的详细些

用arm-linux-gcc(如果你的处理器是ARM的话),具体有好多版本,一般都是直接用开发板公司提供的,这样比较保证,因为重新编译一个编译器还是比较麻烦的事(想自己编译一个编译器的话,就用Cross tools吧)。

Ⅶ [新手求救]怎么可以编译出UBOOT和ART分区可写的固件

楼主解锁uboot的路由器固件要怎么编译,复杂嘛?能不能给个教程,谢谢!!!针对mt7620n的路由器

热点内容
数据库有表 发布:2025-02-07 07:50:49 浏览:28
基于nginx搭建图片服务器原理 发布:2025-02-07 07:44:18 浏览:448
java等待 发布:2025-02-07 07:28:24 浏览:612
vs编译器会自己加空格吗 发布:2025-02-07 07:23:05 浏览:174
光遇切换账号安卓要输入些什么 发布:2025-02-07 07:10:20 浏览:501
多角线算法 发布:2025-02-07 07:08:56 浏览:273
有效提高ftp传输速度 发布:2025-02-07 07:06:47 浏览:703
寒灵之剑脚本 发布:2025-02-07 06:57:12 浏览:119
解压的窗口 发布:2025-02-07 06:44:34 浏览:798
android身份证 发布:2025-02-07 06:36:43 浏览:431