分享

Davinci调试环境的搭建

 rookie 2012-07-08
目录

一、达芬奇(DaVinci)技术介绍

1TMS320DM6446的结构特点

2、达芬奇技术及其芯片的应用和开发前景

二、Davinci调试环境搭建的几大步

1Davinci调试环境搭建所需软件

2Davinci调试环境搭建及使用总体步骤

三、搭建linux环境

四、安装ARM程序的编译环境

1、安装ARM交叉编译环境

1搭建MontaVista Linux开发环境

2安装dvsdk工具链

3dvsdk工具链的路径配置

2、系统配置

1设置NFS

2设置DHCP服务器

3)配置samba服务

4设置DVEVM

5)编译调试工具框图

五、安装DSP程序的编译环境

1、安装CCS3.3

2、安装TDS560USB驱动

1)安装TDS560USB驱动时注意事项

2USB设备驱动程序安装

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内核。达芬奇处理器包含基于可扩展、可编程DSPSoC(可从DSPARM内核进行定制),同时还包含优化的加速器与外设,以全方位满足各种数字视频终端设备对价格、性能以及功能等多方面的需求。

运行于达芬奇处理器之上的达芬奇软件充分利用芯片资源。其内置于可配置的框架内,通过流行操作系统内部已公布的API提供,以实现快速的软件实施。

达芬奇技术为各种应用领域及设计提供一系列工具与套件,其中包括:低成本入门工具、完整的开发套件以及参考设计,以加速OEM厂商的设计与开发进程。ARM/DSP集成开发环境(IDE)、操作系统工具以及DSP工具使开发人员能够在熟悉的环境中编程,同时还能获得达芬奇技术的优势。TMS320DM6446芯片就是达芬奇(DaVinci)技术的杰出代表。

1TMS320DM6446的结构特点

TMS320DM6446的结构图如图1所示。

 

DM6446结构图

 

结构特点

1)高性能。采用低功耗、高性能的32TMS320C64x内核和ARM926EJ-S内核,工作频率分别高达594MHz297MHz;支持多媒体处理技术,采用的是TMS320C64x DSP内核,增强了对视频和音频的解码能力。

2)低功耗。多电源管理模式,双内核电压供给为1.6VARM926EJ-S内核具有16KB指令和8KB数据CacheTMS320C64x DSP内核具有32KB程序RAM/Cache80KB数据RAM/Cache64KB未定义RAM/Cache;支持3.3V1.8VI/O接口和存储器接口。
3)专用的视频图像处理器和视频处理子系统。专用的视频图像处理器用于对视频数据处理;视频处理子系统包括1个视频前端输入接口和1个视频末端输出接口,视频前端输入接口用于接收外部传感器或视频译码器等图像,视频末端输出接口输出图像到SDTVLCDHDTV等显示屏上。

4)存储容量。有256MB32DDR2 SDRAM存储空间,128MB16FLASH存储空间。

5)众多的外设。64通道增强型DMA控制器;串行端口(3UARTs SPI、音频串口);364位通用定时器;10/100M以太网;USB2.0端口;3PWM端口;多达71个通用I/O口;支持MMC/SD/CF卡等。

6)时钟控制。时钟源:27MHz系统振荡器;24MHzUSB振荡器。

ARM926EJ-S内核

ARM926EJ-S内核是采用管道化流水线的32RISC处理器,同时配备Thumb扩展。它能够处理32位或16位的指令和8位、16位、32位的数据。它通过使用协处理器CP15和保护模块使体系结构得到增强,并提供数据和程序内存管理单元(MMU)。

MMU具有两个64项的转换旁路缓存器(TLB)用于指令和数据流,每项均可映射存储器的段、大页和小页。为了保证内核周期的存取指令和数据,提供了独立的16K字节指令Cache8K字节数据Cache,指令和数据Cache都是通过VIVT四路连接。另外,还提供一个写缓冲用于提升内核性能,其缓冲数据容量高达17字。

TMS320C64x DSP内核

TMS320C64x DSP内核构建在VelociTI.2体系结构的基础上,是VelociTI.2体系结构的进一步增强,以其C64x内核的先进超长指令字(VLIW)结构,获得当前应用设备所需要的极高性能。

在结构上其特点为:1)C64x片内有2个数据通道、8个功能单元和2个一般目的寄存器文件(AB)。而8个功能单元和2个寄存器文件又分成了相同的两组,每组占用一个数据通道。两个数据通道之间包含有两个数据交叉通路。2)C64xDSP采用超长指令字(VLIW),即在每个时钟周期最高可提供832位指令,总字长为256位的指令包同时分配到8个并行处理单元。在594MHz的时钟频率下,当片内8个处理单元同时运行时,其最大处理能力可以达到4800MIPS3)C64x DSP具有双16bit扩充功能,芯片能在一个周期内完成双16位的乘法、加减法、比较、移位等操作。C64x通过把DSP运算压缩在较少的周期里,加速通信和图像应用。在增强并行性的扩展中,四组8/两组16位指令允许每秒进行约90亿次8位乘法上累加周期(MAC)运算。

系统控制功能

TMS320DM6446微处理器的系统控制模块提供了看门狗(WT)、中断控制器、电源管理控制器、复位控制器及2个片上振荡器。

视频处理子系统(VPSS

TMS320DM6446中的视频处理子系统有两个接口,分别为用于视频输入的视频前端输入(VPFF)接口和用于图像输出的视频末端输出(VPBE)接口。

视频前端输入(VPFE)接口由1CCD控制器(CCDC)1个预处理器、柱状模块、自动曝光/白平衡/聚焦模块(H3A)和寄存器组成。CCD控制器可以与视频解码器、CMOS传感器或电荷耦合装置连接;预处理器是一个实时的图形处理器,它把CMOSCCD得到的原始图形从RGB(三原色)转变为YUV4:2:0编码;柱状模块和H3A模块则提供原始图形信息。

视频末端输出(VPBE)接口由1个在线视频显示处理器(OSD)和1个视频编码器组成。在线视频显示处理器既能够显示两组独立的视频窗口或两组独立的OSD窗口,还可以以1个视频窗口、1OSD窗口和1个属性窗口的形式显示。视频解码器以54MHz进行D/A转换,可以提供NTSC/PALS等格式的视频或音频输出。

电源管理

TMS320DM6446有三种电源管理模式:备用电源模式、低功耗运行模式和正常运行模式。备用电源模式下运行的功耗是最低的,DSP核和视频处理器子系统都不运行,除了通用I/OUARTPWM运行以外,其他的外设都不运行,而且只有27MHz时钟工作。低功耗模式下,仅仅运行一些ARM的基本功能,DSP核和视频处理器子系统也都不运行,除了通用I/OUARTPWMSPI和定时器运行以外,其他的外设都不运行,而且也是只有27MHz时钟工作。正常运行模式下,除了所有的模块和外设都可以运行外,两个时钟也正常运行。

外部存储器接口

TMS320DM6446中有与几种形式的外部存储器接口:异步EMIFANOR FlashSDRAM)、NARD Flash以及CF卡等。异步EMIFA包括18位或16位数据线,124位地址总线,4个专用片选线,支持的存储接口有NANDATA/CF、主机端接口。NAND接口包括的存储类型有NAND卡、SM卡和xD卡。DDR2存储控制器用于与16位或32位的DDR2 SDRAM连接。DDR2 SDRAM在达芬奇(DaVinci)技术中有很重要的作用,它可以用来缓冲视频输入图形数据,作为OSD的缓冲器,存储ARMDSP代码等。

外围控制模块

TMS320DM6446364位通用定时器和3PWM模块。其中定时器01具有32位通用定时器模式,定时器2具有WD模式以及产生ARMDSP中断,产生EDMA同步事件。而PWM模块既可以作周期性记数,也可以作重复记数。

TMS320DM6446微处理器有64个独立的通道高级DMA控制器。DMA控制器用于可响应内部和外部设备的请求。在MPU TI926(ARM926EJ-S)运行条件下,完成外部寄存器/内部寄存器和外部设备之间的数据传输。DMA的设置取决于MPU TI926(ARM926EJ-S)内核。

GPIO外设控制器可以配置通用管脚为输入或输出。当配置为输出管脚时,写内部寄存器可以控制输出管脚的状态。当配置为输入管脚时,可以通过读内部寄存器的状态位知输入的状态。此外,GPIO外设可以产生CPU中断和DMA事件。GPIO管脚以16个为一列,它支持的功能如下:541.8V GPIO管脚和173.3V GPIO管脚;从O列开始每列有8GPIO[0:7]中断,可以在上升沿或下降沿触发中断等。

TMS320DM6446支持多种串行接口:(13UART接口,其中UART2具有的功能是:对于接收器和发送器的FIFO16个字节的存储空间,DMA既可以接收数据也可以发送数据,在自动控制时可编程自动发送请求和自动清除请求,还具有内部诊断功能。(2SPI外设,它提供一个可编程长度寄存器,通过34线接口与其他SPI设备连接。(3 接口,可以与遵守总线2.1规约的其设备连接。在模式下通过2条串行总线可以发送/接收8位数据。(4)音频串行接口(ASP),ASP模块具有的功能为:全双工通信,直接与媒体数字信号编解码器、A/DD/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-2H.263WMA9)的细节,开发人员无需修改上层应用代码即可以使用理想CODECAPI,显著简化视频CODEC处理的具体低层次细节,使开发人员可以立足于开发的功能性。

通过提供可随时投产的软件,如硬件驱动器、人工优化的CODEC、以及用于管理网络中音频/视频同步和数据流的应用代码的整体组合,达芬奇技术使开发人员无需了解如何编程DSP即可实现一流的视频功能。

开放式的平台开发

数字视频系统的复杂性主要归因于开发人员必须创建和管理的众多组件。达芬奇技术通过提供开放式平台来降低系统复杂性-在该平台之上,TI及其第三方合作伙伴已经开发和集成了构成数字视频系统所需要的各种组件。 达芬奇技术提供的开放式开发平台同时也扩展到了应用程序。达芬奇软件初始将支持Linux,将来会陆续支持其他操作系统。Linux支持的内容包括外设驱动器、实时应用管理、应用级API以及可随时投产的代码。

二、            Davinci调试环境搭建的几大步

1Davinci调试环境搭建所需软件

    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

 

2Davinci调试环境搭建及使用总体步骤

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

 


注意:由于后面需要与Windows之间进行通讯,我们的虚拟机网络采用网桥的方式,将虚拟机中linuxIP配置成与主机Windows同一网段,例如,WindowsIP192.168.1.80,我们可以指定LinuxIP192.168.1.81,在命令行输入如下命令:

ifconfig eth0 192.168.1.81 netmask 255.255.255.0

然后,LinuxWindows就可以互相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

到这一步,所需要的工具链就安装完成。下一步是进行适当的路径配置。        

3dvsdk工具链的路径配置

/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系统也需要相应的开发环境,来进行程序的开发调试。

在进行程序开发调试时,我们采用NFStftp等网络通信方式共享Linux服务器中的资源,用于嵌入式Linux进行访问、改写。

    本部分主要介绍包括NFSDHCP服务,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*

2samba配置

Samba是用来实现SMB(Server Messages Block)协议的一种软件,是一套让Unix/Linux系统能够应用Microsoft网络通信协议的软件,它可以和运行Windows 98Windows 2000等操作系统的计算机实现文件共享和打印机共享服务。

     
通过配置Samba服务器,可以提供Windows客户机来访问Linux系统上共享的资源,也能够在Linux上通过SMB协议访问Windows系统上的共享资源。

 

一、访问Samba服务器配置工具

要访问Samba服务器配置工具,只须依次单击主菜单系统设置服务器设置→Samba服务器,即可打开Samba服务器配置窗口。

小提示:

  1.必须以root用户身份才可以对Samba服务器进行配置。
    2.
也可以在终端窗口输入redhat-config-samba命令打开配置窗口。


二、进行服务器设置

  这里首先要对Samba服务器的基本设置和安全选项进行配置,单击配置窗口上的首选项服务器设置,即可打开服务器设置对话框)。

1)基本设置
在对话框的基本标签页,我们可以指定Linux主机所在的工作组名称,需要注意的是,此处的工作组名称不一定非得与Windows主机所在的工作组名称一致。


2
)安全设置
现在就进行Samba服务器安全设置,这里一共有四个选项,分别介绍如下:

A.
验证模式:如果Windows主机不是位于NT域里,此处应该选择共享验证模式,这样只有在连接Samba服务器上的指定共享时才要求输入用户名、密码;
B.
验证服务器:对于共享验证模式,无须启用此项设置;
C.
加密口令:应该选择,这样可以防止黑客用嗅探器截获密码明文;
D.
来宾账号:当来宾用户要登录入 Samba服务器时,他们必须被映射到服务器上的某个有效用户。选择系统上的现存用户名之一作为来宾Samba账号。当用户使用来宾账号登录入Samba服务器,他们拥有和这个用户相同的权限。

  三、添加共享目录

接下来是添加共享目录,单击Samba配置窗口工具栏上的增加按钮,即可打开一个添加共享对话框。

1
)在该对话框上的基本标签页上,指定要共享的目录为某个存在的目录,例如可以指定/tmp,再指定该目录的基本权限是只读还是读/写。

2
)在访问标签页上,可以指定允许所有用户访问、或者只允许某些用户访问。

四、从Windows访问Samba服务器

  好了,现在万事俱备、只欠东风,只须启动Samba服务即可。打开一个终端窗口,键入“/sbin/service smb start”命令,即可出现以下提示信息,表示Samba服务已经启动:

# /sbin/service smb start
启动SMB 服务 [确定]
启动NMB 服务 [确定
]

接下来的事情就简单了,在Windows里打开网上邻居,就可以看到我们刚才设置的Samba服务器了。当然,我们在文件夹的地址栏里直接输入  \\192.168.1.81 能更快的访问到刚才共享出来的内容。

 

4设置DVEVM

此处的设置,我们假定正确的uboot已经烧写在Flash上,如果需要烧写uboot,请参照第六部分的“烧写uboot”内容进行操作。

我们使用串口软件Tera TermDavinci板连接,设置波特率为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板卡的运行状态。

 

 

 

Davinci调试框图

五、安装DSP程序的编译环境

TI公司提供了高效的C编译器和集成开发环境Code Composer Studio ,可以方便的编译调试DSP程序,同时CCS的帮助文档也是十分全面。

1、安装CCS3.3

这部分安装比较简单,详细指导参见TI公司的CCS安装指南,可分成两部分:

1,解压并安装Code_Composer_Studio_v3.3_Build_3.3.38.2.zip

一般使用默认的配置即可,但是要注意在选择仿真芯片类型时,必须同时选上C6000OMAP,以及TMS470系列,这是由于需要同时支持DSPARM的仿真运行。

2,运行CCS_v3.3_SR5_3.3.54.1.exe,采用默认的配置即可。

 

2、安装TDS560USB驱动

安装TDS560USB驱动与ccs设置都需要仔细操作,一步操作错误就会导致最后使用不起来。

 

1)安装TDS560USB驱动时注意事项

请注意正确连接14针的JTAG电缆,该电缆接错可能会导致仿真器或目标系统永久损坏;仿真器14孔插头的第六孔已经封闭,目标系统JTAG 14针插针的第六针应该拔掉。如果不能确定接插件的连接方向,请与您的经销商联系或查询我们的网站中的相关信息。

 

 

为发挥TDS560USB 仿真器的性能,主机应具备USB2.0接口。如果没有USB2.0的接口,最好使用PCI-USB2.0 or PCMCIA-USB2.0转接卡。

 

请不要带电拔插JTAG电缆。

 

在移动和搬运TDS560USB系统时,请注意TDS560 POD上的线缆不能负重,否则内部电缆容易损坏。

 

2USB设备驱动程序安装

TDS560USB仿真器与目标板连接、计算机相连。

 

然后将电源与TDS560USB仿真器相连,此时POWER灯亮,READY闪烁。

 

按照Windows 的“发现新硬件”提示指定 WintechDigital TDS560USB设备驱动程序所在的目录。在产品安装光盘的drivers目录下 (Win98/SE 是在 drivers\win98_me, Win2000/XPdrivers\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仿真器工具软件

在安装TDS560USB仿真器工具软件之前,请确认CCS已经安装,否则仿真器无法工作。运行产品安装光盘根目录下的Setup.exe。 根据您的需要选择DSP类型,再选定相应的CCS目录。我们是选上了C6000OMAPOthers DSPs

 

软件安装完成后,可以在桌面上看到 WintechDigital 快捷方式图标,同时在CCS目录下建立TDS560USB目录。

如果需要更换CCS,请重新运行Setup.exe卸载TDS560USB仿真器工具软件,并再次运行Setup.exe,选定新的DSP及新的CCS路径。

3、进行CCS setup

DAVINCI 板卡上使用TDS560USB仿真器时进行CCS Setup 设置的步骤如下:

首先要注意:

CCS的版本需要是3.2版本或更高版本;

设置前必须已经运行过TDS560USB 仿真器光盘所附带的支持工具setup.exe

 

1CCS 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,DSP18

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

以上步骤完成后,先断开仿真器电源,将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_copyvideolooploop目录都存放在Linux服务器下,loop目录必须存放在NFS所共享的、Davinci板卡可以访问的根文件系统内,而video_copyvideoloop目录没有存放路径的限制,推荐将这两个目录存放在同一路径下。

1、在Windows上编译DSP端运行库

由于只是编译,并不需要仿真器的参与,以下CCS编译时仿真器都不是必须的。在调试的过程中,才会需要用到仿真器。

启动CCS,在CCS中分别编译视频解码工程VidDec_lib及视频编码工程VidEnc_lib,得到所生成的库文件VidDec_lib.libVidEnc_lib.lib

2、在Linux中编译DSP可执行程序

将在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.libVidEnc_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可执行程序

linux环境下进入videoloop工程,运行make,生成ARM端可执行程序videoloop,将videoloop拷贝至运行目录loop中。

这一步的make及拷贝也可以使用同目录下的mkall脚本文件来执行。

4、启动板卡,执行程序

启动板卡,使用root登录,然后进入运行目录loop中。首先运行装载模块程序loadmodules.sh,然后运行ARM端可执行程序videoloop。在运行过程中,videoloop会根据需要调用DSP端的视频解码算法程序及视频编码算法程序。

 

以上的234步使用mkall脚本文件需要注意:

       IP地址与路径必须与实际情况匹配,特别是在程序版本升级及Linux服务器更换时。

编译x64P时,注意要先 make clean

 

七、脱机运行

一般在进行程序调试时,我们采用NFStftp等网络通信方式共享Linux服务器中的资源,用于嵌入式Linux进行访问、改写。

在程序调试成功,并且版本稳定之后,我们需要嵌入式Linux脱离服务器的支持,单独运行起来。这时,需要有完整的Linux操作系统各部分,包括 BootLoader,内核,根文件系统这三部分。

Davinci板卡采用的BootLoaderuboot,内核提供了源文件,编译即可得到,根文件系统我们分别使用过ramdiskyaffs2这两种方式。

Davinci板卡采用的存储介质是Flash,根据功能差异分为Nor FlashNand 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

1编译uboot

目前我们使用uboot1.1.4 ,在Linux下,进入uboot1.1.4目录,

依次输入如下命令:

make clobber

make davinci_config

make ARCH=arm

就生成了可执行文件 u-boot.bin

2)烧写uboot

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的启动信息显示。

2,烧写Linux内核

内核指的是一个提供硬件抽象层、磁盘及文件系统控制、多任务等功能的系统软件。一个内核不是一套完整的操作系统。一套基于Linux内核的完整操作系统叫作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内核

Linux服务器下载内核映象文件并烧写进Davinci板卡的Nor Flash中,我们使用板卡上的uboot,通过tftp协议,从Linux服务器上下载编译好的内核,过程如下:

a,将内核文件uImage复制到Linux服务器的 /tftpboot/ 目录下,

b,连接PCDavinci板卡,需要连接串口线及网线,在连接串口线时需要将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,烧写根文件系统

Linux引导启动时,默认使用的文件系统是根文件系统。其中一般都包括这样一些子目录:
etc, dev, usr, usr/bin, bin, var
等。

etc
目录主要含有一些系统配置文件;dev含有设备特殊文件,用于使用文件操作语句操作设备;usr存放库函数、手册和其它一些文件。bin存放执行程序;var用于存放系统运行时可变的数据或者是日志等信息。

根文件系统有多种格式,例如romfsramfsjffs2yaffs2等,我们以ramfs为例说明编译及烧写过程。

1)制作ramdisk

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

2烧写ramdisk

Linux服务器下载ramdisk.gz文件并烧写进Davinci板卡的Nor Flash中,     我们使用板卡上的uboot,通过tftp协议,从Linux服务器上下载压缩好的ramdisk.gz,过程如下:

a,将ramdisk.gz复制到Linux服务器的 /tftpboot/ 目录下;

b,连接PCDavinci板卡,需要连接串口线及网线,在连接串口线时需要将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根文件系统。

 

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多