用AndesCore N1033A-S处理器实现μC/OS-II的移植

最新更新时间:2013-09-30来源: 互联网关键字:AndesCore  N1033A-S  处理器  μC/OS-II 手机看文章 扫描二维码
随时随地手机看文章

μC/OS-II是一种代码公开、可裁剪的嵌入式实时多任务操作系统。该内核通过实现抢占式任务调度算法和多任务间通信等功能,使之具有执行效率高、实时性能优良等特点。另外,其占用空间非常小(最小可裁剪至2KB)并且具有高度可移植性,因此被广泛的应用于微处理器和微控制器上。

  晶心科技 (Andes)作为亚洲首家原创性32位微处理器IP与系统芯片平台设计公司,推出的AndesCore™ N10系列产品N1033A-S, 搭配应用广泛的嵌入式实时操作系统μC/OS-II以及相关的软硬件开发资源,有效的帮助客户降低现有成本、提升系统效能、减少系统功耗,并缩短产品开发上市时程。本文将介绍如何将μC/OS-II移植到AndesCore™ N1033A-S处理器上。

  1. 开发环境及处理器介绍

  1.1 软/硬件开发环境

  本移植过程使用的软件环境是AndeSight? v1.4集成开发套件,它是晶心科技最新推出的针对各种AndesCore?的软件集成开发环境,包括编译器、调试器、分析器以及强大的ESL工具。硬件平台采用晶心科技的FPGA评估板ADP-XC5,该评估板采用AndesCore? N1033A-S作为处理器内核,并具有丰富的片上资源。

  AndesCore™ N1033A-S介绍

  AndesCore™ N10系列产品N1033A-S是一款哈弗结构的32位RISC处理器内核,具有5级流水线(pipeline)及动态分支预测(Dynamic branch prediction)架构。N1033A-S新加入了最新AndeStar™ V2 指令集,把CPU效能推至1.66DMIPS/Mhz之上。同时还实现完整的Audio指令集,达到完全整合CPU与DSP功能的目标。N1033A-S还支持向量中断模式以及2D 直接内存访问(DMA)功能,更为实时信号处理添增效能。

  2. μC/OS-II在N1033A-S上的可移植性分析

  μC/OS-II具有高度可移植性,目前已经移植到近40多种处理器体系上,涵盖从8位到64位的各种CPU(包括DSP)。

  μC/OS-II的正常运行需要处理器平台满足以下要求: 1)处理器的C编译器能产生可重入代码;2)用C语言就可以打开和关闭中断;3)处理器支持中断,并且能产生定时中断;4)处理器支持能够容纳一定量数据的硬件堆栈;5)处理器有将堆栈指针和其它CPU寄存器读出和存储到堆栈或内存中的指令。

  AndesCore? N1033A-S内部提供了32个通用寄存器,其中R31被用来做专门的堆栈指针。32根地址线最多可访问4GB存储单元,因此只要系统RAM空间允许,堆栈空间理论不会产生限制。N1033A-S处理器提供的AndeStar? V2指令集包含了丰富且十分高效的对堆栈进行操作的指令。例如指令SMW(store multiple word)可实现仅使用一条指令将多个寄存器的值存储到堆栈中并同时更新堆栈指针位置,而且还能很好的处理地址非对齐字的存取。N1033A-S支持中断并能产生定时器中断,处理器中的PSW(Processor Status Word)寄存器中包含一个全局中断禁止位GIE,控制它便可实现打开和关闭中断。此外,AndeSight?集成开发环境中内置的编译器可以产生可重入代码,并且支持内联汇编,C环境中可以任意进行开关中断的操作。综上所述,μC/OS-II完全可以移植到N1033A-S上运行。

  3. 移植步骤

  为了方便移植,大部分的μC/OS-II代码是用C语言写的,用户只需要用C语言和汇编语言写一些与处理器相关的代码就可以实现移植。这部分工作的内容包括:一个完成基本设置的头文件os_cpu.h、一个与处理器相关的汇编文件os_cpu_a.S 和一个与操作系统相关的C代码文件os_cpu_c.c.

  3.1在os_cpu.h中完成基本的配置和定义

  3.1.1. 定义与处理器相关的数据类型

  为保证可移植性,μC/OS-II没有直接使用C语言中的short、int和long等数据类型的定义,因为不同的处理器有不同的字长。对于N1033A-S这样的32位处理器,其数据类型定义实现如下:

  

  3.1.2. 定义中断禁止/允许宏

  做为实时内核,μC/OS-II需要先禁止中断再访问代码临界区,并且在访问完毕后重新允许中断。 μC/OS-II定义了两个宏来禁止和允许中断:OS_ENTER_CRITICAL()和OS_EXIT_CRITICAL()。在N1033A-S处理器上的实现代码如下

  

  GIE_SAVE 和GIE_RESTORE的实现如下:

  

  中断禁止时间是判断系统实时性的重要指标之一。中断禁止时间能否达到最短,不仅与操作系统的设计有关,还依赖于处理器结构和编译器产生的代码质量。从上面的实现代码看到,由于Andes处理器提供了setgie.d和setgie.e两条直接控制中断的开关的指令,整个禁止/允许中断的过程经过编译器产生的机器码只有3/2条,最大限度地减小了中断禁止时间。

  3.1.3. 定义栈增长方向

  μC/OS-II使用结构常量OS_STK_GROWTH来指定堆栈的增长方式,设置为0表示堆栈从下往上增长,设置为1表示从上往下增长。这里我们定义成后者,即堆栈的增长方向是从内存高地址向低地址方向递减并且堆栈指针总是指向栈顶数据:

  

  3.1.4.定义OS_TASK_SW()宏

  OS_TASK_SW()是一个宏,它在μC/OS-Ⅱ从低优先级任务切换到最高优先级任务时被调用的。任务切换只是简单的将处理器寄存器保存到将被挂起的任务的堆栈中,并且将更高优先级的任务从堆栈中恢复出来。可采用两种方式定义这个宏,使用软中断将中断向量指向OSCtxSW()函数;或者直接调用OSCtxSW()函数,这里我们采用后者(OSCtxSW()函数的实现将在后面介绍):

  

  3.2处理器相关部分汇编实现

  μC/OS-Ⅱ的移植需要用户编写三个最基本的汇编语言函数:OSStartHighRdy(),OSCtxSw(),OSIntCtxSw()。它们会共用一些代码,为了方便阅读将它们写在同一个汇编文件os_cpu_a.S中。

  3.2.1 OSStartHighRdy():运行优先级最高的就绪任务。

  OSStartHighRdy()函数是在OSStart()多任务启动之后,负责从最高优先级任务的TCB控制块中获得该任务的堆栈指针SP,并通过SP恢复CPU现场以启动最高优先级的任务执行。另外OSStartHighRdy()还必须在最高优先级任务恢复之前和调用OSTaskSwHook()之后设置OSRunning为TRUE.其实现代码如下:

  

3.2.2 OSCtxSw()和OSIntCtxSw()

  OSCtxSw()是任务优先级切换函数,它的作用是先将当前任务的CPU现场保存到该任务的堆栈中,然后获得最高优先级任务的堆栈指针,并从该堆栈中恢复此任务的CPU现场,使之继续执行,该函数就完成了一次任务切换。

  OSIntCtxSw()是中断级的任务切换函数。由于中断可能会使更高优先级的任务进入就绪态,因此为了让更高优先级的任务能立即运行,在中断服务子程序最后会调用OSIntCtxSw()做任务切换。这样做能够尽快的让高优先级的任务得到相应的处理,保证系统的实时性能。

  OSCtxSw()和OSIntCtxSw()都是用于任务切换的函数,其区别在于,在 OSIntCtxSw()中无需再保存处理器寄存器,因为在OSIntCtxSw()之前已发生中断,所以可以保证所有的处理器寄存器都被正确地保存到了被中断的任务的堆栈之中。OSCtxSw()和OSIntCtxSw()实现代码如下:

  

  

  N1033A-S处理器定义了四级(0-3)中断,在各级中断的转换时需要保存当前中断层级的寄存器。调用OSCtxSw()时,中断将由0级(即没有中断)转到1级,所以需要将第0级的寄存器PSW和PC保存到第1级的寄存器IPSW和IPC中。 CtxSave和CtxRestore两个宏用来保存和恢复任务上下文。需要保存或恢复的寄存器包括32个通用寄存器(R0-R31)的值、程序计数器(PC)的值以及处理器状态字寄存器(PSW)的值。宏IntlSwitch n通过修改PSW.INIT的值来切换中断层级。CtxSave和IntlSwitch的汇编实现如下(由于CtxRestore与CtxSave过程类似,这里不做赘述):

  

  

  3.3 移植C语言编写的几个与操作系统相关的函数

  μC/OS-Ⅱ有六个与CPU相关的函数:OSTaskStkInit()、 OSTaskCreateHook()、OSTaskDelHook()、OSTaskSwHook()、OSTaskStatHook()、 OSTimeTickHook(),它们被定义在ucos_ii.h中。其中唯一必须移植的函数是任务堆栈初始化函数OSTaskStkInit(),其它五个函数必须得声明但没必要包含代码。因此这里我们只介绍OSTaskStkInit(),其代码的实现如下:

  

  OSTaskStkInit()在任务创建时被调用,负责初始化任务的堆栈结构并返回新堆栈的指针,使得堆栈看起来就像刚发生过中断并将所有的寄存器保存到堆栈中的情形一样。除了要保存任务的地址、变量的指针以及处理器状态字的值外,Andes N1033A-S处理器还要求用户保存所有32个通用寄存器(R0-R31)、四个用户寄存器(d0.hi, d0.lo, d1.hi, d1.lo)。还有一点需要注意,在N1033A-S处理器中,堆栈指针的地址必须满足8Byte对齐,程序最后一段逻辑即将堆栈指针调整到正确的位置,这一点在编写其他代码例如在宏CtxSave中同样需要注意。

  4. 结语

  基于AndesStar?架构的优势,可以很容易的实现μC/OS-Ⅱ在N1033A-S处理器上的移植。不仅μC/OS-Ⅱ,其它嵌入式操作系统也可以很方便地移植到AndesCore?相应的处理器上,例如Nuclues、FreeRTOS以及Contiki。

  晶心科技利用 AndesCore? N1033A-S高效能的 Audio ISA 和 FPGA开发平台弹性的设计架构,基于各种RTOS,为客户提供了的丰富的软件资源(中间件、优化的函数库、应用实例等)以及完整的多媒体语音解决方案,从而帮助客户更快地在Andes平台上进行产品开发。

关键字:AndesCore  N1033A-S  处理器  μC/OS-II 编辑:神话 引用地址:用AndesCore N1033A-S处理器实现μC/OS-II的移植

上一篇:基于MCF52235 的RFID 通用开发平台设计
下一篇:MCU典型应用设计:STM32-F2在工厂自动化中的应用

推荐阅读最新更新时间:2023-10-12 20:49

凌华科技推出搭载第四代Intel Core处理器的多种计算机应用平台
嵌入式计算平台专业厂商——凌华科技宣布推出首批搭载英特尔新一代处理器的多种计算机应用平台,包含Express-HL 和 Express-HL2 (COM Express®)、NuPRO-E42 (PICMG 1.3)、cPCI-3510 (CompactPCI®) 以及Matrix MXE-5400。第四代Intel® Core™处理器(先前代号为“Haswell”)采用Intel® 8 系列芯片组,使得系统在低功耗下仍拥有高质量图像处理性能,适用于医疗、国防、交通和工业自动化应用领域。 ADLINK_Haswell_Products_PR 凌华科技模块化计算机产品全球事业部执行副总裁 Dirk F
[工业控制]
凌华科技推出搭载第四代Intel Core<font color='red'>处理器</font>的多种计算机应用平台
只是换个名 高通发布骁龙650/652处理器
     随着智能手机知识的不断普及,广大的手机用户对于手机参数变得越发敏感,这也使得芯片厂商开始为自家产品的名字花费更多的心思。12月17日,高通宣布将旗下的骁龙618及骁龙620两款处理器产品机型改名,二者将分别对应骁龙650以及骁龙652两个新型号。值得一提的是,采用全新编号的处理器相比于之前,在硬件方面并没有任何的变化。   12月17日,高通宣布将旗下的骁龙618及骁龙620两款处理器产品机型改名,二者将分别对应骁龙650以及骁龙652两个新型号。但需要说明的是,这两款采用全新编号的处理器相比于之前,在硬件方面并没有任何的变化。而高通方面对于这一举措给出的解释是 ,为了方便用户将其与现有的骁龙615/617等型号进
[手机便携]
联发科智能手机处理器基本参数对比一览表
        中国台湾的联发科( MTK) 公司的产品因为集成较多的多媒体功能和较低的价格在大陆手机公司和手机设计公司得到广泛的应用。更由于 MTK 的完工率较高,基本上在 60 %以上,这样手机厂商拿到手机平台基本上就是一个半成品,只要稍稍的加工就可上架出货了。这也正是许多黑手机都使用 MTK 的最主要的原因。下面我们就来盘点MTK智能手机主控芯片: MT6573 与 MT6513 区别不同点MT6573 是为 GSM + WCDMA 网络设计,双卡双待而 MT6513 只为 GSM 网络设计,不支持3G网络。 MT6515 是关于TD智能手机解决方案。支持Android 4.0 Ice
[手机便携]
Melfas采用微捷码的Talus和 FineSim SPICE进行基于ARM Cortex处理器的低功耗混合信号SoC的投片
芯片设计解决方案供应商微捷码(Magma®)设计自动化有限公司(纳斯达克代码:LAVA)日前宣布,电容式感应触控输入解决方案领域的领导者Melfas公司采用了FineSim™ SPICE电路仿真工具与Talus平台,包括Talus® RTL、Talus Vortex和Talus Power Pro,进行两款基于ARM® Cortex™处理器的下一代MCS-8000触控感应器芯片的设计实现。Melfas IC被广泛应用于移动电话、智能手机、MP3播放器、监控器及其它消费类电子产品中。Talus平台与微捷码支持基于ARM Cortex处理器的设计的RTL-to-GDSII 参考流程让Melfas能够较其之前实现流程取得更低超过5
[半导体设计/制造]
现实标准和32位MCU
当为下一代控制应用选择32位MCU时,必须考虑一点,就是面对某一实际的应用,不同供应商的处理器虽然在数据手册上看起来或多或少有些相似,但实际上是非常不同的。虽然数据手册中的规范和Dhrystone(处理器整型数计算能力)MIPS处理能力给出了一个粗略的评估标准,但必须考虑得更深入以保证MCU有足够的吞吐量和过载余量来满足当前和未来的应用需求。 运行编译EEMBC汽车标准代码的测试结果显示:看起来类似的三款MCU实际性能差别很大 例如,价格低廉、基于ARM的MCU一般具有很多资源,虽然它们中的许多是基于相同的CPU核,通常是没有高速缓存的ARM7TDMI处理器,但不同供应商的产品整体性能差别非常大。这主要是由于实现
[应用]
简要分析I2C总线在多机通信中的应用
  I2C(Inter Integrated Circuit)总线是Philips公司开发的一种双向两线主机总线,它能方便地实现芯片间的数据传输与控制。通过两线缓冲接口和内部控制与状态寄存器,可方便地完成多机间的非主从通信或主从通信。基于I2C总线的多机通信电路结构简单、程序编写方便,易于实现系统软硬件的模块化和标准化。 本文给出了基于I2C总线的多机通信调度指挥系统方案,讨论了系统的软硬件设计。 1 系统硬件设计 本调度指挥系统由主机和调度操作台两部分组成,工作原理如图1所示,两者间通过RS422总线实现较长距离的数据传送。主机和操行台内部均采用分散多处理器控制,处理器间采用I2C总线进行数据通信。   主
[应用]
联发科明年全线普及12nm:暗示造7nm iPhone基带
     据报道,在27日的联发科年终媒体宴会上,联发科共同执行长蔡力行、总经理陈冠州等均现身,并对新品做了公开。   除了陈冠州提到的两款P系列新品(预计是P40/P70),共同执行长蔡力行也对处理器制程做了说明。   蔡力行曾是台积电24年的老人,位居总CEO,是张忠谋“一人之下、万人之上”的人物,后来跳槽到运营商,并在今年6月履新联发科共同执行长,权力仅次于董事长蔡明介。   蔡力行直言不讳,他们和台积电关系甚笃,目前在研的新品主要以12nm为主。   关于7nm,他表示台积电已经预订了3款,但并不完全是手机处理器。   细细品味这番表态,暗示的信息还是非常丰富的:   1、Helio P40/P70有望从16nm升级为改良
[手机便携]
银牛视觉AI处理器采用芯原创新的ISP IP
芯原面向机器人、AR/VR/MR等应用提供优化的IP解决方案 2023年9月21日,中国上海—— 芯原股份今日宣布3D视觉与人工智能(AI)解决方案提供商银牛微电子(简称“银牛”)在其量产的NU4100视觉AI处理器中采用了芯原低延迟、低功耗的双通道图像信号处理器(ISP)IP,为机器人、增强现实(AR)/虚拟现实(VR)/混合现实(MR)、无人机等多种应用领域带来了优秀的图像和视觉体验。 银牛NU4100是一款高度集成的单芯片视觉AI处理器,具备高质量的3D深度感知、优化的AI处理和片上基于视觉的实时定位与建图(VSLAM),并可以低功耗、低延迟地处理来自多个4K摄像头的大量数据。作为一款功能强大的视觉处理器,NU
[嵌入式]
银牛视觉AI<font color='red'>处理器</font>采用芯原创新的ISP IP
小广播
最新模拟电子文章
换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved