Davinci及U-boot的一些介绍

TI推出的数字多媒体平台DM系列,集成了ARM与DSP双核处理器:DSP处理器运行DSP/BIOS操作系统,负责音视频编解码算法以及其他图形处理算法;ARM处理器运行MontaVista
Linux操作系统,负责设备初始化、用户图形界面管理。ARM处理器端的MontaVista
Linux 加载启动,需要有Bootloader完成内核由Flash空间加载到DDR空间并启动Linux系统。Bootloader就是在OS内核运行之前运行的一段程序,通过这段引导程序,初始化硬件设备、建立内存空间映射图,使系统的软硬件环境处于一个合适的状态,为OS内核的启动做好准备。目前TI的 DM6446平台采用U-Boot作为Bootloader引导程序。
一、U-Boot简介
U-Boot,全称Universal Boot Loader,是遵循GPL(General Public
License) 条款的开放源码项目。U-Boot不仅仅支持嵌入式Linux系统的引导,还支持 NetBSD,VxWorks,QNX,RTEMS,artos,LynxOS嵌入式操作系统。U-Boot支持 PowerPC,MIPS,X86,ARM,NIOS,XScale等诸多常用系统的处理器。U-Boot项目的开发目标,即是支持尽可能多的嵌入式处理器和嵌入式操作系统。
U-Boot的特点:
> 开放源码;
> 支持多种嵌入式操作系统内核,如:式LinuxNetBSD,VxWorks,QNX,RTEMS,artos,LynxOS;
> 支持多个处理器系列,如PowerPC,MIPS,X86,ARM,NIOS,XScale;
> 较高的可靠性和稳定性;
> 高度灵活的功能设置,适合U-Boot调试、操作系统不同引导要求等;
> 丰富的设备驱动源码,如串口、以太网、SDRAM、FLASH、EEPROM、RTC、键盘等;
> 较为丰富的开发调试文档与强大的网络技术支持。
二、U-Boot目录结构
> board: 目标板相关文件,主要包含SDRAM,FLASH驱动;
> common:独立于处理器体系结构的通用代码,如内存大小探测与故障检测;
> cpu:
> 与处理器相关的文件。如mpc8xx子目录下含串口、网口、LCD驱动及中断初始化等文件;
> driver: 通用设备驱动,如CFI FLASH 驱动(目前对INTEL FLASH支持较好);
> doc:U-Boot的说明文档;
> examples:U-Boot下运行的实例程序,如hello_world.c,timer.c;
> include:
> U-Boot头文件,configs子目录下与目标板相关的配置头文件是移植过程中经常要修改的文件;
> lib_xxx:
> 处理器体系相关的文件,如lib_ppc,lib_arm目录分别包含与PowerPC,ARM体系结构相关的文件;
> net: 网络功能相关的文件目录,如bootp,nfs,tftp;
> post: 上电自检文件目录,尚待进一步完善;
> rtc: RTC驱动程序;
> tools: 用于创建U-Boot S-RECORD和BIN镜像文件的工具;
U-Boot目前已经支持TI的DM6446平台,在board/davinci目录下为devem目标板相关文件,其中包含了网络、flash等的驱动程序。
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
}
Davinci U-Boot系列之三:U-Boot常用命令和常用环境变量
U-Boot常用命令
?:
得到所有命令列表或者列出某个命令的帮助。
用法:? [command ...]
说明:列出命令的帮助信息,当不带参数时,列出所有命令及简要说明。
help:
同?
printenv:
打印环境变量。
用法:printenv [name]
说明:name一般是Hiboot环境变量的名字,也可以是用户自定义的变量;当value为空时,删除变量
"name", 否则设置变量"name",且值为"value".
saveenv:
保存变量。
用法:saveenv
说明:保存变量及其值到flash.
ping:
用于简单判断目标机网络状态或本机网络工作状态。
tftp:
从tftp服务器中下载文件至RAM或者Flash中。
用法:tftp addr file
说明:将file文件下载到地址为addr的RAM或者Flash中。注意:使用tftp时,必须先设置好网络配置,使用setenv配置ipaddr、netmask、serverip参数。
cp:
拷贝内存。
用法:cp[.b,.w,.l]source target count.
说明:把地址为source的内存区域的值,拷贝到地址target的内存区域,区域的大小为count,source和target可以是SDRAM的地址访问,也可以是flash的地址范围,实际拷贝的大小,因命令的不同而不同。cp.b拷贝1xcount
bytes,简单使用cp时,默认为4xcount bytes.
go:
跳转到指定地址,执行代码。
用法:go addr [arg ...]
说明:执行地址addr处的二进制代码,可传递arg参数。
reset:
复位cpy处理器
用法:reset
bootm:
设置运行环境,并开始执行二进制代码。
用法:bootm [addr[arg ...]]
说明:执行addr处的代码,要求二进制代码为mkimage处理过的二进制文件。
erase:
擦除Flash内容.
用法1:erase start end.
说明:擦除地址从start到地址为end区域的内容。
注意:flash的擦除操作必须以块为最小单位,因此地址start必须为某块的其实地址,end地址则为某块的结束地址,如flash的基地址为0x34000000,块大小为0x20000,则操作erase
0x34000000 0x3401FFFF为可操作的,而erase 0x34000003 0x3401FFFF或者erase
0x34000000 0x3401FF00均不可操作。
用法2:erase N:SF[-SL].
说明:擦除第N块flash的从扇区SF到SL扇区的内容。
用法3:erase bank N.
擦除第N块flash的内容。
用法4:erase all
说明:擦除所有flash的内容。
nand erase:
擦除nand flash内容
用法:nand erase start size
nand write:
用来将内存数据写入nand flash
用法:nand write sram_addr start size
说明:将内存sram_addr处的数据写入nand flash
start地址开始的空间,写入大小为size.
U-Boot常用环境变量
ipaddr:
设置DVS6446平台的IP地址
说明:setenv ipaddr 192.168.253.53
serverip:
设置服务器ip地址,多用于tftp中
说明:setenv serverip 192.168.253.33
bootargs:
启动OS的启动参数
说明:setenv bootargs mem=120M console=ttys0,115200n8 ...
解释:设置传递参数,如内存大小,控制台,根文件系统等。
bootcmd:
设置自动及执行命令。启动延时根据bootdelay的值,若没有设置bootdelay,默认延时3秒
说明:setenv bootcmd bootm
0x23450000,即设置启动后自动执行0x23450000处的代码。
bootdelay:
设置自启动延时时间,单位为秒。只有当bootcmd变量被设置后,该变量才有效。改变了值范围为大于等于-1的整数,当设置为-1时,关闭自启动的功能。
说明:setenv bootdelay 4 ; 设置自启动延时4秒
说明:setenv bootdelay -1; 关闭自启动功能
提示:在延时时间内可按任意键切换到命令行模式。注意,在产品开发调试阶段请勿设置延时时间为0,若设置,可以在启动瞬间使用CTRL+C中断程序而进入命令行模式。
netmask:
设置子网掩码。
说明:setenv netmask 255.255.255.0
gatewayip:
设置网关。
说明:setenv gatewayip 192.168.253.1
ethaddr:
设置以太网网卡MAC地址。
说明:setenv ethaddr xx: xx: xx: xx: xx: xx
注意:设置ethaddr后,应运行saveenv,重启才能使MAC地址配置有效。
声明:以上文章来自http://www.tichinese.com/bbs/viewthread.php?tid=151&extra=page%3D9,此处只作为学习之用
附:
uboot常用命令
显示环境变量: printenv
保存环境变量: saveenv
设置内核文件名: setenv bootfile
uImage-dm355,其中uImage-dm355为对应的文件名
设置内核启动方式:
1,从网络启动:setenv bootcmd 'tftp;bootm'
2,从FLASH启动
对于DM355: setenv bootcmd 'nboot 0x80700000 0
0x400000;bootm'
对于DM6446: setenv bootcmd 'bootm 0x2040000'
设置bootargs:
DM355:
文件系统:NFS,文件系统的路径:nfsroot=192.168.1.55:/home/filesys;IP:DHCP;输入:模拟输入;输出NTSC
setenv bootargs console=ttyS0,115200n8 noinitrd rw ip=dhcp
root=/dev/nfs
nfsroot=192.168.1.55:/home/filesys,nolock mem=100M
v4l2_video_capture=:device=TVP5146
video=dm64xxfb:output=ntsc
文件系统:NFS,文件系统的路径:nfsroot=192.168.1.55:/home/filesys;IP:DHCP;输入:数字CMOS输入;输出PAL
setenv bootargs console=ttyS0,115200n8 noinitrd rw ip=dhcp
root=/dev/nfs
nfsroot=192.168.1.55:/home/filesys,nolock mem=100M
v4l2_video_capture=:device=MT9T001
video=dm64xxfb:output=pal
文件系统:本地FLASH;IP:固定IP;输入:数字CMOS输入;输出PAL
setenv bootargs console=ttyS0,115200n8 noinitrd rw
rootfstype=yaffs2
ip=192.168.1.11:192.168.1.55:192.168.1.1:255.255.255.0:192.168.1.11::off
root=/dev/mtdblock3 nolock
mem=90M v4l2_video_capture=:device=MT9T001
video=dm64xxfb:output=pal
DM6446:
文件系统:NFS,文件系统的路径:nfsroot=192.168.1.55:/home/filesys;IP:DHCP;输入:模拟输入;输出PAL
setenv bootargs console=ttyS0,115200n8 noinitrd rw ip=dhcp
root=/dev/nfs
nfsroot=192.168.1.55:/home/filesys,nolock mem=38M
v4l2_video_capture=:device=TVP5146
video=dm64xxfb:output=pal
文件系统:本地硬盘;IP:DHCP;输入:模拟输入;输出PAL
setenv bootargs console=ttyS0,115200n8 noinitrd rw ip=dhcp
root=/dev/hda1
nfsroot=192.168.1.55:/home/filesys,nolock mem=38M
v4l2_video_capture=:device=TVP5146
video=dm64xxfb:output=pal
文件系统:NFS,文件系统的路径:nfsroot=192.168.1.55:/home/filesys;IP:固定IP;输入:模拟输入;输出NTSC
setenv bootargs console=ttyS0,115200n8 noinitrd rw
ip=192.168.1.240::192.168.1.2 root=/dev/nfs
nfsroot=192.168.1.55:/home/filesys, nolock mem=38M
video=dm64xxfb:output=ntsc v4l2_video_capture=:device=TVP5146
文件系统:本地硬盘;IP:固定IP;输入:模拟输入;输出PAL
setenv bootargs console=ttyS0,115200n8 noinitrd rw
ip=192.168.1.240::192.168.1.2 root=/dev/hda1
nfsroot=192.168.1.55:/home/filesys,nolock mem=38M
v4l2_video_capture=:device=TVP5146
video=dm64xxfb:output=pal
烧录内核至FLASH
DM355:
tftp 80700000 uImage-dm355:其中uImage-dm355为对应的文件名
nand erase 400000 200000
nand write 0x80700000 0x400000 0x200000
setenv bootcmd 'nboot 0x80700000 0 0x400000;bootm'
DM6446
tftp
erase 0x2040000
+0x157fb0(其中0x157fb0为对应内核文件的大小,通过tftp命令可以统计出来)
setenv bootcmd 'bootm 0x2040000'
cp.b 0x80700000 0x2040000
0x157fb0(其中0x157fb0为对应内核文件的大小,通过tftp命令可以统计出来)
LINUX 常用命令
路径切换命令:
显示当前所在目录路径
pwd
进入/root/encode目录
cd /root/encode
如果目前所在目录是/root
则输入:
cd encode即可进入/root/encode目录
驱动挂载命令:
查看系统上挂载的移动设备
fdisk -l
将USB设备(/dev/sda1)mount到mnt/usb目录下
mount /dev/sda1 /mnt/usb
拷贝命令:
从目录A(/root/encode)拷贝一文件到目录B(mnt/usb)
cp /root/encode/test.mpeg4 mnt/usb
进程终止命令
显示系统进程:ps -a
终止某进程: kill 996(996为目前某进程的PID号)
应用程序执行命令
执行应用程序encode
./encode
后台执行应用程序encode
./encode&(在DM355脱机方式,建议通过此方式执行应用程序,方可以通过kill命令进行进程的终止)
打包命令
tar -zcf A.tar.gz B(其中B为欲打包的目录,A为压缩包的命名)
解包命令
tar -xzf ti-davinci.tar.gz(其中
ti-davinci.tar.gz欲解包的命名,解压在当前目录

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/254063.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

像素越多越好?像元的面积越小越好?为何底大一级压死人?

像素越多越好?像素点的面积越小越好?为何底大一级压死人? 像素是:图像最小单元的数量,例如6000*4000,像素数量就是24*10^6。 像素太少当然图像就看不见了,看不清晰了。 但是现在几乎所有手机和相…

设计模式(5)--工厂模式

//5.工厂模式 //ver1 //回顾简单工厂模式 class OperationFactory { public:static Operation createOperation(char chOper){Operation * op NULL;switch(chOper){case :op new OperationAdd();break;case -:op new OperationSub();break;default:break;}return *op;} };vo…

对于多属性类型系统的数据库设计

主要是以下几类系统: 生活信息系统, 内容:小, 属性:大,电商商品系统, 内容:大, 属性:大,风控征信系统, 内容:小, 属性:大,新闻系统, 内容:大, 属性:小,这些系统共同的特点, 都是在主体内容上会携带多个属性, 并且属性需要随时能调整, 并且要求能兼容旧属性, 还需要频繁的通过属…

linux环境部署常用命令

1.  查看当前所属目录:pwd2.  回到上级目录:cd ../回到上两级目录:cd ../ ../3.  查看当前目录下有哪些文件:ls4.  查看最后100行日志:tail -100 catalina.out动态重看操作日志:tail -f catalina.o…

DM6446开发攻略:V4L2视频驱动和应用分析

针对DAVINCI DM6446平台,网络上也有很多网友写了V4L2的驱动,但只是解析Montavistalinux-2.6.10 V4L2的原理、结构和函数,深度不够。本文决定把Montavista 的Linux-2.6.18 V4L2好好分析一下,顺便讲解在产品中的应用,满足…

相机像素尺寸(像元大小)和成像系统分辨率之间的关系

相机像素尺寸(像元大小)和成像系统分辨率之间的关系 在显微成像系统中,常常会用分辨率来评价其成像能力的好坏。这里的分辨率通常是指光学系统的极限分辨率以及成像探测器的图像分辨率。最终图像所呈现出的实际分辨率,取决于二者的…

H5网页播放器播不了服务器上的mp4视频文件

打开IIS,在功能视图里找到MIME类型菜单,打开该菜单后鼠标右键添加.mp4扩展名的MIME类型video/mp4 其他视频文件播放不了估计也得在IIS里添加对应的MIME类型(从服务器下载文件时也得添加对应的MIME类型) 转载于:https://www.cnblog…

不定宽度居中

一、传统方法 <div class"wrap"><div class"inner">html &#xff1a; 让 inner 居中</div> </div> .wrap {float: left; /* 自适应内容宽度 */position: relative;left: 50%; } .inner {position: relative;left: -50%; } 二、…

文章目录自动生成器

提供一个插件&#xff0c;可以实现segmentfault的文章目录效果啦~~ 不止点击跳转还滚动激活当前链接 demo地址 使用很简单 <!-- 文章容器 --> <div id"kCatelog"></div> <!-- 目录容器 --> <div class"k-catelog-list" id"…

基于ARM+DSP进行应用开发-经验共享

针对当前应用的复杂性&#xff0c;SOC芯片更好能能满足应用和媒体的需求&#xff0c;集成众多接口&#xff0c;用ARM做为应用处理器进行多样化的应用开发和用户界面和接口&#xff0c;利用DSP进行算法加速&#xff0c;特别是媒体的编解码算法加速&#xff0c;既能够保持算法的灵…

工业相机之全局曝光与卷帘曝光

曝光方式包括两种&#xff1a; 全局曝光&#xff08;global shutter&#xff09;卷帘曝光&#xff08;rolling shutter&#xff09; CCD相机都是全局曝光&#xff0c;CMOS相机既有全局曝光也有卷帘曝光 全局曝光 全局曝光的方式比较简单。也就是说光圈打开后&#xff0c;整个图…

Hibernate入门注解笔记

Entity 代表实体 映射一张表 Table 定义表的属性 Embeddable 定义类级别可以被嵌入 Id 指定主键 GeneratedValue 指定主键生成策略 Column指定列级别的属性 Embedded 指定属性为被包含类 将被包含类 作为 包含类的 字段属性 写入同一张表 EmbeddedId 指定包含类为特定主键 实…

.NET 环境中使用RabbitMQ

在企业应用系统领域&#xff0c;会面对不同系统之间的通信、集成与整合&#xff0c;尤其当面临异构系统时&#xff0c;这种分布式的调用与通信变得越发重要。其次&#xff0c;系统中一般会有很多对实时性要求不高的但是执行起来比较较耗时的地方&#xff0c;比如发送短信&#…

css3 pointer-events:none 允许点击穿透

开发时加了蒙层&#xff0c;却可以点击到蒙层下边的元素。查了以后才发现是 pointer-events:none属性具有允许点击穿透的功能&#xff0c;将其设为 pointer-events:auto就好使了。事件穿透让我想起了zepto.js中的tap事件同样会引发事件穿透的效果。如果用tap事件是为了提升响应…

成像质量、像素个数、感光元件尺寸的关系

成像质量、像素个数、感光元件尺寸的关系 感光元件 (影像传感器) 就是拍摄的照片最终成像的位置。相当于传统相机里面的胶卷&#xff0c;不同相机的感光元件尺寸是不一样的。 1. 像素的含义 两个 100 平方米的房子 A 和 B&#xff0c;A 房子里面平均分成 10 个房间&#xff…

setjmp与logjmp用法总结

setjmp/logjmp的最大用途是错误恢复&#xff0c;只要还没有从主函数退出&#xff0c;一旦发现一个不可恢复的错误&#xff0c;可以把主控制转移大主函数循环&#xff0c;并从那从新开始。使用时必须包含头文件<setjmp.h> setjmp与longjmp结合使用时&#xff0c;它们必须…

JQ对象到底是什么

jQuery对象是什么&#xff0c;举个例子&#xff0c;$(#id) 返回的就是jQuery对象&#xff0c;这个东西是整个jQuery的核心所在&#xff0c;所以我先来分析它。 var jQuery function( selector, context ) { // The jQuery object is actually just the init constructor enhan…

15、iOS开发之duplicate symbols for architecture x86_64错误

1. 错误提示 2. 分析错误原因 3. 解决问题办法 一、错误提示 在我们写代码过程中可能会经常遇到这样一个错误&#xff1a; [objc] view plaincopy print?<span style"font-size:32px;color:#ff0000;">ld: 4 duplicate symbols for architecture x86_64 clang…

【死磕Java并发】----- 死磕 Java 并发精品合集

【死磕 Java 并发】系列是 LZ 在 2017 年写的第一个死磕系列&#xff0c;一直没有做一个合集&#xff0c;这篇博客则是将整个系列做一个概览。 先来一个总览图&#xff1a; 【高清图&#xff0c;请关注“Java技术驿站”公众号&#xff0c;回复&#xff1a;脑图JUC】 【死磕Java…

vs官方使用教程中文版与英文版

Visual Studio IDE 中文文档 https://docs.microsoft.com/zh-cn/visualstudio/ide/ Visual Studio IDE documentation https://docs.microsoft.com/en-us/visualstudio/ide/