版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、(8)voidSWI_or(SWI_Obj* swi,Uns mask)mask屏蔽字参数基础类的DSP/BIOS API调用基础类的DSP/BIOS API调用一、时钟管理CLK(1)Uns ncounts = CLK_countspms(void)返回每毫秒的定时器高分辨率时钟的计数值(2)LgUns currtime = CLK_gethtime(void)返回高分辨率时钟的计数值 超过32bit归零高分辨率时钟是DSP时钟除以(TDDR+1)(3)LgUns currtime = CLK_getltime(void)返回低分辨率时钟的计数值 超过32bit归零高分辨率时钟是DSP时钟除
2、以(TDDR+1)再除以(PRD+1)(4)Uns period= CLK_getprd(void)返回CLK管理器周期寄存器的值sp;基础类的DSPBIOS API调二、周期函数PRD(1)LgUns num = PRD_getticks(void)返回32位周期函数管理计数值(2)void PRD_start(PRD_Obj* period)启动PRD模块计数器,一般地,mode=one-shot(3)void PRD_stop(PRD_Obj* period)关闭PRD模块计数器(4)void PRD_tick(void)对周期模块的计数器加1,以便周期模块管理器确定哪个周期性函数得以运
3、行三、软件中断管理SWI(1)void SWI_andn(SWI_Obj* swi, Uns mask) mask屏蔽字参数将邮箱值与mask做与运算,并用结果代替以前的邮箱值,若为0,启动软件中断,恢复邮箱初始值(2)void SWI_andn(SWI_Obj* swi)将邮箱值减1,并用结果代替以前的邮箱值,若为0,启动软件中断,恢复邮箱初始值(3)void SWI_disable(Void)禁止软件中断(4)void SWI_enable(Void)使能软件中断(5)Uns num = SWI_getmbox(void)返回当前SWI对象在被执行的邮箱值,若中断已经开始执行,DSP/BI
4、OS会先保存此值(6)Uns key = SWI_getpri(SWI_Obj * swi)返回指定的SWI对象的优先级(7)void SWI_inc(SWI_Obj * swi)将指定的SWI对象的邮箱值加1,同时启动软件中断,就算用户调用多次,最终执行一次。将启动指定的软件中断,并将此软件中断的邮箱值与mask做与运算,并用结果代替以前的邮箱值,等到中断完成之后,邮箱值恢复为初始值,一般地,调用SWI_getmbox获得触发此软件中断的邮箱值(9)void SWI_post(SWI_Handle swi)启动指定的SWI对象的软件中断,此函数不受邮箱值的影响,也不影响邮箱值。一般地,周期性
5、低启动一个软件中断,将_SWI_post填入PRD对象的函数设置栏,启动软件中断的参数写入(10)Uns key = SWI_raisepri(Uns mask)提高SWI软件中断的优先级,一般地sp;基础类的DSPBIOS API调key = SWI_raisepri(SWI_getpri(&swi_1);-access shared resouces-SWI_restorepri(key)(11)void SWI_restorepri(Uns key)恢复原来的优先级(12)SWI_Obj * swi = SWI_self(void)当前执行的SWI对象的软件中断的地址四、信息输出
6、管理LOG(1)void LOG_disable(LOG_Obj * log)关闭指定对向的日志功能(2)void LOG_enable(LOG_Obj * log)开启指定对向的日志功能(3)void LOG_error(String format, Arg arg0)void LOG_message(String format, Arg arg0)前一个函数可以将一个事件、数据或出错信息按照指定的格式串写入系统日志,不受TRC跟踪管理模块的影响 后一个函数类似于前一个函数,但是受到TRC跟踪管理模块的影响(4)void LOG_event(LOG_Obj * log, Arg arg0,
7、Arg arg1, Arg arg2)将未格式化的事件消息写入日志中(5)void LOG_printf(LOG_Obj * log, String format, int arg0, int arg1)指定的LOG窗口显示消息%d %x %o %s(6)void LOG_reset(LOG_Obj * log)复位日志缓冲区五、存储器管理MEM(1)void * addr = MEM_alloc(int segid,Uns size,Uns align)指定存储段分配连续块,返回起始地址segid =存储段的标识符或者ID号size块大小 等于多少个字align边界条件 只为0或2的幂 若a
8、lign为0、1则无约束(2)void * addr = MEM_calloc(segid, size, align)arg0分配内存并初始化为0(3)int segid = MEM_define(Ptr base, Uns length,MEM_Attrs* attrs)sp;基础类的DSPBIOS API调定义一个新的存储段。返回值为存储段的ID标号attr参数为NULL,会按照默认参数进行配置,段的参数由结构体type MEM_Attrs规定此函数仅在main函数中使用base:新段的基地址length:段长度attrs:段属性(4)bool status = MEM_free(segi
9、d,addr,size)释放申请的动态内存 不能在SWI和HWI中调用 调用之前,用LCK中API查看内存块的锁定情况sp;基础类的DSPBIOS API调(5)void MEM_redefine(segid,base,length)重新定义一个存储段,只能在main中调用(6)bool status = MEM_stat(int segid, MEM_Stat * statbuf)segid存储段标识符statbuf状态缓存区指针struct mem_statsp;基础类的DSPBIOS API调Uns size;/存储段大小Uns used;/已经使用的数量Uns length;/最大连续
10、存储块长度同理:若segid有效,则MEM_stat返回TRUE不能在SWI和HWI中使用,应判断锁定情况(7)void * addr = MEM_valloc(int segid, Uns size, Uns align, char value)先申请内存,初始化为指定的值value六、C6000专用模块C64xsp;基础类的DSPBIOS API调(1)Uns oldmask = C64_diableIER(Uns mask)关闭相应的中断 返回值实际屏蔽的中断(2)void C64_enableIER(Uns oldmask)开放相应的中断Uns oldmask;oldmask = C6
11、4_disableIER(0 x1); / disable INT0 C64_enableIER(oldmask);/ enable INT0(3)void C64_plug(int vecid, Fxn fxn, int dmachan)插入一个中断向量int vecid:中断序号Fxn fxn:中断服务程序的函数指针int dmachan:插入操作使用的DMA通道将ISFP写到中断服务表IST中。若IST在外部RAM,则CPU复制代替DMA,此时DMA为-1IST在片内RAM时,使用DMA方式,是0,1,2,3用户保证在函数调用时该DMA通道有效七、统计模块STS(1)void STS_a
12、dd(STS_Obj * sts, LgInt value)使用我们提供的数据更新STS统计对象的Total,Count,Max等参数传入一个32位参数,Count加1,Total累加传递的32位参数,MAX记录传递参数的最大值(2)void STS_delta(STA_Obj * sts, LgInt value)每个对象都包含有初始值,该初始值由配置文件指定或者由STS_set函数设置STS_delta先计算当前传递参数与先前初始值只差,然后调用STS_add更新统计累加值一般和STS_set一起用eg:STS_set(&sts,CLK_gethtime();STS_delta(&
13、amp;sts,CLK_gethtime();(3)void STS_reset(STS_Obj * sts)复位统计对象中的累加值。Count和Total设置为0.MAX成为最大的负值。(4)void STS_set(STS_Obj * sts, LgInt value)监视或统计程序的执行时间八、统计类模块TRC(1)void TSK_checkstacks(TSK_Handle oldtask,TSK_Handle newtask)在后台IDL循环之前运行。而动态创建的任务处于Ready状态。函数参数最多不超过8个。任务对象函数fxn返回时,自动调用TSK_exit函数。解析:TSK_A
14、ttrs * attrs任务参数指针(1)TRC_LOGCLK日志记录定时器中断(2)TRC_LOGPRD日志记录周期时隙和周期函数的开始(3)TRC_LOGSWI日志记录软件中断的启动和完成(4)TRC_LOGTSK日志记录任务处于准备好、开始、停止、继续执行、终止等事件(5)TRC_STSHWI收集关于HWI统计数(6)TRC_STSPIP写管道和读管道帧进行计数(7)TRC_STSPRD执行期间CLK时隙个数的统计数据(8)TRC_STSSWI SWI执行时间的统计数据(9)TRC_STSTSK TSK执行时间的统计数据 从TSK准备好到调用TSK deltatime都要收集(10)TR
15、C_USER0 AND TRC_USER1和TRC_query一起用 执行和忽略结果的设备调用(11)TRC_GBLHOST执行所有的隐藏仪器功能,此比特位能够开始或停止收集所有开启的跟踪类型(12)TRC_GBLTARG执行所有的隐藏仪器功能,此比特位只能被目标程序设置九、任务管理TSK任务管理模块无论是新任务还是老任务,如果堆栈的最后位置上都没有RG_STACKSTAMP标识,那么TSK_checkstacks就会报错SYS_abort,出现这种情况可能是由于上一个任务堆栈溢出或无效的存储占用了新任务的堆栈sp;基础类的DSPBIOS API调一般地,用TSK_checkstacks(TS
16、K_self(),TSK_self()来检查堆栈定义Switch函数,这样在任务切换时自动调用堆栈检查函数:void myswitchfxn(TSK_Handle oldtask, TSK_Handle newtask)TSK_checkstacks(oldtask,newtask);(2)TSK_Handle task = TSK_create(Fxn fxn, TSK_Attrs * attr, Arg arg,.)创建一个调用函数fxn的任务对象,返回新对象的句柄,失败返回NULL调用此函数是动态创建,而在配置工具中创建是静态创建,二者效果一样。sp;基础类的DSPBIOS API调静态
17、创建的任务对象, 创建函数将在BIOS_start函数中自动调用BIOS_start函数在main函数之后,struct TSK_Attrsint priority;Ptr stack;Uns stacksize;#ifdef _64_ / imitate C55 series. to checkUns sysstacksize;#endifUns stackseg;Ptr environ;String name;bool exitflag;(3)void TSK_delete(TSK_Handle task)从所有内部队列里面删除这个任务,并且调用MEM_free释放任务对象和堆栈。 只能删
18、除处于结束状态的任务,也可调用删除的钩子函数。void myDeleteFxn(TSK_Handle task);(4)void TSK_deltatime(TSK_Handle task)累计从任务准备好到执行此函数时候的时间差 如果未调用此函数,那么就算打开任务统计累加器选项,统计对象也不会更新 一般地,统计时先用TSK_settime函数记录起始点,此函数记录终点。(5)void TSK_settime(TSK_Handle task)设定统计初始值void task()-do some startup work-TSK_settime(TSK_self);for(;)SIO_get(.
19、);-process dataTSK_deltatime(TSK_self);假如流式IO没有准备好,那么该API函数会阻塞(Blocked),任务切换,一段时间后,流式IO数据 准备好了,此时发出READY信号,将本任务置为ready状态,此时TSK_settime会重新记录时间。(6)void TSK_disable(void)全局关闭内核调度机制,Busy-Shutting-Down状态。只有当前任务可行,其余所有任务禁止。 此函数不会禁止中断,所以在中断开始前需要调用此函数保证中断发生时不会发生任务切换。可以嵌套,但是调用几次TSK_disable,就得相应调用几次TSK_enable
20、sp;基础类的DSPBIOS API调(7)void TSK_enable(void)全局开启内核调度机制(8)void TSK_exit(void)终止当前任务运行。如果所有任务都被终止,则DSP/BIOS会调用SYS_exit终止程序。无论什么时候,任务从顶层函数返回时,都是自动调用此函数。可以注册一个退出辅助函数void myExitFxn(void)这样,在任务被设置为TSK_TERMINATED模式之前,会调用这个辅助函数。(9)Ptr environ = TSK_getenv(TSK_Handle task)返回任务环境指针, 这个指针指向一个该任务可以访问的全局属性的结构。若程序
21、定义多个钩子对象, 那么HOOK_getenv函数可以获取设置的环境指针。(10)void TSK_setenv(TSK_Handle task, Ptr environ)设置指定任务的环境指针。若程序定义多个钩子对象,那么HOOK_setenv函数可以为每个钩子和任务对象的组合体设置独立的环境指针。(11)int errno = TSK_geterr(TSK_Handle task)每个任务对象都有一个包含任务错误号的存储单元。初始值为SYS_OK(12)void TSK_seterr(TSK_Handle task, int errno)改变错误号(13)String name = TSK
22、_getname(TSK_Handle task)返回任务的名字。对于静态对象来说,必须打开Allocate Task Name on Target对于动态对象来说,TSK_getname返回字段(14)int priority = TSK_getpri(TSK_Handle task)返回优先级(15)int oldpri = TSK_setpri(TSK_Handle task, int newpri)设置优先级设置优先级对于TSK_BLOCKED状态任务只是优先级改变,而不会改变状态;对于TSK_READY状态的任务而言,可能会改变运行状态。(16)STS_Handl
23、e sts = TSK_getsts(TSK_Handle task)获得统计对象句柄,以便查看数据(17)void TSK_sleep(Uns nticks)sp;基础类的DSPBIOS API调暂停任务的时钟个数,此时钟数可能比真实的暂停时钟少一个时钟(告警时钟)(18)void TSK_itick(void)对告警时钟加1,以便让TSK_sleep或者SEM_pend函数暂停执行的任务恢复到ready。sp;基础类的 一些暂停的任务可能会随着告警时钟的增加而超时,从而就绪。(19)void TSK_tick(void)对告警时钟加1,以便让TSK_sleep或者SEM_pend函数暂停执
24、行的任务恢复到ready。 一些暂停的任务可能会随着告警时钟的增加而超时,从而就绪。可以在中断服务程序和当前任务中调用,后者在控制超时非常有用。(20)Uns currtime = TSK_time(void)返回系统告警时钟的当前值。(由于延迟,只能得到一个大概的系统时钟)(21)TSK_Handle currtask = TSK_self(void)返回当前任务对象的句柄(22)void TSK_stat(TSK_Handle task,TSK_Stat * statbuf)DSPBIOS API调返回任务的属性参数和状态信息struct TSK_StatTSK_Attrs attrs;/任务参数TSK_Mode mode; /任务执行模式Ptr sp;/任务当前堆栈指针Uns used; /任务堆栈曾经使用的最大值注意:任务比HWI和SWI中断优先级要低,所以当任务被中断时,还是返回TSK_RUNNING,因为中断完成后任务继续运行。(23)void TSK_yield(void)强制任务切换,请注意,任务可以被中断,但是
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 湿地修复工程监测与数据分析2025版合同2篇
- 二零二五版物流仓储设施建设与运营合同2篇
- 二零二五年度节能工厂租赁合同编制要则3篇
- 二零二五版旅游度假区基础设施建设项目包工合同范本2篇
- 二零二五年度飞机销售合同附带飞行员培训及考核协议3篇
- 二零二五年度公寓装修及设施配套合同3篇
- 二零二五版出口货物安全检验合同规定与流程3篇
- 二零二五年度汽车租赁合同解除与终止范本汇编3篇
- 二零二五版汽车维修担保书之担保函与担保合同3篇
- 二零二五版别墅窗帘设计、安装及智能家居集成合同3篇
- 第三十六届全国电力行业风力发电运行检修职业技能竞赛基础理论题库附有答案
- 2024年纪检监察综合业务知识题库含答案(研优卷)
- 科室医疗质量与安全管理小组工作制度
- 中华民族共同体概论课件第五讲大一统与中华民族共同体初步形成(秦汉时期)
- 初二生地会考试卷及答案-文档
- 私营企业廉洁培训课件
- 施工单位值班人员安全交底和要求
- 中国保险用户需求趋势洞察报告
- 数字化转型指南 星展银行如何成为“全球最佳银行”
- 中餐烹饪技法大全
- 灵芝孢子油减毒作用课件
评论
0/150
提交评论