首页
|
新闻
|
新品
|
文库
|
方案
|
视频
|
下载
|
商城
|
开发板
|
数据中心
|
座谈新版
|
培训
|
工具
|
博客
|
论坛
|
百科
|
GEC
|
活动
|
主题月
|
电子展
注册
登录
论坛
博客
搜索
帮助
导航
默认风格
uchome
discuz6
GreenM
»
嵌入式技术
» uCOS II在SkyEye上的移植分析 03
返回列表
回复
发帖
发新话题
发布投票
发布悬赏
发布辩论
发布活动
发布视频
发布商品
uCOS II在SkyEye上的移植分析 03
发短消息
加为好友
samwalton
当前离线
UID
872238
帖子
6518
精华
0
积分
3259
阅读权限
90
在线时间
309 小时
注册时间
2012-3-1
最后登录
2014-7-5
论坛元老
UID
872238
1
#
打印
字体大小:
t
T
samwalton
发表于 2013-11-19 22:33
|
只看该作者
uCOS II在SkyEye上的移植分析 03
3.arm寄存器:( register )
arm处理器一共有37个寄存器,其中31个是通用寄存器,包括一个程序计数器 PC。另外6个就是上面提到的程序状态寄存器。
a)通用寄存器:
i.R0-R7:与所有处理器模式无关的寄存器,可以用作任何用途。
ii.R8-R14:与处理器模式有关的寄存器,在不同的模式下,对应到不同的物理寄存器。其中 R13又叫做 sp,一般用于堆栈指针。R14又叫做lr,一般用于保存返回地址。这两个寄存器在每种异常模式下都对应到不同的物理寄存器上,例如lr_irq、lr_svc、lr_fiq 等。
iii.R15:又叫做程序计数器,即pc,所有的模式下都使用同一个 pc。
b)状态寄存器:
i.CPSR:当前程序状态寄存器,所有的模式下都使用同一个 CPSR。
ii.SPSR:保存的程序状态寄存器,每种异常模式下都有自己的SPSR,一共有5种SPSR,即SPSR_irq、SPSR_fiq、SPSR_svc、SPSR_abt、SPSR_und。usr和sys 态下没有 SPSR 。
所有的arm寄存器的命名和含义,可以用下面的这张表来说明,其中相同命名的都是同一个物理寄存器,不同命名的寄存器都对应不同的物理寄存器,如图4所示。
图4uCOS-II 移植工作介绍
uCOS-II 实际上可以简单地看作是一个多任务的调度器,在这个任务调度器之上完善并添加了和多任务操作系统相关的一些系统服务,如信号量、邮箱等。它的90%的代码都是用C语言写的,因此只要有相应的C语言编译器,基本上就可以直接移植到特定处理器上,这也是uC/OS-II具有良好的可移植性的原因。移植工作的绝大部分都集中在多任务切换的实现上,因为这部分代码主要是用来保存和恢复处理器现场(即相关寄存器),因此不能用C语言,只能使用特定的处理器汇编语言完成。
uCOS-II的全部源代码量大约是6000-7000行,一共有15个文件。将 uC/OS-II 移植到ARM处理器上,需要完成的工作也非常简单,只需要修改三个和arm体系结构相关的文件,代码量大约是500行。以下分别介绍这三个文件的移植工作:
1.OS_CPU.H 文件
数据类型定义
这部分的修改是和所用的编译器相关的,不同的编译器会使用不同的字节长度来表示同一数据类型,比如int,同样在x86平台上,如果用GNU的gcc 编译器,则编译为4 bytes,而使用MS VC++则编译为2 bytes。我们这里使用的是 GNU 的 arm-elf-gcc,这是一个免费并且开放源码的编译器。相关的数据类型的定义如下,如图5所示。
图5
堆栈单位
因为处理器现场的寄存器在任务切换时都将会保存在当前运行任务的堆栈中,所以OS_STK 数据类型应该是和处理器的寄存器长度一致的。
图6
堆栈增长方向
堆栈由高地址向低地址增长,这个也是和编译器有关的,当进行函数调用时,入口参数和返回地址一般都会保存在当前任务的堆栈中,编译器的编译选项和由此生成的堆栈指令就会决定堆栈的增长方向。
图7
宏定义
包括开关中断的宏定义,以及进行任务切换的宏定义。
图8
收藏
分享
评分
回复
引用
订阅
TOP
返回列表
电商论坛
Pine A64
资料下载
方案分享
FAQ
行业应用
消费电子
便携式设备
医疗电子
汽车电子
工业控制
热门技术
智能可穿戴
3D打印
智能家居
综合设计
示波器技术
存储器
电子制造
计算机和外设
软件开发
分立器件
传感器技术
无源元件
资料共享
PCB综合技术
综合技术交流
EDA
MCU 单片机技术
ST MCU
Freescale MCU
NXP MCU
新唐 MCU
MIPS
X86
ARM
PowerPC
DSP技术
嵌入式技术
FPGA/CPLD可编程逻辑
模拟电路
数字电路
富士通半导体FRAM 铁电存储器“免费样片”使用心得
电源与功率管理
LED技术
测试测量
通信技术
3G
无线技术
微波在线
综合交流区
职场驿站
活动专区
在线座谈交流区
紧缺人才培训课程交流区
意见和建议