DSP第四章-如何构建一个完整的工程
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
库文件是以.lib为后缀的文件 Lib即“library”的缩写 CCS中库文件的默认路径为: C:\ccsv6\tools\compiler\c2000_6.2.7\lib\ 库文件不仅包含了寄存器的地址与对应
标示符的定义,还包含了C/C++运行支 持库函数,如系统启动函数_c_int00等。
GEL文件
GEL函数库
StartUp()
7个回 调函数
OnTargetConnect( )
6个存储器 映射函数
OnPreFileLoaded(
)
OnFileLoaded()ev合md众m达64自37带.gel
OnReset()
文件中用到的
OnRestart()
GEL函数
OnHalt()
6个其他函数
DSP28_Device.h
DSP28_Ecan.h DSP28_Ev.h DSP28_GlobalPrototypes.h
DSP28_Gpio.h
DSP28_McBsp.h DSP28_PieCtrl.h DSP28_PieVect.h DSP28_Sci.h
DSP28_Spi.h DSP28_SysCtrl.h DSP28_Xintf.h DSP28_XIntrupt.h
静态库与动态库的区别(1)
lib是编译时需要的,而dll是运行时需要 的。如果要完成源代码的编译,有lib就 够了。如果要使动态链接的程序运行起 来,有dll就够了。当然,在开发和调试 阶段,最好两者都有。
静态库与动态库的区别(2)
一般的动态库程序有lib文件和dll文件。lib文 件是必须在编译期就连接到应用程序中的, 而dll文件是运行期才会被调用的。如果有dll 文件,那么对应的lib文件一般是一些索引信 息,具体的实现在dll文件中。如果只有lib文 件,那么这个lib文件是静态编译出来的,索 引和实现都在其中。静态编译的lib文件优点 是给用户安装时就不需要再挂动态库了。但 也有缺点,就是导致应用程序比较大,而且 失去了动态库的灵活性,在版本升级时,同 时要发布新的应用程序才行。
4.1.3 源文件
源文件是以.c为后缀的文件 C即为“source”的缩写 源文件是整个工程的核心,包含了所有
需要实现的功能的代码
F2812常用的源文件
序号 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
文件名 DSP28_Adc.c DSP28_CpuTimers.c DSP28_ECan.c DSP28_Ev.c DSP28_Gpio.c DSP28_Mcbsp.c DSP28_Sci.c DSP28_Spi.c DSP28_SysCtrl.c DSP28_Xintf.c DSP28_XIntrupt DSP28_InitPeripherals.c DSP28_PieCtrl.c DSP28_PieVect.c DSP28_DefaultIsr.c DSP28_GlobalVariableDefs.c
主要内容 AD初始化函数 CPU定时器初始化函数 增强型Can初始化函数 事件管理器Ev初始化函数 通用I/O模块初始化函数 多通道缓冲串行口初始化函数 串行通信接口初始化函数 串行外围接口初始化函数 系统控制模块初始化函数 外部接口初始化函数 外部中断初始化函数 包含了其他的外设初始化函数 PIE控制模块初始化函数 对PIE中断向量进行初始化 包含了F2812所有外设中断函数 定义了F2812的全局变量和数据段程序
CMD文件
CMD文件的作用是为代码和数据分配存 储空间
CMD文件有两种: 一种是分配RAM空间,用于将程序下载到
RAM空间 一种是分配FLASH空间,用于将程序固化
到FLASH空间
4.2 通用扩展语言GEL
GEL是General Extended Language的缩 写,即通用扩展语言,是一种类似于C的 解释性语言。用户可以通过在文件中使 用GEL语言来创建函数,从而扩展CCS的 功能。通过GEL,可以访问目标板的存储 器,并为CCS的GEL菜单添加选项。
静态库与动态库的区别(3)
在动态库的情况下,有两个文件,一个是引入 库(.lib)文件,一个是dll文件,引入库文件包 含被dll导出的函数的名称和位置,dll包含实际 的函数和数据,应用程序使用lib文件链接到所 需要使用的dll文件,库中的函数和数据并不复 制到可执行文件中,因此在应用程序的可执行 文件中,存放的不是被调用的函数代码,而是 dll中所要调用的函数的内存地址,这样当一个 或多个应用程序运行时再把程序代码和被调用 的函数代码链接起来,从而节省了内存资源。
GEL_MapAdd() GEL_MapAddStr() GEL_MapDelete() GEL_MapOn() GEL_MapOff() GEL_MapReset()
C27x_E1_memory_map C27x_E3_memory_map GEL_OpenWindow GEL_CloseWindow GEL_TargetTextOut GEL_TextOut
第4章 如何构建一个完整的工程
4.1 一个完整的工程由哪些文件构成
头文件 库文件 源文件 CMD文件
4.1.1头文件
头文件是以.h为后缀的文件。 h即为“head”的缩写。
序号 1 2 3 4 5
6 7 8
9பைடு நூலகம்
10
11 12 13
14
15 16 17
文件名 DSP28_Adc.h DSP28_CpuTimers.h DSP28_DefaultISR.h DSP28_DevEmu.h
GEL文件到底需不需要加载?
GEL的作用在于扩展CCS Studio的功能,可以用gel 来调用一些菜单命令,对DSP的存储器进行初始化配置 等,但不是必需的。当希望上电后立刻开启或实现某些 功能,那么可以在项目中装载GEL文件(由TI提供或用 户自行编写)来实现这个目的。但是建议对于使用仿真 器和DSP功能板的仿真环境用户来说,这种GEL语言文 件是没必要加入到配置中的。gel语言的重要性在于针 对计算机模拟环境的用户,使用gel可以为其准备一个 虚拟的DSP仿真环境,但也不是非用不可的。”
4.2.1 GEL语法
GEL语法支持的语句类型
序号
GEL语法支持的语句
1 GEL函数,包括函数的定义、参数、调用
2 Return语句
3 If-else语句
4 While语句
5 GEL注释语句
6 预处理语句
GEL是一个大小写敏感但缺少类型检测的解释性语言, 只有int类型,在语法上可看作是C语言的一个子集。
通用输入输出(Gpio)寄存器相关定义
多通道缓冲串行口(McBsp)寄存器相关定义
PIE控制寄存器的相关定义 PIE中断向量表的定义 串行通信接口(SCI)寄存器的相关定义
串行外围设备接口(SPI)寄存器的相关定义
系统控制寄存器的相关定义 外部接口寄存器的相关定义 外部中断寄存器的相关定义
4.1.2 库文件
主要内容 模数转换(ADC)寄存器的相关定义 32位CPU定时器寄存器的相关定义 F2812默认中断服务程序的定义 F2812硬件仿真寄存器的相关定义 包含所有的头文件、目标CPU类型的选择(F2812或F2810)、常用标量的
定义等内容
增强型CAN寄存器的相关定义 事件管理器(EV)寄存器的定义 全局函数的声明
标示符的定义,还包含了C/C++运行支 持库函数,如系统启动函数_c_int00等。
GEL文件
GEL函数库
StartUp()
7个回 调函数
OnTargetConnect( )
6个存储器 映射函数
OnPreFileLoaded(
)
OnFileLoaded()ev合md众m达64自37带.gel
OnReset()
文件中用到的
OnRestart()
GEL函数
OnHalt()
6个其他函数
DSP28_Device.h
DSP28_Ecan.h DSP28_Ev.h DSP28_GlobalPrototypes.h
DSP28_Gpio.h
DSP28_McBsp.h DSP28_PieCtrl.h DSP28_PieVect.h DSP28_Sci.h
DSP28_Spi.h DSP28_SysCtrl.h DSP28_Xintf.h DSP28_XIntrupt.h
静态库与动态库的区别(1)
lib是编译时需要的,而dll是运行时需要 的。如果要完成源代码的编译,有lib就 够了。如果要使动态链接的程序运行起 来,有dll就够了。当然,在开发和调试 阶段,最好两者都有。
静态库与动态库的区别(2)
一般的动态库程序有lib文件和dll文件。lib文 件是必须在编译期就连接到应用程序中的, 而dll文件是运行期才会被调用的。如果有dll 文件,那么对应的lib文件一般是一些索引信 息,具体的实现在dll文件中。如果只有lib文 件,那么这个lib文件是静态编译出来的,索 引和实现都在其中。静态编译的lib文件优点 是给用户安装时就不需要再挂动态库了。但 也有缺点,就是导致应用程序比较大,而且 失去了动态库的灵活性,在版本升级时,同 时要发布新的应用程序才行。
4.1.3 源文件
源文件是以.c为后缀的文件 C即为“source”的缩写 源文件是整个工程的核心,包含了所有
需要实现的功能的代码
F2812常用的源文件
序号 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
文件名 DSP28_Adc.c DSP28_CpuTimers.c DSP28_ECan.c DSP28_Ev.c DSP28_Gpio.c DSP28_Mcbsp.c DSP28_Sci.c DSP28_Spi.c DSP28_SysCtrl.c DSP28_Xintf.c DSP28_XIntrupt DSP28_InitPeripherals.c DSP28_PieCtrl.c DSP28_PieVect.c DSP28_DefaultIsr.c DSP28_GlobalVariableDefs.c
主要内容 AD初始化函数 CPU定时器初始化函数 增强型Can初始化函数 事件管理器Ev初始化函数 通用I/O模块初始化函数 多通道缓冲串行口初始化函数 串行通信接口初始化函数 串行外围接口初始化函数 系统控制模块初始化函数 外部接口初始化函数 外部中断初始化函数 包含了其他的外设初始化函数 PIE控制模块初始化函数 对PIE中断向量进行初始化 包含了F2812所有外设中断函数 定义了F2812的全局变量和数据段程序
CMD文件
CMD文件的作用是为代码和数据分配存 储空间
CMD文件有两种: 一种是分配RAM空间,用于将程序下载到
RAM空间 一种是分配FLASH空间,用于将程序固化
到FLASH空间
4.2 通用扩展语言GEL
GEL是General Extended Language的缩 写,即通用扩展语言,是一种类似于C的 解释性语言。用户可以通过在文件中使 用GEL语言来创建函数,从而扩展CCS的 功能。通过GEL,可以访问目标板的存储 器,并为CCS的GEL菜单添加选项。
静态库与动态库的区别(3)
在动态库的情况下,有两个文件,一个是引入 库(.lib)文件,一个是dll文件,引入库文件包 含被dll导出的函数的名称和位置,dll包含实际 的函数和数据,应用程序使用lib文件链接到所 需要使用的dll文件,库中的函数和数据并不复 制到可执行文件中,因此在应用程序的可执行 文件中,存放的不是被调用的函数代码,而是 dll中所要调用的函数的内存地址,这样当一个 或多个应用程序运行时再把程序代码和被调用 的函数代码链接起来,从而节省了内存资源。
GEL_MapAdd() GEL_MapAddStr() GEL_MapDelete() GEL_MapOn() GEL_MapOff() GEL_MapReset()
C27x_E1_memory_map C27x_E3_memory_map GEL_OpenWindow GEL_CloseWindow GEL_TargetTextOut GEL_TextOut
第4章 如何构建一个完整的工程
4.1 一个完整的工程由哪些文件构成
头文件 库文件 源文件 CMD文件
4.1.1头文件
头文件是以.h为后缀的文件。 h即为“head”的缩写。
序号 1 2 3 4 5
6 7 8
9பைடு நூலகம்
10
11 12 13
14
15 16 17
文件名 DSP28_Adc.h DSP28_CpuTimers.h DSP28_DefaultISR.h DSP28_DevEmu.h
GEL文件到底需不需要加载?
GEL的作用在于扩展CCS Studio的功能,可以用gel 来调用一些菜单命令,对DSP的存储器进行初始化配置 等,但不是必需的。当希望上电后立刻开启或实现某些 功能,那么可以在项目中装载GEL文件(由TI提供或用 户自行编写)来实现这个目的。但是建议对于使用仿真 器和DSP功能板的仿真环境用户来说,这种GEL语言文 件是没必要加入到配置中的。gel语言的重要性在于针 对计算机模拟环境的用户,使用gel可以为其准备一个 虚拟的DSP仿真环境,但也不是非用不可的。”
4.2.1 GEL语法
GEL语法支持的语句类型
序号
GEL语法支持的语句
1 GEL函数,包括函数的定义、参数、调用
2 Return语句
3 If-else语句
4 While语句
5 GEL注释语句
6 预处理语句
GEL是一个大小写敏感但缺少类型检测的解释性语言, 只有int类型,在语法上可看作是C语言的一个子集。
通用输入输出(Gpio)寄存器相关定义
多通道缓冲串行口(McBsp)寄存器相关定义
PIE控制寄存器的相关定义 PIE中断向量表的定义 串行通信接口(SCI)寄存器的相关定义
串行外围设备接口(SPI)寄存器的相关定义
系统控制寄存器的相关定义 外部接口寄存器的相关定义 外部中断寄存器的相关定义
4.1.2 库文件
主要内容 模数转换(ADC)寄存器的相关定义 32位CPU定时器寄存器的相关定义 F2812默认中断服务程序的定义 F2812硬件仿真寄存器的相关定义 包含所有的头文件、目标CPU类型的选择(F2812或F2810)、常用标量的
定义等内容
增强型CAN寄存器的相关定义 事件管理器(EV)寄存器的定义 全局函数的声明