61ic电子在线 首页 技术 嵌入式系统 查看内容

专题讲座2:F28M35H52C1学习笔记

2017-8-22 16:52| 发布者: 61ic| 查看: 998| 评论: 0

摘要: 这部分的主题是:编程开发环境,使用Code Composer Studio 开发F28M35x。

这部分的主题是:编程开发环境,使用Code Composer Studio 开发F28M35x。

下图所示为F28M35H52C1的编程模型,这里就涉及到了嵌入式开发时硬件抽象的概念。我们在做嵌入式软件开发时,尤其是在做应用时,很少直接跟硬件打交道,跟我们打交道更多的其实是硬件抽象层。硬件抽象层分为三个层级:寄存器以及内存地址,位域头文件,API驱动。

下面分别来介绍一下这三者,这是我们开发嵌入式软件的基础。我们在对芯片的外设进行操作时,比如配置串口,发送串口数据。我们在设计软件时,实际上是在写寄存器,通过写寄存器完成我们想要的控制功能。汇编语言编程访问数据的基础便是寄存器和地址;C语言虽然可以直接访问寄存器或者内存地址,但是一般我们会以ASCII码的方式给这些地址一个符号,用这个符号来代替难读的内存地址。比如用结构体的形式表达外设的寄存器,比如GpioG1CtrlRegs。这种以头文件的形式定义一个结构体数据类型,然后将结构体数据类型关联到特定的内存地址中,然后软件编程就变成了对这些结构体的访问,这种方式便是Bit Fields的硬件抽象方式。TI公司对F28x芯片已经建立了一套完整的头文件来定义寄存器。这份文件加速了软件开发的过程,CCS也对这种结构体形式的位域头文件有很好的支持,可以方便使用。

最后一个是API Drivers。我们在做嵌入式软件开发时要尽可能使用抽象级别高的方式来做我们的开发,因为底层驱动做一次就行了,没有必要反复做,那是reinvent the wheel。API Drivers提供了很多驱动软件资源来完成一些基本功能,比如一些C函数自动设置寄存器的位域,通用的任务和外设模式。API Drivers大大简化了编程工作。可遗憾的是,F2812,F28335这些片子只提供了一些寄存器的头文件,并没有提供API驱动。

直接寄存器访问,位域头文件,API驱动三种方式下的代码如下图所示:

TI为每个设备提供的的支持包包括了文档和例子,介绍了如何使用位域头文件和API驱动库。设备驱动包在C:\TI\controlSUITE\device_support\路径下。ControlSuite又是一个什么东东?ControlSUITE for C2000微控制器是一套集合在一起的软件,硬件,技术文档资源的合集,用于减小系统开发时间。ControlSUITE提供了整个开发评估阶段所需的设备驱动,支持软件以及完整的系统案例和技术培训。通过这些代码片段和通用案例,开发人员可以以ControlSUITE中提供的优化的实物软硬件方案为基础,快速开发一个实时系统。ControlSUITE可以在TI官网免费下载到。

F28M35x的软件开发环境是Code Composer Studio IDE。我使用的版本是CCSv6.1.2。简要介绍一下Code Composer Studio,Code Composer Studio集成了一系列与TI 嵌入式软件开发的相关支持,编译C代码,生成可执行代码(Code generation:将C文件,cmd文件等源文件组织成可执行文件的过程),Debug;提供了强大的绘图,绘制曲线的工具;可以使用Script自动执行任务;CCS在v4版本以后基于Eclipse开源软件框架。

Code Composer Studio主要由三部分组成:集成的编辑/调试 GUI;Code Generation Tools和SYS/BIOS。其中Code Generation Tools是将项目文件转化为可执行代码的核心,SYS/BIOS为TI提供的操作系统,与用户打交道最多额是GUI开发环境。

CCS的编辑界面和调试界面大同小异,但侧重功能有所不同。CCS编辑界面显示了代码开发过程中所需的界面,比如C/C++项目管理器,编辑器等。CCS调试界面则显示了很多调试界面,与调试相关的菜单栏,看内存变量的窗口,绘图界面等等。

我们所有与嵌入式软件相关的文件全部集中在一个Project files中,Project files包含以下内容:

1. 源文件(C,汇编),库,SYS/BIOS配置文件,Link command files,这些构成了代码生成工具所需要的输入文件合集;

2. 项目设置,项目设置也是一项重要的内容,它决定了整个代码生成的过程(Build),设置包括对compiler,assembler,linker,SYS/BIOS的配置。Build过程的配置;

3. Target Configuration File。目标配置文件,这个文件描述了仿真器和目标板的信息。开发计算机和开发板的连接类型(Simulator,Emulator),设备类型。

在使用CCSv6新建一个CCS项目,选择目标类型和连接器后,会出现如下界面:

这个界面包含了两个panel。一个是Cortex M[ARM]的,另一个是C28XX[C2000]的。因为F28M3x包含有两个内核,一个是M3核还有一个是C28x。因此需要指定项目的目标到底是哪个核,同时指定编译器类型。其中ARM的编译器可以用TI提供的,也可以是开源的代码生成工具GNU v4.8.4(Linaro)。项目的配置还包括输出类型,用于生成静态库还是可执行的代码。

CCSv6 Build Options - Compiler/Linker

M3和C28的Build选项是分离的。所要设置的项目区别很大。总的来说,Build Option要对编译器和链接器进行设置,比如优化级别,目标设备,编译/汇编/链接选项。

Compiler Support for F28M35x

F28M35x设备需要CCSv4.2.0以上的版本。F28M35x包含两个不同的核,对每个核必须采用不同的编译器。

ARM Code Generation Tools

    -用于ARM Cortex M3主控子系统

    -版本要求:5.0.1以上

    -本机版本:ti-cgt-arm_5.2.5

C2000 Code Generation Tools

    -用于TI C28控制子系统

    -版本要求:6.1.0以上

    -本机版本:ti-cgt-c2000_6.4.6

如何调试双核系统?

双核系统的软件会产生两套软件项目,M3项目文件和C28x项目文件,两个项目文件是独立的。当点击第一个子系统的调试按钮时,CCS会自动启动Debugger,连接目标板,写Flash,此时第二个子系统处于断开状态。紧接着连接第二个子系统,点击连接目标,然后加载程序。此时两个子系统都处于连接状态。

双子系统调试启动顺序:

1.复位C28子系统;2.复位M3子系统;3.运行C28子系统;4.运行M3子系统;5.停止,调试每个子系统。

一个嵌入式系统项目最好组织成:支持文件以及库文件+应用项目的形式。前者存放通用的,驱动级的代码。这种分离让支持文件和库更易于维护和升级,也让程序变得portable(便于携带)。${PROJECT_ROOT}提供了项目路径信息,利用这种相对的地址,我们可以很方便地指定Device_support的所在路径。

当程序下载完后,重新上电就可以看到板子上LD2和LD3在闪烁。其中LD2是由C28x控制的结果,LD3则是由M3控制的结果。

在做实验的过程中,我并没有按照它指定的路径来建立项目文件,而是采用自己的项目文件夹。这导致了一些问题。即导入项目文件后,项目中的配置有些失效,需要重新配置。比如Device_Support文件夹中的.h头文件以及.c源文件,lib文件。


鲜花

握手

雷人

路过

鸡蛋

地址 :湖南省株洲市天元区利江花园
合作 Email: administration@61ic.com

  • 关注61ic官方微博
    了解最新动态

  • 关注61ic微信公众号
    这里有好玩的讯息

  • 加入61ic交流群
    不断在这里成长

© 2014-2017 HuNan 湖南索炜达电子科技有限公司 . All rights reserved.
湘公网安备 43020202000020号

Archiver|手机版|小黑屋||湘ICP备13001086号-2 QQ 
返回顶部