新闻中心

EEPW首页 > 嵌入式系统 > 设计应用 > 嵌入式Nucleus PLUS在S3C2410A上移植的实现

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

作者:时间:2012-11-01来源:网络收藏

通过配置的存储器控制器来初始化目标板的外围存储器。主要是设置存储器类型、总线宽度、信息,重点是对SDRAM进行设置,如列地址数、信号线时序等。

堆栈初始化

C和ARM汇编源文件经过ARM开发环境ADS1.2编译链接后,生成的映像(Image)文件包含RO(只读代码、数据段)、RW(可读写数据段)和ZI(将要初始化为0的段)三个输出段。当映像文件加载到flash中的时,RO段和RW段在Flash中的位置见图2(a),其中IImage$$RO$$Basel是RO段的开始地址,也是包含RO输出段的加载和执行地址,可以在ARM Linker中设置,即-r0-base的值,从flash启动时,这个值设置为0x00000000,ZI段不需要加载到flash中。当硬件电路复位后,映像文件中的RW段需要从Flash中拷贝到SDRAM内,同时要将ZI输出段的内容需要用"0"进行初始化,此时输出段在存储区内的位置见图2(b)。IImage$$RW$$Basel是包含RW输出段的执行地址,这个地址值也需要在ARM Linker中设置,即-rw-base的值,一般将-rW-base的值设置到SDRAM的地址范围内,在这里设置为S D R A M的首地址0x30000000。在 的过程中要编写代码,完成以上操作过程。

ARM有7种运行模式分别为:用户模式(usr)、快速中断模式(fiq)、外部中断模式(irq)、管理模式(svc)、数据访问中止模式(abt)、系统模式(sys)和未定义指令中止模式(und)。在堆栈初始化时,应对的每种运行模式分别设置堆栈,一般堆栈的大小可以设置为4KB。另外还要对HISR(High-Level InterruptService Routines)堆栈的起始地址、大小和优先级进行设置,它的堆栈大小可设为2KB。

中断初始化

1.将 异常中断向量表从ROM中复制到RAM中,即:将地址为0x00000000的异常中断向量表复制到地址0x33FFFF00处,这样在中断响应的过程中就可以从RAM中提取异常中断向量表,提高中断的响应速度;

2.关闭看门狗时钟,创建所有IRQ中断的中断向量表;

3.清除所有中断的判断位。

系统时钟中断初始化

因为Timer4是用来作为 的系统时钟的,所以在嵌入式实时操作系统的过程中,一定要对它的时钟中断进行配置,配置过程如下:

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

分频器相关文章:分频器原理
电能表相关文章:电能表原理

上一页 1 2 下一页

关键词: Nucleus PLUS S3C2410A 移植

评论


相关推荐

技术专区

关闭