1、涛涛 2009-1-2 版权所有 涛涛 整理 1 DSP/BIOS 设计指导书设计指导书 1 概述概述 CCS是TI的DSP芯片集成开发环境,v3.2版本中集成了DSP/BIOS v5.21,支持Himalaya TCI6482 芯片。下面对 CCS v3.2 和 DSP/BIOS 的使用作一些介绍。2 CCS 的安装的安装 目前 TI 提供的 CCS 最新版本是 Code_Composer_Studio_v3.2.39.5,安装时最好卸载以前版本的 CCS,或者选择不同的目录安装,以免出现冲突。在安装目录中直接点击 setup.exe 开始安装,如图 1:图 1 点击 Next 继续安装,如
2、图 2:涛涛 2009-1-2 版权所有 涛涛 整理 2 图 2 在此页面,可以选择 Custom Install 安装模式自定义需要安装的模块,不安装不需要的部分,以节省硬盘空间。为简便起见,这里选用 Typical Install 来进行全部安装,进入下一页面选择安装目录,如图 3选择 G:CCStudio_v3.2 目录进行安装:涛涛 2009-1-2 版权所有 涛涛 整理 3 图 3 继续 Next,如图 4确认信息后就开始了安装过程:涛涛 2009-1-2 版权所有 涛涛 整理 4 图 4 安装过程如图 5所示:涛涛 2009-1-2 版权所有 涛涛 整理 5 图 5 等待安装过程结
3、束,出现如图 6页面,CCS v3.2 的安装顺利完成。涛涛 2009-1-2 版权所有 涛涛 整理 6 图 6 3 CCS 的使用的使用 CCS 在使用前,必须设置好目标环境配置,可以是 Emulator 环境或者是 Simulator 环境。只有配置好环境后,才能进入 CCS 的集成开发界面,进行工程的建立、编译、调试和性能检测等操作。3.1 环境配置环境配置 通过 Setup CCStudio v3.2 来进行目标环境的配置。可以通过已经提供的器件家族、运行平台、大小端模式来选择一个合适的目标环境,也可以直接 import 一个已经做好的配置文件完成环境配置。以 Himalaya TCI
4、6482 的 EVM 板仿真器环境,使用 TI 提供的配置文件直接导入为例,如图 7所示:涛涛 2009-1-2 版权所有 涛涛 整理 7 图 7 选择配置文件 TCI6482 EVM with Mezzanine card XDS560 Emulator_bf.ccs,如图 8:图 8 完成后如图 9所示,显示系统上有两个 DSP 芯片,可以同时进行调试。涛涛 2009-1-2 版权所有 涛涛 整理 8 图 9 配制好后,点击 Save&Quit 并启动 CCS,出现如图 10界面。这是 CCS 的并行调试管理器,可以通过它并行操作多个 DSP 的调试过程。双击单个 DSP 的图标即可打开一
5、个 CCS集成开发环境界面,对单个 DSP 进行开发调试。图 10 如果没有仿真器和 EVM 板环境,也可配置模拟器环境,选择默认提供的相应 DSP 内核和大小端模式的 Simulator 即可,如图 11:涛涛 2009-1-2 版权所有 涛涛 整理 9 图 11 在环境配置为单个 DSP 的情况下,启动 CCS 后不出现并行调试管理器,而将直接进入CCS 集成开发环境界面。3.2 CCS 简介简介 CCS 的界面如图 12所示:涛涛 2009-1-2 版权所有 涛涛 整理 10 图 12 它包括菜单栏、工具栏、项目视图窗口、文件编辑窗口、编译报告窗口等。常用的功能有工程菜单中的新建工程、打
6、开工程、编译文件、编译工程、编译选项设置等,如图 13:图 13 涛涛 2009-1-2 版权所有 涛涛 整理 11 文件菜单下的程序加载功能是在进行 Debug 前必须执行的步骤,它把编译好的程序文件加载到目标环境中去,如图 14:图 14 将.out 文件加载到目标环境后,就可以利用 Debug 菜单或者左侧调试工具栏中的功能来进行调试了,如图 15:涛涛 2009-1-2 版权所有 涛涛 整理 12 图 15 3.2.1 创建创建、打开和关闭工程、打开和关闭工程 选择菜单栏中的 Projectnew,弹出如图 16所示对话框,输入项目名称,设置路径。Project Type 项选择“Ex
7、ecutable(.out)”,Target 项选择“TMS320C64XX”。设置完成点击“Finish”按钮,完成创建 Project。图 16 选择菜单 ProjectOpen 可以打开一个已经存在的项目。项目文件包含的信息也同时会加载进来。选择菜单 ProjectClose 可以关闭当前项目。涛涛 2009-1-2 版权所有 涛涛 整理 13 3.2.2 添加文件到添加文件到 Project 单击菜单栏 projectAdd files to project或使用项目视图窗口中的快捷菜单(单击项目文件名并单击右键选择快捷菜单 Add Files),弹出如对话框:选择被添加文件的类型,找
8、到相应路径,选中文件后,点击“Open”按钮就可以完成文件的添加操作了。若需要添加多个文件,请重复添加文件操作。目前工作中几种常用文件类型介绍:*.asm:DSP 汇编源文件*.c :C 语言源文件*.tcf :DSP/BIOS 配置文件(CCS v2.x 中是*.cdb 文件)*.cmd:链接命令文件*.out :编译输出的可执行文件*.lib :库文件 注意:*.h/*.h62 等头文件不是手工添加到项目中的,而是在 CCS 扫描所有源文件(Scan All File Dependencies)后自动添加到项目视图窗口中的 Include 目录下的。3.2.3 建立建立 DSP/BIOS
9、配置文件配置文件 如果项目需要使用 DSP/BIOS,则需要建立一个 tcf 文件,它是一个可编辑的文本文件,记录 DSP/BIOS 配置的命令,实际的配置文件是一个只读的 cdb 文件。点击菜单 FileNewDSP/BIOS Configuration,弹出对话框,如图 17所示。涛涛 2009-1-2 版权所有 涛涛 整理 14 图 17 这是一些 DSP/BIOS 的模板,可以选择合适的创建。如果要针对 Himalaya EVM 板的DSP/BIOS,则需要使用 TI 提供的一个 evm6482 模板,将其拷贝到 CCS 安装目录下的bios_5_21packagesmyplatfor
10、ms目 录 下(对 应Platform.tci文 件 中 的*!NAME!myplatforms.evm6482一行),点击Browse Platforms选择bios_5_21packagesmyplatformevm6482Platform.tci 文件,如图 18:涛涛 2009-1-2 版权所有 涛涛 整理 15 图 18 创建好的配置文件图形界面如图 19,配置完成保存后,在工程中使用 Add files to project 将 tcf 文件加入到工程中去即可。涛涛 2009-1-2 版权所有 涛涛 整理 16 图 19 也可以使用文本模式编辑配置文件,在工程视图窗口到相应的 tc
11、f 文件上右键选择DSP/BIOS ConfigText Edit 后,出现文本编辑窗口,如图:需要注意第一行 Platform 的路径是否跟自己拷贝的目录一致,特别是从别处拷贝过来的工程,需要首先检查一下此项,如果不一致,CCS 无法打开图形化的配置界面,并且会产生严重错误,导致程序强行退出。3.2.4 工程编译工程编译 当建立好 Project,并编写、添加源文件到工程后,还需要添加一个 cmd 链接命令文件,涛涛 2009-1-2 版权所有 涛涛 整理 17 指示工程中代码、数据、模块等的内存分布,如图 20添加:图 20 接下来就可以编译并运行调试程序了。3.2.4.1 编译和运行程序
12、基本步骤编译和运行程序基本步骤 按照以下步骤,编译和运行程序:Step 1:选择ProjectRebuild 或 点击快捷栏按钮(Rebuid All),编译信息可查看如图 21所示输出窗口:图 21 Step 2:缺省输出文件*.out 编译后存放在当前工程目录的 Debug 文件夹中,也可以Project Toolbar 栏中更改。如图 22所示:图 22 Step 3:点击FileLoad Program,选择之前编译输出的*.out文件,点击“Open”。Step 4:选择 ViewMixed Source/ASM,可同时查看C源代码和编译后汇编代码。Step 5:选择Debug菜单或
13、工具栏中的Go Main,执行到main函数入口处停止,并在代涛涛 2009-1-2 版权所有 涛涛 整理 18 码显示窗中用标记PC指针的当前位置。Step 6:在代码显示窗左侧相应代码行上双击鼠标左键设置端点,以标记断点。Step 7:选择debugRun 或 点击快捷栏按钮,运行程序。Step 8:选择debugHalt 或 点击快捷栏按钮,停止运行程序。3.2.4.2 编译选项设置编译选项设置 CCS 环境下,可以为工程文件(.pjt)指定编译选项,也可以为具体的每一个文件指定编译选项。编译选项可以通过工程文件或者某个具体的.c 文件单击鼠标右键,然后在弹出窗口中选这“Build Op
14、tions”,或者点击菜单栏 ProjectBuild Options,弹出如图 23窗口:图 23 编译选项分为:Basic,Advanced,Feedback,Files,Assembly,Parser,Preprocessor,,Diagnositcs 共八类。每一类又细分为若干选项设置。单击右下角的 Help,可以获得每个具体选项的含义。下表中列出与编译调试密切相关的编译选项。表中未说明的选项使用默认选项即可。类 配置 说明 Basic-Target Version C64x+(-mv6400+)选择所使用的 DSP 芯片类型。Basic-Generate Debug Info Ful
15、l Symbolic Debug(-g)为了方便调试,通常选择包含全部符号信息 Basic-Opt Speed vs Size speed Most Critical(no-ms)优化选项,在编译调试阶段涛涛 2009-1-2 版权所有 涛涛 整理 19 类 配置 说明 Basic-Opt Level None 不设置。Basic-Program Level Opt None Advanced-Endianness 1)Big Endian(-me)2)Little Endian 选择产生的目标代码的格式。Preprocessor-Include Search Path(-i)指明头文件的存放
16、位置 Preprocessor-Define Symbols(-d)举例:_DEBUG 宏开关定义,如:_DEBUG,即定义了该宏等于 1。Preprocessor-Undefine Symbols(-U)不定义预先设置的宏,可覆盖之前的定义。即如果在Define Symbols 选项中定义了的宏,在此处如果又定义一次,则该宏值为“0”。Preprocessor-Preprocessing None Standard C/C+preprocessing functions.在链接选项页中,可设置输出文件和内存映射文件的路径以及需要包含的库文件,如图 24所示:图 24 在 Serach Pat
17、h 和 Libraries 中,可将芯片支持库(CSL)的路径和使用的库文件设置好,这样就不需要在工程中添加库文件了。由于 CCS v3.2 默认没有带支持 TCI6482的 CSL v3.x 的库,可将最新的 CSL 拷贝到 CCS 目录下,建议统一路径名称,以免不同机器建立的工程不能兼容。通常库文件中末尾带 e 的为 Big Endian 库,不带 e 的为 Little Endian 库,需要根据 Complier 选项中的选择分别选用。涛涛 2009-1-2 版权所有 涛涛 整理 20 3.2.5 调试调试 编译成功后 CCS 软件会自动在工程目录下生成可执行文件*.out 文件(前提
18、条件:Build Opints 窗口中已经设置可执行文件类型为*.out),点击菜单栏 FileLoad Program,在弹出的对话框中找到*.out 文件的存放位置,打开文件完成加载后,就可以调试程序了。3.2.5.1 Breakpoint 断点可以停止程序的运行。程序停止运行后,可以观察程序的状态,修改变量以及检查调用堆栈等。有软件断点和硬件断点之分。如果是使用 Simulator 仿真,那么使用的是软件断点;如果是通过 XDS560 等仿真器硬件,那么使用的是硬件断点。点击菜单DebugBreakpoints 后会弹出如图 25所示窗口。断点可以将光标定位到源程序中的一条 C 语句上,
19、使用按钮,快捷键 F9 设置。已设置断点的地方可以在代码行前面看到红色的圆圈标识。断点的删除可以将光标移动到断点处按或 F9 删除断点。也可以按删除全部断点。断点的添加、删除、使能和禁止都可以在图 25所示窗口中操作。图 25 3.2.5.2 Watch Window 在Watch Window窗口可以观察和修改变量或C表达式。观察变量可以按不同格式进行。快速查看(Quick Watch)功能还可以快速地将变量加到 Watch Window 窗口。Watch 工具栏如图 26:图 26 点击快捷键或菜单栏 View Watch Window,也可以打开如图 27所示界面:涛涛 2009-1-2
20、 版权所有 涛涛 整理 21 图 27 如图 28所示,程序运行到 If 语句,被断点打断,图 28 此时如果想知道变量 byReturnVal 当前的值,有下面几种操作方法:1)移动鼠标悬停在该变量名上片刻就可以看到提示,如:。2)在源程序窗口中在变量名上点击鼠标右键,在弹出的菜单栏中选择“Add to Watch Window”,这样就把该变量添加到了 Watch Window 窗口中。3)选中被查看的变量名,点击右键,在弹出的菜单栏中选择“Quick Watch”,则会弹出如图 29所示对话框,可以看到变量的值。点击“Add To Watch”按钮可以将变量加入到 Watch Windo
21、w 窗口。图 29 涛涛 2009-1-2 版权所有 涛涛 整理 22 4)打开 Watch Window 窗口,按 Insert 键,在其编辑框中直接键入需要添加的变量名或表达式,如图 27。也可以在 Watch 窗口中点击右键选择“Add Tab”分类显示各种变量。3.2.5.3 Memory 在 CCS 软件中可以观察某个特定地址内存单元的数据。提供了直接查看目标内存数据的功能。图 30 点击快捷键或菜单栏的“ViewMemory”,会弹出如图 31所示内存显示框:图 31 3.2.5.4 Registers Registers 窗口可以观察 CPU 内核寄存器或各种外围设备的寄存器(如
22、 EDMA 寄存器和串口寄存器等)。在寄存器窗口中双击某寄存器就可以直接编辑寄存器的值。图 32 点击快捷键或菜单栏 View RegistersCore Registers,将会弹出如图 33所示 CPU内核寄存器窗口,就可以查看如辅助寄存器 A/B 的值了。在 View Registers 菜单中还可以选择查看 HPI 寄存器、EDMA 寄存器等的状态。涛涛 2009-1-2 版权所有 涛涛 整理 23 图 33 3.2.5.5 Displaying Graphs CCS提供数据的图表显示功能,目前常用的功能为Time/Frequency,即:可以灵活地使用此工具显示Buffer中的数据的
23、时域波形图或频域特性图。点击ViewGraphTime/Frequency后弹出如图 34所示对话框。其参数设置,主要是以下5个,分别是:Start Address:起始地址(可以写符号);Acquisition Buffer Size:缓冲区长度;Index Incremeng:数据间隔一般是1,如果一个隔着一个画,就改为2,以此类推;Display Data Size:一般设成buffer size一样大;DSP Data Type,选择 8 位,16 位或 32 位,视具体数据类型而定。涛涛 2009-1-2 版权所有 涛涛 整理 24 图 34 其他参数的作用及设置请点击“Help”按
24、钮查看。设置好之后点击“OK”就行了,如果窗口中无波形显示,可以点击“Refresh”就可以看到,下面举例说明,设置起始地址为 0 x60000000,长度为 100,数据间隔为 1,显示数据长度为 200,数据类型为:8-bit signed integer,设置完成确认后则显示的波形如图 35所示。图 35 图形窗口还可以按照其他方式显示数据,即 Constellation Diagram(星图)、Eye Diagram(眼图)和 Image(图像)。具体请查看 CCS 的帮助,检索关键字:Graph。3.2.5.6 Command Window 点击菜单栏 ToolsCommand Wi
25、ndow,弹出如图 36所示对话框:涛涛 2009-1-2 版权所有 涛涛 整理 25 图 36 在命令输入栏中键入“help”可以打开帮助文档。此窗口可以和 CMD 脚本文件配合使用。例如:编写了给变量赋值的脚本文件 testgptDLDpramInfo.cmd,在程序运行到测试用断点后,就可以直接在 Commad 窗口的命令输入栏中用赋值命令语句或打开预先编译好的赋值脚本文件。3.2.5.7 Message Event Logs 为调试查看方便,可以打印输出调试信息到 LOG 窗口(快捷键)。调用 CCS 库函数LOG_printf()可以打印输出调试信息到 LOG 窗口。如:LOG_pr
26、intf(&LOG_drv,DPRAM:DL FP buffer meet 0 xFF fill!);其中 LOG_drv 是在*.cdb 文件的 Instrumentation LOG 项中设置。如图 37所示。图 37 3.2.5.8 Kernel/Object View Kernel/Object View 窗口可以显示当前正在运行的目标代码的 DSP/BIOS 配置、状态等信息。动态和静态配置都能显示,如图 38所示:图 38 详细内容请查看 CCS 帮助,检索关键字:Kernel/Object View。涛涛 2009-1-2 版权所有 涛涛 整理 26 4 DSP/BIOS 简介简
27、介 DSP/BIOS 是 CCS 中集成的一个简易的嵌入式实时操作系统,能够大大方便用户编写多任务应用程序。DSP/BIOS 拥有很多实时嵌入式操作系统的功能,如任务的调度,任务间的同步和通信,内存管理,实时时钟管理,中断服务管理等。有了它,用户可以编写复杂的多线程程序,并且会占用更少的 CPU 和内存资源。DSP/BIOS 是一个可用于实时调度、同步,主机和目标机通信,以及实时分析系统上的一个可裁减实时内核,它提供了抢占式的多任务调度,对硬件的及时反应,实时分析和配置工具等。同时提供标准的 API 接口,易于使用。它是 TI 的 eXpressDSP 实时软件技术的的一个关键部分。4.1 D
28、SP/BIOS 的组件构成的组件构成 DSP/BIOS 在一个主机/目标机环境中的组件分布如图 39所示:图 39 DSP/BIOS API:编写的程序可以调用 API 接口函数;DSP/BIOS 配置:创建的配置文件定义了程序使用的静态 BIOS 对象;DSP/BIOS 分析工具:集成在 CCS 上的一些 BIOS 分析工具可以对运行与目标设备上的程序进行监测,包括 CPU 负载、时间、日志、线程执行状态等。DSP/BIOS 分为很多模块,提供的所有 API 函数都按照模块分类,以模块名加下划线开头来命名,如图 40所示为 DSP/BIOS 的全部模块。涛涛 2009-1-2 版权所有 涛涛
29、 整理 27 图 40 4.2 DSP/BIOS 的启动顺序的启动顺序 当 DSP/BIOS 的应用程序启动时,一般遵循下面的步骤:1)初始化 DSP:DSP/BIOS 程序从 C/C+环境入口 c_int00 开始运行。对于 C6000 平台,在 c_int00 开始处,系统栈指针(B15)和全局页指针(B14)被分别设置在堆栈断的末尾和.bss 断的开始。控制寄存器 AMR、IER、CSR 等被初始化;2)初始化.bss 段:当堆栈被设置完成后,初始化任务被调用,利用.cinit 的记录对.bss断的变量进行初始化;涛涛 2009-1-2 版权所有 涛涛 整理 28 3)调用 BIOS_i
30、nit 初始化用到的各个模块:BIOS_init 调用 MOD_init 对配置用到的各个模块进行初始化,包括 HWI_init、HST_init、IDL_init 等;4)处理.pinit 表:.pinit 表包含一些指向初始化函数的指针,对 C+程序,全局对象类的创建也在此时完成;5)调用用户程序的 main 函数:用户 main 函数可以是 C/C+函数或者汇编语言函数,对于汇编函数,使用_main 的函数名。由于此时的硬件、软件中断还没有被使能,所以在用户主函数的初始化中需要注意,可以使能单独的中断屏蔽位,但是不能调用类似 HWI_enable 的接口来使能全局中断;6)调用 BIOS
31、start 启动 DSP/BIOS:BIOS_start 在用户 main 函数退出后被调用,它负责使能使用的各个模块并调用 MOD_startup 启动每个模块。包括 CLK_startup、PIP_startup、SWI_startup、HWI_startup 等。当 TSK 管理模块在配置中被使用时,TSK_startup 被执行,并且 BIOS_start 将不会结束返回;7)执行 idle 循环:有两种方式进入 idle 循环。当 TSK 管理模块使能时,任务调度器运行的 TSK_idle 任务调用 IDL_loop 在其它任务空闲时进入 idle 循环;当 TSK 模块未被使用时
32、BIOS_start 调用将返回,并执行 IDL_loop 进入永久的 idle 循环,此时硬件和软件中断可以抢占 idle 循环得到执行。由于 idle 循环中管理和主机的通信,因此主机和目标机之间的数据交互可以进行了。4.3 DSP/BIOS 的配置的配置 DSP/BIOS 的静态配置是利用 CCS 提供的配置工具完成,包括图形化配置工具和文本配置工具。图形化工具层次清晰,比较直观,而文本工具更加灵活。通常使用图形化的配置方法,下面对主要的模块配置做一些介绍。4.3.1 Global Setting Properties 右键点击“Global Settings”,点击“Whats Th
33、is”,会弹出帮助窗口,该文件中有Global Setting Properties 的各项设置说明。下面介绍的其他如 MEM、LOG 等配置都可以用同样的方法得到相应的帮助。选择弹出菜单中的“Properties”,如图 41所示。图 41 涛涛 2009-1-2 版权所有 涛涛 整理 29 弹出如图 42所示对话框:图 42 一般选择默认设置即可,CLKOUT 项需要根据 DSP 硬件单板提供的工作时钟设置,Himalaya 通常运行在 1GHz 频率。DSP Endian Mode 项根据实际情况设置。4.3.2 MEM 设置设置 MEM 模块设置中可以根据具体情况设置不同的内存段,其中
34、存在一个默认的 IRAM 片内内存段。需要注意的是,首先必须在 IRAM 段上设置一个 heap 段落,用于 BIOS 的内部使用。设置方法是在 IRAM 段上右键选择“Properties”,弹出如图 43对话框,必须设置红线框中的选项,heap size 可根据情况具体设置。涛涛 2009-1-2 版权所有 涛涛 整理 30 图 43 接下来配置 MEM 全局属性,右键点击配置窗口中的“MEM”,如图 44所示:图 44 点击“Properties”,弹出如图 45所示窗口:涛涛 2009-1-2 版权所有 涛涛 整理 31 图 45 如图红线框中,两个 heap 段都要选择为 IRAM,
35、Stack Size”项需要根据实际情况设置最大的栈大小,其他使用缺省设置即可。在图 44的菜单中,点击“Insert MEM”可创建新的内存段。在新的内存段名上右键选择“Properties”弹出如图 43窗口,根据情况设置 base(基地址)、len(段长度)、heap size(用于 MEM 动态内存分配的堆大小)。4.3.3 LOG 设置设置 LOG 用于输出和记录一些打印信息,默认存在一个 LOG_system 对象,是系统内部用来处理打印信息的,不需要去设置。可以增加新的 LOG 对象,用来在应用程序中输出打印信息。如图 46,在 LOG 标签上右键选择“Insert LOG”,
36、填写对象名 LOG_test 即建立了一个新的 LOG 对象。涛涛 2009-1-2 版权所有 涛涛 整理 32 图 46 在 LOG_test 标签上右键选择“Properties”,弹出如图 47窗口,可对此 LOG 对象属性作一些设置。具体设置含义可通过 Help 查看。图 47 4.3.4 CLK 设置设置 在 CLK 属性中通常选择定时器 Timer0 作为 DSP/BIOS 的基准时钟,计时分辩率设置为每秒 1000 次中断,在 1GHz 系统时钟下,近似为每次定时中断间隔 999.996 微秒。Timer Mode选择为 32bit unchained 模式,即使用 TCI648
37、2 的 TMR0 的 TIMLO 作为 Timer0,而 TIMHI 还可以作其它用途使用。CLK 属性配置界面如图 48所示:涛涛 2009-1-2 版权所有 涛涛 整理 33 图 48 4.3.5 HWI 设置设置 HWI(硬中断)中包含 HWI_INT4 到 HWI_INT15 可用来定义用户自己的硬件中断,HWI_RESET、HWI_NMI 和 HWI_RESERVED 不要去改动。如图 49,每个硬 HWI 的优先级从上到下逐渐降低。涛涛 2009-1-2 版权所有 涛涛 整理 34 图 49 选择 HWI_INT10 为例,来设置 EMAC/MDIO 的中断,需要填写中断事件号 1
38、7,并且填写中断服务程序名(C 函数前面需要加下划线)如图 50所示:图 50 在 Dispatcher 页面,选择“Use Dispatcher”由 BIOS 代理控制中断的确认和清除,不需要用户中断服务程序干预,比较简便。如图 51:涛涛 2009-1-2 版权所有 涛涛 整理 35 图 51 4.3.6 SWI 设置设置 SWI(软中断)的优先级在 HWI 之后,但是比 TSK 高,可以通过右键菜单中的“Insert SWI”创建一个 SWI 对象,可以指定 SWI 内部优先级,从 0(最低)到 14(最高)。如图 52:图 52 涛涛 2009-1-2 版权所有 涛涛 整理 36 4.
39、3.7 TSK 设置设置 在 TSK Manager(任务管理器)中可以根据需要创建各种任务,任务间是根据优先级抢占策略来进行调度的,TSK 提供有多种优先级别,包括-1(Suspend)、0(Idle)、1(最低)到15(最高)。如图 53:图 53 在 TSK Manager 上右键选择“Insert TSK”并填写任务名称后就可以创建一个任务,在相应任务上右键选择“Properties”可对任务属性进行设置,如图 54:涛涛 2009-1-2 版权所有 涛涛 整理 37 图 54 Stack Size(最大堆栈大小)和 Priority(优先级)需要根据任务的具体情况进行设置。在 Fun
40、ction 页面,填写任务实体函数名(C 函数前面加一个下划线),如图 55:图 55 涛涛 2009-1-2 版权所有 涛涛 整理 38 4.3.8 Synchronization 设置设置 DSP/BIOS 中任务间的通信和同步可由 SEM、MBX、QUE、LCK 四个模块完成:SEM(信号量):用于任务同步和互斥,有计数功能,根据需要使用;MBX(邮箱):也用于任务同步,可以传递少量数据,根据需要使用;QUE(队列):可实现任务同步和资源的共享,根据需要使用;LCK(资源锁):实现对共享资源的互斥,根据需要使用。四种同步模块对象都可以通过各自的右键菜单中“Insert”来创建,并可对其属性作相应的设置。如图 56所示:图 56 4.3.9 Input/Output 设置设置 这里可以设置一些输入/输出相关的高级设置,具体可通过 CCS 的帮助项来了解。一般不需要进行设置。只有 RTDX(实时数据交换),需要根据目标环境的情况对数据交换模式进行一下选择,用来在调试中主机和目标机进行数据交换。可以是仿真器环境的 JTAG 模式,或者是模拟器环境的 Simulator 模式。如图 57所示:涛涛 2009-1-2 版权所有 涛涛 整理 39 图 57






