全文预览已结束
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
基于C/OS的嵌入式系统应用开发研究摘要:本文介绍了嵌入式系统的概念,分析了C/OS的内核结构,并详细介绍了在具有ARM体系结构的S3C44B0微处理器上进行C/OS操作系统的移植和应用程序及驱动程序的开发。 关键词:嵌入式系统c/os微处理器 Abstract: The paper bring forward the conception of Embedded System ,Analyse the core kere of c/os ,moreover detailedly introduce grafting the C/OSs operating system on the ARMs architectural structure of S3C44B0s microprocessor and empolder on application and driver program 。Key words: Embedded System c/os MicroProcessor一、嵌入式系统概述嵌入式系统是将先进的计算机技术、半导体技术和电子技术与各个行业的具体应用相结合后的产物,目前嵌入式系统已经渗透到日常生活的各个方面,其在工业、服务业、消费电子等领域的应用范围都不断扩大,嵌入式计算机系统的正式定义为:以应用为中心,以计算机技术为基础,软件硬件可裁减,符合应用系统对功能、可靠性、成本、体积、功耗的严格要求的专用计算机系统。嵌入式系统的主要特征有:系统内核小;专用性强;系统精简;嵌入式软件要求高实时性的操作系统软件;软件要求高质量和高可靠性;嵌入式系统开发需要专门的开发工具和环境。嵌入式系统由硬件和软件两大部分组成,在本开发应用中,选择ARM7TDMI内核结构的samsung公司的s3c44b0作为微处理器芯片,该芯片具有主频高、运算速度快,超低功耗、价格低廉、结构简单等特点,在该内核基础上扩展了一系列完整的通用外围器件,主要有:片内8KB高速缓存、带有1个专用DMA通道的LCD控制器、2个通用DMA通道、1个多主机I2C总线控制器、5个PWM定时器及1个内部定时器、71个通用I/O口、8个外部中断源、8个10位ADC等资源,主频为66MHZ,系统支持大小端模式,共256MB的地址空间,支持8/16/32位数据总线编程。开发平台外配与用户交互接口有RS-232串口电路、外扩flash、sdram,USB控制电路、以太网电路、键盘,JTAG接口电路部分。实时嵌入式操作系统的种类繁多,大体上可以分为两种:商用型和免费型,前者系统功能稳定、可靠,并有完善的技术支持和售后服务,建立应用开发较为容易,但价格昂贵,代表性的有美国WindRiver公司的VxWorks操作系统、Microsoft公司的WinCE操作系统;免费型可以节约成本,且源码公开,便于开发,代表性的有嵌入式Linux系统、C/OS系统。二、嵌入式C/OS的体系结构介绍由于C/OS结构简单,编程工具绝大部分是C语言编程,可以在大多数界面友好的编译器中编译生成目标代码,如Borland C、Keil等工具,且其内核最小可以到几十K,可以在多种体系结构的微处理器上移植,用户的工作较小,源代码开放,便于学习。C/OS-II的几大组成部分有:核心部分(OSCore.c) 是操作系统的处理核心,包括操作系统初始化、操作系统运行、中断进出的前导、时钟节拍、任务调度、事件处理等多部分。任务处理部分(OSTask.c)完成任务的操作;包括任务的建立、删除、挂起、恢复等等。时钟部分(OSTime.c)主要完成任务延时等操作。任务同步和通信部分 为事件处理部分,包括信号量、邮箱、邮箱队列、事件标志等部分;C/OS-II的软件体系结构如图1所示。从图1中可以看到,如果要使用C/OS-II,必须为其编写OS_CPU.H、OS_CPU_C.C、OS_CPU_A.ASM三个文件。三、C/OS在ARM微处理器上的移植C/OS-II的全部源代码量大约是60007000行,一共有15个文件。将 C/OS-II 移植到ARM处理器上,需要完成的工作也非常简单,只需要修改三个和ARM体系结构相关的文件,代码量大约是500行。以下分别介绍这三个文件的移植工作:OS_CPU.H 文件 数据类型定义,这部分的修改是与所用的编译器相关的,不同的编译器会使用不同的字节长度来表示同一数据类型,这里采用的编译器为集成可视化开发环境ARM SDT 2.5,相关的数据类型的定义如下:#define BYTE INT8S /* Define data types for backward compatibility */ #define UBYTE INT8U /* .to uC/OS V1.xx. Not actually needed for . */ #define WORD INT16S /* . uC/OS-II. */ #define UWORD INT16U#define LONG INT32S#define ULONG INT32U堆栈单位因为处理器现场的寄存器在任务切换时都将会保存在当前运行任务的堆栈中,所以OS_STK 数据类型应该是和处理器的寄存器长度一致的。typedef unsigned int OS_STK; /* Each stack entry is 16-bit wide */堆栈增长方向该设置由编译器选项决定,在本开发中设定堆栈由高地址向低地址增长。#define OS_STK_GROWTH 1 /define the stack to grow from high to low2、OS_CPU_C.C 文件任务堆栈初始化 这里涉及到任务初始化时的一个堆栈设计,也就是在堆栈增长方向上如何定义每个需要保存的寄存器位置,在ARM体系结构下,任务堆栈空间由高至低依次将保存着pc、lr、r12、r11、r10、 r1、r0、CPSR、SPSR。void *OSTaskStkInit (void (*task)(void *pd), void *pdata, void *ptos, INT16U opt) unsigned int *stk ; opt = opt; /* opt is not used, prevent warning */ stk = (unsigned int *)ptos; /* Load stack pointer */ *-stk = (unsigned int) task; / * lr */ ; /* r12r0 */ *-stk = ARM_MODE_SYS; /* system mode */ *-stk = ARM_MODE_SYS; /* system mode */ return (void *)stk);当前任务堆栈初始化完成后,OSTaskStkInit 返回新的堆栈指针stk,在 OSTaskCreate()执行时将会调用 OSTaskStkInit 的初始化过程,然后通过OSTCBInit()函数调用将返回的sp指针保存到
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- DA/T 108-2026档案编研工作规范
- TBRACDCHE 006-2025 跨队列研究数据融合质量控制要求
- 4级钳工常见考试试题及答案
- 《护士执业注册管理办法》解读
- 2024考研全国统考数学一考点精练(含答案详解)
- 焊工年审关键试题及答案揭秘
- 2025数学一强化试卷(无水印高清)
- 2025考研全国统考数学二冲刺试卷(含答题卡)
- 2026年山东省济南市中考英语试卷试题真题(含答案详解)
- 2026年部编版新教材道德与法治六年级上册期末检测题(有答案)
- 《机械制图》电子教材
- 数控铣床实训教案-自动编程
- 民航危险品运输培训课件
- 追梦少年强国有我ppt
- 农村小学音乐课教学工作总结与反思
- GB/Z 25756-2010真空技术可烘烤法兰刀口法兰尺寸
- GB/T 20634.4-2008电气用非浸渍致密层压木第4部分:单项材料规范由桦木薄片制成的环材
- 专业化讲师培训课件
- 建筑工程管理专业中级职称理论考试题库
- 哮喘控制测试评分表(ACT-C-ACT)
- 法律硕士民事诉讼法学课件
评论
0/150
提交评论