"基于ARM微处理器的uC/OS的移植设计" 本文介绍了基于ARM微处理器的μC/OS-II的移植,并对其进行扩展,主要包括内核、lwip、μC/GUI的移植。μC/OS-II是一个公开源代码的占先式多任务的微内核RTOS,其特点是代码结构清晰、明了,注释详尽,组织有条理,可移植性好,可裁剪,可固化。 μC/OS-II的移植需要满足以下要求:(1)处理器的C编译器可以产生可重入代码;(2)可以使用C调用进入和退出临界区代码;(3)处理器必须支持硬件中断,并且需要一个定时中断源;(4)处理器需要能够容纳一定数据的硬件堆栈;(5)处理器需要有能够在CPU寄存器与内核和堆栈交换数据的指令。基于ARM7的S3C44B0X处理器完全满足上述要求。 在移植μC/OS-II时,需要修改与处理器相关的代码,包括os_cpu.h中设置一个常量来标识堆栈增长方向、声明几个用于开关中断和任务切换的宏、针对具体处理器的字长重新定义一系列数据类型、os_cpu_a.asm需要改写4个汇编语言的函数、os_cpu_c.c需要用c语言编写6个简单函数、修改主头文件include.h,将上面的三个文件和其他自己的头文件加入。 此外,LwIP的移植也非常重要,μC/OS-II本身没有TCP/IP协议栈,通过把开放源代码的TCP/IP协议栈LwIP移植到μC/OS-II上来,就获得了一套可免费研究、学习的嵌入式网络软件平台。Lwip为了适应不同的操作系统,在代码中没有使用和某一个操作系统相关的系统调用和数据结构,而是在lwip和操作系统之间增加了一个操作系统封装层。操作系统封装层为操作系统服务(定时、进程同步、消息传递)提供了一个统一的接口。 在lwip中进程同步使用semaphone和消息传递采用”mbox”。操作系统封装层的原代码在…/lwip/src/core/sys.c中。而和具体的操作系统相关的代码在../lwip/src/arch/sys_arch.c中。操作系统封装层的主要函数包括void sys_init(void)、sys_thread_t sys_thread_new(void (* function)(void *arg), void *arg,int prio)、sys_mbox_t sys_mbox_new(void)、void sys_mbox_free(sys_mbox_t mbox)、void sys_mbox_post(sys_mbox_t mbox, void *data)、void sys_mbox_fetch(sys_mbox_t mbox, void msg)、sys_sem_t sys_sem_new(u8_t count)、void sys_sem_free(sys_sem_t sem)、void sys_sem_signal(sys_sem_t sem)、void sys_sem_wait(sys_sem_t sem)、void sys_timeout(u32_t msecs, sys_timeout_handler h, void *arg)等。 本文为基于ARM微处理器的uC/OS的移植设计提供了一个详细的指南,包括μC/OS-II的特点、移植要求、移植步骤、LwIP的移植等内容,为嵌入式系统的开发和研究提供了重要的参考价值。
- 粉丝: 7
- 资源: 966
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助