导航:首页 > 源码编译 > 乌班图如何编译uboot

乌班图如何编译uboot

发布时间:2022-07-14 02:00:49

1. 在ubuntu下使用什么工具对uboot及内核进行烧写

tftp比较通用的 网络烧写 DNW USB烧写

2. 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

3. 如何在Ubuntu下使用TF/SD 卡制作Exynos 4412 u-boot启动盘

U-Boot源代码下载地址 http://www.linuxidc.com/Linux/2011-07/38897.htm

硬件:迅为iTop 4412精英版 & TF卡
软件:系统自带终端即可

首先,我们应该清楚TF/SD卡可以看作一张完全空白的“白纸”,之所以有分区、分区格式的区别不过是在在这张“白纸”的某些特定位置写入了一些数据来指示分区、分区格式。

其次,我们还应该清楚,在TF/SD启动模式下,exynos 4412一上电,内部iROM会从TF/SD的第1个Block(第512个字节开始)读取8KB的数据到内部iRAM,然后从内部iRAM的0地址开始运行。

原理搞清楚了,那么首先需要把TF/SD低级格式化-所有Block全部写0x00。
1、连接TF/SD卡,打开终端
使用ls /dev/sd* 命令查看所有连接到电脑上磁盘。
问题:在这里为什么不用df命令?
原因是假设你的TF/SD卡只有一个分区但这个分区已损坏,或者有多个分区但是没有一个可以识别的分区,那么此时df命令无法查看到tf/sd卡,所以说直接列出dev下所有sd开头的设备,是终极方案。

(1)假设你的tf/sd卡只有一个分区,无论这个分区是否损坏,现象应该是类似这样的:

插上tf/sd卡之前:

插上tf/sd卡之后:

很明显多出的/dev/sdb就是本文后续操作的对象。

(2)假设你的tf/sd卡已有多个分区,无论这些分区是否损坏,现象应该是类似这样的:

插上tf/sd卡之前:

插上tf/sd卡之后:

这里多出5个设备,但是我们仍然将/dev/sdb作为本文后续操作的对象。

注意:我这里是/dev/sdb,但是还有可能是/dev/sdc等等其它符号,必须根据你实际出现的设备名称进行以下操作,否则有可能损坏系统分区,非常重要,切记!!!

2、使用16进制模式打开TF卡查看数据(可跳过)
我们使用linux自带命令hexmp查看tf/sd卡中的数据:
命令为:
sudo hexmp -n 1048576 /dev/sdb
其中-n 1048576代表打印出前1M=1024*1024=1048576字节的数据。

执行结果(部分)如下:

*代表内容为0x00,为了节省空间故作省略。
3、清空TF卡上前1MB的数据
由于4412的uboot大小基本在几百kB的量级,所以清空前1MB空间足够用,注意这里的清空不是格式化,而是填充0x00。
我们利用系统/dev下的zero设备,清零tf/sd卡前1MB。
执行结果如下:

这里的count=2000代表清空2000个block,一个block=512B,2000个正好为1MB。

再次hexmp查看tf/sd卡数据,发现:

前1MB空间成功清0x00。
4、烧写uboot启动文件
在这里,我们待烧写的文件为 u-boot-iTOP-4412.bin 这个文件。
终端执行命令:

if代表输入文件地址,以你u-boot-iTOP-4412.bin 这个文件的实际地址为准,of代表输出地址,以你tf/sd卡的实际设备号为准。
到这里,就可以将tf/sd卡插入开发板上电启动了,为了证明我们烧写无误,我们执行后续操作。
5、确认烧写正确(可跳过)
我们需要确定从tf/sd卡的第一个block开始处,确实正确烧写了u-boot-iTOP-4412.bin这个文件,下面我们对比一下,用到的命令同样还是hexmp。
在这里,我们为了显示方便,只打印前5KB数据,发现bin文件被正确的复制到了sd卡的512字节处:

6、将TF卡接到开发板上,拨码开关选择TF启动,上电:

Done。
本文永久更新链接地址:http://www.linuxidc.com/Linux/2015-02/113493.htm

4. ubuntu下如何编译C语言

1、首先打开ubnutu开发环境,直接输入组合键ctrl+alt+t调出命令行界面。

5. ubuntu 编译uboot需要哪些工具,哎,新手,详细点哦,亲

1.首先安装基本编译环境:sudo apt-get install build-essential
2:先把交叉编译环境包放到你的共享目录,(我这里的版本是:arm-linux-gcc-4.4.3.tar.gz)
3:进行解压 tar zxvf arm-linux-gcc-4.4.3.tar.gz -C (要解压的路径)
比如:tar zxvf arm-linux-gcc-4.4.3.tar.gz -C ~/ (root 用户的工作目录)

4:然后设置环境变量:export PATH=$PATH:~/opt/FriendlyARM/toolschain/4.4.3/bin

5:要想系统启动自动加载环境变量:
1:普通用户:vim .bashrc 在最后添加你的环境变量:export PATH=$PATH:~/opt/FriendlyARM/toolschain/4.4.3/bin

2:root用户:vim .bashrc 在最后添加你的环境变量:export PATH=$PATH:~/opt/FriendlyARM/toolschain/4.4.3/bin

6. u-boot使用make编译出现找不到dtc命令,如何解决啊

我在ubuntu14.04上编译uboot时也遇到了这个问题,dtc是device-tree-compiler的缩写,即设备树编译器,说明系统中没有安装这个编译器,我用的是apt-get install device-tree-compiler安装后就可以成功编译了哈。

7. 在ubuntu12.04 64位系统上编译uboot kernel的时候,出现找不到 arm-none-eabi-gcc

应该是系统不兼容引起的,可能是你安装的编译器只有32位系统才能支持。你要么重新安装个高等级的编译器(支持64位系统),要么你换个32位系统。

8. 从庖丁解牛说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

9. 在ubuntu下编译uboot出现这个问题 Assembler messages: Fatal error: invalid -march= option:`armv7-a'

要用export指定环境变量和编译器例如
Export PATH=$PATH:/opt/freescale/usr/local/gcc-4.1.78-eglibc-2.5.78-1/powerpc-e300c3-linux-gnu/bin
Export CROSS_COMPILE=powerpc-e300c3-linux-gnu-

阅读全文

与乌班图如何编译uboot相关的资料

热点内容
单片机6502 浏览:765
自助洗车有什么app 浏览:937
程序员离职率多少 浏览:322
程序员那么可爱电视剧今天没更新 浏览:337
我的世界地形算法 浏览:343
台湾dns的服务器地址云空间 浏览:288
音乐喷泉软件要什么加密狗 浏览:501
androidhttpmime 浏览:774
威科夫操盘法pdf 浏览:981
算法可以用图表表示 浏览:949
山西太原php 浏览:274
常用cmd网络命令 浏览:677
hashmap7源码分析 浏览:899
搜索引擎原理技术与系统pdf 浏览:362
运动估计算法python 浏览:861
java正则1 浏览:539
redhatlinux最新 浏览:182
python字典编程词汇 浏览:147
微信和服务器如何通讯 浏览:13
百家号服务器配置有什么用 浏览:601