一DSPBIOS的组件.ppt

上传人:sccc 文档编号:5482531 上传时间:2023-07-11 格式:PPT 页数:63 大小:226.04KB
返回 下载 相关 举报
一DSPBIOS的组件.ppt_第1页
第1页 / 共63页
一DSPBIOS的组件.ppt_第2页
第2页 / 共63页
一DSPBIOS的组件.ppt_第3页
第3页 / 共63页
一DSPBIOS的组件.ppt_第4页
第4页 / 共63页
一DSPBIOS的组件.ppt_第5页
第5页 / 共63页
点击查看更多>>
资源描述

《一DSPBIOS的组件.ppt》由会员分享,可在线阅读,更多相关《一DSPBIOS的组件.ppt(63页珍藏版)》请在三一办公上搜索。

1、一、DSP/BIOS的组件,1、DPS/BIOS实时库和API 运用DSP/BIOS的一个基本概念是我们的运行程序是一个多线程的情况,我们通过API(运用程序接口)函数来管理这些线程。我们可以把DSP/BIOS API分为许多模块,不同的线程属于不同的模块。这些模块包括:TMS320C54x DSP/BIOS Users Guide Page 15,DPS/BIOS实时库和API,API管理进程的具体方法是通过API函数,这些函数功能非常多,如:建立和删除对象,变换线程优先级等;函数的详细说明:TMS320C54x DSP/BIOS Application Programming Interf

2、ace(API)Reference Guide Page 13,2、DSP/BIOS配置工具,DSP/BIOS配置工具,API函数不是直接对线程进行管理,而是通过对不同模块中建立的对象管理来实现对线程的管理,这些对象相当于线程的文件头或函数名。不同模块中对象的建立有两种方法,一是通过在源文件中使用API函数调用,可以动态产生,动态删除;一是通过DSP/BIOS配置工具产生,是静态产生,不可删除。,DSP/BIOS配置工具,DSP/BIOS配置工具产生对象的优点:他是图形化的编辑工具,使用更加方便;他可以对对象进行各种参数设置;他可以建立各种对象,而API函数只能建立部分对象。,DSP/BIOS

3、配置工具,DSP/BIOS配置工具产生对象的缺点:一旦建立,不论程序中是否使用,都有占有一定资源;一旦建立,在程序运行中,不可以删除。,3、DSP/BIOS插件,完成对运行程序的实时分析,时刻监视CPU的负荷,各个线程的执行情况,各段代码的花费时间等等;DSP通过JTAG口返回到PC数据,这些数据反映我们需要的情况。这些数据的产生是在CPU的空闲状态时产生的,所以,不会对DSP本身的运行产生影响。,DSP/BIOS插件,Program tracing:Displaying events written to target logs,reflecting dynamic control flow

4、 during program execution。Performance monitoring:Tracking summary statistics that reflect use of target resources,such as processor load and timingFile streaming:Binding target-resident I/O objects to host files。,4、各部分关系,TMS320C54x DSP/BIOS Users Guide Page 14,二、DSP/BIOS的特点,1、DSP/BIOS的目的 DSP/BIOS an

5、d its plug-ins for Code Composer Studio are designed to minimize memory and CPU requirements on the target.,2、实现方法,All DSP/BIOS objects can be created in the Configuration Tool and bound into an executable program image.This reduces code size and optimizes internal data structures.Instrumentation da

6、ta(such as logs and traces)is formatted on the host.,实现方法,The API is modularized so that only the parts of the API that are used by the program need to be bound into the executable program.The library is optimized to require the smallest possible number of instruction cycles,with a significant porti

7、on imple-mented in assembly language.,实现方法,Communication between the target and the DSP/BIOS plug-ins is performed within the background idle loop.This ensures that the DSP/BIOS plug-ins do not interfere with the programs tasks.If the target CPU is too busy to perform background tasks,the DSP/BIOS p

8、lug-ins stop receiving infor-mation from the target until the CPU is available.,3、API特点,A program can dynamically create and delete objects that are used in special situations.The same program can use both objects created dynamically and objects created with the Configuration Tool.Low-level system p

9、rimitives are provided to make it easier to handle errors,create common data structures,and manage memory usage.,API特点,The threading model provides thread types for a variety of situations.Hard-ware interrupts,software interrupts,tasks,idle functions,and periodic functions are all supported.You can

10、control the priorities and blocking characteristics of threads through your choice of thread types.,API特点,Structures to support communication and synchronization between threads are provided.These include semaphores,mailboxes,and resource locks.Two I/O models are supported for maximum flexibility an

11、d power.Pipes are used for target/host communication and to support simple cases in which one thread writes to the pipe and another reads from the pipe.Streams are used for more complex I/O and to support device drivers.,三、程序生成,1、DSP/BIOS开发流程 1)Write a framework for your program.You can use C or ass

12、embly code.2)Use the Configuration Tool to create objects for your program to use.3)Save the configuration file,which generates files to be included when you compile and link your program.,DSP/BIOS开发流程,4)Compile and link the program using a makefile or a Code Composer project.5)Test program behavior

13、 using a simulator or initial hardware and the DSP/BIOS plug-ins.You can monitor logs and traces,statistics objects,timing,software interrupts,and more.,DSP/BIOS开发流程,6)Repeat steps 2-5 until the program runs correctly.You can add functionality and make changes to the basic program structure.7)When p

14、roduction hardware is ready,modify the configuration file to support the production board and test your program on the board.,2、配置工具使用,Creating a New ConfigurationSetting Global Properties for a ModuleCreating an Object Using the Config-uration ToolFiles Generated by the Configuration Tool:program.c

15、db programcfg.h54 programcfg.s54 programcfg.cmd,3、编译和链接,手工添加文件program.cdb(the configuration file)和programcfg.cmd(the linker command file);programcfg.s54自动添加;库文件rst.lib不需要;C源文件中要加上各种API头文件;其他源文件同一般的CCS使用一样;,四、线程的基本概念,1、什么是线程 实时的DSP应用,往往需要把许多看似不相干的功能同时实现。不同的功能通过不同的指令流实现,而我们把这些指令流叫线程。同一个处理器实现多线程的方法是给线程

16、加上优先级。优先级高的线程首先执行。,2、线程的种类,Hardware interrupts(HWI):includes CLK functionsSoftware interrupts(SWI):includes PRD functionsTasks(TSK)Background thread(IDL),硬件中断,Triggered in response to external asynchronous events that occur in the DSP environment.An HWI function(also called an interrupt service rout

17、ine or ISR)is executed after a hardware interrupt is triggered in order to perform a critical task that is subject to a hard deadline.,硬件中断,HWI functions are the threads with the highest priority in a DSP/BIOS application.HWIs should be used for application tasks that may need to run at frequencies

18、approaching 200 kHz,and that need to be completed within deadlines of 2 to 100 microseconds.,软件中断,Software interrupts are triggered by calling SWI functions from the program.Software interrupts provide additional priority levels between hardware interrupts and the background thread.SWIs handle tasks

19、 subject to time constraints that preclude them from being run from the idle loop,but whose deadlines are not as severe as those of hardware ISRs.,软件中断,Like HWIs,SWIs threads always run to completion.Software interrupts should be used to schedule events with deadlines of 100 microseconds or more.SWI

20、s allow HWIs to defer less critical processing to a lower-priority thread,minimizing the time the CPU spends inside an ISR,where other HWIs may be disabled.,TASK,Tasks have higher priority than the back-ground thread and lower priority than software interrupts.Tasks differ from software interrupts i

21、n that they can be suspended during execution until necessary resources are available.DSP/BIOS provides a number of structures that can be use for inter-task communication and synchronization.These structures include queues,semaphores,and mailboxes.,背景线程,Executes the idle loop(IDL)at the lowest prio

22、rity in a DSP/BIOS application.After main returns,a DSP/BIOS application calls the startup routine for each DSP/BIOS module and then falls into the idle loop.The idle loop is a continuous loop that calls all functions for the IDL objects.,背景线程,Each function must wait for all others to finish executi

23、ng before it is called again.The idle loop runs continuously except when it is preempted by higher-priority threads.Only functions that do not have hard deadlines should be executed in the idle loop.,时钟函数,Triggered at the rate of the on-chip timer interrupt.By default,these functions are triggered b

24、y the HWI_TINT hardware interrupt and are performed as HWI functions.,周期函数,Performed based on a multiple of either the on-chip timer interrupt or some other occurrence.Periodic functions are a special type of software interrupt.,Data notification functions,Performed when you use pipes(PIP)or host ch

25、annels(HST)to transfer data.The functions are triggered when a frame of data is read or written to notify the writer or reader.These functions are performed as part of the context of the function that called PIP_alloc,PIP_get,PIP_free,or PIP_put.,3、性能比较,SWI or TSK vs.HWI:Perform only critical proces

26、sing within hardware interrupt service routines.HWIs can run at frequencies approaching 200kHz.Use software interrupts or tasks for events with deadlines around 100 microseconds or more.Your HWI functions should post software interrupts or tasks to perform lower-priority processing.,SWI vs.TSK,Use s

27、oftware interrupts if functions have relatively simple interdependencies and data sharing requirements.Use tasks if the requirements are more complex.While higher-priority threads can preempt lower priority threads,only tasks can be suspended to wait for another event,such as resource availability.T

28、asks also have more options than SWIs when using shared data.,SWI vs.TSK,All input needed by a software interrupts function should be ready when the program posts the SWI.The SWI objects mailbox structure provides a way to determine when resources are available.SWIs are more memory efficient because

29、 they all run from a single stack.,IDL,Create background functions to perform noncritical housekeeping tasks when no other processing is necessary.IDL functions do not typically have hard deadlines;instead they run whenever the system has unused processor time.,CLK,Use CLK functions when you want a

30、function to be triggered directly by a timer interrupt.These functions run as HWI functions and should take minimal processing time.The default CLK object,PRD_clock,causes a tick for the periodic functions.You can add additional CLK objects to run at the same rate.However,you should minimize the tim

31、e required to perform all CLK functions because they run as HWI functions.,PRD,Use PRD functions when you want a function to run at a rate based on a multiple of the on-chip timers low-resolution rate or another event(such as an external interrupt).These functions run as SWI functions.,PRD vs.SWI,Al

32、l PRD functions run at the same SWI priority,so one PRD function cannot preempt another.However,PRD functions can post lower-priority software interrupts for lengthy proce-ssing routines.This ensures that the PRD_swi software interrupt can preempt those routines when the next system tick occurs and

33、PRD_swi is posted again,4、性能比较图,TMS320C54x DSP/BIOS Users Guide Page 46,5、优先级,硬件中断最高,一个线程可以被挤占(preempt,中途被中断),但是不能被阻塞(block,暂停等待);软件中断较高,又有14个等级,可以被挤占,但是不能阻塞;TASK较低,有15个等级,可以挤占和阻塞;IDL最低,循环执行一定线程。,6、线程的保护和挤占,线程的保护和挤占,五、硬件中断使用方法,1、中断矢量表 我们在DSP/BIOS的运用中,可以不必去建立中断矢量表。我们只需要在模块MEM中,对VECT的对象进行设置,这个设置是向DSP提

34、供中断矢量表的地址。我们再通过HWI模块,对需要使用的硬件中断进行中断服务程序的设置就可以了。,2、硬件中断的屏蔽,我们没有办法在DSP/BIOS的配置工具中对那个中断进行屏蔽;我们可以在程序中通过对寄存器的值的控制来完成对中断的屏蔽;我们也可以在程序中,调用API函数完成对硬件中断的控制,如函数:HWI_enable HWI_restore HWI_enable,六、软件中断使用方法,1、软件中断的建立软件中断实际就是把一个已经建立的函数作为一个中断程序,这个中断程序的执行由软件触发;软件中的建立可以通过配置工具,进行静态的建立;软件中断的建立,也可以利用API函数动态的建立。swi=SWI

35、_create(attrs),2、软件中断的优先级,优先级在建立软中断的时候就确定了;如果是使用配置工具,在软件中断的对象属性中设置;如果是使用动态API函数建立,则在建立的时候,可以使用参数来确定他的属性。,3、软件中断的邮箱,邮箱是一个32bit的寄存器,我们可以在配置工具中,建立软件中断对象的时候设置他的初始值;在程序中,我们使用下面的API函数来控制一个软件中断的邮箱,从而控制软件中断的执行:SWI_andn SWI_dec SWI_inc SWI_or SWI_post,4、邮箱函数,邮箱的API函数在程序中使用,用来控制邮箱值的变换,从而控制软件中断的执行;SWI_post直接调用

36、软件中断,不改变邮箱值;SWI_inc邮箱值加1,同时调用软件中断;SWI_or其所带参数同邮箱值相比特或,同时调用软件中断;SWI_dec邮箱值减1,如果减1后为0,调用软件中断;SWI_andn其所带参数同邮箱值相比特与,相与后邮箱值为0,调用软件中断;,邮箱函数,七、TASK使用方法,1、建立方法他的建立方法,含义同软件中断是相同的;同软件中断相比,优先级低;同软件中断相比,可以被悬挂;,2、任务的特点,同软件中断相比,每个TASK使用自己的堆栈,大小分别设置,而所以软件中断使用自己的堆栈。原因是每个TASK被挤占的可能性非常大,每次被挤占时,都需要保护现场。,3、TASK工作状态,ru

37、nning,which means the task is the one actually executing on the systems processor;ready,which means the task is scheduled for execution subject to processor availa-bility;blocked,which means the task cannot exe-cute until a particular event occurs within the system;When a task is blocked,it is often

38、 because the task is pending on a semaphore which is unavailable.terminated,which means the task is“termi-nated”and does not execute again.,4、状态间的转换和函数,5、TASK同旗语、邮箱,TASK间的通信通过旗语和邮箱;旗语和邮箱在配置工具中都可以建立;旗语的意思;邮箱的意思;,八、CLK使用方法,1、定时器中断周期配置 我们可以利用DSP/BIOS提供的CLK模块,方便地建立定时器中断。中断产生的周期在CLK的通用属性中配置。配置有两种,一是high

39、resolution time,一种实directly configure timer register,2、high resolution time,我们在配置工具的CLK模块的通用属性中,选中high resolution time,同时,microseconds/int属性中地数值就是中断产生地周期,单位是微妙。,3、directly configure timer register,我们不选择high resolution time,则定时器地计数频率为CLKOUT/(TDDR+1),计数个数为PRD Register,4、中断服务程序,中断产生的是硬件中断,我们可以添加一个CLK对象来定义入口地址,而不是在中断矢量表中定义入口地址。中断矢量表的入口地址为CLK_F_isr,这个函数是系统自带的,他会跳转到各个CLK的对象定义的中断服务程序。用户无需定义中断矢量表。,九、周期函数使用方法,周期函数是一个软件中断,优先级没有定时器中断高;只要选择了PRD模块通用属性中的Use CLK Manager Drive PRD,他的执行就通过对产生多少个定时器中断来计数。CLK模块中的对象PRD_clock定义的函数就是统计CLK中断的次数,从而传递给PRD模块。通过建立PRD模块的对象我们建立PRD函数。,十、插件使用,插件在实验中讲解,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 建筑/施工/环境 > 农业报告


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号