Davinci U-Boot:U-Boot在SEED-DVS6446平台上的应用
SEED-DVS6446平台采用U-Boot-1.2.0版本,针对NAND Flash、Net、DDR驱动修改,并提供更多的U-Boot命令支持。下面以SEED-DVS6446平台为例,说明U-Boot在该平台上的常用配置使用。
一、U-Boot启动
1.软件配置
打开串口超级终端(PC超级终端、Hyperterminal、Teraterm),配置相关参数如下:
>波特率:115200
>数据位:8
>奇偶较验:None
>停止位:1
>数据流控制:None
2.硬件配置
>DB9串口线一端连接DAVINCI平台串口,另一端连接PC机串口;
>DAVINCI平台的视频采集口连接摄像头或者DVD作为视频输入;
>DAVINCI平台的视频输出口连接显示设备;
>DAVINCI平台的网络接口通过网线连接至路由器等网络接口,或者通过直通线与
PC机网口连接;
>DAVINCI平台采用5V-5A电源供电,启动系统。
此时可以在串口超级终端看到DVS6446平台的一些相关信息,比如ARM,DDR时钟频率,U-Boot版本等等。
二、U-Boot通过TFTP下载内核启动并挂载网络文件系统
TFTP下载内核启动挂载网络文件系统方式,即通过TFTP服务器下载内核启动,文件系统挂载到Linux服务器下的已经搭建好的/opt/nfs文件系统目录下。过程如下:
1.SEED-DVS6446上电启动,显示上述启动信息,当显示"hit any key to stop autoboot: 3"时按下回车键,中断系统自动启动,进行启动参数配置,此时显示如下提示符:SEED-DVS6446_v1.2#: ;
2.配置启动参数,在提示符下输入以下配置参数:setenv bootargs mem=120M console=ttyS0,115200n8 root=/dev/nfs noinitrd rw ip=dhcp nfsroot=nfs ip=/opt/nfs video=dm64xxfbutput=pal
3.设置tftp服务器的IP地址和DVS6446的IP地址,在提示符下分别输入如下配置(tftp服务器的IP地址和DVS6446的IP地址,根据实际应用配置):
setenv serverip _._._._
setenv ipaddr _._._._
4.下载内核并启动(默认用户已经将内核文件uImage复制到tftp服务的根目录下),在提示符下配置下载启动:
tftp 0x80800000 uImage;bootm 0x80800000
5.配置完成系统启动,并自动挂载网络文件系统,启动完毕显示等待登录信息。
三、通过U-Boot配置参数实现VGA视频输出与复合视频输出的配置
SEED-DVS6446支持复合视频与VGA视频输出显示,默认采用复合视频输出,用户可以通过U-Boot中的参数配置实现VGA输出。以TFTP下载内核启动挂载网络文件系统方式为例,详细步骤如下:
1.SEED-DVS6446 U-Boot启动,显示启动信息,当显示"hit any key to stop autoboot: 3"时按下回车键,中断系统自动启动,进行启动参数配置,此时显示如下提示符:SEED-DVS6446_v1.2#: ;
2.配置启动参数,在提示符下输入以下配置参数:setenv bootargs mem=120M console=ttyS0,115200n8 root=/dev/nfs noinitrd rw ip=dhcp nfsroot=nfs ip=/opt/nfs video=dm64xxfb format=vgautput=pal
3.设置tftp服务器的IP地址和DVS6446的IP地址,在提示符下分别输入如下配置:
setenv serverip _._._._
setenv ipaddr _._._._
4.下载内核并启动,在提示符下配置下载启动:
tftp 0x80800000 uImage;bootm 0x80800000
5.配置完成系统启动,并自动挂载网络文件系统,将VGA接口同SEED-DVS6446平台的VGA输出口连接,启动完毕即显示等待登录信息,VGA显示器左上角显示Monta Vista Linux的图标。
四、从CCS直接烧录到DDR情况下,不需要U-Boot,此时cmd的通用脚本文件如下:
-lrts32e.lib
-l..\..\csl\arm\lib\Debug\csl_davinciArm9.lib
-l..\..\lib\davincievmbsl.lib
-stack 0x00000800
-heap 0x00000800
MEMORY
{
IRAM: o = 0x00000000 l = 0x00004000
DRAM: o = 0x00008000 l = 0x00004000
AEMIF: o = 0x02000000 l = 0x02000000
DDR2: o = 0x80000000 l = 0x08000000
}
SECTIONS
{
.bss > DDR2
.cinit > DDR2
.cio > DDR2
.const > DDR2
.stack > DDR2
.sysmem > DDR2
.text > DDR2
.ddr2 > DDR2
}