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

嵌入式实时操作系统Nucleus PLUS在S3C2410A上移植的实现

时间:06-09 来源:电子设计应用 点击:


图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

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

网站地图

Top