购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

2.5 启动加载程序的使用和移植

2.5.1 u-boot常用命令

在嵌入式开发中,bootloader,又称为启动加载程序,是必不可少的功能部件。它的功能是在系统上电后初始化最基本的硬件,加载Linux内核到内存中并引导内核,通常还要支持一些其他的功能,如TFTP下载功能等。常用的bootloader有u-boot、vivi等,下面以开源的u-boot为例讲解它的使用及移植相关内容。

u-boot使用串口作为控制终端,所以我们需要用串口线把嵌入式系统的串口连上计算机的串口终端工具,然后在开机上电后,观察终端会打印系统硬件相关信息,之后会有一个读秒的倒计时,这时按键盘上的任意键,就可以进入u-boot的命令行模式,可以在终端执行u-boot命令。常用的u-boot命令如下。

help:打印u-boot所有命令及对应功能

printenv:打印当前u-boot设置的所有环境变量及变量的值,其格式如下。

其中,baudrate是环境变量的名字,第一个“=”后面的内容115200是赋给环境变量的值。

setenv:设置或者删除环境变量,格式如下。

setevn name value——设置环境变量name的值为value。

setenv name——删除环境变量name。

saveenv:保存环境变量到Flash中,注意,使用setenv设置环境变量后,是保存在内存中的,如果没有保存到Flash中下次启动设置的数据就会丢失

tftpboot:使用TFTP协议从其他主机传输文件到内存,格式如下。

该命令的作用是把TFTP服务器上的uImage文件传输到内存0x33000000地址上,之后可以使用bootm命令引导内核启动。

bootm:从某个内存地址引导系统,命令格式如下。

该命令的作用是从0x33000000地址引导系统,需要在执行该命令之前把内核镜像uImage文件下载到该内存地址中。

run:把某个环境变量作为一个命令执行,格式如下。

该命令的作用是把环境变量bootcmd的值作为一个命令执行。

go:从某个地址取指令执行,格式如下。

2.5.2 u-boot常用环境变量介绍

u-boot有些环境变量具有特定的意义,或者作为u-boot的设置,如baudrate,或者供某个u-boot命令使用,如bootargs。下面介绍常用u-boot环境变量的作用。

baudrate:用来设定串口通信的波特率。

bootdelay:用来设定进入自动启动前的延时时间,单位是秒。

bootcmd:bootcmd的值是u-boot自动启动时执行的命令。

bootargs:引导系统时传递给内核的参数,用来设定终端及根文件系统挂载方式等引导参数。

ipaddr:设定当前网卡的IP地址。

serverip:设定TFTP服务器的IP地址。

netmask:设定当前网卡的子网掩码。

2.5.3 u-boot移植到mini2440方法

以从u-boot官网下载的u-boot-1.3.4版本的u-boot移植为例讲解移植过程,u-boot官网地址是ftp://ftp.denx.de/pub/u-boot。下面是移植的步骤,注意,以下移植针对mini2440的norflash启动,移植成功后编译得到的u-boot.bin需通过对应工具烧写到norflash,然后以norflash启动方式启动开发板。

移植步骤如下。

(1)解压官方源码压缩包,并进入解压目录。

(2)修改顶级目录下的主Makefile,在主Makefile中添加新的配置。

下面添加如下配置。

(3)创建板级文件夹。

① 修改 Makefile。

当前目录下,Makefile做如下修改。

② 修改 xyd0000.c文件,在宏定义的最后添加如下内容。

board_init更改如下。

(4)复制并修改板级配置头文件。

① 复制板级配置头文件如下。

② 修改 include/configs/xyd0000.h头文件。

③ 添加宏定义,用于添加代码的条件编译。

④ 网卡由CS8900改为DM9000。

⑤ 添加下面两条宏定义,若不添加,参数无法传递给内核。

(5)修改 cpu/arm920t/config.mk文件;armv4改为armv4t;修改 cpu/arm920t/start.S文件,删除下面两行,这是针对其他板子类型的,这里的板子没有对应硬件。

删除原来的时钟分频代码如下。

添加如下时钟初始化代码,重新设置 FCLK:HCLK:PCLK = 1:4:8。

(6)修改 cpu/arm920t/s3c24x0/speed.c文件。

① 在get_PLLCLK函数return语句之前添加如下代码。

② 在get_HCLK函数return 语句之前添加如下代码。

(7)修改net/net.c函数,在net_check_prereq函数开始处添加如下代码。

到此,移植过程结束。

移植成功后,在源码顶级目录下分步执行命令。

就可以得到u-boot.bin文件,将该二进制文件通过本章介绍的J-link仿真器烧写到mini2440的norflash即可正常使用。 MMbvrHLBNUY1K5FWqduuu49LqXo0U/zHW3GgLOom++fvslYYXbjwXeV8i0GphE1o

点击中间区域
呼出菜单
上一章
目录
下一章
×