目录
一、达芬奇(DaVinci)技术介绍 1、TMS320DM6446的结构特点 2、达芬奇技术及其芯片的应用和开发前景 二、Davinci调试环境搭建的几大步 1、Davinci调试环境搭建所需软件 2、Davinci调试环境搭建及使用总体步骤 三、搭建linux环境 四、安装ARM程序的编译环境 1、安装ARM交叉编译环境 (1)搭建MontaVista Linux开发环境 (2)安装dvsdk工具链 (3)dvsdk工具链的路径配置 2、系统配置 (1)设置NFS (2)设置DHCP服务器 (3)配置samba服务 (4)设置DVEVM (5)编译调试工具框图 五、安装DSP程序的编译环境 1、安装CCS3.3 2、安装TDS560USB驱动 (1)安装TDS560USB驱动时注意事项 (2)USB设备驱动程序安装 (3)安装TDS560USB仿真器工具软件 3、进行CCS setup 4、运行CCS 六、程序编译 1、在Windows上编译DSP端运行库 2、在Linux中编译DSP可执行程序 3、在Linux中编译ARM可执行程序 4、启动板卡,执行程序 六、脱机运行 1,烧写uboot (1)编译uboot (2)烧写uboot 2,烧写Linux内核 (1)编译Linux内核 (2)烧写Linux内核 3,烧写根文件系统 (1)制作ramdisk (2)烧写ramdisk
一、 达芬奇(DaVinci)技术介绍面对日新月异的多媒体标准与应用,德州仪器公司提供了基于达芬奇(DaVinci)技术及其产品(如TMS320DM6446)的解决方案,以简化数字视频创新。包括基于数字信号处理器(DSP)的片上系统(SoC)以及多媒体编解码器、应用编程接口(API)、框架与开发工具等。 达芬奇技术由达芬奇处理器、达芬奇软件、达芬奇开发工具和达芬奇技术支持系统等组件优化构成。其中,达芬奇处理器基于业界最高性能的DSP平台-TI TMS320C6000,利用了TI最新的C64x+ DSP内核。达芬奇处理器包含基于可扩展、可编程DSP的SoC(可从DSP与ARM内核进行定制),同时还包含优化的加速器与外设,以全方位满足各种数字视频终端设备对价格、性能以及功能等多方面的需求。 运行于达芬奇处理器之上的达芬奇软件充分利用芯片资源。其内置于可配置的框架内,通过流行操作系统内部已公布的API提供,以实现快速的软件实施。 达芬奇技术为各种应用领域及设计提供一系列工具与套件,其中包括:低成本入门工具、完整的开发套件以及参考设计,以加速OEM厂商的设计与开发进程。ARM/DSP集成开发环境(IDE)、操作系统工具以及DSP工具使开发人员能够在熟悉的环境中编程,同时还能获得达芬奇技术的优势。TMS320DM6446芯片就是达芬奇(DaVinci)技术的杰出代表。 1、TMS320DM6446的结构特点TMS320DM6446的结构图如图1所示。
结构特点 (1)高性能。采用低功耗、高性能的32位TMS320C64x内核和ARM926EJ-S内核,工作频率分别高达594MHz和297MHz;支持多媒体处理技术,采用的是TMS320C64x DSP内核,增强了对视频和音频的解码能力。 (2)低功耗。多电源管理模式,双内核电压供给为1.6V;ARM926EJ-S内核具有16KB指令和8KB数据Cache,TMS320C64x
DSP内核具有32KB程序RAM/Cache、80KB数据RAM/Cache及64KB未定义RAM/Cache;支持3.3V或1.8V的I/O接口和存储器接口。 (4)存储容量。有256MB的32位DDR2 SDRAM存储空间,128MB的16位FLASH存储空间。 (5)众多的外设。64通道增强型DMA控制器;串行端口(3个UARTs、 、SPI、音频串口);3个64位通用定时器;10/100M以太网;USB2.0端口;3个PWM端口;多达71个通用I/O口;支持MMC/SD/CF卡等。 (6)时钟控制。时钟源:27MHz系统振荡器;24MHzUSB振荡器。 ARM926EJ-S内核 ARM926EJ-S内核是采用管道化流水线的32位RISC处理器,同时配备Thumb扩展。它能够处理32位或16位的指令和8位、16位、32位的数据。它通过使用协处理器CP15和保护模块使体系结构得到增强,并提供数据和程序内存管理单元(MMU)。 MMU具有两个64项的转换旁路缓存器(TLB)用于指令和数据流,每项均可映射存储器的段、大页和小页。为了保证内核周期的存取指令和数据,提供了独立的16K字节指令Cache和8K字节数据Cache,指令和数据Cache都是通过VIVT四路连接。另外,还提供一个写缓冲用于提升内核性能,其缓冲数据容量高达17字。 TMS320C64x DSP内核 TMS320C64x DSP内核构建在VelociTI.2体系结构的基础上,是VelociTI.2体系结构的进一步增强,以其C64x内核的先进超长指令字(VLIW)结构,获得当前应用设备所需要的极高性能。 在结构上其特点为:1)C64x片内有2个数据通道、8个功能单元和2个一般目的寄存器文件(A和B)。而8个功能单元和2个寄存器文件又分成了相同的两组,每组占用一个数据通道。两个数据通道之间包含有两个数据交叉通路。2)C64xDSP采用超长指令字(VLIW),即在每个时钟周期最高可提供8条32位指令,总字长为256位的指令包同时分配到8个并行处理单元。在594MHz的时钟频率下,当片内8个处理单元同时运行时,其最大处理能力可以达到4800MIPS。3)C64x DSP具有双16bit扩充功能,芯片能在一个周期内完成双16位的乘法、加减法、比较、移位等操作。C64x通过把DSP运算压缩在较少的周期里,加速通信和图像应用。在增强并行性的扩展中,四组8位/两组16位指令允许每秒进行约90亿次8位乘法上累加周期(MAC)运算。 系统控制功能 TMS320DM6446微处理器的系统控制模块提供了看门狗(WT)、中断控制器、电源管理控制器、复位控制器及2个片上振荡器。 视频处理子系统(VPSS) TMS320DM6446中的视频处理子系统有两个接口,分别为用于视频输入的视频前端输入(VPFF)接口和用于图像输出的视频末端输出(VPBE)接口。 视频前端输入(VPFE)接口由1个CCD控制器(CCDC)、1个预处理器、柱状模块、自动曝光/白平衡/聚焦模块(H3A)和寄存器组成。CCD控制器可以与视频解码器、CMOS传感器或电荷耦合装置连接;预处理器是一个实时的图形处理器,它把CMOS或CCD得到的原始图形从RGB(三原色)转变为YUV4:2:0编码;柱状模块和H3A模块则提供原始图形信息。 视频末端输出(VPBE)接口由1个在线视频显示处理器(OSD)和1个视频编码器组成。在线视频显示处理器既能够显示两组独立的视频窗口或两组独立的OSD窗口,还可以以1个视频窗口、1个OSD窗口和1个属性窗口的形式显示。视频解码器以54MHz进行D/A转换,可以提供NTSC/PAL、S等格式的视频或音频输出。 电源管理 TMS320DM6446有三种电源管理模式:备用电源模式、低功耗运行模式和正常运行模式。备用电源模式下运行的功耗是最低的,DSP核和视频处理器子系统都不运行,除了通用I/O、UART和PWM运行以外,其他的外设都不运行,而且只有27MHz时钟工作。低功耗模式下,仅仅运行一些ARM的基本功能,DSP核和视频处理器子系统也都不运行,除了通用I/O、UART、PWM、SPI和定时器运行以外,其他的外设都不运行,而且也是只有27MHz时钟工作。正常运行模式下,除了所有的模块和外设都可以运行外,两个时钟也正常运行。 外部存储器接口 在TMS320DM6446中有与几种形式的外部存储器接口:异步EMIFA(NOR Flash、SDRAM)、NARD Flash以及CF卡等。异步EMIFA包括1个8位或16位数据线,1个24位地址总线,4个专用片选线,支持的存储接口有NAND、ATA/CF、主机端接口。NAND接口包括的存储类型有NAND卡、SM卡和xD卡。DDR2存储控制器用于与16位或32位的DDR2 SDRAM连接。DDR2 SDRAM在达芬奇(DaVinci)技术中有很重要的作用,它可以用来缓冲视频输入图形数据,作为OSD的缓冲器,存储ARM和DSP代码等。 外围控制模块 TMS320DM6446有3个64位通用定时器和3个PWM模块。其中定时器0和1具有32位通用定时器模式,定时器2具有WD模式以及产生ARM和DSP中断,产生EDMA同步事件。而PWM模块既可以作周期性记数,也可以作重复记数。 TMS320DM6446微处理器有64个独立的通道高级DMA控制器。DMA控制器用于可响应内部和外部设备的请求。在MPU TI926(ARM926EJ-S)运行条件下,完成外部寄存器/内部寄存器和外部设备之间的数据传输。DMA的设置取决于MPU TI926(ARM926EJ-S)内核。 GPIO外设控制器可以配置通用管脚为输入或输出。当配置为输出管脚时,写内部寄存器可以控制输出管脚的状态。当配置为输入管脚时,可以通过读内部寄存器的状态位知输入的状态。此外,GPIO外设可以产生CPU中断和DMA事件。GPIO管脚以16个为一列,它支持的功能如下:54个1.8V GPIO管脚和17个3.3V GPIO管脚;从O列开始每列有8个GPIO[0:7]中断,可以在上升沿或下降沿触发中断等。 TMS320DM6446支持多种串行接口:(1)3个UART接口,其中UART2具有的功能是:对于接收器和发送器的FIFO有16个字节的存储空间,DMA既可以接收数据也可以发送数据,在自动控制时可编程自动发送请求和自动清除请求,还具有内部诊断功能。(2)SPI外设,它提供一个可编程长度寄存器,通过3或4线接口与其他SPI设备连接。(3) 接口,可以与遵守总线2.1规约的其设备连接。在模式下通过2条串行总线可以发送/接收8位数据。(4)音频串行接口(ASP),ASP模块具有的功能为:全双工通信,直接与媒体数字信号编解码器、A/D、D/A等连接。 此外,还有USB2.0接口,USB2.0具有以下特点:作为外设时可达到高速480Mb/s和全速12Mb/s传输,作为主机时可以进行高速、全速和低速传输,与标准的UTMI+ PHY接口连接,FIFO中还有4K可编程RAM。 以太网控制器(EMAC)模块在网络与芯片间提供一个接口,支持10M/100M以太网的访问,支持硬件流控制和QOS。 数据输入/输出管理(MDIO)模块是用于管理与芯片相连的PHY设备。主机软件使用MDIO模块配置每个PHY对应EMAC的参数,找回对应结果,以便于在EMAC模块配置所需的参数。 2、达芬奇技术及其芯片的应用和开发前景由于达芬奇技术成功实现数字视频需要四大要素的最新进步,即:处理器、开发工具、软件以及系统专业技术,因此达芬奇技术为数字视频的当前变革打下基础。 显著降低系统成本 达芬奇技术利用数字信号处理与集成电路专业技术来提供高度集成的片上系统(SoC),集成了可编程数字信号处理器(DSP)内核、ARM处理器、视频加速协处理器、存储器、I/O带宽、平衡的内部互连以及专用外设组合,使硬件材料清单成本降低了50%。 集成代码的数字视频子系统的 硬件和软件 为了真正意义上地让开发人员克服最初的障碍并且加快产品上市进程,完整的达芬奇软件架构涵盖低级的OS驱动程序乃至应用API,使开发人员无需投入过多力量编写及优化编解码器或进行DSP编程,即能够实现数字视频功能,从而使开发人员能够将精力集中到开发可最大化附加值的产品上来。例如,在过去开发电子器件时,即使是最基本的功能,工程师们也需要进行栅极布局;而现在开发人员不再需要了解其视频应用中实施具体CODEC引擎(如:MPEG-2、H.263、WMA9)的细节,开发人员无需修改上层应用代码即可以使用理想CODEC的API,显著简化视频CODEC处理的具体低层次细节,使开发人员可以立足于开发的功能性。 通过提供可随时投产的软件,如硬件驱动器、人工优化的CODEC、以及用于管理网络中音频/视频同步和数据流的应用代码的整体组合,达芬奇技术使开发人员无需了解如何编程DSP即可实现一流的视频功能。 开放式的平台开发 数字视频系统的复杂性主要归因于开发人员必须创建和管理的众多组件。达芬奇技术通过提供开放式平台来降低系统复杂性-在该平台之上,TI及其第三方合作伙伴已经开发和集成了构成数字视频系统所需要的各种组件。 达芬奇技术提供的开放式开发平台同时也扩展到了应用程序。达芬奇软件初始将支持Linux,将来会陆续支持其他操作系统。Linux支持的内容包括外设驱动器、实时应用管理、应用级API以及可随时投产的代码。 二、 Davinci调试环境搭建的几大步1、Davinci调试环境搭建所需软件Davinci的程序分DSP程序及ARM程序,DSP程序我们在CCS中编辑和编译,ARM程序在Source Insight中编辑,在Linux中的dvsdk1.3工具链下编译。
以下是我们在开发过程中所使用的软件: 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
2、Davinci调试环境搭建及使用总体步骤Davinci调试环境搭建及使用可以分成5大步: 1, 搭建linux环境 2, 安装arm编译环境 3, 搭建CCS环境 4, 编译库,生成x64P,由ARM端可执行程序调用运行 5, 编译uboot并烧写进flash,烧写内核及根文件系统 三、搭建linux环境安装linux操作系统,可以在物理硬盘上直接安装,也可以采用在Windows的虚拟机上安装,方法并不唯一,我们采用的是在Windows的虚拟机上安装。同样,本文提到的许多方法都不是唯一的实现方式,而只是我们所采用的那一种方法。安装虚拟机与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-CGTEVAL-v6.0.15.1.bin xdc_setuplinux_3_00_02_14.bin
下面详细说明以上这些文件如何安装:
1、安装ARM交叉编译环境启动RedHat Linux服务器,到出现登录画面时,使用root用户登录,
(1)搭建MontaVista Linux开发环境直接运行前3个文件,根据提示操作即可。命令如下: 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工具链的路径配置/opt/dvsdk_1_30_00_40路径下有一个重要的配置文件:Rules.make,由于刚才另外在dvsdk目录下安装了三个工具,在Rules.make需要有相应的更改。 对应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、系统配置嵌入式系统由于对成本、体积、功耗等方面的要求,一般不能安装发行版的Linux系统。所以Davinci系统也需要相应的开发环境,来进行程序的开发调试。 在进行程序开发调试时,我们采用NFS与tftp等网络通信方式共享Linux服务器中的资源,用于嵌入式Linux进行访问、改写。 本部分主要介绍包括NFS,DHCP服务,samba服务以及DVEVM板部分参数的配置。 (1)设置NFS[davinci@DavinciServer davinci]$ cd /root [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 Evaluation 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服务器[root@DavinciServer opt]# vi /etc/dhcpd.conf 在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服务1,查看机器上是否安装了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服务器配置工具 小提示: 1)基本设置
三、添加共享目录 四、从Windows访问Samba服务器
(4)设置DVEVM此处的设置,我们假定正确的uboot已经烧写在Flash上,如果需要烧写uboot,请参照第六部分的“烧写uboot”内容进行操作。 我们使用串口软件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)编译调试工具框图下图为常见调试框图,在Windows端通过samba服务访问Linux中的源代码,用Soure Insight进行编辑,在Linux中的dvsdk1.3工具链中编译,将生成应用程序放在NFS所共享的目录下,供Davinci板卡访问。我们通过串口控制软件Tera Term来查看与改变Davinci板卡的运行状态。
TI公司提供了高效的C编译器和集成开发环境Code Composer
Studio
,可以方便的编译调试DSP程序,同时CCS的帮助文档也是十分全面。 这部分安装比较简单,详细指导参见TI公司的CCS安装指南,可分成两部分: 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,采用默认的配置即可。 安装TDS560USB驱动与ccs设置都需要仔细操作,一步操作错误就会导致最后使用不起来。 请注意正确连接14针的JTAG电缆,该电缆接错可能会导致仿真器或目标系统永久损坏;仿真器14孔插头的第六孔已经封闭,目标系统JTAG 14针插针的第六针应该拔掉。如果不能确定接插件的连接方向,请与您的经销商联系或查询我们的网站中的相关信息。
为发挥TDS560USB 仿真器的性能,主机应具备USB2.0接口。如果没有USB2.0的接口,最好使用PCI-USB2.0 or
PCMCIA-USB2.0转接卡。 请不要带电拔插JTAG电缆。 在移动和搬运TDS560USB系统时,请注意TDS560 POD上的线缆不能负重,否则内部电缆容易损坏。
将TDS560USB仿真器与目标板连接、计算机相连。 然后将电源与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系统中,请在设备管理器中对该设备使用“更新驱动程序”功能。 在安装TDS560USB仿真器工具软件之前,请确认CCS已经安装,否则仿真器无法工作。运行产品安装光盘根目录下的Setup.exe。
根据您的需要选择DSP类型,再选定相应的CCS目录。我们是选上了C6000,OMAP,Others
DSPs。 软件安装完成后,可以在桌面上看到
“WintechDigital
”
快捷方式图标,同时在CCS目录下建立“TDS560USB”目录。 如果需要更换CCS,请重新运行Setup.exe卸载TDS560USB仿真器工具软件,并再次运行Setup.exe,选定新的DSP及新的CCS路径。 在DAVINCI 板卡上使用TDS560USB仿真器时进行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 。 以上步骤完成后,先断开仿真器电源,将TDS560USB POD上的JTAG电缆与目标板JTAG接口相连,然后打开目标板电源,接通仿真器电源,运行CCS。观察两个指示灯,如果READY灯和BUSY灯轮流闪烁,表示TDS560USB正常工作,否则请断开TDS560USB仿真器的电源,拔下USB线缆,重新检查前面的硬件连接和软件安装、设置是否正确。 CCS及驱动都安装完成之后,在CCS运行前,最好先运行一下
“桌面
\wintechdigital\ RESET
TDS560USB”,如果复位正常,则运行CCS进行实时仿真,如果不能正常复位,请拔下仿真器电源和USB电缆,重新连接硬件,并检查硬件连接和软件安装是否正确。
Davinci的程序分DSP程序及ARM程序,DSP程序我们在CCS中编辑和编译,ARM程序在Source Insight中编辑,在Linux中的dvsdk1.3工具链下编译。 下面以视频编解码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目录没有存放路径的限制,推荐将这两个目录存放在同一路径下。 由于只是编译,并不需要仿真器的参与,以下CCS编译时仿真器都不是必须的。在调试的过程中,才会需要用到仿真器。
启动CCS,在CCS中分别编译视频解码工程VidDec_lib及视频编码工程VidEnc_lib,得到所生成的库文件VidDec_lib.lib及VidEnc_lib.lib。 将在CCS中编译的VidDec_lib.lib改名复制为 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脚本执行文件来实现。(脚本是为了简化调试步骤而使用的,大家自己写出就是了) 在linux环境下进入videoloop工程,运行make,生成ARM端可执行程序videoloop,将videoloop拷贝至运行目录loop中。 这一步的make及拷贝也可以使用同目录下的mkall脚本文件来执行。 启动板卡,使用root登录,然后进入运行目录loop中。首先运行装载模块程序loadmodules.sh,然后运行ARM端可执行程序videoloop。在运行过程中,videoloop会根据需要调用DSP端的视频解码算法程序及视频编码算法程序。 以上的2、3、4步使用mkall脚本文件需要注意:
IP地址与路径必须与实际情况匹配,特别是在程序版本升级及Linux服务器更换时。 编译x64P时,注意要先
make clean 。 一般在进行程序调试时,我们采用NFS与tftp等网络通信方式共享Linux服务器中的资源,用于嵌入式Linux进行访问、改写。 在程序调试成功,并且版本稳定之后,我们需要嵌入式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。 目前我们使用uboot1.1.4 ,在Linux下,进入uboot1.1.4目录, 依次输入如下命令: make clobber make
davinci_config make ARCH=arm 就生成了可执行文件 u-boot.bin 。 将uboot烧写进Flash,有两种方法:一是使用JTAG头连接仿真器,使用仿真器烧写;二是使用串口进行烧写。 注意: 在连接仿真器及串口线,拨动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的启动信息显示。 内核指的是一个提供硬件抽象层、磁盘及文件系统控制、多任务等功能的系统软件。一个内核不是一套完整的操作系统。一套基于Linux内核的完整操作系统叫作Linux操作系统。 在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》。 从Linux服务器下载内核映象文件并烧写进Davinci板卡的Nor Flash中,我们使用板卡上的uboot,通过tftp协议,从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’ Linux引导启动时,默认使用的文件系统是根文件系统。其中一般都包括这样一些子目录: 根文件系统有多种格式,例如romfs、ramfs、jffs2、yaffs2等,我们以ramfs为例说明编译及烧写过程。 在Linux服务器中制作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
从Linux服务器下载ramdisk.gz文件并烧写进Davinci板卡的Nor Flash中,
我们使用板卡上的uboot,通过tftp协议,从Linux服务器上下载压缩好的ramdisk.gz,过程如下: 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根文件系统。 |
|