新闻中心

EEPW首页>嵌入式系统>设计应用> μC/OS-II在ARM平台上移植的深入探讨

μC/OS-II在ARM平台上移植的深入探讨

作者: 时间:2010-07-26 来源:网络 收藏
因为S3C2410在进入ISR模式后,自动屏蔽ISR中断,所以粗存在中断嵌套,可以表明2个全部变量ISR_LR和ISR_SPSR用于保存ISR中断发生之时处理器的lr和spsr寄存器。其代码的特别之处在于,在ISR中断处理过程中通过修改lr寄存器,而使处理器在退出ISR模式时能根据任务的需要返回至ISR中断发生之处或者代码指定地点。在代码指定地点,可以保存上次中断发生时被中断任务的处理器的所有寄存器数据。这里需要注意一点,当处理器退出ISR模式时跳转到Saveregister处开始执行命令,需要提前将Saveregister处的地址加上4,然后赋值给lr寄存器。因为在ISR退出时,需要将lr减去4再赋值给程序计数器pc。
4 S3C2410启动代码和μ的融合
 本文1.1节已经介绍过,S3C2410的启动代码开始部分是汇编语言的初始化过程,然后跳转到main()函数。融合的工作就从改造S3C2410的main()函数和μ的main()函数(在test.c中)开始。在S3C2410的main()函数中,保留原启动代码中关于端口、内存、外部设备初始化代码,删去跳转到Linux操作系统的代码;在μ的test.c文件的main()函数中,删去一切与X86内核有关的初始化代码和输入输出函数代码(因为这部分代码在S3C2410的启动代码中已经实现),并将与 μC/OS-II内核有关的3个函数OSInit()、OSTaskCreate(…)、OSStart()复制到S3C2410的main()函数中,同时删去μC/OS-II的test.c文件。融合后的main()函数主要代码如下:
 ChangeClockDivider(1, 1); //1:2:4
   ChangeMPllValue(161,3,1); //FCLK=203.0 MHz
   SetClockDivider(1, 1);
   SetSysFclk(FCLK_203M);
   Port_Init();
   Isr_Init();
   Uart_Init(0, 115200);
   Uart_Select(0);
   MMU_Init(); //MMU 初始化
EnableModuleClock(CLOCK_ALL);
   rMISCCR = ~(0x3007);
OSInit();
OSTaskCreate(TaskStart,……, 0);
   OSStart();
至此,处理器已执行完S3C2410的启动代码,并开始执行μC/OS-II内核代码。当然,要实现多任务,处理器的中断必须是打开的。这个工作在OSStart ()函数中完成,在执行OSStartHighRdy之前,要按照系统的需求完成处理器的中断初始化工作,同时打开中断。至此,融合工作基本完成,剩下的工作就是按照系统的需求在μC/OS-II的TaskStart(…)函数中自由添加实际工作所需的任务了。
在本文所述系统中,在μC/OS-II所带3个系统任务的基础上添加了3个任务Task1、Task2和Task3,方法是在OSStatInit( )之前添加OSTaskCreate(Task1,…)等代码,然后按下述格式和自己的需求编写Task1、Task2和Task3函数。代码为:
void Task1(void *data)
  {
   while(1) { ;任务代码 }
  }
因篇幅所限,无法详述在融合过程中遇到的所有问题,尤其是在ADSv1.2环境下编译、调试过程出现的语法问题和各种细节问题。
随着科技的发展和实际任务复杂性的逐步增加,传统的单片机前后台编程模式渐渐不能满足实际应用的要求。在嵌入式应用开发中使用嵌入式操作系统已经成为一种趋势,本文在S3C2410开发板上将原有的引导程序和μC/OS-II操作系统结合在一起,开发出能自引导的μC/OS-II操作系统,该系统除了3个系统任务外,还自带3个实际任务,在ADSV1.2环境下编译、调试,并在板卡上成功运行,对μC/OS-II在上的有一定借鉴意义。
参考文献
[1] 任哲,潘树林,房红征,编著.嵌入式操作系统基础 μC/OS-II和Linux[M].北京:北京航空航天大学出版社,
2007.
[2] 韩山,郭云,付海艳,编著.微处理器应用开发技术详解与实例分析[M].北京:清华大学出版社,2007:284-286.
[3] 蒋维. 基于S3C2410嵌入式系统的Bootloader分析与设计[J].电子工程师,2008(10).

本文引用地址://m.amcfsurvey.com/article/151716.htm

tcp/ip相关文章:tcp/ip是什么



上一页 1 2 3 下一页

评论


相关推荐

技术专区

关闭