外文文献翻译嵌入式.docx

上传人:b****5 文档编号:7557475 上传时间:2023-01-25 格式:DOCX 页数:16 大小:237.99KB
下载 相关 举报
外文文献翻译嵌入式.docx_第1页
第1页 / 共16页
外文文献翻译嵌入式.docx_第2页
第2页 / 共16页
外文文献翻译嵌入式.docx_第3页
第3页 / 共16页
外文文献翻译嵌入式.docx_第4页
第4页 / 共16页
外文文献翻译嵌入式.docx_第5页
第5页 / 共16页
点击查看更多>>
下载资源
资源描述

外文文献翻译嵌入式.docx

《外文文献翻译嵌入式.docx》由会员分享,可在线阅读,更多相关《外文文献翻译嵌入式.docx(16页珍藏版)》请在冰豆网上搜索。

外文文献翻译嵌入式.docx

外文文献翻译嵌入式

毕业设计翻译文献

 

文献题目:

ConstructionofEmbeddedSystemPlatformwhichBasedonμC/OS-ⅡandARM7KernelMicroprocessor

构建基于μC/OS-Ⅱ和ARM7内核微处理器的嵌入式系统平台

摘要

今天,嵌入式系统被广泛地应用于各行各业。

引入嵌入式操作系统在嵌入式发展中已经是一种趋势。

嵌入式操作系统能够适用于不同的系统硬件,并能够显著的减少开发费用,缩短研究周期。

μC/OS-Ⅱ是一款优秀的开源,轻型内核,占用少量资源并且在实时性方面有着高性能的嵌入式操作系统。

μC/OS-Ⅱ适用于越来越多的32位ARM7核微处理器,本文介绍了基于ARM7微处理器的μC/OS-Ⅱ嵌入式操作系统的移植方法。

最终实现了构建基于μC/OS-Ⅱ和ARM7内核处理器的嵌入式开发平台。

该平台能有效的简化软件程序开发流程,并缩短工程研究的周期和显著提高系统的执行效率。

关键字:

嵌入式系统;嵌入式操作系统;ARM7内核;μC/OS-Ⅱ

一、介绍

所谓的操作系统移植是一个实时操作系统内核可以在运行在其他微处理器上。

移植部分对于不同的CPU具有对应的不同的代码。

大多数μC/OS-Ⅱ代码是用C编程语言编写的,这对于移植μC/OS-Ⅱ是非常方便的。

但根据不同的微处理器,用户仍然需要使用汇编语言编写一些有关不同微处理器的硬件的程序。

这是因为当μC/OS-Ⅱ读或写寄存器时,它只依赖于汇编语言。

因为μC/OS-Ⅱ操作系统的要求,有三个文件需要当μC/OS-Ⅱ移植到一个特定的微处理器。

整个移植工作主要围绕创建这三个文件。

这些文件显示如下:

1、在C语言中的头文件OS_CPU中,一些与编译器无关的数据

类型需要定义OS_CPU中。

这些数据类型包括使用的堆栈数据类型和堆栈的增长方向。

一些与ARM7内核相关的软件中断也被定义在该文件中。

2、另一个OS_CPU_C.C是一个C源文件程序。

该文件主要包括μC/OS-Ⅱ的任务堆栈的初始化函数和一些被μC/OS-Ⅱ操作系统调用的用户函数。

3、最后一个OS_CPU_A.S文件是一个汇编程序源文件。

这是一个时钟中断服务函数在运行的时候,也包含了一个用于引起中断的任务切换函数,并且也具有总是运行最高优先级的任务当μC/OS-Ⅱ系统首次进入多任务环境时。

二、创建OS_CPU.H文件

A、定义与编译器有关的数据类型

因为不同的微处理器有不同的字长度,所以μC/OS-Ⅱ的移植包含一系列的数据类型的定义,这使移植能够实现。

尤其是在C语言中使用的数据类型,例如短型、整型、长型等等,这些数据类型不能直接用于μC/OS-Ⅱ。

因为这些数据类型与编译器类型有关,它们不能被移植。

所以这些数据类型都定义为整型数据结构,在许多情况下,他们是可移植的。

B、系统软中断函数的定义

中断是一种硬件机制,但在μC/OS-Ⅱ操作系统,一些重要的任务函数的实现应该取决于中断级的代码。

所以,这种情况下,μC/OS-Ⅱ操作系统需要一条预处理器指令来模拟中断。

它类似于一个硬件中断,所以它被称为软中断。

大多数微处理器的内核可以提供这种类型的软中断指令。

在ARM7内核,它是“SWI”。

为了使底层接口函数是独立的处理器状态并且底层任务函数不需要知道调用函数的准确的地址当任务被调用时。

SWI指令应该用作底层接口。

并且不同的函数能够通过不同的软件中断函数编号的方法进行区分。

ADS1.2编译器总是使用“_swi”来声明一个不存在的函数。

而一旦不存在的函数被调用时,一条SWI的指令应该插入调用函数并指定函数编号的位置。

这里显示一些在μC/OS-Ⅱ中重要功能的软中断函数

_swi(0x00)voidOS_TASK_SW(void);//在任务间切换功能

_swi(0x01)void_OSStartHighRdy(void);//首先运行最高优先级任务

_swi(0x02)voidOS_ENTER_CRITICAL(void);//关中断

_swi(0x03)voidOS_EXIT_CRITICAL(void);//开中断

_swi(0x80)voidChangeToSYSMode(void);//切换到系统模式

这些函数的具体代码在文件OS_CPU_C.C和OS_CPU_A.S中。

根据μC/OS-Ⅱ的要求,所有在应用系统中的C文件必须包括文件INCLUDES.H。

所以正常的做法是使INCLUDES.H文件包含OS_CPU.H文件。

 

三、创建OS_CPU_C.C文件

在OS_CPU_C.C文件中,μC/OS-Ⅱ操作系统的移植规范要求创建十个简单的函数OSTaskStkInit(),OSTaskCreateHook(),OSTaskSwHook(),OSTaskDelHook(),OSTaskIdleHook(),OSTimeTickHook(),OSTaskStatHook(),OSInitHookBegin(),OSInitHookEnd(),OSTCBInitHook()。

除了OSTaskStkInit()函数外并非所有的函数都必须创建。

在符合μC/OS-Ⅱ操作系统的规范要求下,如果用户不想使用这些函数,停用另外9个函数的功能并可以设置为空函数。

A.编写OSTaskStklnit()函数

在μC/OS-Ⅱ操作系统,这两个函数OSTaskCreate()和OSTaskCreateExt()通过调用OSTaskStkInit()函数的方法初始化任务的堆栈结构,并保存所有寄存器数据到各自的堆栈中。

当调用函数实现初始化后,它清除有关符合ARM7内核微处理器的实际堆栈方向寄存器(堆栈方向是降序排列),并且最后返回堆栈顶的指针值。

 

图1堆栈结构初始化(参数pdata被传递给堆栈)

图1展示了OSTaskStkInit()函数初始化堆栈的过程当μC/OS-Ⅱ操作系统创建任务的时候。

在初始化后,OSTaskStkInit()最后返回了堆栈顶的指针。

B、系统软件中断函数

在文件OS_CPU_C.C中,用C语言写的软中断函数总是第一个被介绍。

该文件包含所有的软件中断函数除了函数编号为0的任务(OS_TASK_SW())和函数编号为1的OSStartHighRdy()。

在文件OS_CPU_A.S中,函数编号为0和为1的是用汇编语言编写的。

这是因为C语言不能确切提供这两个函数要求的堆栈结构。

另一个原因,如果用于切换任务的函数用汇编语言编写的话,能很方便的实现跳转。

由C语言编写的软中断函数的性质的介绍如下:

由于使用了软中断,在更改了ARM7内核SPSR寄存器的相应控制位值后,当软中断结束后,通过将SPSR寄存器的值复制到GPSR寄存器中特定的方式,更改微控制器的运行模式的目的能够实现。

四、创建OS_CPU_A.S文件

根据μC/OS-Ⅱ操作系统的移植规范,有四个函数OSCtxSw(),OSIntCtxSw(),OSTickISR(),OSStartHighRdy(),需要编写,而且必须用汇编语言编写。

在这个文件中,用于提取编号0和编号1的软中断函数编号的函数也应该用汇编语言编写。

A.提取软中断的函数编号

 

图2提取软中断号

系统根据不同的软中断函数编号总是执行不同的函数。

在ARM7内核微处理器家族,LR寄存器总是用于存储子程序或异常的返回地址。

LR寄存器可以获得SWI指令代码。

并且软件中断的编号包含在SWI指令中。

所以软中断对应的函数编号可以通过读取指令代码的对应位段来得到。

考虑到ARM7内核的三级流水线架构和程序的运行状态可能是ARM态或Thumb状态,所以他们必须对应不同的处理方式。

图2显示了具体的流程图。

B、编写OSStartHighRdy(),OSCtxSw()和OSIntCtxSw()函数

μC/OS-Ⅱ操作系统的调度函数OSSched()是通过调用实现任务切换功能OS_TASK_SW()函数和OS_TASK_SW()函数完成整个任务切换,OS_TASK_SW()函数和OS_TASK_SW()函数是通过调用函数OSCtxSw()函数实现的。

OSCtxSw()函数调用了OS_TASK_SW()用于最后切换任务。

OSIntCtxSw()函数的大多数源代码几乎与OSCtxSw()函数相同。

它们具体的区别是OS_TASK_SW()函数需要存储CPU寄存器值。

根据μC/OS-Ⅱ操作系统的要求,中断服务程序(ISR)已经存储了CPU寄存器值。

所以,OSIntExit()函数将不会处理在最后的中断处理后(如果中断嵌套的存在)。

这个时候,任务切换不需要再次存储CPU寄存器的值。

在μC/OS-Ⅱ操作系统的移植过程中,为了使系统的代码高度可靠的,OSIntCtxSw()函数可以通过调用OSCtxSw()函数的方式实现。

具体的实现方法是再次保存CPU寄存器的值,但它对整个系统没有任何影响。

因为CPU寄存器必须在OSCtxSw()函数写操作的时候执行,所以OSCtxSw()函数应该用汇编语言编写。

图3显示该函数的流程图。

该函数与μC/OS-Ⅱ操作系统的要求相比有一些差异移植,但这并不影响系统的执行。

在某种程度上,这证明了μC/OS-Ⅱ是一个非常优秀的嵌入式操作系统,它可以根据系统的需要进行裁剪。

最后图3的流程图执行了‘LDMFDSP!

{R0-R12,LR、PC}‘ARM指令。

因为在μC/OS-Ⅱ操作系统中,任务在异常模式中执行,它只可以在用户或系统模式中执行。

μC/OS-Ⅱ操作系统通过调用OSStart()函数,OSStart()最终调用OSStartHighRdy()函数的方式开始任务环境。

OSStartHighRdy()函数的编写应遵循μC/OS-Ⅱ操作系统的移植规范。

具体的方法是通OSCtxSw()函数一样。

它们两者间唯一的区别是当第一次执行任务调度的时候OSStartHighRdy()函数不必存储寄存器的值。

 

 

图3.OSCtxsw()函数流程图

创建了几个移植文件后,理论上,μC/OS-Ⅱ操作系统可以正常的在ARM7内核微处理器上执行了。

但是在μC/OS-Ⅱ操作系统第一次执行前,需要提供OSTickISR()系统时钟函数。

这是系统时间的函数一定是写。

μC/OS-Ⅱ操作系统需要用户提供周期的时钟,并且时钟可以实现延迟函数和超出时间函数。

通常,周期时钟是由中断函数OSTickISR()实现。

事实上,调用OSTimeTick()函数的实质是通过调用OSTickISR()函数实现的。

因此,中断任务OSTickISR()必须通过ARM7内核微处理器的硬件定时器实现,并且中断级应该设置为最高。

 

图4.μC/OS-Ⅱ操作系统中断服务程序流程图(系统定时中断举例。

在μC/OS-Ⅱ操作系统的移植上,中断服务子程序必须用汇编语言编写。

图4显示了关于ARM7内核中断服务程序的流程图的写作规范。

图4显示系统定时器中断的实现OSTimeISR()函数通过从执行用户程序转换到μC/OS-Ⅱ()操作系统OSTimeTick()执行的方式实现。

同样重要的是,如图4所示,已经实现了中断和退出中断处理,系统应再次选择任务列表中最高优先级的任务,然后系统切换到最高的任务。

保存在OS_CPU_A.S函数OSIntCtxSw任务切换函数工作已经完成。

也就是说在任务列表种的初始中断任务不一定是最高优先级的任务。

因为比初始任务更高优先级的一个更高优先级的任务可能在中断处理中已经被执行。

当然,当所有的中断已经执行后,如果初始中断任务在任务列表中仍然是最高优先级的任务,系统不需要切换任务,它再次直接通过恢复CPU任务寄存器的值的方式执行。

结论

到目前为止,所有μC/OS-Ⅱ操作系统的移植到ARM7内核微处理器的工作已经完成。

为了证明移植的正确性和合理性,在正常使用前,整个代码必须进行测试。

测试方法可以根据实际的应用程序微处理器模式编写几个小任务的方式实现。

测试可以有助于找到移植移植代码的缺陷,也可以修改移植代码。

在移植没有漏洞后,可以将应用程序的任务运行在基于μC/OS-Ⅱ操作系统和ARM7内核微处理器系统平台上。

引用

[1]JeanJ.Labrosse(USA),μC/OS,TheReal-TimeKernel[M],Beijing:

BEIHANGUNIVERSITYPRESS,2003.5

[2]XiongZhenhua,LiaoJiaping,BasedonS3C44B0xmicroprocessorandUCOS-Ⅱoperatingsystem[J],ChinaWaterTransport,,(2006)01.

[3]XiangHuaikun,LiangSongfeng,YuanYuan,DesignofNetwork-EnabledTrafficSignalControllerBasedonCANanduCOS-Ⅱ[J],JournalofShenzhenPolytechnic,(2008)03.

[4]LiuMiao,WangTianmiao,WeiHongxing,Real-timeAnalysisofEmbeddedCNCSystemBasedonuCOS-II[J],ComputerEngineering,(2006)22.

[5]WangLei,WangYaonan,ChenSisi,TheApplicationOfucos-iiInEmbeddedIntelligentVisionSurveillanceSystem[J],Control&Automation,(2008)04.

[6]LiBei,PengChuwu,BuildingHardwareApplicationLayerinUCOSTransplanting[J],ElectronicEngineering&ProductWorld,(2006)16.

ConstructionofEmbeddedSystemPlatformwhichBasedonμC/OS-ⅡandARM7KernelMicroprocessor

YujunBao

SchoolofElectronicInformation&ElectricEngineering,ChangzhouInstituteofTechnologyCZUChangzhou,China

XiaoyanJiang

SchoolofElectronicInformation&ElectricEngineering,ChangzhouInstituteofTechnologyCZUChangzhou,China

Abstract

EmbeddedSystemhasmoreandmoreapplicationstoday.IntroducedEmbeddedOperatingSysteminEmbeddedSystemhasbeenatendencyofEmbeddedsystemdevelopment.EmbeddedOperatingSystemcanavoiddifferentEmbeddedSystemhardware’sdifference,itcangreatlyreducethedevelopmentcosts,shortentheresearchcycle.μC/OS-ⅡisakindofexcellentEmbeddedOperatingSystemwhichisanopensource,tinykernel,consuminglittleresourceandhighperformanceinreal-timefeature.Inaccordancewithmoreandmore32BitARM7kernelMicroprocessorusedinEmbeddedSystem,andhereintroducesthetransplantationmethodofEmbeddedμC/OS-ⅡOperatingSystemwhichbasedonARM7kernelMicroprocessor.SotheconstructionofEmbeddedSystemPlatformwhichbasedonμC/OS-ⅡandARM7kernelMicroprocessorcanhavebeenrealizedeventually.Theplatformcanefficientlysimplifythesoftwaredevelopment’sprogramflow,shortentheproject’sresearchcycleandimprovethewholesystem’sperformancegreatly.

Keywords:

EmbeddedSystem;EmbeddedOperatingSystem;ARM7kernel;μC/OS-Ⅱ

 

I.INTRODUCTION

Theso-calledOperatingSystemtransplantationisthatarealtimeOperatingSystemkernelcanbeoperatedinothersMicroprocessors.ThatisspecialcodeforspecialCPU.MostcodesofμC/OS-ⅡarewrittenbyCprogramminglanguage,andthisisveryconvenienttotransplantμC/OS-Ⅱ.ButaccordingtothedifferentMicroprocessors,theusersstillneedusingassemblylanguagetowritesomeprogramswhicharerelatedtothedifferentMicroprocessors’hardware.ThisisbecausewhenμC/OS-Ⅱreadsorwritesregisters,itonlyreliesonassemblylanguage.[1]WiththeμC/OS-ⅡOperatingSystem’srequirements,therearethreefilestobeneededwhenμC/OS-ⅡtransplantedintoacertainMicroprocessor.Andthewholetransplantation

mainlysurroundstheworkwhichcreatingthesethreefiles.Thesefilesshowednext:

◆IntheClanguageheaderfileOS_CPU.H,somedatatypeswhicharenotconcernedincompilerneededtobedefined.Thesedatatypesincludetheusedstackdatatypeanditsgrowingdirection.SomesoftinterruptswhichareconcernedinARM7kernelaredefinedinthisfile,too.

◆AnotheroneOS_CPU_C.CisasourcefileofCprogram.ThefilemainlyincludesthetaskstackinitializationfunctionofμC/OS-ⅡandsomeuserfunctionswhichcalledbyμC/OS-ⅡOperatingSystem.

◆ThelastoneOS_CPU_A.Sisaassembleprogramsourcefile.Itisaclockticksinterruptservicefunctioninpractice.Itisalsoataskswitchfunctionwhichusedtoquitinterrupt.AnditalwaysrunsthetaskofhighestprioritywhenμC/OS-Ⅱentersthemultitaskenvironmentfirstly.

II.CREATINGTHEFILEOS_CPU.H

A.Definingdatatypeswhichareconcernedincomplier

BecausedifferentMicroprocessorshavedifferentwordlength,sothetransplantationofμC/OS-Ⅱincludesaseriesofdatatypes’definition,andthismakethetransplantationpossible.EspeciallyforthedatatypesusedinClanguage,suchas‘short’,‘int’,‘long’andsoon,thesedatatypescan’tusedinμC/OS-Ⅱdirectly.Becausethesedatatypesareconcernedinthecompliers’type,theycan’tbetransplanted.SothesedatatypesarealwaysdefinedasIntegerDataStructuresinmanycases,theyaretransplantable.

B.Definitionofsystemsoftinterruptfunctions

Interruptisakindofhardwaremechanism,butinμC/OS-ⅡOperatingSystem,someimportanttaskfunctions’implementationaresupposedtodependoninterruptlevelcode.So,atthistime,μC/OS-ⅡOperatingSystemneedsapieceofpreprocessor

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 法律文书 > 判决书

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1