×

Nucleus PLUS在S3C2410A上的移植过程和方法

消耗积分:1 | 格式:rar | 大小:0.4 MB | 2017-11-06

分享资料个

 Nucleus PLUS是美国ATI 公司为实时性要求较高的嵌入式系统应用设计的操作系统内核。约95%的Nucleus PLUS代码用ANSI C语言编写,因此,非常便于移植并能够支持大多数类型的微处理器,如X86、68K、PowerPC、MIPS、ARM等。经过截减编译后,Nucleus PLUS 核心代码区一般不超过20KB大小。 同时提供TCP/IP网络、图形界面Grafix、文件系统File等模块。还有一个特点就是免费提供源代码,有利于节省开发费用。
  S3C2410A是三星公司推出的基于ARM920T内核高性能低功耗16/32位RISC微控制器,内部集成了丰富的系统外围控制器。配合Nucleus PLUS操作系统可方便地开发出适于手持设备和各种低功耗产品的应用程序,加快新产品的上市时间。
  Nucleus PLUS启动过程
  嵌入式实时操作系统内核Nucleus PLUS的启动过程如图1所示。其中板级初始化(INT_Initialize)主要是完成中断向量表、系统堆栈、时钟中断等基本硬件初始化;操作系统初始化(INC_Initialize)主要是完成邮箱、队列、管道、信号量、事件集等软件组件初始化;应用程序初始化(Application_Initialize (first_available_memory))主要是完成用户定义的应用程序初始化,如创建内存池,创建任务、创建信号量、创建中断、编写用户应用程序等。移植的过程中,需要修改的是板级初始化(INT_Initialize)这部分内容,它是由ARM汇编语言编写的,下面详细叙述。
  Nucleus PLUS在S3C2410A上的移植过程和方法
  图1 Nucleus PLUS 启动过程
  Nucleus PLUS移植过程
  INT-Reset子程序修改
  INT_Reset是Nucleus PLUS启动时的程序入口,因为根据ARM微处理器的体系结构,在系统硬件上电或复位后,ARM所执行的第一条指令在地址0x00000000,即ARM的复位异常(Reset)向量地址,所以在这个地址要放置一个跳转指令:B INT_Reset 。
  在INT_Reset这个子程序中放置的是硬件初始化程序,完成两个功能:
  1. 改变ARM工作模式为管理模式(Supervisor Mode),管理模式是ARM提供给操作系统使用的一种保护模式;
  2. 屏蔽FIQ和IRQ中断,因为在整个系统初始化的过程中,不能被中断打断,只有在中断服务子程序初始化结束后,才可以打开中断,进而响应中断。
  INT_Reset
  MRS R1,CPSR
  BIC R1,R1,#MODE_MASK
  ORR R1,R1,#SUP_MODE
  ORR R1,R1,#LOCKOUT
  MSR CPSR_cxsf,R1
  建立异常向量表和中断向量表
  根据ARM的体系结构,ARM有7种类型的异常(Exception),每种异常都有各自入口地址,即异常向量表(Exception Vectors)。异常向量表放置在从0X00000000地址开始,连续32字节的空间内。S3C2410A共有56个中断源,但有些中断源共用一个中断向量,所以只要求创建包含32个中断源的中断向量表。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

评论(0)
发评论

下载排行榜

全部0条评论

快来发表一下你的评论吧 !