Uboot和系统移植

Author: sx                                                          E-mail:598726409@qq.com

资料整理于自己的笔记(有许多的图片和代码块没有添加,后面会慢慢补齐),也有些是博客之类 ,如有侵权,请及时联系我,我会及时删除。因为都是手码的,可能会有些错别字,理解有误的地方请联系我,以便及时修改


<Uboot的前传 >

计算机系统的组成:

CPU(控制器/运算器)   + 内存(DDR /SDRAM ) +外存(硬盘、flash)

嵌入式系统的启动过程:Uboot存放在norflash中,开机从norflah启动Uboot、uboot去初始化DDR,OS存放flash中,DDR初始化结束以后,将OS加载到DDR中去运行,这是就启动了操作系统。

简而言之,分为两个部分

(1)Uboot加载启动操作系统

(2)操作系统启动以后,加载rootfs(跟文件系统)

<自己动手安装交叉编译工具链2>

1.4.4.自己动手安装交叉编译工具链2

1.4.3.1、环境变量的意义

环境变量就是操作系统的全局变量。每一个环境变量对操作系统来说都是唯一的,名字和所代表的意义都是唯一的。linux系统可以有很多个环境变量。其中有一部分是linux系统自带的,还有一些是我们自己来扩充的。我们这里涉及到的一个环境变量是

PATH。PATH这个环境变量是系统自带的,它的含义就是系统在查找可执行程序时会搜索的路径范围。

1.4.3.2、将工具链导出到环境变量

exportPATH=/usr/local/arm/arm-2009q3/bin:$PATH

在一个终端中执行以上命令后,该终端中就可以直接使用arm-linux-gcc了,但是只要关掉这个终端再另外打开一个立马就不行了。原因是我们本次终端中执行时的操作只是针对本终端,以后再打开的终端并未被执行过这个命令所以没导出。

解决方案是在~/.bashrc中,添加export PATH=/usr/local/arm/arm-2009q3/bin:$PATH 即可。

注意:我们导出这个环境变量是在当前用户,如果你登录时在其他用户下是没用的。

 

1.4.3.3、为工具链创建arm-linux-xxx符号链接

lnarm-none-linux-gnueabi-addr2line -s arm-linux-addr2line

< Uboot是干嘛的 >

(1)原始目的:启动操作系统

启动操作系统中,有一项也很重要,就是给内核传参,依靠传参来配置内核启动的细节。

(2)部署整个操作系统(部署就是把响应的东西放到该在的地方,比如OS在flash中,Uboot把它加载到DDR中去运行)根文件系统的布置,Uboot可以布置操作系统(烧录系统镜像。)

(3)操作flash等板子上的驱动

Uboot支持SOC级,和版级的硬件驱动,比如在Uboot刷系统中,LCD屏幕上显示了一个进度条,在开机自启动的时间,自动提供了一个Shell界面(SOC),如果在启动时需要配置网络之类的,那么就要包含驱动网卡芯片的功能。

(4)提供一个命令行界面供人操作

< Uboot必须解决的问题 >

(1)必须能自动启动,给内核传参

(2)部署整个操作系统

(3)驱动版级和SOC的硬件

< Uboot的生命周期 >

Uboot本质上是一个裸机程序,裸机程序和操作系统不同,裸机程序只能单个运行,操作系统可以多进度运行,重复运行,而uboot不可以,这也是为什么Uboot可以ping通主机而主机不能Ping通uboot的原理,因为Uboot内不具备接收数据包的功能。

<Uboot的入口和出口 >

Uboot的入口就是自动启动,它的终极目标就是启动操作系统,如果它没有成功启动操作系统,就会一直打转,知道启动为止,而一旦操作系统启动代码开启,这就是它的出口,它就死了。

 

Uboot的两个关键点:

(1)命令

(2)环境变量

< Uboot常用命令 >

(1)print   = printenv 打印环境变量

(2)set    = setenv name value 设置环境变量

(3)save 保存更改(这里有一个机制,uboot中的环境变量都是存放在Flash中的,所以可以实现掉电保存,而在uboot中修改的环境变量是在内存中,所以当我们需要重启依旧保持环境变量的修改,那么就需要save)

(4)ping:

(1)umask:需要设置为同一个子网掩码255.255.255.0

(2)保证Uboot和虚拟机/PC机在同一个网段

(3)虚拟机的网络需要设立为桥接模式

(4)虚拟机的菜单中有个“虚拟网络编辑器”,这里面要设置为桥接到有线网卡。(默认是自动的,自动的一般会影响ping通。因为电脑现在一般都有2个网卡:一个有线的一个无线的。如果选了自动,那么虚拟机会自动桥接到无线网卡上,但是我们却是通过有线网卡来连接开发板的,自然ping不通)

如图所示

 

(5)tftp

Uboot有两种部署镜像的方法

(1)fastboot 装裸机驱动部分有教程

(2)tftp 利用在Ubuntu中的tftp工具,发送

安装和配置教程在(嵌入式开发环境搭建中有详述)

注意:

(1)安装好以后会在Ubuntu中有一个文件夹(我的是tftpboot),我们把需要传输的镜像放在这个文件夹下,然后去uboot去pingUbuntu,如果通了,就可以使用命令

tftp0x30000000 name 来传输了

(2)传输时是依靠字符来匹配文件,所以命令中的字符一定要匹配

(3)传输的地址要有效,比如S5PV210中是0x30000000~0x50000000

(6)movi指令族

 

(7)读写DDR指令

md[.b, .w, .l] address [# of objects]

读取一个地址的内容

可以指定读取的字节数.b .w .l 分别对应不同的字节数

mw[.b, .w, .l] address value [count]

向一个地址写内容

mm[.b, .w, .l] address

向一个地址写内容,但是是地址会自动向下增加,输入Y结束

(7)bootcmd

开机自动启动的环境变量,是一个命令集合&#x

  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值