英雄联盟全球总决赛竞猜-官网首页英雄联盟全球总决赛竞猜-官网首页

官方视频
嵌入式实时操作系统μC/OS-Ⅱ在DSP上的移植-英雄联盟全球总决赛竞猜
来源:官网首页    发布时间:2020-12-01 04:49:02

【英雄联盟全球总决赛竞猜】作者:许天佩王伟达向日葵德国0。张C/OS-II内核是典型的嵌入式实时操作系统,它管理63个任务,反对旗帜、信号量、物理地址信号量、排队和消息邮箱。JeanJ。

英雄联盟全球总决赛竞猜

Labrosse首次创作的源代码几乎公开发布,大量应用程序用于示例,确保可靠的性能,内核小,可移植性好。在TI的C2000系列DSP处理器TMS320LF2407A芯片上构建16路10位AD、4个标准化计时器、8个16位PWM地下通道、4个CAP捕获设备、41号I/O地下通道、SPI、RS232、CAN等通信接口DSP处理器的数学运算优势TMS320LF2407A命令使用4级管道操作员,以至少40米的系统时钟运行,加上适当的RTOS调度,几乎可以保证系统的实时性能。研发系统TMS320C2XXCodeComposerStudio符合C/OS-II的复制条件,允许自由选择嵌入式计算机控制系统的主控制芯片。

笔者在设计基于CAN的工程机械嵌入式智能显示时,将2407A主控制芯片、软件方面的动态内核C/OS-II复制到DSP控制器TMS320LF2407A,应用程序是基于C/OS-II内核的一系列操作。1.C/OS-II的复制C/OS-II在设计时充分考虑了可移植性,因此C/OS-II的复制相对容易。复制作业使用(1) #define指定常数值(OS_CPU .H)(2) 10个数据类型(OS_CPU)。

H)(3)设置为#define也就是说,c/OS-II的复制包括三个文件OS_CPU。必须更改h、OS_CPU_C.C和OS_CPU_A.ASM。其中程序集语言文件OS_CPU_A.ASM是可选的。

一些C编译器允许用户在C语言中放置汇编语言,因此可以将所需的汇编语言代码放置在OS_CPU_C.C中。CCS的C编译器允许从C语言映射汇编语言,但这样会损害C语言的完整性,因此只鼓励在程序启动系统初始化部分少量使用。在映射在C语言中构建特定原始功能的多种句子汇编语言时,建议不要使用此方法。(大卫亚设,Northern Exposure(美国电视电视剧),语言)因此,OS_CPU_A.ASM在复制过程中也发生了变化。

2.编写复制代码复制C/OS-II的主要任务是声明与硬件相关的数据类型、定义中断相关的宏、定义堆栈快速增长方向宏、编写堆栈初始化函数、HOOK接口函数、任务级上下文转换函数、系统时钟定点服务函数等。2.1 OS_CPU。复制h文件(1)的常数值。

OSInit必须在OS_TaskIdle()和OS_TaskStat()函数创建作业时通知堆栈的顶级地址在哪里。第二次调用OSTaskStkChk()时,C/OS-II必须告诉堆栈底部的地址在哪里。因此,需要说明堆栈的快速增长方向。

大部分微处理器和微控制器的堆栈意味着从上到下的增加,但有些处理器被忽略的方式使用。TMS320LF2407A的堆栈方向意味着底部快速增长:# defineOS _ STK _ GROWTH0//堆栈方向是指从下到上快速增加(2)来声明数据类型。

LOL竞猜官网首页

C/OS-II考虑到通用性,在内核中使用用户定义的数据类型,并与编译器相关。也就是说,拒绝复制时需要定义微处理器的数据类型必须与C/OS-II的数据类型相匹配,确保复制的C/OS-II在微处理器平台上运行,并声明复制时CCS编译器可以识别。可以构建为OS_CPU.h头文件。

程序如右图所示。 TypedefunsignedcharBOOLEAN/* ucos将boolean定义为unsigned char */typedefunsignedcharint 8u。/* ucos将INT8U定义为unsigned char */typedefsignedcharint 8s:/* ucos将int8s定义为signed char */typedefunsignedintint 16u/*在ucos中,将INT16U定义为unsigned int */typedefsignedintint 16s。/*在ucos中将INT16S定义为signedint */typedefunsignedlongint 32u。

/*在ucos中,将INT32U定义为unsigned long */typedefsignedlongint 32s。/*在ucos中,将INT32S定义为signedlong*/typedeffloatFP。/*定义ucos中,FP为float*/#defineOS_STKINT16U/*堆栈入口宽度为16位。*/OS_CPU_SR类型的数据未在系统中使用,因此未定义此数据类型。

(3)三个宏定义。C/OS-II通过内核中的禁止中断保持临界区,因此必须在C语言中加入禁止和允许中断编辑代码。DSP需要使用SETCINTM阻止中断,使用CLRCINTM阻止中断。

因此,复制代码定义了两个宏定义:# defineos _ enter _ critical()ASM(setcintm)# defineos _ exit _ critical()ASM,该方法将恢复中断这是适用中可以接受的,所以自由选择了这种模式。TMS320LF2407A反对各种中断方式,可以屏蔽软中断INT1至INT6,不能屏蔽软中断RESET和NMI_VECT,也不能屏蔽软中断INT8至INT16和INT20至INT31和中断陷阱TRAP。因此,通过对INT31软中断调用OSCtxSw(),可以完全恢复任务堆栈中处理器使用的寄存器。

用INT2的计时器1周期中断调用OSTickISR()。定义模仿INT31中断的宏,以便在中断向量表中调用INT 31 # Defineos _ task _ SW()ASM(Intr 31)的定义. includef2407regs.h.globaltaskswitchingservicevector . 2.2 OS _ CPU _ C . H文件复制c/OS-复制示例拒绝编写10个非常简单的C函数,但相应的函数是OSTaskStkInit(),其他9TMS320LF2407A的堆栈与普通微处理器的堆栈不同。普通微处理器的堆栈以编程方式将一段内存定义为堆栈更灵活。

TMS320LF2407A的堆栈是CPU内8级深度的硬件堆栈,因此任务堆栈初始化与常规微处理器的堆栈初始化不同。芯片本身的堆栈(以下简称US)只有8级,不能用作系统堆栈,因此CCS编译器将CPU内部的两个寄存器AR0和AR1用作堆栈指针,AR0用于堆栈的临时变量指针FP。编译器将函数或中断按入US的返回地址,弹头放置在SP(AR1)指向的堆栈上,保持CPU的工作环境不变。

但是,函数只剩下程序要使用的寄存器,中断调用I$$SAVE子例程,保留CPU的所有寄存器,返回时调用I $ $ Reses。完整恢复I$$SAVE和I$$REST函数是将c/OS-操作系统复制到TMS320LF2407A的基础,在成功复制OSTaskStkInit()函数之前必须正确。。

本文来源:官网首页-www.gisttrend.com

上一新闻:1元抢京东商城大疆无人机网友直呼太魔性:LOL竞猜官网首页

下一新闻:客厅沙发巧设计 居室装饰点睛之笔

推荐阅读

企业要闻

企业动态

门窗百科

太阳能着色 互补系统 易护理 保温 环保节能
预约报名 免费测量 免费设计 免费报价 免费安装 终身维护
版权所有©2011-2020 忻州市LOL竞猜官网首页科技有限公司
晋ICP备89706757号-6
联系地址: 山西省忻州市玉州区一付大楼518号
联系电话:072-476409239
联系邮箱:663395747@qq.com
传真号码:0810-30857926