前段时间一直忙一个项目,同时在生活上时时提防和抵抗中国地沟油、国外核心转基因调和油、大豆油、色拉油、大米玉米、可怕的喂药鱼、药水泡农药喷无虫咬的青菜,所以没时间打理自己的博客,让开发攻略停顿了一段时间。还好,这个世界上还有很多善良和正义的人们,值得我们继续战斗下去。
DAVINCI DSP的开发环境分两部分来讲,一是单核DSP运行的环境,二是和ARM建立相互通信DSP SERVER机制。本片先从简单的单核DSP运行环境说起,因为这个是基础的必须的东西,同时适合DM643X、DM644X平台。说到DSP的开发环境,当然离不开CCS,仿真器安装调试等步骤,这些很多网友都发表过不错的文章。本人重点介绍DM6446的DSP开发环境。
 
一、CCS安装介绍
目前CCS4.0已经出来,网上有篇文章《CCS V4+SEED仿真器基本操作指南.pdf》的介绍,大家可以了解一下,功能比CCS3.3强大多了,而且配置也比较简单。但鉴于国内主流开发DAVINCI的CCS版本是3.3,所以在这里具体介绍一下。
购买合众达仿真器或闻亭仿真器,都会提供TI CCS3.3,网上也有下载,安装之前,建议把各种杀毒软件先关闭掉,然后运行文件包里的setup.exe,会提示你的安装路径选择和平台选择界面,见下图:
如果不是开发OMAP 芯片、C2000、C5000平台芯片,这些可以参考上图,把他们 “X” 掉,这样CCS安装就更省空间。TMS470和C6000平台一定要选,TMS470包括ARM9的驱动和配置,C6000包括C64、C64+、C67。然后点击“Next”,按提示安装下去。
 
二、仿真器驱动安装介绍
选用仿真器,一般就是合众达SEED和闻亭了,开发DAVINCI平台,都必须用到560型仿真器,510是不行的,不知道TI当时是怎么想的,仿真器如此贵,也不便于DAVINCI平台的推广。三年前PCI 560(8000多) 和USB 560(上万元)都非常贵,后来推出560 PLUS一般都要4000左右。购买两家公司的仿真器都会提供安装光盘,里边有详细的安装介绍,这里不累赘。
三、建立DSP BIOS例子工程
1、  配置CCS
CCS安装和仿真器驱动(本人买的是SEED 560PLUS)结束后,双击桌面Setup CCStudio v3.3,进入配置界面,见下图
主要选择C64+平台,xds560,开发DM6437,就选择C6455 XDS560这一项,如果开发开发DM6446,就选择DM6446 XDS560这一项,然后点击下面“Add”,这样在配置My System左边出现平台信息。
右键点击“ARM9_0”,选择“属性properties”,进入,在GEL file输入dm644x_dvevm_arm.gel,
接着,点击“C6400PLUS_0”,选择“属性properties”,在GEL file输入dm644x_dvevm_dsp.gel。一般买开发板都会提供相应的GEL 文件,最后点击左下边“Save&Quit”,保存设置。
为了验证CCS安装、仿真器安装和配置是否正确,首先插好仿真器JTAG,如果板子有程序,建议把DM6446 BOOT MODE设置为UART模式,目的让板子发送BOOTME命令,板子没程序也会发送BOOTME,在这种模式下,才能连接JTAG。运行桌面的CCStudio v3.3,见下图,
 
给板子上电,确保上面的安装和配置一切OK,右键点击ICEPICK_C_0,“Connect Device”能连接上的话,表明仿真器等安装没问题,见下图。
连接设备
连接ARM
Open ARM9_0,设置DSP从DDR BOOT
 
连接DSP
Open DSP
以上连接如果都OK的话,表明仿真环境已经建立好,这时可以做DSP开发工作了。不过在进行工程开发之前,补充一点东西,有些朋友喜欢更新较新的DSP/BIOS包,DSP/BIOS是一个实时的操作系统,比如bios_setupwin32_5_33_06.exe,或者开发DM6437平台,则需要安装DM6437_DVSDK、NDK等开发包。CCS3.3自带的DSP/BIOS版本比较低,是5.31.02,安装新的DSP/BIOS包后,要对新的BIOS版本进行设置,点击菜单上的“Help”的“About”就会弹出下图:
 
点击“Component Manager”,见下图,
选择新的BIOS版本,从菜单上“Save”,并“OK”退出。关闭CCS,然后再重新启动CCS,新版本的BIOS就设置好了。
2、  工程建立
通过以上的步骤,我们可以开发DSP程序了,DSP程序分两种开发模式,算法LIB的开发和系统工程开发,或者把LIB的源码一起放到工程统一开发。
点击DSP界面菜单“Project”的“New”,出现以下界面,
如果是系统工程开发,输入工程名字,选择工程保存路径,点击Finish,就OK了。如果是算法LIB开发,则按下图选择.lib
进入工程界面
这里边的工程配置有很多学问,涉及到DSP/BIOS的配置和设计,程序运行效率(优化),大部分DSP的书籍都有介绍,如果这里要详细一步一步描述,则太浪费时间,我们在这里点到为止,重点介绍DM6446 DSP端开发。右键点击工程,dm6446_example.prj,下拉有Build Options,这里有Debug模式和Release模式,运行程序时,Debug模式可以设置断点等一些功能,但运行效率很低。而Release则是正式发布版本模式,对程序做了一些优化,包括流水线等,不能设置断点。我们以Release模式为例,见下三图,
 
其他设置保持默认的就可以了,更完善的功能,则需要自己修改,这方面得书籍和网文有很多,CCS菜单Help里也有很多描述详细的文档。
    设置完工程配置后,右键点击Soure,添加源码文件,一般就是*.C、*.CPP、*.asm、*.sa文件,然后添加相应的*.cmd文件,有例子可参考。Include不需要添加,编译的时候会自动链接到工程配置指定的路径搜索。Libraries则需要添加(\CCStudio_v3.3\C6000\cgtools\lib\)里的rts64plus.lib。还有其他LIB,比如自己开发的*.lib,c6400\dsplib\lib下的dsp64x.lib,c6400\imglib\lib下的img64x.lib,EDMA3 LIB,这些根据工程和算法程序需要而添加。
对于DM6446产品开发,无论采用TI DSP SERVER机制,还是独立DSP运行模式,都离不开DSP/BIOS,下图是新添加DSP/BIOS的方法,当然,你也可以直接使用开发板提供商提供的例子,或从网上下载相关带DSP/BIOS的例子。选择ti.platform.evmDM6446,
 
 
 
 
  
   
选择“Global Settings”,右键进行设置,见下图,DSP工作频率,看情况设定,商业级DM6446采用594M,其他设置保持不变。
还是在同一个界面,选择64PLUS,关键的地方时L2CFG,就是定义L2内部存储器CACHE的大小,同时使能MAR 128-159,这些L1D、L2的存取速度比DDR2快多了,可惜这两个片上内存很小,不能把很多程序段定义到这些片上内存运行。
同时,因为上面使用了32K的L2,则MEM下面的IRAM处,右键选择属性配置IRAM的len为32K,否则保存BIOS配置文件*.TCF时会出现错误,同样设置DDR或分配新的内存段(片内和片外),段的地址和长度一定要一一对应,衔接好,不能越界。
然后我们对MEM进行设置,同样右键选择MEM-Memory Section Manager,
第一个参数一般为0x0004,第二个参数默认是0x400,太小,我们加大一点,0x4000、0x8000、0x10000都可以。“No Dynamic Memory heaps”,不选,这样就允许我们在程序里动态申请内存,刚开始是不出现DDR2的,你要先“确定”,再右键选择DDR,入下图,“create a heap in this memory”一定要选中,然后heap的大小定义为0x01000000,16M,这个大小自己定义。这里设置完后,回到上图,DDR2就出现在下拉条里。这时候,上图的BIOS data BIOS code这些设置都可以定义到DDR内存上运行都可以。还有BIOS里的BUF、SYS - System Settings、Instrumentation、Scheduling、Synchronization、Input/Output
 
介绍到这里,编译自己建的工程是没问题了,CCS仿真也可以运行程序,有关Instrumentation的设置、Scheduling、Synchronization、Input/Output这些在这里就不用累赘了,要认真讲完,完全可以写一本书,其实书店很多DSP的书籍都有介绍,网上各大DSP的论坛也有人举例如何添加多TSK、PRD、HWI、SWI、SEM、MBX等应用。
 
四、OUT文件的处理
生成的OUT文件,可以使用HEX64产生BIN文件,然后通过ARM,字节写个DSP BOOT的程序,设置控制DSP BOOT的寄存器,就可以把DSP给运行起来,这是一种独立运行DSP的方法,第二种就是下篇要介绍的TI DSP SERVER机制,如何把OUT文件和Codec Engine结合起来。
五、声明
写了这几篇开发攻略的文章,很多朋友看到本人的QQ后,都把本人的QQ加上,本人的QQ是用来和客户洽谈生意,并给购买本人产品的客户提供技术支持。没有这个条件的朋友最好通过博客留言,大家一起讨论不是更好,因为本人不是老师,也不是职员,很多时间要为自己的生活奔波。如果大家对DM6446核心板、DM6437核心板,开发板或者项目合作感兴趣,可以聊聊。我们的目的就是辅助客户快速设计自己的产品,便于抢占市场。

Davinci DM6446开发攻略——DSP开发工程建立的更多相关文章

  1. Davinci DM6446开发攻略——linux-2.6.18移植

     TI DAVINCI 使用最新的内核是montavista linux-2.6.18,之前说过,国内很多公司,包括开发板的软件包,一直在使用montavista linux-2.6.10,这个版本准 ...

  2. TI Davinci DM6446开发攻略——开发环境搭建

    TI DAVINCI DM6446的开发环境搭建不像三星S3C2410,S3C2440,ATMEL的AT91SAM9260之类的单核ARM那么简单,因为DM6446还有DSP端的开发环境,以及双核之间 ...

  3. Davinci DM6446开发攻略——u-boot-1.3.4移植(1)

    UBOOT的版本更新速度比较快,截止今天,稳定正式的版本是u-boot-2009.11-rc2,而TI最新的EVM开发包里的UBOOT是1.2.0版本,国内很多公司还一直使用u-boot-1.1.4和 ...

  4. Davinci DM6446开发攻略-UBOOT-2009.03移植2 nand flash的烧写

      很长一段时间没有更新博客了,是因为要推出新开发方案和做好客户服务工作,忙得不易乐乎.有关DAVINCI U-BOOT的移植,以前写过一篇u-boot-1.3.4(2008年的),其实和这个u-bo ...

  5. TI Davinci DM6446开发攻略——根文件系统的裁剪和移植

    一.补充文件系统知识 Linux根文件系统是存放tool软件.lib文件.script(脚本).配置文件.其他特殊文件.自己开发的应用程序的地方.嵌入式linux的根文件系统rootfs就像windo ...

  6. Davinci DM6446开发攻略——LINUX GPIO驱动源码移植

    一.             DM6446 GPIO的介绍      说到LINUX 驱动移植,没有移植过的朋友,或刚刚进入LINUX领域的朋友,最好去看看<LINUX 设备驱动程序>第三 ...

  7. DM6446开发攻略——u-boot-1.3.4移植(1)

    http://zjbintsystem.blog.51cto.com/964211/282387转载   UBOOT的版本更新速度比较快,截止今天,稳定正式的版本是u-boot-2009.11-rc2 ...

  8. 【Linux开发】【DSP开发】利用CCS6.1生成out文件的同时生成bin文件

    [Linux开发][DSP开发]利用CCS6.1生成out文件的同时生成bin文件 标签:[DSP开发] [Linux开发] 尝试在windows上安装的CCS6.1开发AM4378-Linux下的应 ...

  9. TI Davinci DM6446开发攻略——UBL移植

     UBL的程序设计,相对UBOOT.KERNEL.ROOTFS.设备驱动.DSP开发来说,还是比较简单.我们先从DAVINCI的启动说起,了解UBL在DAVIN系统中的位置和作用.对于固件程序烧写在N ...

随机推荐

  1. 解决C#编译中"csc不是内部或外部命令"的问题

    安装完 VisualStudio 编译环境后,是不能用命令行直接编译写好的csc文件的,如果不配置环境变量,在命令提示符(cmd)中编译扩展名为cs的文件,会出现错误提示"csc不是内部或外 ...

  2. 在线生成PDF的网站-HTML 转 PDF 在线

    http://pdf.df5d.com/   (服务器问题,演示暂停了,但是 下面介绍的组件还是可以使用的) 将前面用到的wkhtmltopdf用一个服务器程序集成在一起,接受一个URL参数,在生成一 ...

  3. 【C++】bazel的使用

    bazel的使用 bazel是google开源的构建工具,可以支持多种语言的构建.这里来尝试一下如何在C++项目中使用bazel构建. 安装就不介绍了,在官网很详细,输入bazel --help: U ...

  4. Asp.net mvc 下载文件

    前言 最近有需求需要下载文件,可能是image的图片,也可能是pdf报告,也可能是微软的word或者excel文件. 这里就整理了asp.net mvc 和asp.net webapi 下载的方法 A ...

  5. Linux中fdisk硬盘分区方法

    fdsik 能划分磁盘成为若干个区,同时也能为每个分区指定分区的文件系统,比如linux .fat32. linux .linux swap .fat16 以及其实类Unix类操作系统的文件系统等:当 ...

  6. python中的字符串格式化

    Python中常见的字符串格式化方式包括两种:字符串插入(str%),format函数(str.format()) 1.字符串插入 字符串插入是设置字符串格式的简单方法,与C语言.Fortran语言差 ...

  7. 使用Google Cloud Platform构建机器学习项目-宠物识别

    宠物识别我们使用到了tensorflow object-detection API  (https://github.com/tensorflow/models/tree/master/researc ...

  8. Mybatis使用过程问题总结

    Mybatis配置文件 test语句问题 字符串比较问题 示例语句:<if test="isIbatis == 'Y'"></if> 问题:NumberEx ...

  9. win7下MySQL的安装配置及卸载 笔记分享

    一.官网下载地址:https://dev.mysql.com/downloads/mysql/ 1.选择对应版本,下载免安装版: 2.不要注册账号,点击"No thanks,just sta ...

  10. 详解CSS display:inline-block的应用

    阅读目录 基础知识 inline-block的问题 inline-block的应用 总结 本文详细描述了display:inline-block的基础知识,产生的问题和解决方法以及其常见的应用场景,加 ...