SEED-DTK6446实验手册(ARM-Linux).doc_第1页
SEED-DTK6446实验手册(ARM-Linux).doc_第2页
SEED-DTK6446实验手册(ARM-Linux).doc_第3页
SEED-DTK6446实验手册(ARM-Linux).doc_第4页
SEED-DTK6446实验手册(ARM-Linux).doc_第5页
已阅读5页,还剩53页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

SEED-DTK6446实验手册2020DSP Development SystemsvTMS320系列DSP实验箱版本号:A2020.3SEED-DTK6446实验箱手册声明北京合众达电子技术有限责任公司保留随时对其产品进行修正、改进和完善的权利,同时也保留在不作任何通告的情况下,终止其任何一款产品的供应和服务的权利。用户在下订单前应获取相关信息的最新版本,并验证这些信息是当前的和完整的。版权 2020,北京合众达电子技术有限责任公司前言随着科学技术的飞速发展,人们对控制模型、控制算法要求越来越高,传统意义上的处理器很难满足发展的需求,而数字信号处理器DSP经历了20多年的发展与普及,应用领域几乎涵盖了所有的行业:通信、信息处理、自动控制、雷达、航空航天、医疗、日常消费品等。德州仪器(TI)占据了整个DSP市场的50左右,很多高校、研究所、公司大量采用TI的方案与芯片进行开发与研究。DSP是一门理论与实践并重的技术,在成功掌握了理论知识的同时再配合做一些经典的DSP实验,从而加深对DSP软、硬件的理解与掌握,为今后从事独立的开发打下扎实的基础。目前很多高校都已经开设了数字信号处理的课程,对普及与推广DSP做出了巨大的贡献。为了更好地配合学校的理论教学,达到理论与实践完美的结合,我们公司总结了10多年在DSP领域中的开发与应用经验,推出了双DSP教学系统SEED-DTK教学实验箱系列产品。它设计新颖、独特,为师生提供了一个完整的教学实验平台,为学生加速学习与系统掌握DSP的开发与应用提供了强有力的手段。SEED-DTK教学实验箱采用模块化设计理念,涵盖了TI所有的主流DSP系列:C2000、C3X、C5000和C6000系列。其中SEED-DTK实验箱中的主控板SEED-DECxxxx采用统一的系统结构、模块结构、机械结构和标准的总线接口以及相同的物理尺寸,实验箱上的主控板可以替换为不同系列SEED-DECxxxx,以适应不同院系在同一实验箱上开展不同的实验内容,大大节省了校方的设备经费。本实验手册包含实验环境的构建和实验箱例程介绍等内容。在第一章中介绍实验箱的结构,特点等内容;第二章中介绍DSP调试工具的安装与使用;第三章对实验例程进行介绍,分为实验原理,实验目的,以及实验程序的结构和调试方法等;第四章则分别各模板上FLASH的烧写方法。最后附录部分提供了实验箱的硬件资源,供师生查阅。 由于任务重、时间紧,手册中难免存在一些小的错误,恳请广大师生批评指正。商标:SEED是北京合众达电子技术有限责任公司的注册商标。TI、XDS510是Texas Instruments的注册商标。更多帮助: 网址: 合众达总公司地址:北京海淀区皂君庙路5号卉园大厦5层电话:(010)62165185,(010)62165186 传真:(010)62161218邮编:100081 北京分公司地址:北京海淀区知春路106号太平洋国际大厦912室电话:(010)51518855 传真:(010)51518866邮编:100086E-mail: 上海分公司 地址:上海市黄浦区成都北路500号峻岭广场2208室 电话:(021)63276977传真:(021)63270962邮编:200003E-mail: 深圳分公司 地址:深圳市福田区泰然工贸园苍松大厦北座3A02室电话:(0755)33981828 传真:(0755)33981838邮编:518027E-mail: 南京分公司地址:南京市中山东路218号长安国际中心13楼F座电话:(025)84650405、(025)84650406传真:(025)84650557邮编:210002E-mail: 香港分公司地址:香港九龍觀塘駿業街44號中航科技大廈10樓1001室 Rm 1001, 10/F., CATIC Building, No. 44 Tsun Yip Street, Kwun Tong, Kowloon, H.K.Tel:(852)34268098,(852)34268099Fax:(852)34264806E-mail: 西安办事处地址:陕西西安市长安中路239号通瑞大厦466室 电话:(029)85248062 , (029)88562762 , (029)85361239 传真:(029)85248062 邮编:710061E-mail: 成都办事处地址:人民南路3段林荫街华西大厦A座602室 电话:(028)85441353 , (028)85431123传真:(028)85458130 邮编:610041E-mail: 杭州办事处地址:杭州市西湖区文二路207号耀江文欣大厦1209室电话:(0571)88259367传真:(0571)88259357邮编:310012E-mail: 武汉办事处地址:湖北省武汉市武昌街道口珞珈山路一号珞珈山大厦B座1509室电话:(027)87660475传真:(027)87660480邮编:430070E-mail: 广州办事处地址:广州市天河区天河北路615号鸿翔大厦天麟第1808室电话:(020)38473795; (020)38473796传真:(020)38473798 邮编:510630E-mail: 天津办事处地址:天津市河西区气象台路48号增1号先特写字楼506室电话:(022)23556617传真:(022)23556617 邮编:300074E-mail: 合肥办事处地址:合肥市金寨路93号鸿基广场504室(中国科技大学东区正大门对面)电话:(0551)3668853、(0551)3668854传真:(0551)3668853-808邮编:230026E-mail: 长沙办事处地址:湖南长沙河西岳麓区银盆南路3573号威胜大厦B座602室电话:(0731)8906758传真:(0731)8906758 邮编:410018E-mail: 哈尔滨办事处地址:哈尔滨市南岗区文君街69号文君花园E栋5单元301电话:(0451)86203773手机邮编:150001E-mail:vi目录第1章SEED-DTK6446 Linux开发环境搭建SEED-DTK6446 Linux开发环境的建立包括Linux开发主机的建立、串口终端的配置及SEED-DVS6446板卡烧写。1.1 Linux开发主机的建立1.1.1 Linux操作系统的安装PC机上的linux操作系统版本众多,常用的发行版本有:l Red Hat Enterprise Linux v3l Red Hat Enterprise Linux v4l Red Hat 9l SUSE v10.0 Workstationl Fedora Core v7l Fedora Core v8l Fedora Core v9建议用户使用Red Hat Enterprise Linux v4或者Fedora Core v9,该两个版本是笔者在开发DaVinci平台产品期间是使用较多的系统,使用较为方便,且与DVS6446使用的开发套件兼容。关于Linux系统PC机端的安装,在此不做详细介绍,用户可以很方便的从网络上获取丰富的资源。但安装过程中需要注意,在“配置防火墙”这一步骤时,在将系统的安全级别配置为“无防火墙”,否则,系统将屏蔽许多网络功能,开发过程中需要使用的NFS mount功能也将无法事项。1.1.2 SEED DVS6446 SDK套件的安装 SEED DVS6446 SDK套件中提供了Linux内核、ARM v5t交叉编译器、DSP端开发工具,ARM编解码程序源码,DSPLINK、CMEM源码、CODEC ENGINE例程源码等。SEED DVS6446 SDK的安装建议完全按照以下步骤与路径进行配置,以简化后续各种配置的繁琐,安装过程以root账号登陆Linux开发主机,且一直以root权限进行所有操作,开发过程也以root权限进行开发。约定:Host #表示Linux开发机(服务器)控制台提示符Target #表示DVS6446 平台的串口控制台提示符SEED DVS6446 SDK安装到Linux服务器的安装步骤如下:l 复制将DVS6446配套光盘SEED DVS6446 Development Software目录下的DaVinci开发套件SEED-DVS6446_SDK.tar.gz复制到Linux开发主机的/opt目录下;l 安装在Linux开发主机下进入到/opt目录下,进行解压安装操作,使用命令:Host #tar zxvf SEED-DVS6446_SDK.tar.gz,该过程将所需要的软件安装到/opt根目录下,安装过程需要5-10分钟,请等待完成。SEED DVS6446 SDK安装完成后,在/opt下创建如下目录:dvevm_1_20该目录下为DVEVM与DVSDK套件,包括各种cmem、dsplink、frame component、codec engine、demo源码及dspbios、xdctools 、cgtools等dsp端编译器等资源;mv_pro_4.0该目录下为ARM端的armv5t交叉编译,linux内核以及目标文件系统;nfs该目录为配置完毕的NFS文件系统;l SEED DVS6446 SDK配置SEED DVS6446 SDK安装完毕仅需对其进行简单的配置即可以使用demo等程序的编译等操作。 配置ARM v5t交叉编译器PATH1. 以root操作,进入到root根路径,执行命令:Host # cd /root2. 修改root目录下.bash_profile文件。在Linux下的文本编辑器有许多,常用的时vim和Xwindows下的gedit等。以gedit为例,执行命令:Host # geidt .bash_profile,打开.bash_profile文件,添加如下内容:PATH=/opt/mv_pro_4.0/montavista/pro/devkit/arm/v5t_le/bin:/opt/mv_pro_4.0/montavista/pro/bin:/opt/mv_pro_4.0/montavista/common/bin:$PATH然后保存退出即可。修改的设置一般要重启系统后才能生效。修改完毕如下图所示: 用户可以通过如下方式测试arm_v5t编译器是否可以使用,在Linux服务器控制台输入如下命令:Host #arm_v5t_le-gcc显示如下信息时,表示配置正常: 配置NFS文件系统服务修改/etc/exports文件,添加如下内容/opt/nfs *(rw,sync,no_root_squash,no_all_squash)保存退出即可。修改完毕如下图所示:运行以下命令启动nfs服务:Host #/usr/sbin/exportfs aHost #/sbin/service nfs restart至此,SEED DVS6446 SDK开发工具安装完毕,用户便可以对开发包中提供的实验程序进行编译等操作。1.1.3 Linux平台实验程序运行环境配置Linux平台实验程序运行环境配置步骤如下:1将SEED-DTK6446配套光盘中提供的文件seed_exp.tar.gz复制到linux开发主机/opt/dvevm_1_20目录下。2在终端中敲入命令进入目录/opt/dvevm_1_20Host # cd /opt/dvevm_1_203解压实验程序包。Host # tar zxvf seed_exp.tar.gz4解压后的包中包含了5个实验程序源代码,和运行程序所需的配套文件包,进入解压后的目录seed_exp/install_scriptsHost # cd seed_exp/install_scripts5建立linux平台实验程序执行目录/opt/nfs/opt/seed_exp,并将运行程序所需的一些log文件和负责ARM与DSP之间的通信的cmem.ko和dsplink.ko等文件复制到该目录。Host # ./install.sh至此,Linux平台实验程序运行环境配置完成,用户便可以将实验程序中的可执行程序复制到/opt/nfs/opt/seed_exp目录中运行。561.2 串口终端的配置用户通过主机端串口同SEED-DTK6446实验箱交互,对实验箱进行控制并运行程序等。主机端控制软件可以使用windows上自带的超级终端,linux下的minicom。以windows下自带的超级终端为例,其配置过程如下:1. 点击PC机左下角开始-程序-附件-通讯-超级终端;在“您的区号(或城市号)是什么(C)?”下键入010后点击确定;再次点击确定,在新弹出的对话框中输入你喜欢的名称,如davinci;在新的对话框中的“连接时使用”下选择你希望使用的串口设备,点击确定;而后在端口设置选项中配置波特率115200,数据位8,奇偶校验无,停止位1,数据流控制无;2. 上电启动启动SEED-DTK6446实验箱,若超级终端上显示有打印信息,说明终端配置正确。1.3SEED-DTK6446板卡烧写实验箱在出厂时,默认已经将引导程序ubl和u-boot,linux内核uImage烧写入Nandflash,文件系统和应用程序烧写入硬盘。一般情况下用户无需再烧写这些内容。如果用户的使用过程中这些数据丢失,可以使用下面方法对这些内容进行修复。1.3.1SEED-DTK6446Linux内核编译SEED-DTK6446使用的内核与DVS6446光盘的中提供的默认内核存在区别,DVS6446光盘中提供的默认内核添加了nandflash驱动,可以引导nandflash中烧写的根文件系统启动,但驱动中同时屏蔽了硬盘驱动以让nandflash驱动启动。而SEED-DTK6446使用了的硬盘,内核中必须支持硬盘驱动,因而必须选上内核中硬盘驱动。在实验箱光盘中已经提供了编译好供SEED-DTK6446使用的uImage文件,用户烧写实验箱板卡时可以直接使用。但若用户想要修改内核源码(SEED DVS6446 Linux的内核源码安装在Linux开发主机/opt/mv_pro_4.0/montavista/pro/devkit/lsp/ti-davinci目录下),并重新编译提供实验箱使用的内核,可以遵循如下操作。1 复制实验箱光盘中提供的内核的配置文件seed_dtk6446_defconfig到内核安装目录下的arch/arm/configs/目录下。2 打开终端,进入内核源码安装目录。Host # cd /opt/mv_pro_4.0/montavista/pro/devkit/lsp/ti-davinci3 使用seed_dtk6446_defconfig配置内核编译选项。Host # make seed_dtk6446_defconfig4 编译内核Host #make ARCH=arm CROSS_COMPILE=arm_v5t_le- uImage编译过程可能需要较长时间,编译完成生成uImage文件,该文件在内核安装目录下的arch/arm/boot/目录下。.1.3.2 ubl、u-boot和uImage的烧写ubl、u-boot和uImage的烧写基于CCStudio v3.3 IDE。具体的操作步骤如下:1. 将仿真器的JTAG连接器同DVS6446平台的J1 JTAG仿真插头连接;2. 将DVS6446平台的J2、J17、J23和J24跳线短接;3连接5V-5A的电源,给系统上电;4CCStudio v3.3 启动完毕后,选择ARM端打开,加载GEL,连接ARM端;5在CCS中用FileLoad Program.命令,加载Flash WriterNand Flash writer programs目录下的nandflash.out文件;6点击运行,运行程序;7Nand Flash首先进行擦写,完成后弹出下图所示对话框,输入UBL所在路径如E:SEED_DVS6446Flash_WriterNand_Flash_writer_programsubl_nand.bin,点击OK,进行UBL的烧写;8UBL烧写完毕后,将弹出下图所示对话框,输入U-Boot文件所在的文件路径如E:SEED_DVS6446Flash_WriterNand_Flash_writer_programs u-boot.bin,点击OK,进行U-Boot烧写;9U-Boot烧写完成后,将弹出如下图所示对话框,输入uImage文件所在的文件路径如E:SEED_DVS6446Flash_WriterNand_Flash_writer_programs uImage,点击OK,进行uImage的烧写,uImage的烧写需要较长时间。烧写完毕后,在CCS的“stdout”输出窗口中将显示提示“All operation passed”。1.3.3 文件系统和应用程序烧写若需要重新恢复硬盘中的所有数据,包括文件系统和应用程序等,可以按如下步骤进行:1 将SEED-DTK6446光盘中提供的restore-hdd文件夹复制到NFS文件系统根目录下,即linux开发主机/opt/nfs 目录下;2 使用串口线连接SEED-DTK6446串口与PC机,并在PC中打开1.2节中配置好的超级终端;3 上电启动SEED-DTK6446,超级终端显示启动信息,启动信息如下,显示“Hit any key to stop autoboot:”时按下回车键,中断系统自动系统;4 中断系统自动启动后,显示如下提示符:SEED-DVS6446_v1.2 #5 在上述提示符下输入如下指令:(输入时是连续输入,仅最后pal之后输入回车键)setenv bootargs mem=120M console=ttyS0,115200n8 root=/dev/nfs noinitrd rw ip=dhcp nfsroot=10:/opt/nfs video=dm64xxfb:output=pal注意:此处的10为Linux开发主机的IP地址,用户需要根据自己的地址进行调整;ip=dhcp表示DVS6446通过dhcp获取ip地址,如果用户网络连接不支持dhcp将该处地址配置为静态ip地址;6 完成上述操作后,在SEED-DVS6446_v1.2 #后输入“boot ”,系统启动,等待直至系统启动完毕,显示如下提示符:xxx.xxx.xxx.xxx login:7 在xxx.xxx.xxx.xxx login:后输入“root ”进行登陆,显示提示符 root xxx.xxx.xxx.xxx:#8 进入烧写程序所在目录,在提示符root xxx.xxx.xxx.xxx:#下输入“cd /restore-hdd”9 设置时间变量,在提示符root xxx.xxx.xxx.xxx:#下输入“date MMDDHHMMCCYY”,例如,2007年4月24日9点34分,就输入“date 042409342007”。10. 进行烧写,在提示符root xxx.xxx.xxx.xxx:#下输入./prep-hdd11.等待烧写完成,整个过程大约需要30分钟结束第2章Linux平台实验2.1入门实验2.1.1实验目的1熟悉linux开发环境,学会基于SEED-DTK6446平台linux开发环境的配置和使用;2学会使用arm_v5t_le-gcc编译工具;3学会基于NFS方式的程序调试方法。4学会应用程序的固化方法。2.1.2实验内容1基于linux环境的源程序的建立;2基于linux环境的Makefile的编写;3基于NFS方式的目标程序的调试。4固化最终可执行程序。2.1.3 程序分析 实验包含文件1hello.c:实验的主程序2. Makefile:编译配置文件Makefile文件分析要使的hello.c 程序能够编译,我们必须要编写一个Makefile 文件,Makefile 文件定义了一系列的规则,它指明了哪些文件需要编译,哪些文件需要先编译,哪些文件需要重新编译等等更为复杂的命令。使用它带来的好处就是自动编译,你只需要敲一个“make”命令整个工程就可以实现自动编译。当然我们本实验中只有一个源文件,它还不能体现出使用Makefile 的优越性,但当工程比较大文件比较多时,不使用Makefile 几乎是不可能的。下面我们介绍本实验中用到的Makefile 文件。ROOTDIR = ././.include $(ROOTDIR)/Rules.makeCC=$(MVTOOL_PREFIX)gccEXEC = hello OBJS = hello.o all: $(EXEC)$(EXEC): $(OBJS)$(CC) -o $ $(OBJS) clean:-rm -f $(EXEC) *.o上面这个Makefile 文件的主要包含了以下几个主要部分:l CC 指明编译器l EXEC 表示编译后生成的执行文件名称l OBJS 目标文件列表l all: 编译主入口l clean: 清除编译结果2.1.4实验准备1配置好串口终端(具体操作入1.2节);2使用串口线,连接好PC机与SEED-DTK6446实验。3. 使用网线将SEED-DTK6446实验箱和linux开发主机都连接到局域网上。2.1.5实验步骤 调试应用程序1在linux开发主机桌面上点击鼠标右键,打开终端,进入实验程序目录Host # cd /opt/dvevm_1_20/seed_exp/01.hello/helloworld2. 重新编译应用程序。Host # make cleanHost # make 3复制编译生成的可执行文件道NFS文件系统中Host # cp hello /opt/nfs/opt/seed_exp4上电启动SEED-DTK6446,超级终端显示启动信息,启动信息如下,显示“Hit any key to stop autoboot:”时按下回车键,中断系统自动系统5输入如下指令,将系统配置为从NFS文件系统启动SEED-DVS6446_v1.2 #setenv bootargs mem=120M console=ttyS0,115200n8 root=/dev/nfs noinitrd rw ip=dhcp nfsroot=10:/opt/nfs video=dm64xxfb:output=pal注意:此处的10为Linux开发主机的IP地址,用户需要根据自己的地址进行调整;ip=dhcp表示DVS6446通过dhcp获取ip地址,如果用户网络连接不支持dhcp将该处地址配置为静态ip地址;6启动系统SEED-DVS6446_v1.2 # boot等待直至系统启动完毕,显示如下提示符:xxx.xxx.xxx.xxx login:7登陆系统xxx.xxx.xxx.xxx login:root 8进入可执行程序所在目录root xxx.xxx.xxx.xxx:#cd /opt/seed_exp9. 运行可执行文件root xxx.xxx.xxx.xxx:#./hello在终端中将输出打印信息“hello world” 固化可执行程序应用调试完成以后,可以按照如下步骤将可执行代码固化到硬盘上:1 将硬盘设备挂载到NFS文件系统上mnt目录上root xxx.xxx.xxx.xxx:# mount t ext3 /dev/hda1 /mnt2.复制可执行文件到指定目录:root xxx.xxx.xxx.xxx:# cp hello /mnt/opt/seed_exp程序在出厂时已经在硬盘中固化了实验程序源代码,在上面操作中可以选择覆盖它。3 重新启动实验箱,中断系统自动系统后输入如下配置SEED-DVS6446_v1.2 #setenv bootargs mem=120M console=ttyS0,115200n8 root=/dev/hda1 noinitrd rw ip=dhcp video=dm64xxfb:output=pal4启动并登陆系统后,进入上面步骤固化的程序所在的目录root xxx.xxx.xxx.xxx:# cd /opt/seed_exp5.运行程序root xxx.xxx.xxx.xxx:# ./hello在终端中将输出打印信息“hello world”2.2音频采集回放实验2.2.1实验目的熟悉linux OSS音频驱动的应用程序编写。2.2.2实验内容基于linux OSS音频驱动的应用程序编写。2.2.3实验背景知识OSS(Open Sound System)是linux平台上一个统一的音频接口, 即只要音频处理应用程序按照OSS的API来编写,那么在移植到另外一个平台时,只需要重新编译即可。 下面是关于OSS涉及到的一些基本概念:l 数字音频设备(有时也称codec,PCM,DSP,ADC/DAC设备):播放或录制数字化的声音。它的指标主要有:采样速率(电话为8K,DVD为96K)、channel数目(单声道,立体声)、采样分辨率(8-bit,16-bit)。 l mixer(混频器):用来控制多个输入、输出的音量,也控制输入(microphone,line-in,CD)之间的切换。 l synthesizer(合成器):通过一些预先定义好的波形来合成声音,有时用在游戏中声音效果的产生。 l MIDI 接口:MIDI接口是为了连接舞台上的synthesizer、键盘、道具、灯光控制器的一种串行接口。 在linux系统中,所有的设备都被统一成文件,通过对文件的访问方式(首先open,然后read/write,同时可以使用ioctl读取/设置参数,最后close)来访问设备。在OSS中,主要有以下的几种设备文件: l /dev/mixer:访问声卡中内置的mixer,调整音量大小,选择音源。 l /dev/sndstat:测试声卡,执行cat /dev/sndstat会显示声卡驱动的信息。 l /dev/dsp 、/dev/dspW、/dev/audio:读这个设备就相当于录音,写这个设备就相当于放音。/dev/dsp与/dev/audio之间的区别在于采样的编码不同,/dev/audio使用律编码,/dev/dsp使用8-bit(无符号)线性编码,/dev/dspW使用16-bit(有符号)线形编码。2.2.4程序分析实验包含程序1main.c:实验的主程序。2audio_input_output.c:包含音频芯片的初始化配置函数。3audio_thread.c:包含了程序的主线程。4Makefile:编译配置文件。源代码分析(1)设备名、采样率和采样通道数定义/* OSS and Mixer devices */#define SOUND_DEVICE /dev/dsp#define MIXER_DEVICE /dev/mixer/* The sample rate of the audio codec.*/#define SAMPLE_RATE 44100/* The number of channels of the audio codec.*/#define NUM_CHANNELS 2用户可以通过修改SAMPLE_RATE值,来修改采样率;修改LEFT_GAIN与RIGHT_GAIN来配置音量;修改NUM_CHANNELS来修改采样通道数。(2)初试化MixerMixer设备打开操作如下:/* Open the mixer device */if (mixerFd = open(device, O_RDONLY) = -1) ERR(Failed to open %sn, device); return AUDIO_FAILURE; 音频输入源的配置操作如下: /* Set the mixer input source */if (ioctl(mixerFd, SOUND_MIXER_WRITE_RECSRC, &recmask) = -1) ERR(Failed to set mixer record mask (file descriptor %d)n, mixerFd);close(mixerFd); return AUDIO_FAILURE; 由于DVS6446板卡就1个line in输入口,程序中将输入源配置为line in(3)音频设备初始化音频设备打开操作如下:/* Open the sound device */if (fd = open(device, mode) = -1) ERR(Failed to open the sound device (%s)n, device); return AUDIO_FAILURE;mode有三种选择:O_RDONLY,O_WRONLY和O_RDWR,分别表示只读、只写和读写。在录音时配置O_RDONLY模式,而播放音频时配置为O_WRONLY模式。采样格式设置操作如下:/* Set the sound format (only AFMT_S16_LE currently supported) */if (ioctl(fd, SNDCTL_DSP_SETFMT, &format) = -1) ERR(Could not set format %dn, format);isd_failure_procedure();通道数目设置操作如下:/* Set the number of channels */if (ioctl(fd, SNDCTL_DSP_CHANNELS, &numchannels) = -1) ERR(Could not set mixer to %d channelsn, numchannels);isd_failure_procedure();采样率设置操作如下:/* Set the sample rate */if (ioctl(fd, SNDCTL_DSP_SPEED, &samplerate) = -1) ERR(Could not set sample rate (%d)nn, samplerate);isd_failure_procedure();2.2.5 实验准备1配置好串口终端(具体操作入1.2节)。2使用串口线,连接好PC机与SEED-DTK6446实验。3. 使用网线将SEED-DTK6446实验箱和linux开发主机都连接到局域网上。4用音频连接线连接J18音频采集口与音频输出设备。5将耳机或音响连接到音频输出口J16。2.2.6实验步骤1打开终端,进入实验程序目录Host # cd /opt/dvevm_1_20/seed_exp/02.audioloopback/audio_app2. 重新编译应用程序。Host # make cleanHost # make3复制编译生成的可执行文件到NFS文件系统中Host # cp release /audio_app /opt/nfs/opt/seed_exp4将系统配置为从NFS文件系统启动5. 启动系统后,登陆系统,进入可执行文件所在目录root xxx.xxx.xxx.xxx:#cd /opt/seed_exp6. 在音频播放设备中播放音频。7. 运行可执行文件root xxx.xxx.xxx.xxx:#./audio_app耳机或音响设备中将输出输入设备播放的音频。2.3视频采集回放实验2.3.1实验目的1. 学习Codec Engine机制。2. 学习基于Codec Engine机制的编程。3. 学习使用XDC编译工具。4. 学习基于v4L2采集驱动与FBdev显示驱动的应用程序的编写。2.3.2实验内容1基于Codec Engine机制的编程。2基于v4L2采集驱动与FBdev显示驱动的应用程序的编写。2.3.3实验背景知识TI提供的达芬奇参考软件框架应用层、信号处理层和I/O层三部分,如下图所示。Davinci的应用工程师可以在系统的用户空间在系统功能性上添加和发挥自己的特色。信号处理层通常都运行在DSP一侧负责信号处理,包括音视频编解码算法、Codec Engine、DSP的实时操作系统DSP/BIOS及和ARM通信的模块。I/O层就是我们通常所说的驱动,是针对Davinci外设模块的驱动程序。 其中应用层通过Codec Engine的VISA(Video, Image, Speech, Audio)API来调用DSP侧的算法,通过EPSI(Easy Peripheral Software Interface)API来访问和操作Davinci的外设。这三个部分通常对应三个Davinci软件开发小组。当然还需要一个系统集成工程师把这三个部分集成起来,不过VISA API和EPSI API的存在已经大大简化了集成工作的复杂程度。Codec Engine概述前面我们提到,应用工程师通过调用Codec Engine的API来调用和运行符合xDAIS的算法(关于API的具体信息,请参考sprue67.pdf第4章)。在Davinci软件中,符合xDAIS的音视频编解码算法(即xDM算法)的调用是通过Codec Engine的VISA API完成的。Codec Engine通过这套API为算法的执行提供了一个标准的软件架构和接口,体现在以下几个方面:l 通过Codec Engine API调用的算法可以运行在本地(ARM侧)或者远端(DSP侧);l Codec Engine可以基于ARMDSP、DSP或ARM上运行;l 无论Codec Engine运行在ARM还是DSP上,对应的Codec Engine API都是完全一致的;l Codec Engine的API与操作系统无关。比如Linux、VxWorks和WinCE环境下的Codec Engine API都是完全一致的。Codec Engine是介于应用程序和具体算法之间的软件模块,其中的VISA API通过stub和skeleton访问Engine SPI最终调用具体的算法。因此,Codec Engine的工作是通过完成VISA API的任务来体现的。VISA API分为四部分VISA create/control/process/delete,我们以codec算法运行在DSP为例,通过VISA API的执行过程了解Codec Engine的工作原理。 在调用VISA API之前需要在应用程序中通过Engine_open()Engine_open()的作用:1. 在调用VIDA API前,在ARM端应用程序要调用Engine_open()函数.作用:n 把DSP的可执行程序(*.x64P)加载到DSP的Memroy,同时把DSP从复位状态释放n DSP开始运行DSP Server初始化程序,在DSP侧创建一个优先级最低的任务RMS(Remote Management Server).RMS负责管理和维护对应到具体Codec算法的Instances.n 随后,APP调用VISA的Create()API,create函数到Engine的SPI中的codec table中查找这个Codec运行在远端DSP侧.n 接着,Engine SPI通过OSAL,DSPLINK把VISA Create的命令传到DSP侧的RMS.DSP侧Engine SPI的Codec table找到要调用的算法后,就会在RMS中创建一个相应的实例.即DSP/BIOS系统中的任务.n Create会返回一个Instance的Handle,便于后续的VISA control/process/delete使用.这个Engine API把DSP的可执行程序加载到DSP的memory,同时把DSP从复位状态释放,这时DSP开始运行DSP Server的初始化程序在DSP侧创建一个优先级最低的任务RMS(Remote Management Server),RMS负责管理和维护对应到具体codec算法的Instances。如下图所示,应用程序调用VISA create API,相应的VISA create函数到Engine SPI中的Codec table中查到这个codec运行在远端DSP侧。 接着Engine SPI通过OSAL(Operating System Abstraction Layer)、DSP Link把VISA create的命令传到DSP侧的RMS。RMS通过DSP侧Engine SPI的codec table找到要调用的codec算法后,就会在RMS中创建一个相应的Instance(即一个DSP/BIOS系统中的任务)。VISA create会返回一个Instance的Handle,以便于给这个Instance做后续的VISA control/process/delete提供信息。VISA delete和VISA create原理类似,只是RMS删除掉相应的codec算法的Instance和执行codec算法的任务。 概括来说,VISA control用来动态的修改codec instance的属性,VISA process用来对算法的输入数据流做处理并返回一个输出数据流。应用程序在调用VISA process/control时会通过xDM Stub把传递给codec算法的参数收集起来,并且转换成DSP可以识别的物理地址。Stub把这些参数和相关的命令通过Engine SPI、OSAL和DSP Link传递到DSP侧的Instance。Instance再通过Skeleton把传递过来的参数和命令解析出来,通过DSP侧VISA control/process对codec算法执行control/process。xDC简介达芬奇的软件开发环境中,有一个DSP工程师比较陌生的工xDC(Express DSP Component)。和gmake类似,xDC根据一套build指令build生成可执行文件。xDC同时也会build依赖文件,并且可以一次 build多个目标对象的可执行文件(如下图hello.x64P是DSP的可执行文件,hello.x470MV是ARM的可执行文件)。xDC的源文件可以是C程序、C+程序、汇编程序和库文件等。DaVinci的软件开发步骤DaVinci的软件开发通常需要四个步骤(本文以codec运行

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论