嵌入式实时操作系统Nucleus PLUS在S3C2410A上移植的实现
图2 加载和执行时存储区分布
ARM有7种运行模式分别为:用户模式(usr)、快速中断模式(fiq)、外部中断模式(irq)、管理模式(svc)、数据访问中止模式(abt)、系统模式(sys)和未定义指令中止模式(und)。在堆栈初始化时,应对S3C2410A的每种运行模式分别设置堆栈,一般堆栈的大小可以设置为4KB。另外还要对HISR(High-Level Interrupt Service Routines)堆栈的起始地址、大小和优先级进行设置,它的堆栈大小可设为2KB。
中断初始化
1. 将Nucleus PLUS异常中断向量表从ROM中复制到RAM中,即:将地址为0x00000000的异常中断向量表复制到地址0x33FFFF00处,这样在中断响应的过程中就可以从RAM中提取异常中断向量表,提高中断的响应速度;
2. 关闭看门狗时钟,创建所有IRQ中断的中断向量表;
3. 清除所有中断的判断位。
系统时钟中断初始化
因为Timer4是用来作为Nucleus PLUS的系统时钟的,所以在嵌入式实时操作系统移植的过程中,一定要对它的时钟中断进行配置,配置过程如下:
1. 设置S3C2410A的内部定时器Fimert定时器的中断周期为10ms;
2. 建立Timer4的中断向量,用Timer4时钟作为Nucleus PLUS的系统节拍时钟;
3. 初始化S3C2410A的MPLL控制寄存器MPLLCON,将S3C2410A的主时钟FCLK设置为266MHz;
4.设置分频器寄存器CLKdivN使HCLK = FCLK/2,PCLK = HCLK/2。
设置系统可用存储区的首地址
在板级初始化程序(INT_ Initialize)结束后,系统开始调用操作系统初始化程序(INC_Initialize)。这时需要设置可供用户使用的存储器首地址first_available_memory,令first_available_memory= |Image$$bss$$ZI$$Limit|,其中|Image$$bss$$ZI$$Limit|是ARM链接器生成的可执行映像文件中初始化为0段(ZI段)的终止地址。修改后调用程序INC_Initialize(VOID *first_available_memory),即进入操作系统初始化。Nucleus PLUS的移植工作也宣告结束。
结语
本文详细介绍了Nucleus PLUS在S3C2410A上的移植过程和方法,移植后的代码在深圳优龙科技有限公司的FS2410开发板上运行正常,可以实现多任务调度、任务间通信和中断响应。因为移植过程是针对特定的硬件环境的,所以移植中要采用ARM汇编语言,这是嵌入式操作系统移植的难点。移植的重点是建立中断向量表、创建操作系统的系统时钟中断和设置系统堆栈。本文论述的移植方法对其他嵌入式操作系统在ARM微处理器上的移植过程也有一定的借鉴价值。
参考文献
1.杜春雷编著.《ARM体系结构与编程》.北京.清华大学出版社.2003.2
2.ARM Limited. ARM920T technical reference manual. 2000
3.Samsung Electronics. S3C2410A RISC Microprocessor Reference Manual.2003
4.Accelerated Technology,Inc.,Nucleus PLUS Reference Manual.2000
5.贺磊.一种嵌入式实时操作系统Nucleus PLUS.电信交换.2001.1
实时操作系统 Nucleus PLUS S3C2410A 移植 相关文章:
- 嵌入式实时操作系统ECOS在S3C2510上的移植实现(04-21)
- 嵌入式系统便携式数据采集装置设计(06-19)
- VxWorks下AD/DA驱动系统设计及测试(01-11)
- 基于ARM7支持触摸屏和实时操作系统的开发与应用(03-06)
- Coldfire内核的MCU通用工业控制平台(08-09)
- 基于ARM的人体生理参数监护系统的设计(11-28)