没有合适的资源?快使用搜索试试~ 我知道了~
单片机与DSP中的调度器在DSP编程中的应用
2 下载量 130 浏览量
2020-11-18
22:22:17
上传
评论
收藏 182KB PDF 举报
温馨提示
试读
3页
DSP芯片,也称数字信号处理器,是一种具有特殊结构的微处理器。它的内部采用程序和数据分开的哈佛结构,具有专门的乘法器,广泛采用流水线结构,提供特殊的DSP指令,在一个周期内完成一次乘法和一次加法。在国外,DSP芯片已经被广泛地应用于当今技术革命的各个领域;在我国,DSP技术也正以极快的速度被应用在通信、电子系统、信号处理系统、自动控制、雷达、军事、航空航天、医疗、家用电器、电力系统等许多领域中,而且新的应用领域在不断地被发掘。因此基于DSP技术的开发应用正成为数字时代的应用技术潮流。相对于单片机,它速度更快,外设集成度更高,程序存储器更大。在《时间触发嵌入式系统设计模式》一书中详细介绍了基于单
资源推荐
资源详情
资源评论
单片机与单片机与DSP中的调度器在中的调度器在DSP编程中的应用编程中的应用
DSP芯片,也称数字信号处理器,是一种具有特殊结构的微处理器。它的内部采用程序和数据分开的哈佛结
构,具有专门的乘法器,广泛采用流水线结构,提供特殊的DSP指令,在一个周期内完成一次乘法和一次加
法。在国外,DSP芯片已经被广泛地应用于当今技术革命的各个领域;在我国,DSP技术也正以极快的速度被
应用在通信、电子系统、信号处理系统、自动控制、雷达、军事、航空航天、医疗、家用电器、电力系统等许
多领域中,而且新的应用领域在不断地被发掘。因此基于DSP技术的开发应用正成为数字时代的应用技术潮
流。相对于单片机,它速度更快,外设集成度更高,程序存储器更大。在《时间触发嵌入式系统设计模式》一
书中详细介绍了基于单
DSP芯片,也称数字信号处理器,是一种具有特殊结构的微处理器。它的内部采用程序和数据分开的哈佛结构,具有专
门的乘法器,广泛采用流水线结构,提供特殊的DSP指令,在一个周期内完成一次乘法和一次加法。在国外,DSP芯片已经
被广泛地应用于当今技术革命的各个领域;在我国,DSP技术也正以极快的速度被应用在通信、电子系统、信号处理系统、
自动控制、雷达、军事、航空航天、医疗、家用电器、电力系统等许多领域中,而且新的应用领域在不断地被发掘。因此基于
DSP技术的开发应用正成为数字时代的应用技术潮流。相对于单片机,它速度更快,外设集成度更高,程序存储器更大。在
《时间触发嵌入式系统设计模式》一书中详细介绍了基于单片机的软件设计方法,而本文基于DSP对这种设计进行了扩展,
使这种设计方法更为灵活,有效。
二.调度器介绍二.调度器介绍
可以从两方面来看调度器:一方面:调度器可以看作是一个简单的操作系统,允许以周期性或单次方式调用任务;另一方
面:从底层角度来看,调度器可以看作是一个由许多不同任务共享的定时器中断服务程序。
1.. 调度器的组成调度器的组成
(1)调度器数据结构
调度器的核心是调度器数据结构。这是一种用户自定义的数据类型,集中了每个任务所需的信息。
typedef struct
{
void ( * pTask)(void); 指向任务的指针(必须是一个void(void)函数)。
unsigned int Delay; 延时时标数:直到任务将下一次运行所剩时标数.时标,是硬件定时器周期中断设定的 时间间隔,
它是调度器的驱动者。
unsigned int Period; 周期时标数:任务连续运行所间隔的时标数。
unsigned int DelCounter; 若不为周期任务,表示任务运行次数;若为周期函数,则无意义。
char PrdOrTemp; 若PrdOrTemp=1,则为周期任务;若PrdOrTemp=0,则为非周期任务。
char RunMe; 当任务需要运行时(由调度器)加1
} sTask;
另外,还需要定义一些全局变量:unsigned int Task_Index 记录当前所添加任务索引变量,对于每一个任务都要定义一
个任务索引变量,以便对任务进行查找。例如:可以利用任务索引变量对任务进行删除。任务队列sTask SCH_tasks_G
[SCH_MAX_TASKS]记录所有任务数据结构的全局变量,其中SCH_MAX_TASKS为定义的最大任务数。虽然在系统运行时,
任务有添加或删除,但系统不是很复杂,给出的SCH_MAX_TASKS一定要大于运行的任务数。
(2) 初始化函数(void SCH_Init_T(void))
这个函数主要的作用是设置定时器,用来产生驱动调度器的定期时标。一般的DSP都有多个定时器,它们中的任何一个
都可以用来驱动调度器。对于调度器来说,要在不同地微处理器运行,主要是初始化函数不同(即微处理器的定时器初始化不
同)。时标设定的大小关系到CPU的利用率和系统的精度,它的大小与具体的系统有关,例如微处理器的速度,执行任务的
大小,执行任务周期的大小等。TI 公司推出的2000 系列的DSP与一般51系列的单片机时标的设定有所不同:DSP的CPU频率
可达到40M,而且采用流水线结构,基本上一个时钟周期执行一条指令;一般单片机频率为10M,而且远不能达到一个时钟周
期执行一条指令。在《时间触发嵌入式系统设计模式》一书中,单片机时标设定为1ms,可获得很高的CPU利用率;而调度器
应用在交流数据采集和控制系统中(采用TMS320LF2407), 时标设定为200us,CPU利用率也不小于百分之九十五。
(3) 添加任务的函数
unsigned int SCH_Add_Task(void ( * pFunction)( DELAY, PERIOD, DELCOUNTER, PRDORTEMP)
添加任务函数首先开始检查任务队列sTask SCH_tasks_G[SCH_MAX_TASKS]记录所有任务数据结构的全局变量哪一个
空闲,然后将所添加任务的地址,延时执行时标数,周期时标数,任务运行次数,周期任务指示标志赋给任务队列那一个空闲
全局变量。再记录下当前任务索引变量,以便在需要的情况下赋给任务自身索引变量,对任务进行跟踪。
(4) 删除任务的函数
void SCH_Del_Task(const unsigned int TASK_INDEX)
删除任务函数从 TASK_INDEX得到所要删除任务的任务索引变量。然后将对应的任务数据结构的全局变量清除。删除任
资源评论
weixin_38520192
- 粉丝: 6
- 资源: 968
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功