DSPBIOS的启动
DSPBIOS设计指南详细
DSP/BIOS设计指导书1概述CCS是TI的DSP芯片集成开发环境,v3.2版本中集成了DSP/BIOS v5.21,支持Himalaya TCI6482芯片。
下面对CCS v3.2和DSP/BIOS的使用作一些介绍。
2CCS的安装目前TI提供的CCS最新版本是Code_Composer_Studio_v3.2.39.5,安装时最好卸载以前版本的CCS,或者选择不同的目录安装,以免出现冲突。
在安装目录中直接点击setup.exe开始安装,如图1:图 1点击Next继续安装,如图2:图 2在此页面,可以选择Custom Install安装模式自定义需要安装的模块,不安装不需要的部分,以节省硬盘空间。
为简便起见,这里选用Typical Install来进行全部安装,进入下一页面选择安装目录,如图3选择G:\CCStudio_v3.2目录进行安装:图 3继续Next,如图4确认信息后就开始了安装过程:图 4 安装过程如图5所示:图 5等待安装过程结束,出现如图6页面,CCS v3.2的安装顺利完成。
图 63CCS的使用CCS在使用前,必须设置好目标环境配置,可以是Emulator环境或者是Simulator环境。
只有配置好环境后,才能进入CCS的集成开发界面,进行工程的建立、编译、调试和性能检测等操作。
3.1环境配置通过Setup CCStudio v3.2来进行目标环境的配置。
可以通过已经提供的器件家族、运行平台、大小端模式来选择一个合适的目标环境,也可以直接import一个已经做好的配置文件完成环境配置。
以Himalaya TCI6482的EVM板仿真器环境,使用TI提供的配置文件直接导入为例,如图7所示:图7选择配置文件TCI6482 EVM with Mezzanine card XDS560 Emulator_s,如图8:图8完成后如图9所示,显示系统上有两个DSP芯片,可以同时进行调试。
CCSv5.5中DSPBIOS简单搭建例程
添加 DSP/BIOS 配置到当前工程
1) 选择 File > New > DSP/BIOS v5.x Configuration File。
2) 检查 Filename 栏的 tcf 文件名是否和你的工程名一致。这里名为 test.tcf。点
击 Next 按钮。
3) 选择所属的器件型号平台,我的是 ti.platforms.evm6748,点击 Next 按钮。
void taskledoff() {
while(1) { SEM_pend(&SEM1, SYS_FOREVER); GPIOPinWrite(SOC_GPIO_0_REGS, 34,GPIO_PIN_HIGH); TSK_sleep(500); //Delay(5000000); SEM_post(&SEM0); LOG_printf(&trace, "Task ledoff DONE"); } }
}
void taskledon() {
while(1) { SEM_pend(&SEM0, SYS_FOREVER); GPIOPinWrite(SOC_GPIO_0_REGS, 34,GPIO_PIN_LOW); TSK_sleep(500); //Delay(5000000); SEM_post(&SEM1); LOG_printf(&trace, "Task ledon DONE"); } }
创建步骤 选择 TSK – Task Manager ,右键选择插入,并为每个任务起个名字,这里我命 名了两个名称分别为 TSK_ledon、TSK_ledoff 的任务。优先级分别为 2 和 3。两来就会看到 led 在闪 烁。
DSP-BIOS使用入门
DSP-BIOS使用入门从环境说到搭建第一个工程请注意,此文默认读者已经对DSP及CCS V3.3环境有一定的了解了,知道cmd文件的配置,知道新建工程,编译并连接仿真器下载!如果你对这些还都不熟悉,请先熟悉这些!当然,最好要有操作系统的基本概念——任务、调度、中断!第一个问题:DSP/BIOS(好吧,我们一般这样写)是什么?是TI公司专门为DSP开发的嵌入式实时操作系统,既然是TI公司为自己的DSP开发的——官方的,当然性能是杠杠的了(当然,我还在入门,这点也是道听途说,没有实际体会)。
既然说到实时操作系统,那还有哪些嵌入式实时操作系统呢?Linux是吗——不是,VxWorks——是,哦,还有一个小的开源系统——uCOS II也是。
问题二:要使用DSP/BIOS,需要安装什么环境呢?本文为CCS v3.3,默认就安装上DSP/BIOS,版本为V5.31.2(可以通过Help->About...菜单查看版本)。
当然,如果需要其它版本(可以同时安装多个版本),可以到TI官网下载,链接:/dsps/dsps_public_sw/sdo_sb/targetcontent/bios/dspbios/index.htm l请注意:DSP处理器型号、CCS版本、DSP/BIOS版本之间存在兼容性,请注意选择!下载后安装到CCS所在目录,通过Help->About...中的Manager选择使用的BIOS版本!本文使用的是CCS V3.3默认的DSP/BIOS版本,即V5.31.2。
无特殊说明,本文的例子运行在TI的CCS 3.3软件仿真模式下,仿真环境配置如下(使用C6713处理器仿真):问题三:如何建立第一个BIOS工程?先建立一个普通工程,Project->New...,如下:File->New->DSP/BIOS Configuration...新建DSP/BIOS配置文件,保存一下,配置文件的后缀为*.tcf.将配置文件和由配置文件自动生成的cmd文件添加到工程,新建一个main.c文件,把main.c添加到工程(总是忘记这个然后还到处找问题),写个最简单的代码吧,int main(void){return 0;}编译一下工程,此时出现错误提示:js: "./bios_first.tcf", line 11: Heaps are enabled, but the segment for DSP/BIOS Objects (MEM.BIOSOBJSEG) is not set correctly. Please create a heap in one of your data segments and set MEM.BIOSOBJSEG to it.没关系,在下一小节将看到怎么去掉该错误!DSP/BIOS的配置方法系统配置在Global Setting上右键属性,设置DSP目标板时钟,CLKOUT时钟以及大小端模式。
DSPBIOS使用总结
DSPBIOS使用总结1 DSP/BIOS 实现实时数据调试和交换摘要:本文介绍了基于TI公司DSP/BIOS实现实时数据调试和交换的方法----数字信号处理技术已成为目前最广泛的应用技术之一,TI 公司在不断推出各种新型高速低功耗DSP的基础上,提出了基于DSP的微型实时操作系统BIOS的概念.----DSP所面临的系统越来越复杂,诸如多任务处理,烦琐的硬件设备管理,实时数据处理及传送等等,传统的DSP编程越来越难以胜任.----TI公司推出的BIOS可以支持以上功能,它提供了众多的模块及面向用户的API接口,包括多优先级多任务系统调度,内存管理,硬件DRIVER抽象,以及数字信号处理所独特的实时数据调试及交换的支持.1 .1B IOS中的图形化管理界面----先介绍一下BIOS中的图形化管理界面:DSP/BIOS CONFIGURATION TOOLS。
在CCS 集成开发环境中打开FILE -> NEW -> DSP/BIOS CONFIGURATION,就可以看到DSP/CONFIGURATION TOOLS,在这里用图形化的界面集中管理所有的BIOS模块,包括硬中断,软中断,任务,时钟,管道等,在每个模块下都可以添加新的对象以及编辑它的属性,添加完对象会在工程中自动生成相应的代码,用户程序中只需声明此对象,然后调用它的API函数就可以了。
----下面主要介绍数字信号处理所独特的实时数据调试及交换----在通常的软件调试中如何去观察变量?很简单,我们会单步运行或者设置断点,然后在WATCH窗口中观察变量的值.这种经典的调试方法在数字信号处理中捉荆见拙,因为我们面对的是实时任务,程序的停顿会使我们面对的系统面目全非.DSP/BIOS的解决方案是提供LOG模块,在目标DSP内,LOG对象将要监控的信息实时的捕捉存放在DSP 的特定缓冲LOGBUFFER中,在DSP进入空闲的时刻通过JTAG接口传回主机,主机端的CCS集成环境将接受数据并显示在打开的LOG观察窗口中,从而不打断正常的程序运行情况下,获取必要的调试信息。
DSP_BIOS简单实例教程
Code Composer Studio 教程(二)——开发一个DSP/BIOS程序在此教程中,通过使用DSP/BIOS来优化hello程序。
此教程需要一个目标板,而且不可以用一软件模拟器来实现。
同时,此教程需要CCS的DSP/BIOS部分。
步骤1:创建一个配置文件另一种实现hello程序的方法是使用配有DSP/BIOS API的LOG模块(API——应用程序接口)。
你可以在加载入的程序中使用DSP/BIOS来提供基本的运行时间服务。
API模块使实时DSPs进行最优化。
不同于C库调用如puts(),DSP/BIOS在不暂停目标硬件的情况下进行实时分析。
另外,API代码占用更小的空间,同时比C标准的I/O运行更快。
一个程序可使用一个或更多的DSP/BIOS模块。
在此,修改hello 文件以使用DSP/BIOS API。
为应用DSP/BIOS API,一个程序必须拥有一个程序所使用的定义了DSP/BIOS对象的配置文件。
1)打开项目myhello.mak。
(在D:\han\study2目录下)2)File ——> New ——> DSP/BIOS Config。
3)选择对DSP板的类型,确定。
此时弹出一界面窗口。
4)右击LOG-Event Log Manager,并选择Insert LOG,这样建立一个名为LOG0的LOG对象。
5)右击LOG0,选择Rename,改名为“trace”。
6)File ——> Save。
保存于工作目录下,配置文件名为myhello.cmd。
保存此配置直接产生以下文件:①myhello.cdb:保存配置的设置。
②myhellocfg.cmd:连接器命令文件。
③myhellocfg.s62:汇编语言源文件。
④myhellocfg.h62:包含在myhellocfg.s62中的汇编语言头文件。
尽管这些文件拥有.s62和.h62的扩展名,它们也可应用在TMS320C6701中。
6_2 DSP_BIOS:DSP BIOS程序的生成
远见品质
2.2.3 (C6000) 大模式下对象的引用 大模式下变量的存取:
在大模式编译的代码与变量的存储位置是 无关的,如果所有引用对象的代码都是在 大模式下编译的,那么程序可以像存取一 般数据一样存取对象
远见品质
2.2.4 动态建立的DSP/BIOS对象
不是所有的DSP/BIOS对 象可以动态创建,有的 只能在配置工具中创建 #include <tsk.h> XXX_create:为对象的 TSK_Attrs attrs; 内部状态信息分配存储 TSK_Handle task; 空间,并返回一个指向 attrs = TSK_ATTRS; = "reader"; 新建对象的句柄. XXX_Attrs结构的指针 attrs.priority = TSK_MINPRI; 为参数. task = XXX模块的其它函数可 TSK_create((Fxn)foo, 以使用这个句柄引用这 &attrs); 个对象. … XXX_delete函数删除对 TSK_delete (task); 象
远见品质
2.3 DSP/BIOS程序使用的文
件
保存配置的生成文件: program.cdb (被配置工具和分析工具同时使用 ) programcfg.h(配置工具生成的包含对象声明 ) programcfg.h54(汇编头文件 ) programcfg.s54(汇编源文件 ) programcfg.cmd(链接命令文件 ,定义了DSP/BIOS特殊的编译选 项和对象名以及程序段的定义 ) programcfg_c.c(CSL设置的程序代码 ) module.h( DSP/BIOS API头文件,用户程序需要包含std.h和任何 使用模块的头文件) module.h54 (用于汇编程序的DSP/BIOS API 头文件) DSP/BIOS分析工具用到的文件 program.cdb. 配置文件提供了对象名和其它一些程序信息. program.out. 可执行文件提供了符号地址和其它一些程序信息.
DSP BIOS所有模块配置方法
1.配置DSP平台打开Setup CCStudioFamily 代表DSP系列这里我们选择C64XX;platform代表运行品台我们选择simulator 即仿真模式;Endianness代表端点模式我们选测little即小端模式(它代表数据如何在存储器中存放的,大段模式是低地址存放高位,小端模式正好相反,具体可以baidu一下)这里选择小端模式是因为编译器默认是按小端模式编译的。
设置好后如下图所示:选择第一个平台C6416[Compiled]Device Functional Simulator,Little Endian后单击ADD 或者双击,它就会出现在My System下如下图所示:单击Save&Quit如下图所示:单击“是”启动CCS2.配置静态DSP/BIOS在CCS菜单中选择File -> New -> DSP/BIOS Configuration,会弹出DSP/BIOS设置窗口如下图所示:界面:如下图所示以此展开System->MEM后在IRAM上单击右键选择properties菜单弹出IRAM对象属性配置对话框选中create a heap in this memory和enter a user dsfined heap identifier lable;并在heap identifier lable中填写段名“_SEG0”后单击“确定”。
如下图所示:在MEM上单击右键选择properties菜单如下图所示:弹出MEM对象设置窗口如下图所示:拉列表中也选择IRAM,单击“确定”如下图所示:以上存储器模块配置完毕;2.2配置LOG对象如下图所示在LOG上单击右键选择Insert LOG出现下面的窗口:在文本框中输入“my_log”单击OK后在LOG下面会出现我们刚才创建的LOG对象my_log以上LOG对象配置完毕2.3配置PRD对象展开Scheduling在PRD上单击右键选择Insert PRD如下图所示:和LOG对象一样会要求你输入对像名称在文本框中输入PRD1单击OK;按照PRD1的建立方法在建立两个PRD对象;命名为PRD2、PRD3建立好后如下图所示:在PRD1上单击右键选择properties菜单,如下图所示:出现PRD1属性设置窗口,如下所示:在period文本框中输入100,function文本框中输入_Post_Sem1,如下图所示:按照配置PRD1属性的方法配置PRD2和PRD3只修改period和function属性。
轻松学会DSP——第7章 DSP BIOS
LOG模块:用于事件的记录显示。例如,你 可以通过该API输出调试信息。 MEM模块:用于定义目标系统的内存使用。 系统根据此信息自动产生.cmd文件。 PIP模块:用于管道管理,可以实现线程间的 数据交换。 PRD模块:用于实现周期性的函数。该类函数 的执行频率可以由CLK模块或自己调用 PRD_tick决定。
3、DSP/BIOS插件
完成对运行程序的实时分析,时刻监视 CPU的负荷,各个线程的执行情况,各段 代码的花费时间等等; DSP通过JTAG口返回到PC数据,这些数 据反映我们需要的情况。这些数据的产生 是在CPU的空闲状态时产生的,所以,不 会对DSP本身的运行产生影响。
Program tracing: Displaying events written to target logs, reflecting dynamic control flow during program execution。 Performance monitoring: Tracking summary statistics that reflect use of target resources, such as processor load and timing File streaming: Binding target-resident I/O objects to host files。
提供了具有不同优先级的线程,依次是硬件中 断、软件中断、任务、IDEL空闲函数,以及周 期函数,且其优先级可配置。 线程之间可通过旗语、邮箱等工具进行通信。 DSP/BIOS配置工具产生对象的缺点: 一旦建立,不论程序中是否使用,都有占有一 定资源; 一旦建立,在程序运行中,不可以删除。
DSP BIOS启动序列
DSP/BIOS启动序列1)初始化DSP:DSP/BIOS程序从入口点c_int00开始运行,复位中断向量指向c_int00地址;2)用.cinit段中的记录来初始化.bss段;3)调用BIOS_init初始化DSP/BIOS模块:BIOS_init执行基本的模块初始化,然后调用MOD_init宏分别初始化每个用到的模块;4)处理.pinit表:.pinit表包含了初始化函数的指针;5)调用应用程序主程序main函数:在所有DSP/BIOS模块初始化之后,调用main 函数。
此时硬件中断和软件中断都是禁止的,应用程序可以在这里添加自己的初始化代码;6)调用BIOS_start启动DSP/BIOS:BIOS_start负责使能DSP/BIOS模块并为每一个用到的模块调用MOD_startup宏使其开始工作;7)执行空闲循环:调用IDL_loop引导程序进入DSP/BIOS空闲循环,此时硬件和软件中断可以抢占空闲循环的执行。
空闲循环控制着和主机的通信,所以此时主机和目标之间的数据传输就可以开始了。
关于DSP/BIOS的几个问题进度还是有些慢哈~1 heap stack的设置问题:堆栈自动生成MEM里不能是MEM_NULL否则会报错js: "./QDMA_bios.tcf", line 16: Heaps are enabled, but the segment for DSP/BIOS Objects (MEM.BIOSOBJSEG) is not set correctly. Please create a heap in one of your data segments and set MEM.BIOSOBJSEG to it."./<stdin>", line 3Correct any script errors in D:/pudn/QDMA_bios/QDMA_bios.tcfusing the Configuration Tool or a text editor, if necessary.TConf initialization arguments:-eenvironment['config.importPath']='/CCStudio_v3.3/bios_5_31_02/package s;C:/CCStudio_v3.3/bios_5_31_02/packages;' -eenvironment['config.scriptName']='QDMA_bios.tcf'2 记得加入的CSL库,RTS使不得,要不然就不能连接接下来整实时。
CCS中DSPBIOS工具的使用(DSP实验报告)
CCS中DSP/BIOS工具的使用一、实验目的目前CCS 已经成为DSP 开发过程中不可缺少的软件工具。
通过前面的实验,我们已经基本掌握了CCS提供的断点、探针、图形显示等调试工具的使用。
在本实验中,我们将学习CCS中的高级管理和调试工具-DSP/BIOS 的使用,并通过实验掌握该工具的使用方法。
二、实验原理1) CCS包含的功能a.集成可视化代码编辑界面,可直接编写C,汇编、.H文件、.cmd 文件等。
b.集成代码生成工具,包括C 编译器。
c.基本调试工具,如装入执行代码(.OUT 文件),寄存器窗口,存储器窗口,反汇编窗口,变量窗口等,支持 C 源代码级调试。
d.支持多DSP 调试。
e.断点工具,包括硬件断点、数据空间读/写断点,条件断点(使用GEL 编写表达式)等等。
f.探针工具(probe points),可用于算法仿真,数据监视等。
g.剖析工具(profile points),可用于评估代码执行的时钟数。
h.数据的图形显示工具,可绘制时域/频域波形,眼图,星座图,图象等,并可自动刷新(使用Animate 命令运行)。
i.提供GEL 工具,令用户可以编写自己的控制面板/菜单,从而方便直观地修改变量,配置参数等。
j.支持RTDX技术,利用该技术可在不中断目标系统运行的情况下,实现DSP 与其他应用程序(OLE)实现数据交换。
k.开放式的plug-ins 技术,支持其它第三方的ActiveX 插件,DSP 目标系统以及仿真器。
l.提供DSP/BIOS 工具,利用该工具可增强对代码的实时分析能力。
如分析代码执行的效率,调度程序执行的优先级,方便管理或使用系统资源(代码/数据占用空间,中断服务程序的调用,定时器使用等等)。
2) 利用CCS 开发DSP 程序流程a.在“project ”菜单项下选“new ” ,开始创立一个新的工程文件。
b.将编写好的C、汇编、H头文件、以及编译完成的OBJ、LIB 文件添加到project 下。
DSP软件及BIOS程序使用说明
第一节 软件安装一、Code Composer Studio (C6000)2.0安装下面以TMS320C6711DSK 开发工具的安装为例说明。
图1-1图1-2图1-3第一步:将开发板所附带的Code Composer Studio(C6000)2.0软件光盘放入光盘驱动器,自动运行出现图1-1所示界面,进入软件安装步骤。
如光盘未自动运行,请进入光盘驱动器,并运行光盘根目录下的SETUP.EXE 程序。
第二步:按图1-2所示依次执行。
第三步:提示将正在运行其他软件关闭,如图1-4所示。
图1-4图1-5图1-6第四步:DSP Starter Kit End-User License ,阅读后请选择YES 按钮继续安装,如图1-4所示。
第五步:点击NEXT 继续进行安装,如图1-5所示。
第六步:建议在此处选择默认选项进行安装,如图1-6所示。
图1-7图1-8图1-9第七步:默认的安装路径为C:\ti ,如果需要可重新设定安装路径。
但是,必须处于硬盘根目录下(比如x:\),如图1-7所示。
第八步:点击next 进行下一步,如图1-8所示。
第九步:将TMS320C6711DSK 开发板与计算机进行硬件连接,加电源后点击确定按钮继续进行安装,如图1-9所示。
图1-10图1-11图1-12第十步:点击确定,如图1-10所示。
第十一步:点击FINISH 完成软件安装,如图1-11所示。
第十二步:如果是第一次安装CCS 软件,会出现要求重新启动计算机的画面,根据提示重新启动计算机,如图1-12所示。
图1-13第十三步:安装完成在桌面生成两个快捷方式图标,此即为CCS 6711 DSK Tools 软件的设置和执行图标,如图1-13所示。
二、DSK驱动程序的设置由于TMS320C6711DSK开发板使用的是并口线与计算机相连接,所以在设置之前要确认计算机的并口模式。
(后面我们将介绍在使用JTAG口仿真器情况下如何进行配置)。
dspbios入门学习经验(精)
在21ic的对头论坛发的,快找不着了也没人会,只好提这来. dsp bios使用的1点心得我是用c55的dsp bios做1个项目,在这之前没用过任何1种rtos,所以对dsp bios也只是用点皮毛。
1.ti的dsp bios可以动态产生任务,使用TSK_create,不过ti的文档说,动态产生的代码,比静态产生的要大至少1倍。
所以,1般都通过ccs的 cdb配置工具来声明1个任务。
按我的理解,基本上所有ccs提供的资源,比如mailbox,que等,都跟task类似,静态代码量远小于动态生成的,所以应该尽量使用cdb。
2。
每个任务都是1个TSK_obj型的数据类型,必须将这个任务跟某个函数对应,这个函数其实内部就是1个死循环,等待消息或信号量执行相应的处理,如果没等到消息,就被bios内核自动挂起。
比如你的这个任务的c函数是void tsk_proc_a(void),那么在cdb的相应位置填上_tsk_proc_a即可(注意前面的下划线)。
3。
消息传递机制我使用了邮箱和信号量。
邮箱做消息队列的主要好处是可以多个任务向1个消息队列发消息驱动同1个任务。
信号量可以用来做任务驱动,也可以用来实现资源的互斥,唯一的区别是初始值是0还是1。
邮箱和信号量都可以在cdb中定义,使用前必须在用户程序声明为extern MBX_obj和 extern QUE_obj。
邮箱在cdb中设置是需要设2个参数,消息宽度,和队列长度。
4。
que是dsp bios提供的1个数据结构,我总觉得不是rtos的组成部分。
使用 que来做缓冲区管理的确很方便,以后在讲。
我不是软件科班出身,对1些常用的数据结构不了解,看来真得恶补1下。
5。
dsp bios得中断管理我认为是这个rtos的1个大缺点(或许我理解有误)。
所有的中断都由dsp bios内核来管理,1有中断则进入调度内核去查询,中断处理程序其实是bios内核调用的1个回调函数。
CCS中DSPBIOS工具的使用
CCS中DSPBIOS工具的使用DSP(Digital Signal Processor)是一种专门用于处理数字信号的处理器。
它通常用于实现音频、视频、通信和图像处理等领域的算法。
而BIOS(Basic Input/Output System)是一种计算机系统中的固化软件,用于控制计算机的启动过程和硬件初始化。
1.安装和配置CCS2.创建新项目在CCS中,可以通过选择“File”-“New”-“CCS Project”来创建一个新项目。
在新项目向导中,需要输入项目名称、选择目标设备以及选择要使用的编程语言(通常为C或C++)。
3.添加DSP库文件和DSP/BIOS组件在创建项目后,需要将DSP库文件和DSP/BIOS组件添加到项目中。
可以通过右键单击项目名称,选择“Properties”-“Build”-“Add Required Prerequisites”来自动添加库文件和组件。
4.配置DSP选项在项目属性中的“Build”选项卡中,可以配置DSP选项,例如选择运行时环境、堆栈设置等。
根据具体应用需求,进行适当的配置。
5.编写代码在CCS中,可以使用C或C++语言编写DSP应用程序。
可以创建新的源文件,并在其中编写相应的代码。
应根据具体需求,调用相应的DSP函数和库函数来实现特定的功能。
6.调试和优化代码CCS提供了强大的调试功能,可以通过在代码中插入断点、单步执行和查看变量的值来调试代码。
同时,还可以使用Performance Analyzer来分析代码的性能和优化瓶颈。
7.使用BIOS工具CCS集成了BIOS工具,可用于配置和管理DSP/BIOS组件。
可以通过选择“Tools”-“Manage Drivers and Configurations”来打开BIOS工具。
在BIOS工具中,可以进行组件的配置、任务管理、调度参数设置等。
总结:。
DSP BIOS
深入DSP/BIOS的API函数- 软件中断管理SWISWI模块管理软件中断服务程序。
这些中断服务程序与HWI硬件中断服务程序有密切关系。
一般情况下,会将日常的大多数处理函数放到这些软件中断服务程序中管理运行。
一、SWI模块概述在DSP/BIOS内核中,系统管理并运行的线程分为四个等级:硬件中断服务程序、软件中断服务程序、任务和后台空闲函数,优先级依次降低。
每个软件中断服务程序都对应一个函数,当然,每个软件中断夜可以单独设置优先级。
高优先级的软件中断会抢占正在执行的低优先级的软件中断(因此可以说DSP/BIOS是一个基于优先级的抢占式实时内核)。
所有软件中断都是通过DSP/BIOS内核的API调用来启动。
一旦启动了一个SWI对象,此时,系统将为该SWI对象中的函数创建一个运行时间表。
因此,当一个软件中断被启动后,其对象函数不一定会立即执行,而是会按照时间表在执行队列中根据优先级排队等候运行。
DSP/BIOS根据软件中断优先级来判断是否要暂停当前运行的线程。
为了便于控制,系统为每个SWI对象都设置有一个16位的邮箱(Mailbox),可以利用邮箱的值有条件的启动这个软件中断。
系统内核会自动维护邮箱的管理。
DSP/BIOS内核提供了SWI_disable和SWI_enable操作来禁止或允许软件中断。
同时还为软件中断设置有15个优先级,最高优先级为SWI_MAXPRI(14),最低优先级为SWI_MINPRI(0),0优先级为KNL_swi对象保留,KNL_swi对象的任务是执行任务调度程序,该对象由内核自动创建,高优先级的软件中断会打断正在运行的低优先级的软件中断。
如果启动的两个软件中断的优先级相同,那么先启动的软件中断会先执行。
中断线程(包括硬件中断和软件中断)都是使用相同的堆栈来执行的。
当中断发生时,新的线程就会添加到栈顶,系统会执行一次任务切换(Context Switch)。
由于高优先级软件中断会打断低优先级的软件中断的运行,所以SWI模块在运行高优先级软件中断前会自动保存寄存器中的内容。
DSPBIOS设计指南详细
类
配置
说明
Basic->Target Version
C64x+(-mv6400+)
选择所使用的DSP芯片类型。
Basic->Generate பைடு நூலகம்ebug Info
Full Symbolic Debug (-g)
Preprocessor->Undefine Symbols(-U)
—
不定义预先设置的宏,可覆盖之前的定义。即如果在Define Symbols选项中定义了的宏,在此处如果又定义一次,则该宏值为“0”。
Preprocessor->Preprocessing
None
Standard C/C++ preprocessing functions.
选择被添加文件的类型,找到相应路径,选中文件后,点击“Open”按钮就可以完成文件的添加操作了。若需要添加多个文件,请重复添加文件操作。
目前工作中几种常用文件类型介绍:
*.asm:DSP汇编源文件
*.c:C语言源文件
*.tcf:DSP/BIOS配置文件(CCS v2.x中是*.cdb文件)
*.cmd:链接命令文件
3)选中被查看的变量名,点击右键,在弹出的菜单栏中选择“Quick Watch”,则会弹出如图29所示对话框,可以看到变量的值。点击“Add To Watch”按钮可以将变量加入到Watch Window窗口。
图29
4)打开Watch Window窗口,按Insert键,在其编辑框中直接键入需要添加的变量名或表达式,如图27。也可以在Watch窗口中点击右键选择“Add Tab”分类显示各种变量。
DSP BIOS使用总结
1 DSP/BIOS 实现实时数据调试和交换摘要:本文介绍了基于TI公司DSP/BIOS实现实时数据调试和交换的方法----数字信号处理技术已成为目前最广泛的应用技术之一,TI公司在不断推出各种新型高速低功耗DSP的基础上,提出了基于DSP的微型实时操作系统BIOS的概念.----DSP所面临的系统越来越复杂,诸如多任务处理,烦琐的硬件设备管理,实时数据处理及传送等等,传统的DSP编程越来越难以胜任.----TI公司推出的BIOS可以支持以上功能,它提供了众多的模块及面向用户的API接口,包括多优先级多任务系统调度,内存管理,硬件DRIVER抽象,以及数字信号处理所独特的实时数据调试及交换的支持.1 .1B IOS中的图形化管理界面----先介绍一下BIOS中的图形化管理界面:DSP/BIOS CONFIGURATION TOOLS。
在CCS 集成开发环境中打开FILE-> NEW -> DSP/BIOS CONFIGURATION,就可以看到DSP/CONFIGURATION TOOLS,在这里用图形化的界面集中管理所有的BIOS模块,包括硬中断,软中断,任务,时钟,管道等,在每个模块下都可以添加新的对象以及编辑它的属性,添加完对象会在工程中自动生成相应的代码,用户程序中只需声明此对象,然后调用它的API函数就可以了。
----下面主要介绍数字信号处理所独特的实时数据调试及交换----在通常的软件调试中如何去观察变量?很简单,我们会单步运行或者设置断点,然后在WATCH窗口中观察变量的值.这种经典的调试方法在数字信号处理中捉荆见拙,因为我们面对的是实时任务,程序的停顿会使我们面对的系统面目全非.DSP/BIOS的解决方案是提供LOG模块,在目标DSP内,LOG对象将要监控的信息实时的捕捉存放在DSP的特定缓冲LOGBUFFER中,在DSP进入空闲的时刻通过JTAG接口传回主机,主机端的CCS集成环境将接受数据并显示在打开的LOG观察窗口中,从而不打断正常的程序运行情况下,获取必要的调试信息。
CCS中DSP、BIOS工具的使用
CCS中DSP、BIOS⼯具的使⽤学号成绩《DSP技术》课程论⽂题⽬CCS中DSP/BIOS⼯具的使⽤作者班级 _ 院别专业 _ 完成时间⽬录⼀、 DSP/BIOS简介 (1)⼆、 DSP/BIOS的组件构成 (1)三、DSP/BIOS的启动顺序 (2)四、DSP/BIOS的配置 (2)五、基础类的DSP/BIOS API调⽤ (15)六、DSP\BIOS的中断、优先级 (22)七、参考⽂献 (23)摘要:DSP/BIOS的静态配置是利⽤CCS提供的配置⼯具完成,包括图形化配置⼯具和⽂本配置⼯具。
图形化⼯具层次清晰,⽐较直观,⽽⽂本⼯具更加灵活。
⼀、 DSP/BIOS简介DSP/BIOS是CCS中集成的⼀个简易的嵌⼊式实时操作系统,能够⼤⼤⽅便⽤户编写多任务应⽤程序。
DSP/BIOS拥有很多实时嵌⼊式操作系统的功能,如任务的调度,任务间的同步和通信,内存管理,实时时钟管理,中断服务管理等。
有了它,⽤户可以编写复杂的多线程程序,并且会占⽤更少的CPU和内存资源。
DSP/BIOS是⼀个可⽤于实时调度、同步,主机和⽬标机通信,以及实时分析系统上的⼀个可裁减实时内核,它提供了抢占式的多任务调度,对硬件的及时反应,实时分析和配置⼯具等。
同时提供标准的API接⼝,易于使⽤。
它是TI的eXpressDSP实时软件技术的的⼀个关键部分。
⼆、 DSP/BIOS的组件构成DSP/BIOS在⼀个主机/⽬标机环境中的组件分布如下所⽰:DSP/BIOS API:编写的程序可以调⽤API接⼝函数;DSP/BIOS配置:创建的配置⽂件定义了程序使⽤的静态BIOS对象;DSP/BIOS分析⼯具:集成在CCS上的⼀些BIOS分析⼯具可以对运⾏与⽬标设备上的程序进⾏监测,包括CPU负载、时间、⽇志、线程执⾏状态等。
DSP/BIOS分为很多模块,提供的所有API函数都按照模块分类,以模块名加下划线开头来命名,如图 40所⽰为DSP/BIOS的全部模块。
嵌入式实时操作系统DSPBIOS使用方法的研究
一、测试策略
1、功能测试
功能测试是RTOS测试的基础,主要测试RTOS的各项功能是否符合设计要求。 对于RTOS的每个功能模块,我们都需要设计相应的测试用例来验证其正确性。
2、性能测试
性能测试主要测试RTOS在各种条件下的响应时间和处理能力。通过模拟各种 负载情况,测试RTOS的实时性、吞吐量、延迟等指标。
2、丰富的中间件:DSPBIOS提供了丰富的中间件,如文件系统、网络协议栈、 图形界面等,方便用户进行二次开发。
3、优异的性能:DSPBIOS具有高度的可靠性和卓越的性能,能够满足各种实 时任务的需求。
4、易于移植:DSPBIOS支持多种硬件平台,易于进行跨平台移植。
二、DSPBIOS基本原理
2、其高度可定制性、丰富的中间件支持以及优异性能等特点,使得DSPBIOS 成为许多嵌入式应用的理想选择。
参考内容
随着科技的飞速发展,嵌入式系统在各种领域的应用越来越广泛,其中,实 时操作系统(RTOS)是嵌入式系统中最常用的软件平台之一。RTOS在实时性、可 靠性和稳定性方面有着严格的要求,因此,对其进行准确的测试显得尤为重要。 本次演示对嵌入式实时操作系统的测试方法进行深入研究,旨在提高测试效率和 测试准确度。
4、易于移植性:DSPBIOS支持多种硬件平台,易于进行跨平台移植,使得系 统具有更好的适应性和可维护性。
五、总结
本次演示对嵌入式实时操作系统DSPBIOS的用途、基本原理以及使用方法进 行了深入探讨,并通过案例分析研究了其在实时系统开发中的应用效果和优势。 我们可以得出以下结论:
1、DSPBIOS作为一款常见的RTOS,在嵌入式实时系统开发中具有广泛的应用 前景。
2、集成测试
集成测试是对RTOS的各个模块进行联合测试,以验证各个模块之间的接口是 否正确。通常通过仿真平台来模拟RTOS的实际运行环境,通过编写测试脚本对 RTOS进行测试。
个人对DSPBOOT启动流程的一点观点
个人对DSP BOOT启动流程的一点观点1、系统复位2、复位完成,跳转复位中断,开始执行复位中断指向的地址,该地址是DSP内部原厂固化初始BOOT代码,无法修改。
3、初始BOOT代码检査BOOTMODE相关的I/O输入电平,从而得知DSP BOOTLOAD方式, 比如SPI, I2C, EMIF, l;HPI等。
并初始化相应的接口,并从该接口读取BOOTLOAD程序代码到DSP的程序空间,完成读取后,程序指针跳转到BOOTLOAD程序代码起始位置。
DSP内部是没有ROM來存放代码的,所以必须使用外部扩展的ROM,现在常用的是NOR FLASH(EEPROM也有用,但因为EEPROM容量太小,无法存放所有的程序代码,所以现在已经很少在嵌入式平台使用)4、开始执行BOOTLOAD程序,因为初始BOOT并不会初始化和BOOTHODE无关的设备,所以读取的BOOTLOAD程序代码一般都很小,这个取决T DSP的内部SRAM空间大小。
而用户程序一般都很少有这么小的。
当然小规模的代码如果够小,DSP 本身的SARM就足够的话,完全可以不用另外编写BOOTLOAD程序,直接让初始BOOT程序读入SRAM中执行即可。
如果用户程序代码规模超过SARM的程序空间大小,就必须使用BOOTLOAD程序进行二次BOOTo在BOOTLOAD程序里要做的事情有2点,1是初始化外部扩展RAM空间的接口,比如SDRAM, DDR控制器EMIF等,然后从外部FLASH空间读取程序代码到外部扩展RAM空间。
2是初始化各种外设。
现在也有很多二次BOOT是通过以太网接口來获取用户程序代码,恢入式领域的无盘工作站就是这类应用。
现在的BOOTLOAD功能己经越來越丰富。
5、完成二次BOOT后,程序指针跳转到用户程序代码的起始地址,开始执行。
以上就是我理解的DSP启动流程,因为各种DSP千变万化,所以在这里就抽象的说下DSP的启动过程,不涉及跳转地址等具体参数了。