轻松学会.pptx
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 轻松 学会
- 资源描述:
-
DSP/BIOS的功能的功能wDSP/BIOS是CCS提供的一套工具,用于支持系统实时分析。它本身仅占用极少的CPU资源。w使用线程来管理程序,如硬件中断服务子使用线程来管理程序,如硬件中断服务子程序,软件中断服务子程序,周期函数,程序,软件中断服务子程序,周期函数,idleidle函数等。函数等。w提供多种分析工具,评估代码。如图形化提供多种分析工具,评估代码。如图形化显示各个线程占用的显示各个线程占用的CPUCPU时间等。时间等。w可以修改各个线程的优先级。可以修改各个线程的优先级。一、一、DSP/BIOS的组件的组件1、DPS/BIOS实时库和实时库和API 运用运用DSP/BIOS的一个基本概念是我的一个基本概念是我们的运行程序是一个多线程的情况,我们们的运行程序是一个多线程的情况,我们通过通过API(运用程序接口)函数来管理这运用程序接口)函数来管理这些线程。些线程。我们可以把我们可以把DSP/BIOS API分为许多分为许多模块,不同的线程属于不同的模块。这些模块,不同的线程属于不同的模块。这些模块包括:模块包括:DSP/BIOS提供的提供的API 模块模块wCLK模块:用于片上的定时器管理,设置定时器中断的间隔时间。wHST模块:用于实现主机与目标系统间数据的输入或输出。wHWI模块:用于硬件中断管理,可设置相应的中断服务子程序。wIDL模块:用于管理idle函数,该类函数具有最低优先级。wLOG模块:用于事件的记录显示。例如,你可以通过该API输出调试信息。wMEM模块:用于定义目标系统的内存使用。系统根据此信息自动产生.cmd文件。wPIP模块:用于管道管理,可以实现线程间的数据交换。wPRD模块:用于实现周期性的函数。该类函数的执行频率可以由CLK模块或自己调用PRD_tick决定。wRTDX模块:用于主机与DSP目标系统间的实时数据传递。wSTS模块:用于状态统计管理,你可以在CCS下查看这些统计参数。wSWI模块:用于管理软件中断。CCS将运行队列中的软件中断,并可以设置15个优先级,但都比硬件中断低。wAPI管理进程的具体方法是通过管理进程的具体方法是通过API函数,函数,这些函数功能非常多,如:建立和删除这些函数功能非常多,如:建立和删除对象,变换线程优先级等;对象,变换线程优先级等;w函数的详细说明:函数的详细说明:2、DSP/BIOS配置工具配置工具wAPI函数不是直接对线程进行管理,而是函数不是直接对线程进行管理,而是通过不同模块中建立的对象来实现的,这通过不同模块中建立的对象来实现的,这些对象同各个线程直接连结。些对象同各个线程直接连结。w不同模块中对象的建立有两种方法,一是不同模块中对象的建立有两种方法,一是通过在源文件中使用通过在源文件中使用API函数调用,可以函数调用,可以动态产生,动态删除;一是通过动态产生,动态删除;一是通过DSP/BIOS配置工具产生,是静态产生,配置工具产生,是静态产生,不可删除。不可删除。DSP/BIOS配置工具产生对象的优点:配置工具产生对象的优点:w图形化的编辑工具,使用更加方便;图形化的编辑工具,使用更加方便;w可以对对象进行各种参数设置;可以对对象进行各种参数设置;w可以建立各种对象,而可以建立各种对象,而API函数只能建立部分对函数只能建立部分对象。象。w部分模块的部分模块的API被执行程序调用和绑定被执行程序调用和绑定.w优化的优化的DSP/BIOS的连接库的连接库,可以达到汇编语言可以达到汇编语言的执行效率的执行效率.w目标板与插件之间的通信是通过后台目标板与插件之间的通信是通过后台IDLE线程线程循环完成循环完成,而而IDLE线程实在线程实在DSP资源可用的情况资源可用的情况才执行才执行,保证了程序的执行效率保证了程序的执行效率.w提供了具有不同优先级的线程提供了具有不同优先级的线程,依次是硬件中依次是硬件中断、软件中断、任务、断、软件中断、任务、IDELIDEL空闲函数,以及周空闲函数,以及周期函数,且其优先级可配置。期函数,且其优先级可配置。w线程之间可通过旗语、邮箱等工具进行通信。线程之间可通过旗语、邮箱等工具进行通信。DSP/BIOS配置工具产生对象的缺点:配置工具产生对象的缺点:w一旦建立,不论程序中是否使用,都有占有一一旦建立,不论程序中是否使用,都有占有一定资源;定资源;w一旦建立,在程序运行中,不可以删除。一旦建立,在程序运行中,不可以删除。3、DSP/BIOS插件插件w完成对运行程序的实时分析,时刻监视完成对运行程序的实时分析,时刻监视CPU的负荷,各个线程的执行情况,各段的负荷,各个线程的执行情况,各段代码的花费时间等等;代码的花费时间等等;wDSP通过通过JTAG口返回到口返回到PC数据,这些数据数据,这些数据反映我们需要的情况。这些数据的产生是反映我们需要的情况。这些数据的产生是在在CPU的空闲状态时产生的,所以,不会的空闲状态时产生的,所以,不会对对DSP本身的运行产生影响。本身的运行产生影响。wProgram tracing:Displaying events written to target logs,reflecting dynamic control flow during program execution。wPerformance monitoring:Tracking summary statistics that reflect use of target resources,such as processor load and timingwFile streaming:Binding target-resident I/O objects to host files。二、用二、用DSP/BIOS创建应用程序创建应用程序w在Project 菜单中选“New”新建或“Open”打开一个工程文件。w将需要的.h、.asm、.c、.obj、.lib添加到该工程文件中。w将DSP/BIOS的配置文件.cdb添加到工程文件文件中。注意:注意:LNK使用的使用的.cmd文件由文件由DSP/BIOS配配置文件自动产生置文件自动产生。w在工程文件窗口下用鼠标左键双击配置文件将其打开。w展开LOG选项,并用鼠标右键单击,在弹出菜单中选择“Insert LOG”项。w修改新增LOG0对象的名称,如trace。w使用鼠标右键单击,并在弹出菜单中选择“Property”,修改其参数,如将buflen改为512。w增加包含的头文件,如std.h,log.hw增加变量说明。这些变量由配置工具创立的,如 extern LOG_OBJ trace。w增加LOG API函数,如LOG_printf(&trace,“volume.n”);该函数可以在DSP/BIOS提供的事件记录窗口显示信息。w设置相应的编译、连接开关,使用“Bulid All”生成.out文件。注意:注意:Linker选项中的输出文件名应该与工程选项中的输出文件名应该与工程文件包含的文件包含的DOS/BIOS配置文件一致。配置文件一致。w使用“File”菜单将生成的OUT文件装入目标系统。w选择“Debug”菜单中的“Go Main”运行程序到main()函数。w选择“Tools”菜单下的“DSP/BIOS”选项,然后选“Message Log”。w用鼠标右键单击出现的Message Log窗口,在弹出菜单中选“Property Page”。w在“name”选项中选择“trace”,使得该窗口显示送到 trace 对象的信息。(使用LOG_printf(&trace,“volume”)语句)w使用F5运行程序,观察该窗口输出。注意事项:注意事项:w配置文件有配置文件有 program.cdb programcfg.h54 programcfg.s54 programcfg.cmdw手工添加文件手工添加文件program.cdb 和和programcfg.cmdwprogramcfg.s54自动添加;自动添加;w库文件库文件rst.lib不需要;不需要;wC源文件中要加上各种源文件中要加上各种API头文件;头文件;w其他源文件同一般的其他源文件同一般的CCS使用一样;使用一样;三、线程的基本概念三、线程的基本概念1、什么是线程、什么是线程 实时的实时的DSP应用,往往需要把许多看似不应用,往往需要把许多看似不相干的功能同时实现。不同的功能通过不同相干的功能同时实现。不同的功能通过不同的指令流实现,而我们把这些指令流叫线程。的指令流实现,而我们把这些指令流叫线程。同一个处理器实现多线程的方法是给线同一个处理器实现多线程的方法是给线程加上优先级。优先级高的线程首先执行。程加上优先级。优先级高的线程首先执行。2、线程的种类、线程的种类w硬件中断硬件中断 Hardware interrupts(HWI):includes CLK functionsw软件中断软件中断 Software interrupts(SWI):includes PRD functionsw任务任务 Tasks(TSK)w背景线程背景线程 Background thread(IDL)硬件中断硬件中断w硬件中断函数与外部中断信号一一对应硬件中断函数与外部中断信号一一对应;w一旦中断信号或事件发生一旦中断信号或事件发生,硬件中断函数硬件中断函数(也称也称中断服务程序中断服务程序)就执行就执行.w在在DSP/BIOSDSP/BIOS应用函数中应用函数中,中断函数是优先级最中断函数是优先级最高的线程高的线程.w硬件中断函数执行时间应限定在硬件中断函数执行时间应限定在2 2到到100ms100ms内内,频率在频率在200KHz200KHz左右左右.软件中断软件中断w软件中断是通过调用在程序软件中断是通过调用在程序SWISWI函数而被触发函数而被触发的的.w软件中断的优先级出于硬件中断与后台线程之软件中断的优先级出于硬件中断与后台线程之间间.wSWIsSWIs执行时间较硬件中断函数可宽一些执行时间较硬件中断函数可宽一些,可在可在100ms100ms或更长一些或更长一些.任务任务Taskw其优先级较软中断低其优先级较软中断低,但高于后台线程但高于后台线程.w任务不同于软中断任务不同于软中断:软中断一旦执行就必须完软中断一旦执行就必须完成成,而任务却可挂起而任务却可挂起,直到要求的资源满足后直到要求的资源满足后才重新执行才重新执行.wDSP/BIOSDSP/BIOS提供了诸如队列、旗语,邮箱等方提供了诸如队列、旗语,邮箱等方式用于任务见通信。式用于任务见通信。背景线程背景线程w在在DSP/BIOSDSP/BIOS程序中执行优先级最低的空闲循环程序中执行优先级最低的空闲循环(Idle Loop(IDL)(Idle Loop(IDL)。w在在mainmain函数返回后,函数返回后,DSP/BIOSDSP/BIOS为每个模块调用为每个模块调用启动线程,然后便进入空闲循环。启动线程,然后便进入空闲循环。w空闲循环持续不断地运行,当优先级更高的线空闲循环持续不断地运行,当优先级更高的线程启动后才中止。程启动后才中止。w只有没有运行时间限制的功能可设置为背景线只有没有运行时间限制的功能可设置为背景线程。程。时钟函数时钟函数w被片上时钟中断源所触发,执行频率为中断被片上时钟中断源所触发,执行频率为中断频率。频率。w时钟函数是时钟函数是HWI_TINT 硬件中断。硬件中断。周期函数周期函数w执行周期是片上时钟中断或其它事件周期执行周期是片上时钟中断或其它事件周期的整数倍。的整数倍。w周期函数是一典型的软件中断。周期函数是一典型的软件中断。3、优先级、优先级w硬件中断最高,一个线程可硬件中断最高,一个线程可以被挤占(以被挤占(preempt,中途中途被中断),但是不能被阻塞被中断),但是不能被阻塞(block,暂停等待);暂停等待);w软件中断较高,又有软件中断较高,又有14个等个等级,可以被挤占,但是不能级,可以被挤占,但是不能阻塞;阻塞;wTASK较低,有较低,有15个等级,个等级,可以挤占和阻塞;可以挤占和阻塞;wIDL最低,循环执行一定线最低,循环执行一定线程。程。4 4、线线程程的的保保护护和和挤挤占占四、硬件中断使用方法四、硬件中断使用方法1、中断矢量表、中断矢量表 在在DSP/BIOS的运用中,可以不必去建立的运用中,可以不必去建立中断矢量表,只需要在模块中断矢量表,只需要在模块MEM中,对中,对VECT的对象进行设置,这个设置是向的对象进行设置,这个设置是向DSP提供中断矢量表的地址。提供中断矢量表的地址。再通过再通过HWI模块,对需要使用的硬件中断模块,对需要使用的硬件中断进行中断服务程序的设置就可以了进行中断服务程序的设置就可以了。2、硬件中断的屏蔽、硬件中断的屏蔽w在在DSP/BIOSDSP/BIOS的配置工具中不能对那个中断进的配置工具中不能对那个中断进行屏蔽;行屏蔽;w但可在程序中通过对寄存器的值的控制来完但可在程序中通过对寄存器的值的控制来完成对中断的屏蔽;成对中断的屏蔽;w在程序中,调用在程序中,调用APIAPI函数完成对硬件中断的控函数完成对硬件中断的控制,如函数:制,如函数:HWI_enable HWI_restore HWI_enable HWI_restore HWI_disableHWI_disable五、软件中断使用方法五、软件中断使用方法1、软件中断的建立软件中断的建立w软件中断实际就是把一个已经软件中断实际就是把一个已经建立的函数作为一个中断程序,建立的函数作为一个中断程序,这个中断程序的执行由软件触这个中断程序的执行由软件触发;发;w软件中的建立可以通过配置工软件中的建立可以通过配置工具,进行静态的建立;具,进行静态的建立;w软件中断的建立,也可以利用软件中断的建立,也可以利用API函数动态的建立。函数动态的建立。swi=SWI_create(attrs)2、软件中断的优先级、软件中断的优先级w优先级在建立软中断的时候就确定了;优先级在建立软中断的时候就确定了;w如果是使用配置工具,在软件中断的对象属如果是使用配置工具,在软件中断的对象属性中设置;性中设置;w如果是使用动态如果是使用动态API函数建立,则在建立的函数建立,则在建立的时候,可以使用参数来确定他的属性时候,可以使用参数来确定他的属性。3、软件中断的邮箱、软件中断的邮箱w邮箱是一个邮箱是一个32bit的寄存器,可在配置工具中,的寄存器,可在配置工具中,建立软件中断对象的时候设置其初始值;建立软件中断对象的时候设置其初始值;w在程序中,使用下面的在程序中,使用下面的API函数来控制一个函数来控制一个软件中断的邮箱,从而控制软件中断的执行:软件中断的邮箱,从而控制软件中断的执行:SWI_andn SWI_dec SWI_inc SWI_or SWI_post4、邮箱函数、邮箱函数w邮箱的邮箱的API函数在程序中使用,用来控制邮函数在程序中使用,用来控制邮箱值的变换,从而控制软件中断的执行;箱值的变换,从而控制软件中断的执行;wSWI_post直接调用软件中断,不改变邮箱值;直接调用软件中断,不改变邮箱值;wSWI_inc邮箱值加邮箱值加1,同时调用软件中断;,同时调用软件中断;wSWI_or其所带参数同邮箱值相比特或,同时其所带参数同邮箱值相比特或,同时调用软件中断;调用软件中断;wSWI_dec邮箱值减邮箱值减1,如果减,如果减1后为后为0,调用,调用软件中断;软件中断;wSWI_andn其所带参数同邮箱值相比特与,其所带参数同邮箱值相比特与,相与后邮箱值为相与后邮箱值为0,调用软件中断;,调用软件中断;六、六、TASK使用方法使用方法1、建立方法、建立方法w其建立方法,含义同软件中断是相同的;其建立方法,含义同软件中断是相同的;w同软件中断相比,优先级低;同软件中断相比,优先级低;w同软件中断相比,可以被悬挂;同软件中断相比,可以被悬挂;2、任务的特点、任务的特点w同软件中断相比,每个同软件中断相比,每个TASK使用自己的堆使用自己的堆栈,大小分别设置,而所以软件中断使用相栈,大小分别设置,而所以软件中断使用相同的堆栈。同的堆栈。w原因是每个原因是每个TASK被挤占的可能性非常大,被挤占的可能性非常大,每次被挤占时,都需要保护现场。每次被挤占时,都需要保护现场。3、TASK工作状态工作状态w running,which means the task is the one actually executing on the systems processor;w ready,which means the task is scheduled for execution subject to processor availa-bility;w blocked,which means the task cannot exe-cute until a particular event occurs within the system;When a task is blocked,it is often because the task is pending on a semaphore which is unavailable.wterminated,which means the task is“termi-nated”and does not execute again.4、状态间的转换和函数、状态间的转换和函数5、TASK间通信间通信w线程一般通过软件中断(线程一般通过软件中断(SWISWI模块)来实现。模块)来实现。w利用利用TSK_yieldTSK_yield函数实现同等优先级的任务之函数实现同等优先级的任务之间的切换。间的切换。wTASK间的通信通过旗语间的通信通过旗语(Semphore)和邮箱和邮箱(MailBox);w旗语和邮箱在配置工具中都可以建立;旗语和邮箱在配置工具中都可以建立;实现TSK_yield()函数的例子w打开工程文件tsktest.mak,创立三个同优先级的任务:task0,task1,task2。实现TSK_yield()函数的例子Void main()Void task(Int id)Int i;for(i=0;i NLOOPS;i+)LOG_printf(&trace,Loop%d:Task%d Working,i,id);TSK_yield();LOG_printf(&trace,Task%d DONE,id);哪个结果是正确的?利用旗语完成任务间的同步w旗语可以完成任务之间的通讯,还可以同步同优先级的任务的执行。w当一个任务等待旗语时,其它任务可以执行。w参见semtest.mak,来说明旗语的使用。w共创建五个任务:initTsk,reader0,writer0,writer1,writer2。利用旗语同步任务w任务initTsk:动态建立两个队列(QUE 对象)。该任务优先级最高,最先被执行。w任务reader0:循环等待旗语,然后输出队列信息。w任务writer0,writer1,writer2:处理队列信息,然后发送旗语。利用旗语同步任务任务reader0代码Void reader()Msg msg;Int i;for(i=0;i val,msg-id);QUE_put(&freeQueue,msg);/*free msg*/LOG_printf(&trace,reader done.);任务writer0,1,2代码Void writer(Int id)Msg msg;Int i;for(i=0;i id=id;/*fill in value*/msg-val=(i&0 xf)+a;LOG_printf(&trace,(%d)writing%c.,id,msg-val);QUE_put(&msgQueue,msg);/*enqueue message*/SEM_post(&sem);/*post semaphore*/LOG_printf(&trace,writer(%d)done.,id);利用邮箱在任务间交换信息利用邮箱在任务间交换信息Mbxtest.mak为例子:任务reader0代码Void reader(Void)MsgObj msg;Int i;for(i=0;i+)/*wait for mailbox to be posted by writer()*/if(MBX_pend(&mbx,&msg,TIMEOUT)=0)LOG_printf(&trace,timeout expired for MBX_pend();break;/*print value*/LOG_printf(&trace,read%c from(%d).,msg.val,msg.id);LOG_printf(&trace,reader done.);任务writer0,1,2代码Void writer(Int id)MsgObj msg;Int i;for(i=0;i NUMMSGS;i+)/*fill in value*/msg.id=id;msg.val=i%NUMMSGS+(Int)(a);/*enqueue message*/MBX_post(&mbx,&msg,TIMEOUT);LOG_printf(&trace,(%d)writing%c.,id,(Int)msg.val);LOG_printf(&trace,writer(%d)done.,id);七、七、CLK使用方法使用方法1 1、定时器中断周期配置、定时器中断周期配置 可利用可利用DSP/BIOSDSP/BIOS提供的提供的CLKCLK模块,方便模块,方便地建立定时器中断。中断产生的周期在地建立定时器中断。中断产生的周期在CLKCLK的通用属性中配置。的通用属性中配置。配置有两种,一是配置有两种,一是high resolution high resolution timetime,一种实一种实directly configure timer directly configure timer registerregister2、high resolution time 在配置工具的在配置工具的CLK模块的通用属模块的通用属性中,选中性中,选中high resolution time,同同时,时,microseconds/int属性中地数值就属性中地数值就是中断产生地周期,单位是微秒。是中断产生地周期,单位是微秒。3、directly configure timer register 不选择不选择high resolution time,则定时则定时器的计数频率为器的计数频率为CLKOUT/(TDDR+1),计计数个数为数个数为PRD Register4、中断服务程序、中断服务程序w中断产生的是硬件中断,可以添加一个中断产生的是硬件中断,可以添加一个CLK对象来定义入口地址,而不是在中断对象来定义入口地址,而不是在中断矢量表中定义入口地址。矢量表中定义入口地址。w中断矢量表的入口地址为中断矢量表的入口地址为CLK_F_isr,这这个函数是系统自带的,它会跳转到各个个函数是系统自带的,它会跳转到各个CLK的对象定义的中断服务程序。用户无的对象定义的中断服务程序。用户无需定义中断矢量表。需定义中断矢量表。八、周期函数使用方法八、周期函数使用方法w周期函数是一个软件中断,优先级没有定时周期函数是一个软件中断,优先级没有定时器中断高;器中断高;w只要选择了只要选择了PRDPRD模块通用属性中的模块通用属性中的Use CLK Use CLK Manager Drive PRDManager Drive PRD,它的执行就通过对产它的执行就通过对产生多少个定时器中断来计数。生多少个定时器中断来计数。wCLKCLK模块中的对象模块中的对象PRD_ClockPRD_Clock定义的函数就是定义的函数就是统计统计CLKCLK中断的次数,从而传递给中断的次数,从而传递给PRDPRD模块。模块。w通过建立通过建立PRDPRD模块的对象我们建立模块的对象我们建立PRDPRD函数。函数。展开阅读全文
咨信网温馨提示:1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前可先查看【教您几个在下载文档中可以更好的避免被坑】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时联系平台进行协调解决,联系【微信客服】、【QQ客服】,若有其他问题请点击或扫码反馈【服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【版权申诉】”,意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:0574-28810668;投诉电话:18658249818。




轻松学会.pptx



实名认证













自信AI助手
















微信客服
客服QQ
发送邮件
意见反馈



链接地址:https://www.zixin.com.cn/doc/4604196.html