详细的S3C2440的ucOSII和ucGUI移植过程

详细的S3C2440的ucOSII和ucGUI移植过程

ID:44872262

大小:1.01 MB

页数:11页

时间:2019-11-01

详细的S3C2440的ucOSII和ucGUI移植过程_第1页
详细的S3C2440的ucOSII和ucGUI移植过程_第2页
详细的S3C2440的ucOSII和ucGUI移植过程_第3页
详细的S3C2440的ucOSII和ucGUI移植过程_第4页
详细的S3C2440的ucOSII和ucGUI移植过程_第5页
资源描述:

《详细的S3C2440的ucOSII和ucGUI移植过程》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、基于S3C2440的uc/OS-II和uc-GUI移植和应用实验目的:1.熟悉ARM体系结构2.深入学习操作系统原理3.增强动手实践能力实验平台:ARM9体系结构处理器—S3C2440飞凌嵌入式开发板—FL2440(由于本实验大部分在宿舍完成,故采用了自己的嵌入式开发板作为平台,硬件与实验箱基本相似)功能实现主要功能是利用uc/OS-II的多任务调度功能和uc-GUI提供的图形函数接口,编写一个Uart传输测试程序。通过Uart协议,传输PC机键盘输入的数据,在开发板的LCD上显示出来。同时实现了字符串移动和现实系统信息的附加功能。注:本实验中,移植代码部分参考了网络上的一些相关文章,应

2、用程序部分全部由自己编写完成。实验原理:1.背景介绍(1)ARM9(S3C2440) ARM9系列处理器是英国ARM公司设计的主流嵌入式处理器。S3C2440是三星公司生产的基于ARM9体系结构的处理器,能够运行linux、wince等大型操作系统,构成非常典型的cpu+os嵌入式系统。[1](2)uc/OS-IIuc/OS是一种免费公开源代码、结构小巧、具有可剥夺实时内核的实时操作系统。uc/OS-II是一个实时操作系统内核,它包含了任务调度,任务管理,时间管理,内存管理和任务间的通信和同步等基本功能。是一个基于优先级调度的抢占式的实时内核,并在这个内核之上提供最基本的系统服务,如信号

3、量,邮箱,消息队列,内存管理,中断管理等。(3)uc-GUIuC/GUI是Micrium公司开发的通用的嵌入式用户图形界面软件。它给任何使用图形LCD的应用程序提供独立于处理器和LCD控制器之外的有效的图形用户接口。可以应用于单一任务环境,也可以应用于多任务环境中。uC/GUI能够应用于任何LCD控制器和CPU的任何尺寸的物理显示或者模拟显示中。2.移植原理(1)uc/OS-II移植为了方便移植,大部分的uC/OSII代码是用c语言写的,但仍需要用c和汇编语言写一些与处理器相关的代码,这是因为uC/OSII在读写处理器寄存器时只能通过汇编语言来实现。由于uC/OSII在设计时就已经充分考

4、虑了可移植性,所以uC/OSII的移植相对来说是比较容易的。移植主要涉及的文件。(具体移植代码见后文附录)(a)设置与处理器及编译器相关的代码[OS_CPU.H]这部分代码主要实现一些数据类型的定义。不同的编译器会使用不同的字节长度来表示同一数据类型,所以要定义一系列数据类型以确保移植的正确性。下面是uC/OSII定义的一部分数据类型。typedefunsignedcharBOOLEAN;/*布尔型数据类型*/  typedefunsignedcharINT8U;/*无符号8位*/  typedefsignedcharINT16S;/*带符号8位*/  typedefunsignedin

5、tINT16U;/*无符号16位*/……uC/OSII需要先关中断再访问临界区的代码,并且在访问完后重新允许中断。uC/OSII定义了两个宏来禁止和允许中断:OS_ENTER_CRITICAL()和OS_EXIT_CRITICAL(),本移植实现这两个宏的汇编代码。  #defineOS_ENTER_CRITICAL()__asm{blARMDisableInt}//ARMDisableInt()#defineOS_EXIT_CRITICAL()__asm{blARMEnableInt}//ARMEnableInt()其中ARMDisableInt和ARMEnableInt两个函数在24

6、40slib.s里面实现(b)用C语言实现与处理器任务相关的函数[OS_CPU_C.C]这部分代码最主要的功能是实现一个系统的堆栈初始化函数OS_STK*OSTaskStkInit(void(*task)(void*pd),void*pdata,OS_STK*ptos,INT16Uopt)其他的一些操作系统的钩子函数也在这里定义,如:voidOSTaskCreateHook(OS_TCB*ptcb);等等,用来实现操作系统的扩展功能。由于本实验没有使用到这些钩子函数,故在这里只定义成空函数即可。(c)处理器相关部分汇编实现这部分代码是移植的核心内容,主要实现操作系统的任务调度等核心功能。

7、a)OSStartHighRdy()  该函数在OSStart()多任务启动之后,负责从最高优先级任务的TCB控制块中获得该任务的堆栈指针sp,通过sp依次将CPU现场恢复,此时系统就将控制权交给用户创建的该任务的进程,直到该任务被阻塞或者被其他更高优先级的任务抢占了CPU。该函数仅仅在多任务启动时被执行一次,用来启动第一个,也就是最高优先级的任务执行。  b)OSCtxSw()  该函数是任务级的上下文切换函数,在任务因为被阻塞而

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。