- 本课程为精品课,您可以登录eeworld继续观看:
- (3) - 开发环境
- 登录
- 课程目录
- 相关资源
- 课程笔记
欢迎回来
本章节我们将要讨论的是芯片的开发环境
我们会使用集成开发环境
Code Comoser Studio CCS 创建一个工程
然后配置工程的属性
再使用一个用户自定义的链接文件
指定内存的分配
以及将工程用到的各种段映射到各个内存里
首先我们需要区分集成开发环境和编译器
集成开发环境也叫IDE
它是 Integrity Development Environment 的缩写
而编译器是 complier 或简称CGT
是code generation tools 的缩写
CCS IDE 是一个大的平台
它集成了编译器 调试器 编辑器 和操作系统等等
而编译器只是用于编译源文件的一个工具
它会集成汇编器 链接器 编译器 转化工具等等组件
甚至他可以独立运行在命令行下
或者集成到其他软件上单独工作
在这个框图里我们可以看到
CCS IDE 外端是需要连接硬件的开发工具
比如仿真器到硬件的控制板上
才可以组成一个完整的系统对芯片进行开发
这里我们看到的是 CCSV6 的界面
它集成了各种功能
包括编辑 编译 调试 点击 图形 脚本 操作系统
以及各种基于 aclips 的开源软件集成
CCS IDE 有一个非常重要的概念叫做视图
视图是将某些功能集中在一个界面上并封装起来
比较常见的两个视图是 Edit 视图和 Debug 视图
它们分别对应编辑和调试的界面
从图片上可以看到
两个视图上可以显示完全不同的内容
相当于是在分时的情况下
将不同的内容最大限度地显示出来
接下来我们会一步步按提示来看看
如何创建一个工程
而在此之前
我们需要先配置好将要调试哪颗芯片
和使用哪个仿真工具
即创建 Target Configuration file
也就是之前 CCSV3.3 的 setup 功能
首先选择 File-New-Target Configuration file
在弹出的对话框里面命名比如F2837xD
它的后缀格式是 ccxml
可以将它保存到默认的路径下面
或者制定一个其他路径
它也可以在创建以后
同时被其他的CCSIDE或者其他的软件调用
只要他们都能访问这个路径
在点击Finish后再打开的文件里
选择使用的仿真器类型
比如 XDS100V2USB 然后选择目标芯片
比如 TMS320F28377D
一个快速的办法是
可以在编辑框里手动输入关键字
那么下方就会筛选出关联芯片
再进行勾选就可以了
之后点击保存 这样一个配置就完成了
如果还有需要后续可以打开继续修改
然后不同的工程也可以选用不同的配置
非常的灵活
这里是一个现成的 CCSV6 的工程示例
在菜单和工具栏下方
左侧部分是 Project explorer
可以打开一个或多个工程
展开加号可以看到旗下的文件夹和各类文件
包括汇编文件和C的源文件
库文件链接文件
以及TI RTOS的配置文件等等
如果右键单击工程名
选择最下端的属性
可以看到编译器 链接器 汇编器
和操作系统等所有相关配置并进行修改
接下来我们就来简单创建一个工程
选择File-New-CCS project
在弹出的对话框里选择目标器件
命名工程
一样的方式定位工程放置的路径
然后选择编译器的版本
在下方的高级选项里
设置输出文件的类型
链接文件类型和runtime运行库支持
还可以选择工程模板和例子进行下一步的设计
创建完成一个工程
可以右键单击工程名选择最下端的属性
properties 在弹出的对话框里
分栏选择查看编译器和链接器的配置
包括加速器的使能优化等级的配置
编译链接的选项配置
文件路径的存放
包含路径的设置等等
具体的信息和使用方法
可以根据检码搜索C28x汇编语言
和C语言的编译器手册
SPRU513和SPRU514
再往下我们将分析编程完成以后
编译器和链接器会如何处理我们的源代码
并最终生成可执行文件
首先所有代码和变量等都会被划分成
各种不同类型的段 section
默认的段都是以点号开头
大类上主要分成两类
一类是已经初始化的
一类是未初始化的
比如纯代码
将会被划归到 .txt 段
全局变量会被划归到 .ebss 段
全级变量的初始值会被划归到.lrt段
而局部变量将会被划归到 .stack 段
每个文件都会有几个基本的必不可少的段
然后编译器会将每个文件的段都划归出来
然后将所有文件的所有同类型的段放在一起
这些段的详细分类和说明
可以参考这个表格或者编译器手册SPRU514
划归好段且重新组合好以后
我们需要将他们分配到对应的内存里
比如初始化的需要分配到Flash里
未被初始化的需要分配到RAM里
那么具体是如何对应并实现这个链接的
这就是 Link.cmd 链接文件的作用
用户需要自己先定义这个文件
并预先设置这个分配
这样在真正编译和链接的时候
当编译器完成划归的动作
并生成各个源文件对应的 .obj 目标文件
链接器就可以接收这些 .obj 文件作为输入
然后按照用户定义的Link.cmd里面的
段和内存的映射关系进行链接和分配
从而可以生成可执行文件
.out 和副产品 .map
后者可以用于验证这些分配
是否与用户预想的一致
并且还可以查看每个变量
或者函数分配到了哪里
以及 Flash 和 RAM 的分配情况
被谁占用了等等
这是一个 Linker Command File 的例子
上方内存的部分分配了程序页和数据页
并指定了不同的名称和起始地址及大小
而下方 Sections 的部分
就将这些段一一映射到不同类型的内存里
简单来说 Linker Command File 的内存部分
会定义内存的名称起始地址和大小
而 Section 部分会进行内存的映射
同时还支持一些其它功能
比如独立的 load 和 run 的配置等等
本章节我们主要讲解了开发环境
和编译器链接器是如何工作的
以及怎样创建工程
和用户如何配置Linker Command File
接下来我们还会继续做一些准备工作
进一步了解底层驱动应该如何配置
以及外设如何访问等等
课程介绍
共计28课时,4小时27分22秒
C2837x入门指南
TI C2000 MCU PWM F2837xD ADC DAC DMA CLA C2837x CMP SDFM CAP QEP c28x
F2837x系列的最新 C2000™ Delfino™ 32 位 F2837xD 微控制器 (MCU),为工业实时控制实现最新创新,并设定了全新性能标准。这些最新 MCU 支持双核 C28x 处理功能与双实时控制加速器(也称为控制律加速器或 CLA),可提供 800 MIPS 浮点性能,从而可帮助设计人员为计算要求严格的控制应用开发低时延系统。此外,设计人员还可通过将多个嵌入式处理器整合在单个 MCU 中以降低复杂性,充分满足高级伺服驱动器、太阳能中央逆变器以及工业不间断电源 (UPS) 等需要实时信号分析的应用需求。
猜你喜欢
换一换
推荐帖子
- 代码规范-IAR设置
- 1.在IAR内定义 char 2. 去掉相关的告警 3.LANGUAGE设置 ...
- Jacktang 微控制器 MCU
- 注意!您的模数转换器是好是坏可能只取决于它的电源
- 转自deyisupport 当谈到模拟信号链时,每个人都明白输入信号路径的重要性。我们设计自己的系统,以获取值得关注的信号并保持其完整性,同时竭尽全力来避免或减少干扰。我们特别留意沿途所置各组件的选择......然后我们就给其供电。 笔者曾听人把电源形容成“电路的鞋带。”像电路一样,人们常为鞋子的设计和款式做大量艰苦的工作,却直到最后才会想起鞋带。虽然电源往往是后添加的东西,但它们的设计可能正...
- maylove 模拟与混合信号
- 怎么测试运算放大器的输入失调电压?
- 运放输入失调电压是指输入信号为零时,输出端出现的电压折算到同相输入端的数值。 运放输入失调电压测试只要将运放连接成差分放大电路(也称减法电路),再将两个输入端短接之后接地即可。 为了方便测量,可设置较大的增益,如1001倍,输出电压除以1001就是输入失调电压。 取RF=R3=100kΩ,R1=R2=100Ω,将Ui1和Ui2同时接地,Uo/1001就是输入失调电压。 ...
- fish001 模拟与混合信号
- 如何测量电源文波呢?喜欢的过来讨论一下。
- 电源纹波测试在电源质量检测中是很重要的一项参数,但是怎么准确的测量电源纹波却成了工程师心中的一道难题,这里分享一下ti提供的如何正确测量电路文波的方法,算是抛砖引玉了,你们在实际电源设计中,是如何测量电源的文波的,一起分享吧。 精确地测量电源纹波本身就是一门艺术。 在图 1 所示的示例中,一名初级工程师完全错误地使用了一台示波器。 他的第一个错误是使用了一支带长接地引线的示波器探针; 他的...
- alan000345 模拟与混合信号