一、CCS3.3安装:

下载解压CCS3.3的破解安装包如下所示,双击setup准备安装(SEED开发者论坛资料:http://www.seeddsp.com/bbs/forum.php?mod=viewthread&tid=230&highlight=CCS3.3):

双击之后如下图所示(单击next,一路同意就行了需要注意的就是安装路径的地方):

这里选择安装路径时可以自定义(注:这里还需要选择你的设备的型号,不要选错了,也不必多选)

       

接下来就是一路确定就行了,中途的所有警告都可以直接忽略掉!

二、安装XDS560PLUS的驱动:

下载XDS560的驱动安装包(官网链接:http://www.seeddsp.com/index.php/Home/Product/detail/name/1/id/32.html):

解压之后选择自己对应的CCS版本的驱动进行安装(我选择了CCS3.x中间那个进行了安装):

接下来就按照提示一步步安装就可以了~

三、工程文件结构:

从图中可以看出主要的文件如下

1.GEL file文件夹中的*.gel文件:用于初始化CPU和配置寄存器,节选部分GEL文件中的代码如下:

GEL文件详细讲解(官网PDF资料:http://www.ti.com.cn/cn/lit/an/spraa74a/spraa74a.pdf

/*--------------------------------------------------------------*/
/* The StartUp() function is called each time CCS is started. */
/* Customize this function to perform desired initialization. */
/*--------------------------------------------------------------*/
StartUp()
{
setup_memory_map();
GEL_Reset();
init_emif();
}
/* Setup memory map for DM642 EVM. */
setup_memory_map()
{
GEL_MapOn();
GEL_MapReset();
/* On-chip memory map */
GEL_MapAdd(0x00000000, , 0x00040000, , ); /* Internal Memory */
GEL_MapAdd(0x01800000, , 0x00000058, , ); /* EMIFA CTL REGS */
GEL_MapAdd(0x01840000, , 0x000082FC, , ); /* INT MEM CTL REGS */
GEL_MapAdd(0x01C40000, , 0x00000270, , ); /* VP0 Control */
GEL_MapAdd(0x01C44000, , 0x00000270, , ); /* VP1 Control */
GEL_MapAdd(0x01C48000, , 0x00000270, , ); /* VP2 Control */
GEL_MapAdd(0x01C80000, , 0x00000680, , ); /* EMAC CTL REGS */
GEL_MapAdd(0x01C81000, , 0x00002000, , ); /* EMAC Wrapper */
GEL_MapAdd(0x74000000, , 0x02000000, , ); /* VP0 Channel A Data */
GEL_MapAdd(0x78000000, , 0x02000000, , ); /* VP1 Channel A Data */
GEL_MapAdd(0x7E000000, , 0x02000000, , ); /* VP2 Channel B Data */
/* Off-chip memory map */
GEL_MapAdd(0x80000000, , 0x02000000, , ); /* 32MB SDRAM EMIF-A, CE0*/
GEL_MapAdd(0x90000000, , 0x00080000, , ); /* 4MB Flash EMIF-A, CE1 */
GEL_MapAdd(0x90080000, , 0x00080000, , ); /* 4MB FPGA EMIF-A, CE1 */
GEL_MapAdd(0xA0000000, , 0x10000000, , ); /* EMIF-A, CE2 EXPANSION */
GEL_MapAdd(0xB0000000, , 0x10000000, , ); /* EMIF-A, CE3 EXPANSION */
}

这里频繁的调用了GEL_MapAdd()这个函数接口:

GEL_MapAdd( address , page , length , readable , writeable) 

address:存储器起始地址 
page:存储器类型  0 表示程序存储器,1 表示数据存储器 
length:定义的存储器长度 
readable:定义存储器是否可读,1 可读,0 不可读 
writeable:定义存储器是否可写,1 可写,0 不可写
通过函数的设置和映射,从而分配好了各个DSP内部模块的地址空间和程序空间!

2.Include文件夹中的*.lib文件:包含了CSL库函数(chip support library),也包含了部分函数.c文件的接口头文件,其中CSL库是TI官方提供的DSP内部模块的驱动程序:

截取部分TI官网提供的DM642芯片的CSL库目录:

包括了gpio的控制+edma的控制+i2C的控制+timer定时器的控制+dma数据通道的控制等等!(注:已集成到DSP/BIOS中:通过图形用户接口GUI对CSL进行配置)

3.Source文件夹中的*.c和*asm文件:main函数的实现,基本的逻辑和相关寄存器的配置和驱动调用部分

void main()
{
/*Initialise CSL,初始化CSL库*/
CSL_init();
CHIP_config(&SEEDDM642percfg);
/*初始化Video Port1*/
/*将Vedio Port1设为采集输入*/
portNumber = ;
vpHchannel1 = bt656_8bit_ncfc(portNumber);
bt656_capture_start(vpHchannel1);
/*等待第一帧数据采集完成*/
while(capNewFrame == ){}
/*将数据存入显示缓冲区,并清采集完成的标志*/
/*. . . . . . .程序区域,数据处理,逻辑运算,数据传输 . . . . . . . */
capNewFrame =;
for(i=;i<numLines;i++)
{
/*传送临时Y缓冲区*/
DAT_copy((void *)(capYbuffer + i * numPixels),
(void *)(tempYbuffer + i * numPixels),
numPixels);
/*传送临时Cb缓冲区*/
DAT_copy((void *)(capCbbuffer + i * (numPixels >> )),
(void *)(tempCbbuffer + i * (numPixels >> )),
numPixels>>);
/*传送临时Cr缓冲区*/
DAT_copy((void *)(capCrbuffer + i * (numPixels >> )),
(void *)(tempCrbuffer + i * (numPixels >> )),
numPixels>>);
}
}

4.更目录下的*.cmd文件:用于分配DSP内部Cache高速缓存(L1&L2)以及外部扩展的Extenal Mem(SDRAM)的存储空间。*.cmd文件中定义了多个段如下所示:

-l.\lib\cslDM642.lib
-l.\lib\rts6400.lib
MEMORY
{
L2 : o = 00000400h l = 0003fb00h /* all SRAM ,L2,为DSP片内存储器,是第2级存储器[第一级存储器包括独立的程序Cach(L1P)
和数据Cach(L1D) ],它是一个统一的空间,部分程序和数据,统称为L2,可以作为普通的SRAM映射到存储空间*/
CE01: o = 80000000h l = 00100000h /* external memory 00100000h */
CE02: o = 80100000h l = 00f000000h /* external memory */
}
SECTIONS
{
.cinit > L2 /*初始化变量和常数表*/
.text > L2 /*可执行代码段的映射*/
.stack > L2 /*为系统堆栈分配存储器。该段用于将变量传递至函数或者用来分配局部变量*/
.bss > L2 /*L2 /*保留全局和静态变量空间。在启动和导入的时候,C/C++编译器会
会启动程序将.cint段中的数据复制出来,以初始化.bss段中的变量*/
.const > L2 /*包含由C/C++限定词const定义的字符常量和数据*/
.data > L2 /*初始化数据段*/
.far > L2 /*供外部文件调用的变量*/
.switch > L2 /*控制语句段映射*/
.sysmem > L2 /*初始化系统空间*/
.tables > L2 /*初始化数据表*/
.cio > L2 /*io口*/
.capChaAYSpace> CE01
.capChaACbSpace> CE01
.capChaACrSpace> CE01
.disChaAYSpace> CE02
.disChaACbSpace> CE02
.disChaACrSpace> CE02
.external > CE02 /*外部变量的初始化*/
}

.cinit段包含了程序中定义的变量和常量的初始化表

.const段存储了使用const关键字定义的一些常量和数据

.switch段定义了switch语句所对应的列表

.text段为程序的可执行代码部分

.bss段存储了程序定义的全局变量和静态变量

.data数据段(datasegment)通常是指用来存放程序中已初始化的全局变量的一块内存区域。数据段属于静态内存分配。

.stack段用于系统堆栈,在程序运行过程中如果出现了大量的中断过程就需要较大的堆栈空间来记录当前的系统运行状态,所以需要合理的分配

.sysstack段为第二系统堆空间

.sysmem段作为动态存储分配保留空间

.cio段为程序的输入和输出所使用

以上的数据都存储在DSP内部的高速缓存或者Cache-L2当中。

剩下的下面的部分为SDRAM存储器的区域,命名为CE01,上面的CMD的配置将程序中的图片等数据存储在外部DSRAM中!

官方参考链接:http://software-dl.ti.com/ccs/esd/documents/sdto_cgt_Linker-Command-File-Primer.html

其他参考链接:http://wiki.dreamrunner.org/public_html/DSP/CCS/CMD-File.html

完~

TMS320DM642学习----第二篇(软件环境搭建+工程文件结构)的更多相关文章

  1. 【原】Spring整合Redis(第二篇)—SDR环境搭建具体步骤

    [环境参数] Spring版本:4.2.6.RELEASESpring-Data-Redis版本:1.7.2.RELEASE Redis版本:redis-2.4.5-win32-win64 [简要说明 ...

  2. Spring cloud系列教程第二篇:支付项目父工程图文搭建

    Spring cloud系列教程第二篇:支付项目父工程图文搭建 在讲解spring cloud相关的技术的时候,咱们就模拟订单支付这个流程来讲讲 在这个支付模块微服务搭建过程中,上面的这些技术,都会融 ...

  3. 深度学习(TensorFlow)环境搭建:(二)Ubuntu16.04+1080Ti显卡驱动

    前几天把刚拿到了2台GPU机器组装好了,也写了篇硬件配置清单的文章——<深度学习(TensorFlow)环境搭建:(一)硬件选购和主机组装>.这两台也在安装Ubuntu 16.04和108 ...

  4. opengl基础学习专题 (一 )编程环境搭建

    题外话: 第一次在博客园上同大家分享博文.水的的地方,错别字的地方.环境交流.批评.知道了马上改. 以前在百度空间中写技术分享博文,后来百度啥也没说就把整个空间封了.当时感觉 还是有点寒心.只想黑一下 ...

  5. C语言编程入门之--第二章编译环境搭建

    第二章 编译环境搭建 导读:C语言程序如何工作,首先需要编译链接成可执行文件,然后就可以运行在不同的环境中,这个“环境”的意思就是比如说,电脑,手机,路由器,蓝牙音箱等等智能设备中,其中编译器启到了关 ...

  6. Hadoop学习笔记(3)——分布式环境搭建

    Hadoop学习笔记(3) ——分布式环境搭建 前面,我们已经在单机上把Hadoop运行起来了,但我们知道Hadoop支持分布式的,而它的优点就是在分布上突出的,所以我们得搭个环境模拟一下. 在这里, ...

  7. 深度学习(TensorFlow)环境搭建:(三)Ubuntu16.04+CUDA8.0+cuDNN7+Anaconda4.4+Python3.6+TensorFlow1.3

    紧接着上一篇的文章<深度学习(TensorFlow)环境搭建:(二)Ubuntu16.04+1080Ti显卡驱动>,这篇文章,主要讲解如何安装CUDA+CUDNN,不过前提是我们是已经把N ...

  8. 自动化测试之Selenium篇(一):环境搭建

    当前无论找工作或者是实际项目应用,自动化测试扮演着非常重要的角色,今天我们来学习下Selenium的环境搭建 Selenium简述 Selenium是一个强大的开源Web功能测试工具系列 可进行读入测 ...

  9. MyBatis学习系列一之环境搭建

    目录 MyBatis学习系列一之环境搭建 MyBatis学习系列二——增删改查 MyBatis学习系列三——结合Spring 学习一个新的知识,首先做一个简单的例子使用一下,然后再逐步深入.MyBat ...

随机推荐

  1. JS知识点随笔

    1.为什么 0.1 + 0.2 != 0.3? 原因: 因为 JS 采用 IEEE 754 双精度版本(64位),并且只要采用 IEEE 754 的语言都有该问题. 我们都知道计算机是通过二进制来存储 ...

  2. react轮播图----react-slick

    1.安装 npm install react-slick; //安装样式 npm install slick carousel; 再在App.css中引入 @import "~slick-c ...

  3. python 排序 sort和sorted

    当我们从数据库中获取一写数据后,一般对于列表的排序是经常会遇到的问题,今天总结一下python对于列表list排序的常用方法: 第一种:内建方法sort() 可以直接对列表进行排序 用法: list. ...

  4. javascript中的字符串对象

    1.javascript的对象的概念 在javascript中,除了null和undefined以处,其他的数据类型都被定义成了对象 也可以用创建对象的方法定义变量,string,math,array ...

  5. Vue2 Virtual DOM

    vue 虚拟dom 的重点 是以 javascript 对象模拟 dom 节点. //用Javascript代码表示DOM节点的伪代码 Let domNode = { tag: 'ul' attrib ...

  6. jQuery为div添加select和option

    简单描述:用jQuery给页面添加select下拉框,直接上图 总结:清楚明了^_^

  7. 【linux】centos6.9通过virtualenv安装python3.5

    参考:http://www.linuxidc.com/Linux/2015-08/121352.htm wget https://www.python.org/ftp/python/3.5.4/Pyt ...

  8. JWT实战

    JWT实战 2018年03月02日 22:36:21 阅读数:129 JWT认证流程 先来回顾下JWT的流程,jwt是存储在客户端的,服务器不需要存储jwt;客户端每次发送请求时携带token,然后到 ...

  9. jenkins 实现测试发布、预发布、真实发布、回滚发布

    主要思路: 1.做三个文件夹,用于放置不可随意修改的配置文件(测试发布.预发布.真实发布) 2.每次都先修改配置文件再进行构建(构建时会先把配置文件复制到构建的目录,再同步到发布的目录) 3.发布完代 ...

  10. ubuntu 手动更新源 以及使用sudo update与upgrade的作用及区别

    一.今天更新一下我的ubuntu系统,用了几个源发现不怎么好用 上网查了一下发现有说阿里云的源挺好用 然后我试了一下 下载速度还挺快,下面分享一下怎么手动添加源列表 1.最好先做一下备份 sudo c ...