关于DSP的CCS6.0平台下的工程搭建(完全可移植)

2023-05-16

 

本工程以CCS6.0下新建TMS320F28335工程为例,其他系列处理器工程搭建类似,参考本例即可。

 工程搭建用到的F2833x TI官方库文件 下载链接

  也可直接参考笔者搭建好CCS6.0的工程 下载链接 

     所建工程能够实现完全可移植,即任意拷贝到其他位置或电脑都能直接编译(需导入工程)。之后就可以延续使用此工程,只需更改Project工程名,按自己的需要添加部分文件或库。(具体参考下面的详细说明)

1.      首先点击project->New CCS Project 

2.      选择器件和创建工程名 (路径为默认工作空间,可根据自己的实际情况更改)

 

 

点击finish,得到工程列表如下:

 工程文件夹下的文件如下:

3.      接下来,在工程文件夹下创建几个文件夹(给各文件分类存储,便于管理)

            Cmd文件夹:用来存储所必须的cmd的文件,cmd文件是编译完成之后链接各个目标文件时,用来指

                                 示各个数据、符号等是如何划分到各个段,以及每个段所使用的存储空间的。            

             FWlib文件夹:    固件库文件夹,再在其中建立两个子文件夹:Include文件夹和Source文件夹

             Include文件夹: 用于存放TI官方的写好的头文件

             Source文件夹:  用于存放TI官方写好的源文件

             Libraries文件夹:用于存放处理器所用到的库文件

             USER 文件夹:    用于存放用户自己写的头文件,源文件以及main.c文件

完成后如下:

 

4.      添加文件到工程:

接下来,我们需要拷贝以下文件或文件夹备用:(为了以后方便使用,我们把它都放在自己新建的一个文件夹“TI官方库文件”中备用)

注:首先确保自己的电脑上安装了ControlSUTE软件或C2000Ware(这两个软件TI官网都可免费下载,其中C2000Ware较新,更新到2017,我们接下来工程的搭建所需的文件都来自C2000Ware软件中所带的库

首先我们按照以下路径标注路径(具体根据自己软件的安装路径,标注路径是相同的),找到下面两个文件夹拷贝到“TI官方库文件”文件夹中备用:

然后按下面路径,拷贝下面两个文件到“TI官方库文件/lib文件夹下”

其中:

rts2800_ml.lib库文件:C/C++大内存模式运行支持库,其中有大量浮点运算处理的函数,而rts2800.lib没有,rts2800_ml.librts2800.lib对应,rts2800_ml.lib用的是大存储模式,在需要烧写FLASH时必须用这个库.

 

rts2800_fpu32.lib库文件:用于FPU目标的C / C ++运行时对象库,(F28335中支持FPU浮点运算)

 

 

如果程序中有三角函数或开根号等运算,推荐用fastRTS库或者IQmath库来计算,所以我们把FPUfastRTS文件夹和IQmath文件夹也拷贝过来备用。(注:此工程暂时用不到,故没有添加进工程,如以后需要,从“TI官方库文件”文件夹中添加进工程即可,添加方式和和上面两个库rts2800_ml.librts2800_fpu32.lib一样,下面将会介绍)

接下来添加文件到工程首先我们把“TI官方库文件/(common和headers)/include”文件夹下所有“.h”文件都拷贝到我们所搭建工程的“Fwlib/Include”文件夹下,补充(之前掉写了)并把“TI官方库文件/(common和headers)/source”文件夹下所有“.c”文件和“.asm”文件都拷贝到我们所搭建工程的“Fwlib/Source”文件夹下然后把库文件rts2800_ml.lib和rts2800_fpu32.lib拷贝到Libraries文件夹下。最后再把搭建工程下的28335_RAM_lnk.cmd文件和“TI官方库文件/(common和headers)/cmd”文件夹中的F28335.cmd和DSP2833x_Headers_nonBIOS.cmd文件拷贝到工程Cmd文件夹下。完成之后CCS6.0 IDE会自动将新添加的文件加到项目浏览器中,效果如下图:

 

文件功能说明:

cmd文件的选择则根据运行模式选择:

       在线仿真模式:使用28335_RAM_lnk.cmd文件

       Flsah烧写模式:使用F28335.cmd文件

DSP2833x_Headers_nonBIOS.cmd:无操作系统时使用

DSP2833x_Headers_BIOS.cmd  :有操作系统时使用

 

到此,基本文件的添加就完成了。

 

5.      完成工程文件的添加,先不要编译。此时编译的话会出现很多错误,因为我们工程下的Include文件夹下的头文件,以及Libraries文件夹下库文件还需要添加索引路径。

首先右键点击项目浏览器中的项目名,打开Properties(属性)

上述第(4)步Workspace选项是相对路径,File sysem..是绝对路径,如果选择File sysem..来确定路径,当工程移植到非此时默认的workplace工作空间,就又会提示错误,故此最好选择Workspace选项。然后选中Include文件夹,点击确定,效果如下:

 

   然后可以看到工程浏览器中工程Includes下多出了刚才添加的路径:

  

接下来我们添加库文件的路径,同样右键点击项目浏览器中的项目名,打开Properties(属性)

第(3)步添加我们工程“Libraries”文件夹下的库文件,第(4)步把“Libraries”文件夹路径也添加进来,同样选择Workspace相对路径。

 

6.      配置仿真器:

右键点击工程名,选择New>TargetConfiguration FileFile name取名任意,这里取为F28335.ccxml,点击Finish

然后我们选择自己配套所使用的仿真器,这里使用的是TIDSP-XDS100V2型号仿真器,

板子及设备选择:TMS320F28335,完成后点击Save保存。

 

 

7.      为了是工程层次更清晰以及便于管理,我们对一些文件的位置进行调整:

以程序模块化的思想,我们把用户自己写的源文件,头文件以及main.c文件放在我们事先建立的“USER”文件夹里首先是main.c文件,直接在工程浏览器下,拖动main.c文件到“USER”文件夹,然后右键点击工程下的“USER”文件夹新建LED.c和LED.h文件到“USER”文件夹中。

 

更新(2019.8.13//开始// :

LED文件是为了驱动板载LED灯,实现一个完整的项目并能够方便下载到DSP开发板上验证,而更重要的我们还需要新建一个“System.c”文件和“System.h”文件,用来“配置并初始化系统时钟,GPIO及相关寄存器,中断等”,这部分是每一个DSP项目工程所必不可少的,一般需要我们自己配置实现,不过没有特殊需求,一般情况下 所有外设驱动程序或项目,按下图配置即可,不用做任何更改,只需要把头文件“System.h”包含到“main.c”中,并在main函数中进行初始化。具体实现可参考笔者搭建好的工程模板。

文件夹下总体效果如下图:

      

【注】若需要验证其它外设驱动程序或项目,添加自己编写好的外设“*.c”和‘*.h’文件即可。

           添加文件方法:直接拷贝自己编写好的外设“*.c”和‘*.h’文件到“USER”文件夹下(一般工程CCS6.0 IDE会自动添加文件到工程浏览器对应文件夹下),若没有自动添加,右键点击工程下的“USER”文件夹,选择“Add Files”添加文件到USER文件夹中。

                                                                                                                                                     更新(2019.8.13://结束//

                                                                                                                                 

接下来,我们把刚刚建立的仿真文件“F28335.ccxml直接拖动到“TargeConfigs”文件夹下

到此,我们的工程搭建就基本完成了。

 

8.      完成最后调整与配置:

现在让我们编译一下工程,在工程浏览器下右键点击工程名,选中Build Project,编译工程

(说明:工程第一次编译时,可以用Build Project,等同于工具栏上的“小锤子图标”,但只能在工程进行了实际更改的情况下才能编译,也就是只编译更改的部分文件,否则不会编译成功。Clean Project主要作用就是把编译好的Output等文件删除,激活eclipse的自动编译。Rebuild Project作用,重新编译整个工程)

工程编译完成后,“Console”以及“Problems”窗口提示很多错误

在上图中看到几乎提示的都是重定义错误,找到重定义文件,分别为:

DSP2833x_SWPrioritizedPieVect.c  :软件中断优先级设置

DSP2833x_SWPrioritizedDefaultIsr.c :软件中断优先级缺省值(即设置失效)

这些我们暂时也用不到,删除这两个文件即可。

 

还有F28335.cmd文件中的提示:内存已经被指定。

我们在前面也已经提到28335_RAM_lnk.cmd文件用于在线仿真,F28335.cmd文件用于Flsah烧写,两个文件功能不同,同时只能存在一个,但我们还是放在Cmd文件夹下,因为程序进行烧录固化时必须要用,但留着又提示错误,怎么办呢?此时我们可以暂时在编译时忽略此文件,在工程浏览器Cmd文件夹下选中F28335.cmd文件右键点击,选择“Exclude for Build”(即忽略编译此文件)操作

 
然后重新进行编译,0错误,0警告,工程搭建完成。

 

9.      最后说明:

搭建可移植工程的目的是什么,一是增强我们对工程框架以及各个文件功能的理解,二就是方便以后我们使用——不用以后每次都要重新创建工程。着实节约开发时间。CSS3.3中我们把工程拷贝到“MyProjects”文件夹下改个文件夹名就行了,可是CCS6.0中工程与文件都与路径有关,而且CCS6.0识别的不是工程文件夹的名字,而是具体的工程文件“ .Project  ”,而这个文件名是不可以直接重命名的。这下我们怎么办呢?其实,CCS6.0工程下,移植创建新工程更加方便,不止文件夹的名字可以更改回来,连工程名也可以更改。想要实现你的要求,你可以在CCS工程浏览器下选择你的工程,右键—>copy,然后再工程浏览器空白处点击—>Paste(粘贴)在弹出的Copy Project对话框中填写你的新工程名和保存路径就可以了。

而如果你要移植到别的电脑或工作空间,就必须要导入工程了,然后又可以按上一个方法方便的创建新的工程了。点击工具栏—>Project>Import CCS Project..,选择好要导入的工程,点击确定即可。

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

关于DSP的CCS6.0平台下的工程搭建(完全可移植) 的相关文章

  • 函数中的形式参数和实际参数

    1 举例 xff1a 使用函数交换两个整形变量的值 运行结果 xff1a 分析 xff1a c语言中实际参数和形式参数之间采用值传递的方式来传递数据 在被调函数中 xff0c 使用的是实际参数的一个拷贝数据 我们在swap函数中交换了a和b
  • Linux 线程挂起与唤醒功能 实例

    pthread cond wait 多线程的条件变量 条件变量是利用线程间共享的 全局变量进行同步的一种机制 xff0c 主要包括两个动作 xff1a 一个线程等待 34 条件变量的条件成立 34 而挂起 xff1b 另一个线程使 34 条
  • PnP 单目相机位姿估计(二):solvePnP利用二维码求解相机世界坐标

    前言原理简介输入参数准备 1 objectPoints特征点世界坐标2 imagePoints特征点在摄像头下的像素点坐标3cameraMatrixdistCoeffs内参矩阵和畸变矩阵 相机世界坐标的求解 1求世界坐标中的点在相机坐标系下
  • Linux下socket编程,附带tcp例子

    1 网络中进程之间如何通信 xff1f 本地的进程间通信 xff08 IPC xff09 有很多种方式 xff0c 但可以总结为下面4类 xff1a 消息传递 xff08 管道 FIFO 消息队列 xff09 同步 xff08 互斥量 条件
  • 程序员加班到深夜,你经历过没?

    我看到了自己的影子啊 虽然自己非科班出身 xff0c 学历也不高吧 xff0c 但是自认为还是很努力的 xff0c 但是为什么现在的工资水平却跟应届生差不多呢 xff1f xff08 xff09 仔细想想 xff0c 自己毕业3年了 xff
  • 【C/C++学院】(16)QT版:幸运大抽奖

    程序效果 xff1a ifndef DIALOG H define DIALOG H include lt QDialog gt include lt QLabel gt include lt QPushButton gt include
  • 【Python基础】--Pickle/函数默认参数/函数的参数*args/Bytes<=>str/32-64bit/bytes对象

    Pickle gt gt gt import pickle gt gt gt my list 61 1 2 3 39 haha 39 39 and 39 39 or 39 gt gt gt pickle file 61 open 39 my
  • Windows平台python操作串口示例,可以加工下,改写成方便的测试软件

    在 windows中 xff0c 使用 Python 进行串口编程需要安装一个 Serial 模块 pyserial xff1a 下载地址 https pypi python org pypi pyserial下载完成后得到一个 pyser
  • 告别csdn一年了

    原本坚持了4年的学习 xff0c 整理笔记 xff0c 在csdn平台上进行发表 xff0c 记录 同朋友们互动 xff0c 探讨进行学习 xff0c 自己也在不断地成长 今天再次进入博客页面 xff0c 发现界面来了个大改版 xff0c
  • php视频课程

    php视频课程 xff1a 下载地址 xff1a http php itcast cn php video shtml 注 xff1a 此系列视频 xff0c 韩顺平主讲 1 php入门到精通教程 2 第二版mysql视频教程 进行中 3
  • pixhawk ulg转csv

    ulg是目前最新版px4固件生成的log格式 xff0c 下载最新版的flightplot即可对内部数据进行预览分析 xff0c flightplot中支持部分函数和运算符操作 xff0c 但对带 数据的操作不支持 xff0c 如需要对某些
  • 将Kinetic中的Gazebo7升级为Gazebo9

    将Kinetic中的Gazebo7升级为Gazebo9 一 查看所有gazebo7的相关包二 卸载当前已安装的gazebo相关包三 添加源四 安装新版本gazebo五 安装gazebo ros pkgs六 后记 官方教程 http gaze
  • 你真的了解串口 (Serial)吗?

    一 串口的定义 串口 xff0c 全称串行通信接口或串行通讯接口 xff0c 是一种常用于电子设备间通讯的全双工扩展接口 xff1b 串行通信 xff0c 串口通讯的技术基础 xff0c 指一位一位地按顺序传送数据 其特点是线路简单 xff
  • PnP 单目相机位姿估计(三):二维码角点检测

    解PnP问题时用二维码的好处二维码识别的流程代码最后 IDE xff1a visual studio 2013 使用库 xff1a Eigen opencv2 4 9 文档版本 xff1a 1 0 解PnP问题时 xff0c 用二维码的好处
  • 2014年计算机求职总结--面试篇

    又一年实习招聘陆续开始了 xff0c 这里分享一下我在2013年实习招聘和秋季招聘中的一些面试经历 xff0c 希望能对找工作的同学有所帮助 2013年面试过的公司有蘑菇街 网易游戏 阿里巴巴 腾讯 百度 大众点评 人人网 雅虎 xff08
  • 用位运算实现两个整数的加减乘除运算

    位运算的思想可以应用到很多地方 xff0c 这里简单的总结一下用位运算来实现整数的四则运算 1 整数加法 int Add int a int b for int i 61 1 i i lt lt 61 1 if b amp i for in
  • 深入理解C/C++数组和指针

    版权所有 xff0c 转载请注明出处 xff0c 谢谢 xff01 http blog csdn net walkinginthewind article details 7044380 C语言中数组和指针是一种很特别的关系 xff0c 首
  • 轻松搞定面试中的链表题目

    版权所有 xff0c 转载请注明出处 xff0c 谢谢 xff01 http blog csdn net walkinginthewind article details 7393134 链表是最基本的数据结构 xff0c 面试官也常常用链
  • 轻松搞定面试中的二叉树题目

    版权所有 xff0c 转载请注明出处 xff0c 谢谢 xff01 http blog csdn net walkinginthewind article details 7518888 树是一种比较重要的数据结构 xff0c 尤其是二叉树
  • 动态内存分配(malloc/free)简单实现--隐式空闲链表

    本文使用隐式空闲链表实现简单的动态内存分配 动态内存分配器维护一个大块区域 xff0c 也就是堆 xff0c 处理动态的内存分配请求 分配器将堆视为一组不同大小的块的集合来维护 xff0c 每个块要么是已分配的 xff0c 要么是空闲的 实

随机推荐

  • 二分查找,你真的掌握了吗?

    版权所有 xff0c 转载请注明出处 xff0c 谢谢 xff01 http blog csdn net walkinginthewind article details 8937978 二分查找 xff0c 最基本的算法之一 xff0c
  • 【谷歌面试题】求数组中两个元素的最小距离

    一个数组 xff0c 含有重复元素 xff0c 给出两个数num1和num2 xff0c 求这两个数字在数组中出现的位置的最小距离 O n 时间复杂度 xff0c O 1 空间复杂度 int minDistance int A int si
  • 进程间通信

    原作者地址不详 摘 要 随着人们对应用程序的要求越来越高 xff0c 单进程应用在许多场合已不能满足人们的要求 编写多进程 多线程程序成为现代程序设计的一个重要特点 xff0c 在多进程程序设计中 xff0c 进程间的通信是不可避免的 Mi
  • 通过能观性分析理解SLAM系统的可观维度。

    目录 1 能观性分析大体理解2 可观性定义3 可观性矩阵 1 能观性分析大体理解 什么是能观性分析 xff1f 能观性分析通过计算可观性矩阵 xff0c 分析它的零空间的秩 xff0c 来分析系统哪些状态维度可观 不可观 可观性矩阵对应系统
  • 百度2014移动研发笔试题目——1013清华版

    一 简答题 1 简述计算机的存储系统分为哪几个层次 xff0c 为什么这样的分层能够提高程序的执行效率 2 浮点数在计算中如何表示 xff0c 如何对浮点数判等 3 简述TCP与UDP协议的差别 xff0c 两者与HTTP的关系 并列举HT
  • 史上最全的ubuntu16.04安装nvidia驱动+cuda9.0+cuDnn7.0

    本文参考了 http www cnblogs com 5211314jackrose p 7081020 html https jingyan baidu com article 4853e1e55679491909f726f4 html
  • 4、ORB-SLAM闭环检测之通过词袋寻找当前关键帧和闭环候选帧之间的匹配

    目录 1 SearchByBoW 2 图解每一步实现原理 2 1 通过词袋模型寻找匹配 2 2 通过旋转直方图来筛除离群点 3 期待您加入 前面 我们已经了解到了sim3的求解流程 具体计算过程中有三步比较重要 1 寻找两关键帧之间的粗匹配
  • 基于Web服务的物联网-WoT(Web of Things)

    当我们谈到智能手机 xff0c 多样性 往往不是问题 xff0c 主流市场不是基于苹果IOS系统的就是谷歌的Android系统 xff0c 但即将到来的物联网浪潮 xff0c 智能对象是否也能这样 xff1f 这就复杂多了 xff0c 当前
  • 如何选择 catkin_make和catkin_make_isolated

    问题 在编译cartographer的代码包的时候 xff0c 会被建议使用catkin make isolated xff0c 为何不使用catkin make呢 xff1f 原因 catkin make was the first sc
  • 基于共享内存的分布式消息学习笔记

    作者 xff1a 深圳自研业务组 jimwu 编辑 xff1a 上海业务组 alenai 目录 xff1a Tbus 简介 Tbus 原理 Tbus 配置与工具 Tbus 简单应用 Tbus 运维应用 为 python 扩展 总结 Tbus
  • 分享一下工作以来我看过计算机书籍

    由于自工作依赖一直专注于linux 下的c c 43 43 编程工作 xff0c 所以 xff0c 我的书籍也大的都是这方 这边书尽管很经典 xff0c 但是我的能力实在有限 xff0c 只把数据结构的那点看了一下 xff0c 其他的 看的
  • 51单片机定时器初值计算详解

    前言 xff1a 本文详细介绍了51单片机学习过程中定时器的初值计算问题以及相关概念 xff0c 力求把每一个学习过程中的可能会遇到的难点说清楚 xff0c 并举相关的例子加以说明 学习完毕 xff0c 又顺手利用刚学到定时器的相关知识写了
  • STM32平台下官方DMP库6.12超详细移植教程

    前记 Motion Driver官方库 xff1a Motion Driver 6 12 STM32工程源码 xff1a STM32F103C8 软件MPU6050 xff08 DMP xff09 MPU6050软件I2C驱动 xff0c
  • STM32F103C8-平衡小车笔记

    STM32F103C8 平衡小车笔记 1 PID的作用 xff08 1 xff09 比例项 xff1a 提高响应速度 xff0c 减小静差 xff08 2 xff09 积分项 xff1a 消除稳态误差 xff08 3 xff09 微分项 x
  • 嵌入式Linux系统开发笔记(十四)

    U Boot环境变量 uboot 中有两个非常重要的环境变量 bootcmd 和 bootargs xff0c bootcmd 和 bootagrs 是采用类似 shell 脚本语言编写的 xff0c 里面有很多的变量引用 xff0c 这些
  • 嵌入式Linux系统开发笔记(十五)

    Linux内核启动验证 5 1 编译内核 span class token comment 清除工程 span span class token comment make distclean span span class token co
  • 基于ROS搭建机器人仿真环境

    别人的发复现及经验 https blog csdn net qq 38620941 article details 125321347 gazebo默认仿真环境 1 gazebo models 是系统下gazebo放置模型库的默认位置 2
  • 嵌入式Linux系统开发笔记(十六)

    根文件系统rootfs启动验证测试 接下来我们使用测试一下前面创建好的根文件系统 rootfs xff0c 测试方法使用 NFS 挂载 6 1 检查是否在Ubuntu主机中安装和开启了NFS服务 xff08 特别注意 xff1a nfs 配
  • 安卓5.0以上7.0以下使用Termux

    参考 xff1a https zhuanlan zhihu com p 400507701 说明 xff1a Termux支持5 0以上的安卓系统 Termux7 3版本之后 xff0c 仅支持7 0以上的安卓系统 1 安装Termux 设
  • 关于DSP的CCS6.0平台下的工程搭建(完全可移植)

    本工程以CCS6 0下新建TMS320F28335工程为例 xff0c 其他系列处理器工程搭建类似 xff0c 参考本例即可 工程搭建用到的F2833x TI官方库文件 下载链接 也可直接参考笔者搭建好CCS6 0的工程 下载链接 所建工程