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 ...
随机推荐
- PL/SQL设置
PL/SQL 自定义快捷键(比如输入s,直接就显示select * from) 1.1 修改Code assistant快捷键tools->preferences->User Interf ...
- 弃 Java 而使用 Kotlin 的你后悔了吗?| kotlin将会是最好的开发语言
自从 2011 年发布以来,Kotlin 凭借强大的功能在开发者中的欢迎程度与日俱增.且在一年前,Google 宣布 Kotlin 正式成为 Android 官方开发语言,由此引发了从 Java 迁移 ...
- confluence搭建破解及汉化教程
注:本文参考了 < confluence搭建破解及汉化教程 > 本文是在yum环境搭建好,且可用联网的前提下进行的实际操作并作记录的. 关于yum本地环境搭建可以参考此文:<Cen ...
- sql中某条件不为空,可能有的小祖宗会喷了,这还用总结?emmm,我渣,我觉得有一点意思对于第二种(土味)
需求说明:存在父子关系的单表,父级别的parent_id为空,那么要得到所有的子级别的数据信息,查询的条件就是:父id不为空. 个人做法:where parent_id is not null or ...
- 【mysql】删除字段的最后一个字符
场景:在存入16进制id时,由于转换失误,得到的结果是0x1001L的格式,我希望转换为0x1001,去掉最后的L 指令: update tb_test set hexid=left(hexid, l ...
- 波哥博客Url
http://www.cnblogs.com/whatlonelytear/
- easyui 布局之window和panel一起使用时,拉动window宽高时panel不跟随一起变化
项目开发中布局是每一个组件都由最外层的window和内部的至少一个panel组成,其他的细小组件再依次放到panel中. 问题:当拉动外部的window时我们希望内部的panel的宽高也跟着变化,但是 ...
- MySql中 delimiter 详解
转载于:http://blog.csdn.net/yuxin6866/article/details/52722913 其实就是告诉MySQL解释器,该段命令是否已经结束了,mysql是否可以执行了. ...
- centos安装pg以及pg配置ssl
https://blog.csdn.net/iteye_21194/article/details/82645389 https://blog.csdn.net/rudy5348/article/de ...
- BootStrap标题制作模板
<!DOCTYPE html><html lang="zh-CN"> <head> <meta charset="UTF-8&q ...