打开APP
未登录
开通VIP,畅享免费电子书等14项超值服
开通VIP
首页
好书
留言交流
下载APP
联系客服
DSP/BIOS入门-TI DSP 论坛论坛 - 21ic电子技术论坛
文心雕龙_01
>《待分类》
2015.09.29
关注
1
DSP/BIOS
简介
DSP/BIOS
是
CCS
中集成的一个简易的嵌入式实时操作系统,能够大大方便用户编写多任务应用程序。
DSP/BIOS
拥有很多实时嵌入式操作系统的功能,如任务的调度,任务间的同步和通信,内存管理,实时时钟管理,中断服务管理等。有了它,用户可以编写复杂的多线程程序,并且会占用更少的
CPU
和内存资源。
DSP/BIOS
是一个可用于实时调度、同步,主机和目标机通信,以及实时分析系统上的一个可裁减实时内核,它提供了抢占式的多任务调度,对硬件的及时反应,实时分析和配置工具等。同时提供标准的
API
接口,易于使用。它是
TI
的
eXpressDSP
实时软件技术的的一个关键部分。
1.1
DSP/BIOS
的组件构成
DSP/BIOS API
:编写的程序可以调用
API
接口函数;
DSP/BIOS
配置:创建的配置文件定义了程序使用的静态
BIOS
对象;
DSP/BIOS
分析工具:集成在
CCS
上的一些
BIOS
分析工具可以对运行与目标设备上的程序进行监测,包括
CPU
负载、时间、日志、线程执行状态等。
DSP/BIOS
分为很多模块,提供的所有
API
函数都按照模块分类,以模块名加下划线开头来命名,如
图
40
所示为
DSP/BIOS
的全部模块。
图
40
1.2
DSP/BIOS
的启动顺序
当
DSP/BIOS
的应用程序启动时,一般遵循下面的步骤:
1)
初始化
DSP
:
DSP/BIOS
程序从
C/C++
环境入口
c_int00
开始运行。对于
C6000
平台,在
c_int00
开始处,系统栈指针(
B15
)和全局页指针(
B14
)被分别设置在堆栈断的末尾和
.bss
断的开始。控制寄存器
AMR
、
IER
、
CSR
等被初始化;
2)
初始化
.bss
段:当堆栈被设置完成后,初始化任务被调用,利用
.cinit
的记录对
.bss
断的变量进行初始化;
3)
调用
BIOS_init
初始化用到的各个模块:
BIOS_init
调用
MOD_init
对配置用到的各个模块进行初始化,包括
HWI_init
、
HST_init
、
IDL_init
等;
4)
处理
.pinit
表:
.pinit
表包含一些指向初始化函数的指针,对
C++
程序,全局对象类的创建也在此时完成;
5)
调用用户程序的
main
函数:用户
main
函数可以是
C/C++
函数或者汇编语言函数,对于汇编函数,使用
_main
的函数名。由于此时的硬件、软件中断还没有被使能,所以在用户主函数的初始化中需要注意,可以使能单独的中断屏蔽位,但是不能调用类似
HWI_enable
的接口来使能全局中断;
6)
调用
BIOS_start
启动
DSP/BIOS
:
BIOS_start
在用户
main
函数退出后被调用,它负责使能使用的各个模块并调用
MOD_startup
启动每个模块。包括
CLK_startup
、
PIP_startup
、
SWI_startup
、
HWI_startup
等。当
TSK
管理模块在配置中被使用时,
TSK_startup
被执行,并且
BIOS_start
将不会结束返回;
7)
执行
idle
循环:有两种方式进入
idle
循环。当
TSK
管理模块使能时,任务调度器运行的
TSK_idle
任务调用
IDL_loop
在其它任务空闲时进入
idle
循环;当
TSK
模块未被使用时,
BIOS_start
调用将返回,并执行
IDL_loop
进入永久的
idle
循环,此时硬件和软件中断可以抢占
idle
循环得到执行。由于
idle
循环中管理和主机的通信,因此主机和目标机之间的数据交互可以进行了。
1.3
DSP/BIOS
的配置
DSP/BIOS
的静态配置是利用
CCS
提供的配置工具完成,包括图形化配置工具和文本配置工具。图形化工具层次清晰,比较直观,而文本工具更加灵活。通常使用图形化的配置方法,下面对主要的模块配置做一些介绍。
1.3.1
Global Setting Properties
右键点击“Global Settings”,点击“What’s This”,会弹出帮助窗口,该文件中有Global Setting Properties的各项设置说明。下面介绍的其他如MEM、LOG等配置都可以用同样的方法得到相应的帮助。
选择弹出菜单中的“Properties”,如图 41所示。
图
41
弹出如图 42所示对话框:
图
42
一般选择默认设置即可,CLKOUT项需要根据DSP硬件单板提供的工作时钟设置,Himalaya通常运行在1GHz频率。
DSP Endian Mode
项根据实际情况设置。
1.3.2
MEM
设置
MEM
模块设置中可以根据具体情况设置不同的内存段,其中存在一个默认的IRAM片内内存段。需要注意的是,首先必须在IRAM段上设置一个heap段落,用于BIOS的内部使用。设置方法是在IRAM段上右键选择“Properties”,弹出如图 43对话框,必须设置红线框中的选项,heap size可根据情况具体设置。
图
43
接下来配置MEM全局属性,右键点击配置窗口中的“MEM…”,如图 44所示:
图
44
点击“Properties”,弹出如图 45所示窗口:
图
45
如图红线框中,两个heap段都要选择为IRAM,“Stack Size”项需要根据实际情况设置最大的栈大小,其他使用缺省设置即可。
在图 44的菜单中,点击“Insert MEM”可创建新的内存段。在新的内存段名上右键选择“Properties”弹出如图 43窗口,根据情况设置base(基地址)、len(段长度)、heap size(用于MEM动态内存分配的堆大小)。
LOG
用于输出和记录一些打印信息,默认存在一个
LOG_system
对象,是系统内部用来处理打印信息的,不需要去设置。可以增加新的
LOG
对象,用来在应用程序中输出打印信息。如
图
46
,在
LOG
标签上右键选择“
Insert LOG
”,填写对象名
LOG_test
即建立了一个新的
LOG
对象。
图
46
在LOG_test标签上右键选择“Properties”,弹出如图 47窗口,可对此LOG对象属性作一些设置。具体设置含义可通过Help查看。
图
47
1.3.4
CLK
设置
在CLK属性中通常选择定时器Timer0作为DSP/BIOS的基准时钟,计时分辩率设置为每秒1000次中断,在1GHz系统时钟下,近似为每次定时中断间隔999.996微秒。Timer Mode选择为32bit unchained模式,即使用TCI6482的TMR0的TIMLO作为Timer0,而TIMHI还可以作其它用途使用。CLK属性配置界面如图 48所示:
图
48
1.3.5
HWI
设置
HWI
(硬中断)中包含
HWI_INT4
到
HWI_INT15
可用来定义用户自己的硬件中断,
HWI_RESET
、
HWI_NMI
和
HWI_RESERVED
不要去改动。如
图
49
,每个硬
HWI
的优先级从上到下逐渐降低。
图
49
选择HWI_INT10为例,来设置EMAC/MDIO的中断,需要填写中断事件号17,并且填写中断服务程序名(C函数前面需要加下划线)如图 50所示:
图
50
在Dispatcher页面,选择“Use Dispatcher”由BIOS代理控制中断的确认和清除,不需要用户中断服务程序干预,比较简便。如图 51:
图
51
SWI
(软中断)
的优先级在HWI之后,但是比TSK高,可以通过右键菜单中的“Insert SWI”创建一个SWI对象,可以指定SWI内部优先级,从0(最低)到14(最高)。如图 52:
图
52
1.3.7
TSK
设置
在TSK Manager(任务管理器)中可以根据需要创建各种任务,任务间是根据优先级抢占策略来进行调度的,TSK提供有多种优先级别,包括-1(Suspend)、0(Idle)、1(最低)到15(最高)。如图 53:
图
53
在TSK Manager上右键选择“Insert TSK”并填写任务名称后就可以创建一个任务,在相应任务上右键选择“Properties”可对任务属性进行设置,如图 54:
图
54
Stack Size
(最大堆栈大小)和Priority(优先级)需要根据任务的具体情况进行设置。在
页面,填写任务实体函数名(C函数前面加一个下划线),如图 55:
图
55
1.3.8
Synchronization
设置
DSP/BIOS
中任务间的通信和同步可由
SEM
、
MBX
、
QUE
、
LCK
四个模块完成:
SEM
(信号量):用于任务同步和互斥,有计数功能,根据需要使用;
MBX
(邮箱):也用于任务同步,可以传递少量数据,根据需要使用;
QUE
(队列):可实现任务同步和资源的共享,根据需要使用;
LCK
(资源锁):实现对共享资源的互斥,根据需要使用。
四种同步模块对象都可以通过各自的右键菜单中“Insert …”来创建,并可对其属性作相应的设置。如图 56所示:
图
56
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请
点击举报
。
打开APP,阅读全文并永久保存
查看更多类似文章
猜你喜欢
类似文章
【热】
打开小程序,算一算2024你的财运
CAN周期波动优化方法
创建自己的Excel函数 体验强大功能
实战经验分享丨AB PLC调试笔记——程序篇
如何重装操作系统及注意事项(视频)
基于DSP的MEMS陀螺仪信号处理平台的设计
DSP/BIOS内核的应用程序运行原理 - 讨论区 - DSP 开发设计 - 中国电子顶级...
更多类似文章 >>
生活服务
热点新闻
留言交流
回顶部
联系我们
分享
收藏
点击这里,查看已保存的文章
导长图
关注
一键复制
下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!
联系客服
微信登录中...
请勿关闭此页面
先别划走!
送你5元优惠券,购买VIP限时立减!
5
元
优惠券
优惠券还有
10:00
过期
马上使用
×