首页 > 应用与设计 > 工业应用 > C2837x入门指南 >

电机驱动

最新课程

热门课程

C2837x入门指南(三) — 开发环境

欢迎回来 本章节我们将要讨论的是芯片的开发环境 我们会使用集成开发环境 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 接下来我们还会继续做一些准备工作 进一步了解底层驱动应该如何配置 以及外设如何访问等等

欢迎回来

本章节我们将要讨论的是芯片的开发环境

我们会使用集成开发环境

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

接下来我们还会继续做一些准备工作

进一步了解底层驱动应该如何配置

以及外设如何访问等等

视频报错
手机看
扫码用手机观看
收藏本课程

视频简介

C2837x入门指南(三) — 开发环境

所属课程:C2837x入门指南 发布时间:2016.06.06 视频集数:28 本节视频时长:00:08:28
C2837x概述;芯片架构; 开发环境;外设寄存器操作;复位和中断;系统初始化;模拟子系统 ADC DAC CMP SDFM;控制类外设PWM CAP QEP。
TI培训小程序