没有合适的资源?快使用搜索试试~ 我知道了~
首页uCOS-II在ARM微处理器上的移植及编译
uCOS-II在ARM微处理器上的移植及编译
需积分: 10 135 浏览量
更新于2023-03-03
评论 1
收藏 284KB DOC 举报
1.了解uCOS-II内核的主要结构。 2.掌握将uCOS-II内核移植到ARM920T处理器上的基本方法。 3. 将uCOS-II内核移植到ARM920T微处理器上。 4.编写两个简单任务,在超级终端上观察两个任务的切换。
资源详情
资源评论
资源推荐

uCOS-II 在 ARM 微处理器上的移植及编译
一. 实验内容
1.了解 uCOS-II 内核的主要结构。
2.掌握将 uCOS-II 内核移植到 ARM920T 处理器上的基本方法。
3.将 内核移植到 微处理器上。
.编写两个简单任务,在超级终端上观察两个任务的切换。
二、实验原理
所谓移植,指的是一个操作系统可以在某个微处理器或者微控制器上运行。虽然
的大部分源代码是用 语言写成的,仍需要用 语言和汇编语言完成一些与处理
器相关的代码。比如: 在读写处理器、寄存器时只能通过汇编语言来实现。因为
在设计的时候就已经充分考虑了可移植性,所以, 的移植还是比较容易
的。
要使 可以正常工作,处理器必须满足以下要求:
.处理器的 编译器能产生可重入代码。
可重入的代码指的是一段代码(如一个函数)可以被多个任务同时调用,而不必担心
会破坏数据。也就是说,可重入型函数在任何时候都可以被中断执行,过一段时间以后又
可以继续运行,而不会因为在函数中断的时候被其他的任务重新调用,影响函数中的数据
下面的两个例子可以比较可重入型函数和非可重入型函数:
程序 :可重入型函数
!
"#$
"#%$
%$
%"#$
&
程序 :非可重入型函数
"#$
!
"#%$
%$
%"#$
&
程序 中使用的是局部变量 "# 作为变量。通常的 编译器,把局部变量分配在栈
中。所以,多次调用同一个函数,可以保证每次的 "# 互不受影响。而程序 中 "#
定义的是全局变量,多次调用函数的时候,必然受到影响。
代码的可重入性是保证完成多任务的基础,除了在 程序中使用局部变量以外,还需

要 编译器的支持。笔者使用的是 ' 的集成开发环境,均可以生成可重入的代码。
.在程序中可以打开或者关闭中断。
在 中,可以通过 ()*)(+ 或者 (),(+ 宏来控
制系统关闭或者打开中断。这需要处理器的支持在 的处理器上,可以设置相应
的寄存器来关闭或者打开系统的所有中断。
-.处理器支持中断,并且能产生定时中断(通常在 ././ 之间)。
是通 过 处 理 器 产 生 的 定 时 器 的 中 断 来 实 现 多 任 务 之 间 的 调 度 的 。 在
的处理器上可以产生定时器中断。
.处理器支持能够容纳一定量数据的硬件堆栈。
0.处理器有将堆栈指针和其它 12 寄存器存储和读出到堆栈(或者内存)的指令。
进行任务调度的时候,会把当前任务的 12 寄存器存放到此任务的堆栈中,
然后,再从另一个任务的堆栈中恢复原来的工作寄存器,继续运行另一个任务。所以,寄
存器的入栈和出栈是 多任务调度的基础。
图 说明了 3 的结构以及它与硬件的关系。

图 硬件和软件体系结构
处 理 器 完 全 满 足 上 述 要 求 。 接 下 来 将 介 绍 如 何 把 移 植 到
#4 公司的一款 的嵌入式处理器——-, 上。
三.实验步骤
.该实验的文件分为两类,其一是 21 目录下的系统初始化、配置等文件,其
二是 的全部源码,567 目录下的 - 个文件是和处理器架构相关的。
.设置 (687 中与处理器和编译器相关的代码
""94"675:+)*$
""94"675*;2$
""94"675*;$
""94"*<2$
""94"*<$
""94"=4*-2$
剩余12页未读,继续阅读










安全验证
文档复制为VIP权益,开通VIP直接复制

评论0