TMS320DM642学习----第二篇(软件环境搭建+工程文件结构)
一、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)
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学习----第二篇(软件环境搭建+工程文件结构)的更多相关文章
- 【原】Spring整合Redis(第二篇)—SDR环境搭建具体步骤
[环境参数] Spring版本:4.2.6.RELEASESpring-Data-Redis版本:1.7.2.RELEASE Redis版本:redis-2.4.5-win32-win64 [简要说明 ...
- Spring cloud系列教程第二篇:支付项目父工程图文搭建
Spring cloud系列教程第二篇:支付项目父工程图文搭建 在讲解spring cloud相关的技术的时候,咱们就模拟订单支付这个流程来讲讲 在这个支付模块微服务搭建过程中,上面的这些技术,都会融 ...
- 深度学习(TensorFlow)环境搭建:(二)Ubuntu16.04+1080Ti显卡驱动
前几天把刚拿到了2台GPU机器组装好了,也写了篇硬件配置清单的文章——<深度学习(TensorFlow)环境搭建:(一)硬件选购和主机组装>.这两台也在安装Ubuntu 16.04和108 ...
- opengl基础学习专题 (一 )编程环境搭建
题外话: 第一次在博客园上同大家分享博文.水的的地方,错别字的地方.环境交流.批评.知道了马上改. 以前在百度空间中写技术分享博文,后来百度啥也没说就把整个空间封了.当时感觉 还是有点寒心.只想黑一下 ...
- C语言编程入门之--第二章编译环境搭建
第二章 编译环境搭建 导读:C语言程序如何工作,首先需要编译链接成可执行文件,然后就可以运行在不同的环境中,这个“环境”的意思就是比如说,电脑,手机,路由器,蓝牙音箱等等智能设备中,其中编译器启到了关 ...
- Hadoop学习笔记(3)——分布式环境搭建
Hadoop学习笔记(3) ——分布式环境搭建 前面,我们已经在单机上把Hadoop运行起来了,但我们知道Hadoop支持分布式的,而它的优点就是在分布上突出的,所以我们得搭个环境模拟一下. 在这里, ...
- 深度学习(TensorFlow)环境搭建:(三)Ubuntu16.04+CUDA8.0+cuDNN7+Anaconda4.4+Python3.6+TensorFlow1.3
紧接着上一篇的文章<深度学习(TensorFlow)环境搭建:(二)Ubuntu16.04+1080Ti显卡驱动>,这篇文章,主要讲解如何安装CUDA+CUDNN,不过前提是我们是已经把N ...
- 自动化测试之Selenium篇(一):环境搭建
当前无论找工作或者是实际项目应用,自动化测试扮演着非常重要的角色,今天我们来学习下Selenium的环境搭建 Selenium简述 Selenium是一个强大的开源Web功能测试工具系列 可进行读入测 ...
- MyBatis学习系列一之环境搭建
目录 MyBatis学习系列一之环境搭建 MyBatis学习系列二——增删改查 MyBatis学习系列三——结合Spring 学习一个新的知识,首先做一个简单的例子使用一下,然后再逐步深入.MyBat ...
随机推荐
- pip的常用命令
前言 pip作为Python的御用包管理工具有着强大的功能,但是许多命令需要我们使用的时候借助搜索引擎查找(尤其是我), 于是我想将我使用到的命令整合下来,以后不用麻烦去找了,也希望能给你带来帮助.文 ...
- python1114string_test
#! -*- coding:utf-8 -*- str = "self_learn"print(type(str))str.title()print(str.title()) # ...
- C#获取当前主机硬件信息
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.T ...
- Confluence 6 恢复一个站点问题解决
如果你在导入的时候遇到了问题,检查下面的一些提示. 你的文件太大而不能上传?这个是非常常见的错误.出现的原因是备份文件不能在规定的时间内上传到服务器上.为了避免这个错误,放置你的导出文件到 < ...
- 【Linux】添加DNS
1.添加DNS输入命令: vi /etc/resolv.conf 添加一行:nameserver 10.41.132.9 2.查看DNS nslookup 127.0.0.1 | grep Serve ...
- 树形dp 入门
今天学了树形dp,发现树形dp就是入门难一些,于是好心的我便立志要发一篇树形dp入门的博客了. 树形dp的概念什么的,相信大家都已经明白,这里就不再多说.直接上例题. 一.常规树形DP P1352 没 ...
- day12 函数的嵌套调用 闭包函数,函数对象
函数嵌套: 函数嵌套: 嵌套指的是,一个物体包含另一个物体,函数嵌套就是一个函数包含另一个函数 按照函数的两个阶段 嵌套调用 指的是在函数的执行过程中调用了另一个函数,其好处可以简化外层大函数的代码, ...
- CentOS 7 防火墙,端口开启命令
1. 查看已打开的端口 # netstat -anp 2. 查看想开的端口是否已开 # firewall-cmd --query-port=8003/tcp 若此提示 FirewallD is ...
- What Are You Talking About (map)
Ignatius is so lucky that he met a Martian yesterday. But he didn't know the language the Martians u ...
- 【sqli-labs】Less1~Less4
学习sql注入啦,一下都是我做sqli-labs时的笔记.可能有错误,如果有人发现了欢迎指正~~ 常用知识点: 1.mysql注释有三种:① #: 注释从#到行尾 ② --空格: 注释到行尾,注意-- ...