微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > 嵌入式Nucleus PLUS在S3C2410A上移植的实现

嵌入式Nucleus PLUS在S3C2410A上移植的实现

时间:11-01 来源:互联网 点击:

式(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微处理器上的移植过程也有一定的借鉴价值。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top