打印

DSP/BIOS内核的应用程序运行原理

[复制链接]
454|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
Sode|  楼主 | 2017-8-13 10:48 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
DSP/BIOS内核的应用程序运行原理

DSP/BIOS内核的应用程序中,优先级从低到高有四个线程:
后台线程(IDL)线程;
TSK(任务)线程;
SWI线程(软件中断);
HWI线程(硬件中断);
应用程序从默认进入点_c_int00开始运行,首先完成系统的初始化,包括DSP/BIOS配置中指定的各个寄存器的设置以及PLL倍频时钟的设置等,然后调用main()函数,在main()函数结束返回,调用BIOS_start(),开始按优先级检测并执行HWI,SWI,TSK,当前面所有线程都没有执行时(没有HWI和SWI,有的任务已经完成,而有的被挂起),开始进入IDL_F_LOOP循环,执行后台的IDL线程(LOG模块的信息显示就是在IDL线程中完成的,CPU负荷图的数据也是这时读取并送到PC主机,以便完成图形绘制等)。在IDL_F_LOOP中,若有HWI,则立即暂停IDL,切换到硬件中断服务子程序。当硬件ISR完成后,根据具体情况判定有无SWI或唤醒任务,最后才回到IDL继续运行。
注意,DSP/BIOS内核仍然是个多任务的内核,但并不是一个严格意义上的抢先式内核。除了HWI,其他所有线程都必须自己自动放弃对CPU的控制,以便完成切换。当然,当硬件中断发生后,也会产生线程的切换,这时所有线程都将按优先级重新安排运行,所以从这点讲,DSP/BIOS内核也具有抢先的特点。
在DSP/BIOS内核应用中,用户可以将自己的处理代码(如G723的编码、解码,MP3 解压等)放到硬件中断,软件中断,任务或后台线程中的任何一个线程中调用运行。一般推荐在SWI和TSK中调用。用户可以在DSP/BIOS的配置文件中简单说明这些软件中断或任务(即所谓的静态说明),也可以在运行过程中通过DSP/BIOS内核提供的API函数调用动态创建。
API函数调用几乎都可以使用C或C++语言直接调用。通过这些API,用户可以完成硬件中断的管理,软件中断的启动,任务的切换,各线程之间的同步和数据通信等。



相关帖子

发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1049

主题

1522

帖子

8

粉丝