嵌入式Nucleus PLUS在S3C2410A上移植的实现
式(und)。在堆栈初始化时,应对S3C2410A的每种运行模式分别设置堆栈,一般堆栈的大小可以设置为4KB。另外还要对HISR(High-Level InterruptService 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控制寄存器M P L L C O N,将S3C2410A的主时钟FCLK设置为266MHz;
4.设置分频器寄存器CLKdivN使HCLK=FCLK/2,PCLK=HCLK/2。
设置系统可用存储区的首地址
在板级初始化程序(I N T-Initialize)结束后,系统开始调用操作系统初始化程序(INC-Initialize)。这时需要设置可供用户使用的存储器首地址first-available-memory,令fiT St-available-memorY=IImage$$bss$$zI$$LimitI,其中IImage$$bss$$ZI$$Limitl是ARM链接器生成的可执行映像文件中初始化为0段(ZI段)的终止地址。修改后调用程序INC_Initialize(VOID*first_available_memory),即进入操作系统初始化。Nucleus PLUS的移植工作也宣告结束。
结语
本文详细介绍了Nucleus PLUS在S3C2410A上的移植过程和方法,移植后的代码在深圳优龙科技有限公司的FS2410开发板上运行正常,可以实现多任务调度、任务间通信和中断响应。因为移植过程是针对特定的硬件环境的,所以移植中要采用ARM汇编语言,这是嵌入式操作系统移植的难点。移植的重点是建立中断向量表、创建操作系统的系统时钟中断和设置系统堆栈。本文论述的移植方法对其他嵌入式操作系统在ARM微处理器上的移植过程也有一定的借鉴价值。
Nucleus PLUS S3C2410A 移植 相关文章:
- 多任务操作系统Nucleus简介(04-21)
- Nucleus嵌入式程序到Linux的移植方案(07-28)
- 基于嵌入式环境中Nucleus到Linux的程序移植方案(08-27)
- NUCLEUS PLUS 实时多任务操作系统开发环境配置(08-27)
- PMON的软件架构由Nucleus移植到Linux设计方案(12-08)
- 用MAX+PLUSⅡ开发Altera CPLD(06-06)