《CCS中DSPBIOS工具的使用》由会员分享,可在线阅读,更多相关《CCS中DSPBIOS工具的使用(31页珍藏版)》请在金锄头文库上搜索。
1、评语学号 成绩 DSP技术课程论文 题目 CCS中DSP/BIOS工具的使用 作 者 班 级 _ 院 别 专 业 _ 完毕时间 目录一、 DSP/BIOS简介1二、 DSP/BIOS的组件构成1三、DSP/BIOS的启动顺序 2四、DSP/BIOS的配备 2五、基本类的DSP/BIOS API调用15六、DSPBIOS的中断、优先级 22七、参照文献 23摘要:DSP/BIOS的静态配备是运用CCS提供的配备工具完毕,涉及图形化配备工具和文本配备工具。图形化工具层次清晰,比较直观,而文本工具更加灵活。一、 DSP/BIOS简介DSP/BIOS是CCS中集成的一种简易的嵌入式实时操作系统,可以大
2、大以便顾客编写多任务应用程序。DSP/BIOS拥有诸多实时嵌入式操作系统的功能,如任务的调度,任务间的同步和通信,内存管理,实时时钟管理,中断服务管理等。有了它,顾客可以编写复杂的多线程程序,并且会占用更少的CPU和内存资源。DSP/BIOS是一种可用于实时调度、同步,主机和目的机通信,以及实时分析系统上的一种可裁减实时内核,它提供了抢占式的多任务调度,对硬件的及时反映,实时分析和配备工具等。同步提供原则的API接口,易于使用。它是TI的eXpressDSP实时软件技术的的一种核心部分。二、 DSP/BIOS的组件构成DSP/BIOS在一种主机/目的机环境中的组件分布如下所示: DSP/BIO
3、S API:编写的程序可以调用API接口函数; DSP/BIOS配备:创立的配备文献定义了程序使用的静态BIOS对象; DSP/BIOS分析工具:集成在CCS上的某些BIOS分析工具可以对运营与目的设备上的程序进行监测,涉及CPU负载、时间、日记、线程执行状态等。DSP/BIOS分为诸多模块,提供的所有API函数都按照模块分类,以模块名加下划线开头来命名,如图40所示为DSP/BIOS的所有模块。图40三、DSP/BIOS的启动顺序当DSP/BIOS的应用程序启动时,一般遵循下面的环节:(一) 初始化DSP:DSP/BIOS程序从C/C+环境入口c_int00开始运营。对于C6000平台,在c
4、_int00开始处,系统栈指针(B15)和全局页指针(B14)被分别设立在堆栈断的末尾和.bss断的开始。控制寄存器AMR、IER、CSR等被初始化;(二) 初始化.bss段:当堆栈被设立完毕后,初始化任务被调用,运用.cinit的记录对.bss断的变量进行初始化;(三) 调用BIOS_init初始化用到的各个模块:BIOS_init调用MOD_init对配备用到的各个模块进行初始化,涉及HWI_init、HST_init、IDL_init等;(四) 解决.pinit表:.pinit表涉及某些指向初始化函数的指针,对C+程序,全局对象类的创立也在此时完毕;(五) 调用顾客程序的main函数:顾
5、客main函数可以是C/C+函数或者汇编语言函数,对于汇编函数,使用_main的函数名。由于此时的硬件、软件中断还没有被使能,因此在顾客主函数的初始化中需要注意,可以使能单独的中断屏蔽位,但是不能调用类似HWI_enable的接口来使能全局中断;(六) 调用BIOS_start启动DSP/BIOS:BIOS_start在顾客main函数退出后被调用,它负责使能使用的各个模块并调用MOD_startup启动每个模块。涉及CLK_startup、PIP_startup、SWI_startup、HWI_startup等。当TSK管理模块在配备中被使用时,TSK_startup被执行,并且BIOS_s
6、tart将不会结束返回;(七)执行idle循环:有两种方式进入idle循环。当TSK管理模块使能时,任务调度器运营的TSK_idle任务调用IDL_loop在其他任务空闲时进入idle循环;当TSK模块未被使用时,BIOS_start调用将返回,并执行IDL_loop进入永久的idle循环,此时硬件和软件中断可以抢占idle循环得到执行。由于idle循环中管理和主机的通信,因此主机和目的机之间的数据交互可以进行了。四、DSP/BIOS的配备DSP/BIOS的静态配备是运用CCS提供的配备工具完毕,涉及图形化配备工具和文本配备工具。图形化工具层次清晰,比较直观,而文本工具更加灵活。一般使用图形化
7、的配备措施,下面对重要的模块配备做某些简介。(一) Global Setting Properties右键点击“Global Settings”,点击“Whats This”,会弹出协助窗口,该文献中有Global Setting Properties的各项设立阐明。下面简介的其她如MEM、LOG等配备都可以用同样的措施得到相应的协助。选择弹出菜单中的“Properties”,如图41所示。图41弹出如图42所示对话框:图42一般选择默认设立即可,CLKOUT项需要根据DSP硬件单板提供的工作时钟设立,Himalaya一般运营在1GHz频率。DSP Endian Mode项根据实际状况设立。(
8、二) MEM设立MEM模块设立中可以根据具体状况设立不同的内存段,其中存在一种默认的IRAM片内内存段。需要注意的是,一方面必须在IRAM段上设立一种heap段落,用于BIOS的内部使用。设立措施是在IRAM段上右键选择“Properties”,弹出如图43对话框,必须设立红线框中的选项,heap size可根据状况具体设立。图43接下来配备MEM全局属性,右键点击配备窗口中的“MEM”,如图44所示:图44点击“Properties”,弹出如图45所示窗口:图45如图红线框中,两个heap段都要选择为IRAM,“Stack Size”项需要根据实际状况设立最大的栈大小,其她使用缺省设立即可。
9、在图44的菜单中,点击“Insert MEM”可创立新的内存段。在新的内存段名上右键选择“Properties”弹出如图43窗口,根据状况设立base(基地址)、len(段长度)、heap size(用于MEM动态内存分派的堆大小)。(三) LOG设立LOG用于输出和记录某些打印信息,默认存在一种LOG_system对象,是系统内部用来解决打印信息的,不需要去设立。可以增长新的LOG对象,用来在应用程序中输出打印信息。如图46,在LOG标签上右键选择“Insert LOG”,填写对象名LOG_test即建立了一种新的LOG对象。图46在LOG_test标签上右键选择“Properties”,弹
10、出如图47窗口,可对此LOG对象属性作某些设立。具体设立含义可通过Help查看。图47(四)CLK设立在CLK属性中一般选择定期器Timer0作为DSP/BIOS的基准时钟,计时分辩率设立为每秒1000次中断,在1GHz系统时钟下,近似为每次定期中断间隔999.996微秒。Timer Mode选择为32bit unchained模式,虽然用TCI6482的TMR0的TIMLO作为Timer0,而TIMHI还可以作其他用途使用。CLK属性配备界面如图48所示:图48(五) HWI设立HWI(硬中断)中涉及HWI_INT4到HWI_INT15可用来定义顾客自己的硬件中断,HWI_RESET、HWI
11、_NMI和HWI_RESERVED不要去改动。如图49,每个硬HWI的优先级从上到下逐渐减少。图49选择HWI_INT10为例,来设立EMAC/MDIO的中断,需要填写中断事件号17,并且填写中断服务程序名(C函数前面需要加下划线)如图50所示:图50在Dispatcher页面,选择“Use Dispatcher”由BIOS代理控制中断的确认和清除,不需要顾客中断服务程序干预,比较简便。如图51:图51(六) SWI设立SWI(软中断)的优先级在HWI之后,但是比TSK高,可以通过右键菜单中的“Insert SWI”创立一种SWI对象,可以指定SWI内部优先级,从0(最低)到14(最高)。如图
12、52:图52(七) TSK设立在TSK Manager(任务管理器)中可以根据需要创立多种任务,任务间是根据优先级抢占方略来进行调度的,TSK提供有多种优先级别,涉及-1(Suspend)、0(Idle)、1(最低)到15(最高)。如图53:图53在TSK Manager上右键选择“Insert TSK”并填写任务名称后就可以创立一种任务,在相应任务上右键选择“Properties”可对任务属性进行设立,如图54:图54Stack Size(最大堆栈大小)和Priority(优先级)需要根据任务的具体状况进行设立。在页面,填写任务实体函数名(C函数前面加一种下划线),如图55:图55(八) S
13、ynchronization设立DSP/BIOS中任务间的通信和同步可由SEM、MBX、QUE、LCK四个模块完毕: SEM(信号量):用于任务同步和互斥,有计数功能,根据需要使用; MBX(邮箱):也用于任务同步,可以传递少量数据,根据需要使用; QUE(队列):可实现任务同步和资源的共享,根据需要使用; LCK(资源锁):实现对共享资源的互斥,根据需要使用。四种同步模块对象都可以通过各自的右键菜单中“Insert ”来创立,并可对其属性作相应的设立。如图56所示:图56(九) Input/Output设立这里可以设立某些输入/输出有关的高档设立,具体可通过CCS的协助项来理解。一般不需要进
14、行设立。只有RTDX(实时数据互换),需要根据目的环境的状况对数据互换模式进行一下选择,用来在调试中主机和目的机进行数据互换。可以是仿真器环境的JTAG模式,或者是模拟器环境的Simulator模式。如图57所示:五、基本类的DSP/BIOS API调用(一)时钟管理CLK1.Uns ncounts = CLK_countspms(void)返回每毫秒的定期器高辨别率时钟的计数值2.LgUns currtime = CLK_gethtime(void)返回高辨别率时钟的计数值 超过32bit归零高辨别率时钟是DSP时钟除以(TDDR+1)3.LgUns currtime = CLK_getltime(void)返回低辨别率时钟的计数值 超过32bit归零