以下是我们在开发过程中所使用的软件: Windows: CCS 3.3 DSP程序编译环境 TDS560USB 仿真器驱动 VMWare5.0 虚拟机软件 Source Insight 3.5 软件工程编辑工具 Tera Term 串口控制软件 DVFlasher 串口flash烧写工具 UltraEdit-32 文本编辑工具
Linux: dvsdk1.3 ARM交叉编译工具链 GCC3.2.2 编译器 VI 文本编辑工具
同时,在linux下需要启动如下服务: samba 通过网络提供与windows共享文件功能 nfs 通过网络给Davinci板卡提供根文件系统 tftp 通过网络下载文件至Davinci板卡 dhcp 动态分配IP
二、Davinci调试环境搭建及使用总体步骤 Davinci调试环境搭建及使用可以分成5大步: 1, 搭建linux环境 2, 安装arm编译环境 3, 搭建CCS环境 4, 编译库,生成x64P,由ARM端可执行程序调用运行 5, 编译uboot并烧写进flash,烧写内核及根文件系统
三、搭建linux环境 安装虚拟机与linux时请参考文档《虚拟机软件Vmware Workstation 5.0使用指南.doc》,需要注意几点: 1, 分配硬盘空间时,至少需要12G; 2, 物理内存推荐256M以上,安装linux时,swap空间大小加上物理内存大小必须超过600M; 3, 安装linux时,可以使用光盘安装,也可以使用硬盘上的ISO映象文件进行安装;与不用虚拟机在物理硬盘上安装的过程是一样的;在安装好linux后,需要安装VMware Tools。
ifconfig eth0 192.168.1.81 netmask 255.255.255.0 然后,Linux与Windows就可以互相ping通了。
四、安装ARM程序的编译环境
1. 安装了RedHat Linux 9.0或其他较新linux版本,且安装时应选择了下列组件: a) Editors包中的vi b) Network servers包中的dhcp 2. Redhat Linux 服务器的IP地址为192.168.1.81、子网掩码为255.255.255.0 3. 知道root用户的密码。
安装arm编译环境需要以下的工具包: mvl_4_0_1_demo_sys_setuplinux.bin mvl_4_0_1_demo_target_setuplinux.bin mvl_4_0_1_demo_lsp_setuplinux_#_#_#_#.bin dvsdk_setuplinux_#_#_#_#.bin xdc_setuplinux_#_#_#_#.bin bios_setuplinux_#_#_#_#.bin TI-C6x-CGT-v#.#.#.#.bin 其中的#代替数字,表示版本号,我们当前使用的版本具体如下: mvl_4_0_1_demo_sys_setuplinux.bin mvl_4_0_1_demo_target_setuplinux.bin mvl_4_0_1_demo_lsp_setuplinux_01_20_00_014.bin dvsdk_setuplinux_1_30_00_40.bin bios_setuplinux_5_33_03.bin TI-C6x-CGT-v6.0.15.1.bin xdc_setuplinux_3_00_02_14.bin
下面详细说明以上这些文件如何安装:
1、安装ARM交叉编译环境
(1)搭建MontaVista Linux开发环境 host $ ./mvl_4_0_1_demo_sys_setuplinux.bin host $ ./mvl_4_0_1_demo_target_setuplinux.bin host $ ./mvl_4_0_1_demo_lsp_setuplinux_#_#_#_#.bin 运行时会询问存放目录,推荐为 /opt/mv_pro_4.0.1 。 以上3个命令生成3个压缩包,先确认生成的3个压缩包: host $ cd /opt/mv_pro_4.0.1 host $ ls 有如下3个压缩文件: mvltools4.0.1-no-target.tar.gz mvl4.0.1-target_path.tar.gz DaVinciLSP-#_#_#_#.tar.gz 分别解压,使用下面命令: host $ tar zxf mvltools4.0.1-no-target.tar.gz host $ tar zxf mvl4.0.1-target_path.tar.gz host $ tar zxf DaVinciLSP-#_#_#_#.tar.gz 这样就创建了新目录 /opt/mv_pro_4.0.1/montavista/ ,其中存放了内核源码、根文件系统、Arm-gcc编译器等。 (2)安装dvsdk工具链 host $ ./dvsdk_setuplinux_#_#_#_#.bin 会生成一个目录/opt/dvsdk_1_30_00_40, host $ ./xdc_setuplinux_#_#_#_#.bin host $ ./bios_setuplinux_5_#_#_#.bin 运行时会询问存放目录,指定为 /opt/dvsdk_1_30_00_40 。 在/opt/dvsdk_1_30_00_40下新建一个目录,名为cg6x_6_0_15 执行如下命令: host $ ./TI-C6x-CGT-v#.#.#.#.bin 运行时会询问存放目录,指定为 /opt/dvsdk_1_30_00_40/ cg6x_6_0_15 。 到这一步,所需要的工具链就安装完成。下一步是进行适当的路径配置。 (3)dvsdk工具链的路径配置 对应XDC_INSTALL_DIR宏及BIOS_INSTALL_DIR宏,需要改成如下值: XDC_INSTALL_DIR=$(DVSDK_INSTALL_DIR)/xdc_3_00_02 BIOS_INSTALL_DIR=$(DVSDK_INSTALL_DIR)/bios_5_33_03 在需要使用到DSP程序编译处,需要改动相应的CGTOOLS_C64X宏如下: CGTOOLS_C64X = $(DVSDK_INSTALL_DIR)/cg6x_6_0_15 至此,就可以进行ARM端程序的编译了。
2、系统配置 在进行程序开发调试时,我们采用NFS与tftp等网络通信方式共享Linux服务器中的资源,用于嵌入式Linux进行访问、改写。 本部分主要介绍包括NFS,DHCP服务,samba服务以及DVEVM板部分参数的配置。 (1)设置NFS [davinci@DavinciServer davinci]$ mkdir -p armfs [davinci@DavinciServer davinci]$ cd /root/armfs/ [root@DavinciServer filesys]# cp -a 下面一行内容紧跟在-a后,有一空格 /opt/mv_pro_4.0/montavista/pro/devkit/arm/v5t_le/target/* . [root@DavinciServer filesys]# vi /etc/exports 在vi的界面下按i键进入输入状态,输入如下内容: /root/armfs/ *(rw,sync,no_root_squash) 按Esc键退出输入状态,按:键(即Shift+;)键,键入命令wq?,退回到命令行提示符下。 [root@DavinciServer filesys]# /usr/sbin/exportfs -a [root@DavinciServer filesys]# /sbin/chkconfig --level 12345 nfs on [root@DavinciServer filesys]# /sbin/service nfs restart Shutting down NFS mountd: [FAILED] Shutting down NFS daemon: [FAILED] Shutting down NFS quotas: [FAILED] Shutting down NFS services: [ OK ] Starting NFS services: [ OK ] Starting NFS quotas: [ OK ] Starting NFS daemon: [ OK ] Starting NFS mountd: [ OK ] [root@DavinciServer filesys]# rpm -q tftp-server package tftp-servere is not installed 如果显示这样的内容则未安装tftp-server;如显示为tftp-server-#.##-#的格式则已经安装tftp-server,请不要执行带下划线的内容。 [root@DavinciServer filesys]# eject放入RedHat Linux 9.0 Disk 3 [root@DavinciServer filesys]# mount /dev/cdrom [root@DavinciServer filesys]# cd /mnt/cdrom/ [root@DavinciServer cdrom]# cd RedHat/RPMS/ [root@DavinciServer RPMS]# rpm -ivh tftp-server-0.32-4.i386.rpm warning: tftp-server-0.32-4.i386.rpm: V3 DSA signature: NOKEY, key ID db42a60e Preparing... ########################################### [100%] 1:tftp-server ########################################### [100%] [root@DavinciServer RPMS]# cd [root@DavinciServer root]# eject放入TDS6446EVM配套光盘DaVinci Digital Video uation Kit Disk [root@DavinciServer root]# mount /dev/cdrom [root@DavinciServer root]# ls /如果安装了tftp-server接此运行 bin dev home lib misc opt root tmp var boot etc initrd lost+found mnt proc sbin usr [root@DavinciServer root]# mkdir /tftpboot如果上面没有目录tftpboot则创建之 [root@DavinciServer root]# cd /tftpboot [root@DavinciServer tftpboot]# mkdir DVEVM [root@DavinciServer tftpboot]# cp /mnt/cdrom/uImage DVEVM [root@DavinciServer tftpboot]# /sbin/chkconfig tftp on [root@DavinciServer tftpboot]# /sbin/chkconfig --list xinetd based services: chargen-udp: off rsync: off chargen: off daytime-udp: off daytime: off echo-udp: off echo: off services: off servers: off time-udp: off time: off cups-lpd: off sgi_fam: on rexec: off rlogin: on rsh: on telnet: on tftp: on on表示tftp服务已经成功启动 [root@RedHatServer root]# exit [davinci@RedHatServer filesys]# cd /home/davinci/workdir/filesys/opt [davinci@RedHatServer opt]# tar zxf /mnt/cdrom/examples.tar.gz (2)设置DHCP服务器 在vi的界面下按i键进入输入状态,输入如下内容: ddns-update-style interim; option subnet-mask 255.255.255.0; option broadcast-address 192.168.1.255; subnet 192.168.1.0 netmask 255.255.255.0 { range 192.168.1.100 192.168.1.253; default-lease-time 1800; max-lease-time 28800; } 按Esc键退出输入状态,按:键(即Shift+;)键,键入命令wq,退回到命令行提示符下。 [root@RedHatServer opt]# /sbin/service dhcpd restart Shutting down dhcpd: [FAILED] Starting dhcpd: [ OK ] [root@RedHatServer opt]# /sbin/chkconfig --level 12345 dhcpd on
(3)配置samba服务 rpm -q samba 如果安装了,会显示版本号。如果没有安装,插入Linux安装光盘,输入下面命令: rpm -vih /mnt/cdrom/RedHat(Mandrake)/RPMS/samba* 2,samba配置 Samba是用来实现SMB(Server Messages Block)协议的一种软件,是一套让Unix/Linux系统能够应用Microsoft网络通信协议的软件,它可以和运行Windows 98、Windows 2000等操作系统的计算机实现文件共享和打印机共享服务。 通过配置Samba服务器,可以提供Windows客户机来访问Linux系统上共享的资源,也能够在Linux上通过SMB协议访问Windows系统上的共享资源。
一、访问Samba服务器配置工具 要访问Samba服务器配置工具,只须依次单击“主菜单→系统设置→服务器设置→Samba服务器”,即可打开Samba服务器配置窗口。 小提示: 1.必须以root用户身份才可以对Samba服务器进行配置。 二、进行服务器设置 这里首先要对Samba服务器的基本设置和安全选项进行配置,单击配置窗口上的“首选项→服务器设置”,即可打开服务器设置对话框)。 1)基本设置
A. 验证模式:如果Windows主机不是位于NT域里,此处应该选择“共享”验证模式,这样只有在连接Samba服务器上的指定共享时才要求输入用户名、密码; 三、添加共享目录 接下来是添加共享目录,单击Samba配置窗口工具栏上的“增加”按钮,即可打开一个添加共享对话框。 1)在该对话框上的“基本”标签页上,指定要共享的目录为某个存在的目录,例如可以指定/tmp,再指定该目录的基本权限是只读还是读/写。 2)在“访问”标签页上,可以指定允许所有用户访问、或者只允许某些用户访问。 四、从Windows访问Samba服务器 好了,现在万事俱备、只欠东风,只须启动Samba服务即可。打开一个终端窗口,键入“/sbin/service smb start”命令,即可出现以下提示信息,表示Samba服务已经启动: # /sbin/service smb start 接下来的事情就简单了,在Windows里打开“网上邻居”,就可以看到我们刚才设置的Samba服务器了。当然,我们在文件夹的地址栏里直接输入 \\192.168.1.81 能更快的访问到刚才共享出来的内容。
(4)设置DVEVM 我们使用串口软件Tera Term与Davinci板连接,设置波特率为115200,无校验,1个停止位,无流控。设置好串口软件后,将Davinci板上电,出现如下信息: U-Boot 1.1.3 (Jun 15 2006 - 17:43:55) U-Boot code: 81080000 -> 81096A0C BSS: -> 8109F31C RAM Configuration: Bank #0: 80000000 256 MB ARM Clock :- 243MZ DDR Clock :- 162MZ MY AMD Flash: 16 MB In: serial Out: serial Err: serial Hit any key to stop autoboot: 0
在3秒倒计时内按任意键,进入命令模式。下面输入命令进行配置,在uBoot下输入出错只能用backspace删除,而不能用左右键移动光标。
DaVinci EVM # setenv ethaddr 00:0e:99:02:51:46 DaVinci EVM # setenv ipaddr dhcp DaVinci EVM # setenv nfshost 192.168.1.81 DaVinci EVM # setenv bootfile uImage DaVinci EVM # setenv rootpath /root/armfs DaVinci EVM # setenv fileaddr 80700000 DaVinci EVM # setenv gatewayip 192.168.1.81 DaVinci EVM # setenv serverip 192.168.1.81 DaVinci EVM # setenv bootcmd 'dhcp;bootm' DaVinci EVM # setenv netmask 255.255.255.0v DaVinci EVM # setenv bootargs console=ttyS0,115200n8 noinitrd rw ip=dhcp root=/dev/nfs nfsroot=$(nfshost):$(rootpath),nolock mem=120M与上同行 DaVinci EVM # printenv 看设置的内容是否一致 ……………………………… 省略了相关显示 DaVinci EVM # saveenv Saving Environment to Flash... Un-Protected 1 sectors Erasing Flash... Erasing sector 4 ... done. Erase Operation Completed. Erased 1 sectors Writing to Flash...-done Protected 1 sectors 将系统断电后,重新上电,等到出现 …………………… 省略内容若干 …………………… 192.168.1.?? login:root root@192.168.1.?? # cd /root/loop root@192.168.1.?? # ./loadmodules.sh ……………………省略内容若干 root@192.168.1.?? # ./videoloop
说明:此配置设置波特率为115200,采用动态分配IP,内核从Linux服务器使用tftp协议下载uImage,根文件系统从Linux服务器使用NFS方式访问共享路径/root/armfs,这样的配置适合程序的调试运行。这些部分的设置都是可以改动的,具体参见《DVEVM Getting Started Guide.pdf》,关于uboot的命令使用,请参考《U-Boot命令 emLinuxARM.pdf》。
(5)编译调试工具框图
五、安装DSP程序的编译环境 1、安装CCS3.3 1,解压并安装Code_Composer_Studio_v3.3_Build_3.3.38.2.zip 一般使用默认的配置即可,但是要注意在选择仿真芯片类型时,必须同时选上C6000、OMAP,以及TMS470系列,这是由于需要同时支持DSP与ARM的仿真运行。 2,运行CCS_v3.3_SR5_3.3.54.1.exe,采用默认的配置即可。
2、安装TDS560USB驱动
(1)安装TDS560USB驱动时注意事项
为发挥TDS560USB 仿真器的性能,主机应具备USB2.0接口。如果没有USB2.0的接口,最好使用PCI-USB2.0 or PCMCIA-USB2.0转接卡。
请不要带电拔插JTAG电缆。
在移动和搬运TDS560USB系统时,请注意TDS560 POD上的线缆不能负重,否则内部电缆容易损坏。
(2)USB设备驱动程序安装
然后将电源与TDS560USB仿真器相连,此时POWER灯亮,READY闪烁。
按照Windows 的“发现新硬件”提示指定 WintechDigital TDS560USB设备驱动程序所在的目录。在产品安装光盘的drivers目录下 (Win98/SE 是在 drivers\win98_me, Win2000/XP是drivers\win2k_xp )。 设备驱动安装完成后,Windows将在设备列表中列出TDS560USB Emulator for Windows 98 或TDS560USB Emulator for Windows 2000/XP/2003。
注:
如果找不到这个设备,请检查硬件的连接是否正确。
如果误把TDS560USB Emulator for Windows 98驱动程序安装到Windows 2000/XP/2003系统中,请在设备管理器中对该设备使用“更新驱动程序”功能。
(3)安装TDS560USB仿真器工具软件
软件安装完成后,可以在桌面上看到 “WintechDigital ” 快捷方式图标,同时在CCS目录下建立“TDS560USB”目录。 如果需要更换CCS,请重新运行Setup.exe卸载TDS560USB仿真器工具软件,并再次运行Setup.exe,选定新的DSP及新的CCS路径。 3、进行CCS setup 首先要注意: CCS的版本需要是3.2版本或更高版本; 设置前必须已经运行过TDS560USB 仿真器光盘所附带的支持工具setup.exe 。
1.CCS Setup启动后,选择”Create Board”,双击 WintechDigital TDS560USB Emulator. 2. 设置连接名称:TDS560USB Davinci 3. 不用作任何改动,直接完成。 4.选择TDS560USB Davinci ,并在中栏双击或拖ICEPICK_C到左栏中 5.在弹出窗口中设置CPU的个数为2 6.点击next 跳过。 7.设置Subpath name 和端口号,名字随便取,但是端口号ARM必须为16,DSP为18。 8.以上步骤完成后,选择左栏的ARM9 9.在中间栏拖ARM9 CPU到左栏中,扫描链中的ARM9处理器。 10.设置ARM9处理器的GEL 文件 此处需要选中随板提供的 DaVinciEVM_arm.gel 文件 11.开始设置DSPC64+,在左栏中选中\dSPC64,然后把中间栏的C6400PLUS拖到左栏的DSPC64中 12.设置C64PLUS处理器的GEL文件。 此处需要选中随板提供的 DaVinciEVM_dsp.gel 文件 13.到此,设置工作完成,存储并退出CCS Setup 。
4、运行CCS
CCS及驱动都安装完成之后,在CCS运行前,最好先运行一下 “桌面 \wintechdigital\ RESET TDS560USB”,如果复位正常,则运行CCS进行实时仿真,如果不能正常复位,请拔下仿真器电源和USB电缆,重新连接硬件,并检查硬件连接和软件安装是否正确。
六、程序编译
下面以视频编解码V1.2版本的编译为例,来说明调试程序操作步骤。
V1.2版本中有5部分,分别是:
解码算法 : VidDec_lib 编码算法 : VidEnc_lib 编译x64P环境 : video_copy ARM运行程序 : videoloop 运行目录 : loop
VidDec_lib 与VidEnc_lib目录推荐放在CCS安装路径下的MyProjects目录下,我的存放路径为:C:\CCStudio_v3.3\MyProjects 。 video_copy、videoloop与loop目录都存放在Linux服务器下,loop目录必须存放在NFS所共享的、Davinci板卡可以访问的根文件系统内,而video_copy与videoloop目录没有存放路径的限制,推荐将这两个目录存放在同一路径下。 1、在Windows上编译DSP端运行库 启动CCS,在CCS中分别编译视频解码工程VidDec_lib及视频编码工程VidEnc_lib,得到所生成的库文件VidDec_lib.lib及VidEnc_lib.lib。 2、在Linux中编译DSP可执行程序 video_copy\codecs\viddec_copy\lib\viddec_copy.a64P , 将在CCS中编译的VidEnc_lib.lib复制为 video_copy\codecs\videnc_copy\lib\videnc_copy.a64P。 也可以使用VidDec_lib.lib及VidEnc_lib.lib同目录下的批处理文件copylib.bat来实现以上两次改名复制。
在linux环境下的video_copy\servers\video_copy目录下先执行 make clean 然后执行 make 生成DSP端的可执行文件video_copy.x64P;并且将video_copy.x64P拷贝至运行目录loop中。以上的video_copy.x64P生成并拷贝至运行目录可以使用同目录下的mkall脚本执行文件来实现。(脚本是为了简化调试步骤而使用的,大家自己写出就是了)
3、在Linux中编译ARM可执行程序 这一步的make及拷贝也可以使用同目录下的mkall脚本文件来执行。 4、启动板卡,执行程序
以上的2、3、4步使用mkall脚本文件需要注意: IP地址与路径必须与实际情况匹配,特别是在程序版本升级及Linux服务器更换时。 编译x64P时,注意要先 make clean 。 七、脱机运行 在程序调试成功,并且版本稳定之后,我们需要嵌入式Linux脱离服务器的支持,单独运行起来。这时,需要有完整的Linux操作系统各部分,包括 BootLoader,内核,根文件系统这三部分。 Davinci板卡采用的BootLoader是uboot,内核提供了源文件,编译即可得到,根文件系统我们分别使用过ramdisk及yaffs2这两种方式。 Davinci板卡采用的存储介质是Flash,根据功能差异分为Nor Flash与Nand Flash两种。 脱机运行前需要将uboot、内核及根文件系统烧写到Flash中,然后在uboot中进行相应的配置。
Davinci的一般启动过程如下: Rbl->[ubl->] uboot->uImage->rootfs->用户程序 在Nor flash上的启动过程: 首先运行芯片中的Rbl,然后启动flash上的uboot,加载uImage,使用rootfs,运行用户可执行程序。 在Nand flash上的启动过程: 首先运行芯片中的Rbl,然后ubl,再启动uboot,加载uImage,使用rootfs,运行用户可执行程序。
下面以运行在Nor flash上的ramdisk文件系统为例说明。下面提到的Flash,如果没有指定为Nand Flash,则Flash就指的是Nor Flash。
1,烧写uboot 依次输入如下命令: make clobber make davinci_config make ARCH=arm 就生成了可执行文件 u-boot.bin 。 (2)烧写uboot 注意: 在连接仿真器及串口线,拨动S3开关,切换J4跳线时,必须要在断电情况下操作。
仿真器烧写: 将Davinci板卡断电, 将DM6446开发板上的S3开关拨到全部为ON,在J4跳线处选上Nor Flash,连接仿真器; 将Davinci板卡上电, 打开CCS(需要设置CCS为仿真模式),在菜单中选择 File-- Load Program ,找到Flash的烧写程序flashwrite.out ,然后运行,根据提示分别输入uboot文件名u-boot.bin,及偏移地址0,等烧写完毕即可; 将Davinci板卡断电, 将S3切换到Nor Flash启动,即拨为1011111111,运行串口控制软件Tera Term ,选择COM1口,设置波特率为115200; 将Davinci板卡上电, 在Tera Term窗口会有uboot的启动信息显示。
串口烧写: 由于dvflasher运行需要 .net FrameWork 2.0,所以先安装这个程序。 将Davinci板卡断电, 将DM6446开发板上的S3开关拨到全部为ON,在J4跳线处选上Nor Flash,用串口线连接PC主机与Davinci板卡; 将Davinci板卡上电, 在主机上运行命令行,在命令行输入命令:dvflasher -r u-boot.bin,等烧写完毕; 将Davinci板卡断电, 将S3切换到Nor Flash启动,即拨为1011111111,运行串口控制软件Tera Term ,选择COM1口,设置波特率为115200; 将Davinci板卡上电, 在Tera Term窗口会有uboot的启动信息显示。
串口烧写nand flash: 将Davinci板卡断电, 将DM6446开发板上的S3开关拨到:1101111111,在J4跳线处选上Nand Flash CS2,用串口线连接PC主机与Davinci板卡; 将Davinci板卡上电, 在主机上运行命令行,在命令行输入命令:dvflasher -fnandbin u-boot_nand.bin,等烧写完毕; 将Davinci板卡断电, 将S3切换为Nand Flash启动,即拨为全部为OFF,运行串口控制软件Tera Term ,选择COM1口,设置波特率为115200; 将Davinci板卡上电, 在Tera Term窗口会有uboot的启动信息显示。 2,烧写Linux内核 在Linux 内核中,包括了:进程管理、定时器、中断管理、内存管理、模块管理、虚拟文件系统接口、文件系统管理、设备驱动程序、进程间通信、网络管理、系统启动等操作系统功能的实现。 (1)编译Linux内核 make menuconfig 生成的配置文件保存在 mv_pro_4.0\montavista\pro\devkit\lsp\ti-davinci\arch\arm\defconfig 然后在: mv_pro_4.0\montavista\pro\devkit\lsp\ti-davinci
make ARCH=arm CROSS_COMPILE=arm_v5t_le- davinci_dm644x_defconfig make ARCH=arm CROSS_COMPILE=arm_v5t_le- checksetconfig make ARCH=arm CROSS_COMPILE=arm_v5t_le- uImage cp arch/arm/boot/uImage /tftpboot/uImage chmod a+r /tftpboot/uImage
就可以编译出新的内核。 更多的细节请参考《Building a Small Embedded Linux Kernel Example spraah2.pdf》。 (2)烧写Linux内核 a,将内核文件uImage复制到Linux服务器的 /tftpboot/ 目录下, b,连接PC与Davinci板卡,需要连接串口线及网线,在连接串口线时需要将Davinci板卡断电。 c,启动运行串口控制软件Tera Term d,将Davinci板卡上电,在Tera Term窗口中按下任意键,进入输入命令状态 e,依次输入如下命令: tftpboot 0x80080000 uImage //从tftp服务器拷贝至内存中 erase 0x2100000 22fffff //擦除2M的空间 cp.b 0x80080000 0x2100000 0x200000 //从内存拷贝至Flash中 等待命令执行完毕,就成功烧写内核文件进Nor Flash中了。 最后,在正式启动板卡时要读取flash上的内核文件,还需要设置环境变量为从flash启动,使用如下命令设置即可: setenv bootcmd ‘bootm 0x2100000’ 3,烧写根文件系统 根文件系统有多种格式,例如romfs、ramfs、jffs2、yaffs2等,我们以ramfs为例说明编译及烧写过程。 (1)制作ramdisk a,开辟一块硬盘空间,这里定为14M,名字为ramrootfs,并格式化为ext2文件系统: dd if=/dev/zero of=ramrootfs bs=1k count=14336 mke2fs -F -m 0 -i 2000 ramrootfs b,把虚拟盘挂载到目录ramfs: mount -o loop -t ext2 ramrootfs ramfs c,复制所需根文件系统内容至ramfs中 d,使用nfs方式调试,确认文件系统可用。 e,跳到ramfs目录外,卸载ramfs,并压缩文件系统映象: umount ramfs cat ramrootfs | gzip -9 > ramdisk.gz (2)烧写ramdisk a,将ramdisk.gz复制到Linux服务器的 /tftpboot/ 目录下; b,连接PC与Davinci板卡,需要连接串口线及网线,在连接串口线时需要将Davinci板卡断电; c,启动运行串口控制软件Tera Term; d,将Davinci板卡上电,在Tera Term窗口中按下任意键,进入输入命令状态; e,依次输入如下命令: tftpboot 0x80080000 ramdisk.gz //从tftp服务器拷贝至内存中 erase 0x2300000 0x28fffff //擦除6M的空间 cp.b 0x80080000 0x2300000 0x600000 //从内存拷贝至Flash中 等待命令执行完毕,就成功烧写ramdisk根文件系统进Nor Flash中了。 最后,在正式启动板卡时要读取flash上的根文件系统,还需要设置环境变量为从flash读取,使用如下两个命令设置即可: setenv bootcmd 'cp.b 0x2300000 0x85000000 0x600000; bootm 0x2100000' setenv bootargs console=ttyS0,57600n8 video=dm64xxfb:interface=composite:mode=pal ip=192.168.1.82::192.168.1.1 root=/dev/ram0 rw initrd=0x85000000,14M mem=112M 第一个命令中主要相关部分是cp.b 0x2300000 0x85000000 0x600000 ,作用是在Davinci板卡启动时拷贝根文件系统至内存中; 第一个命令中主要相关部分是root=/dev/ram0 rw initrd=0x85000000,14M ,作用是设置Davinci板卡启动时采用ramdisk根文件系统。 转自新浪博客,如有侵权,请告知,会在第一时间删除。
本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/ufo995/archive/2009/12/12/4993672.aspx |
|