μCOS—II网络通信功能的实现

合集下载

嵌入式助理工程师硬件试题

嵌入式助理工程师硬件试题

嵌入式硬件助理工程师认证考试试题题库一、选择题1、以下说法不正确的是(B )。

A、任务可以有类型说明B、任务可以返回一个数值C、任务可以有形参变量D、任务是一个无限循环2、用图形点阵的方式显示一个16*16点阵汉字需要(B )字节。

A、8B、32C、16D、643、下列描述不属于RISC计算机的特点的是(C).A.流水线每周期前进一步。

B.更多通用寄存器.C.指令长度不固定,执行需要多个周期。

D.独立的Load和Store指令完成数据在寄存器和外部存储器之间的传输。

4、存储一个32位数0x2168465到2000H~2003H四个字节单元中,若以大端模式存储,则2000H存储单元的内容为( D)。

A、0x21B、0x68C、0x65D、0x025、μCOS-II中对关键代码段由于希望在执行的过程中不被中断干扰,通常采用关中断的方式,以下X86汇编代码正确而且不会改变关中断之前的中断开关状态的是(D)A. 先CLI、执行关键代码、再STIB. 先STI、执行关键代码、再CLIC. 先POPF、CLI、执行关键代码、再PUSHFD。

先PUSHF、CLI、执行关键代码、再POPF。

6、RS232-C串口通信中,表示逻辑1的电平是(D )。

A、0vB、3.3vC、+5v~+15vD、-5v~-15v7、ARM汇编语句“ADD R0, R2, R3, LSL#1"的作用是(A)。

A. R0 = R2 + (R3 << 1)B. R0 =(R2〈〈1)+ R3C。

R3= R0+ (R2 〈〈1)D. (R3 <〈1)= R0+ R28、IRQ中断的入口地址是( C)。

A、0x00000000B、0x00000008C、0x00000018D、0x000000149、S3C2420X I/O口常用的控制器是(D).(1)端口控制寄存器(GPACON—GPHCON).(2)端口数据寄存器(GPADA T-GPHDAT)。

μCOS-II和ecos比较解读

μCOS-II和ecos比较解读

嵌入式系统μC/OS-II与eCos的比较摘要:叙述嵌入式系统和嵌入式操作系统的概念,简述嵌入式实时系统的发展阶段。

重点介绍μC/OS-II和eCos的发展历史,并且对μC/O S-II与eCos进行比较,为大家在选择嵌入式操作系统时提供参考。

关键词:嵌入式系统μC/OS-II eCos1 背景随着计算机技术的迅速发展和芯片制造工艺的不断进步,嵌入式系统的应用日益广泛:从民用的电视、手机等电路设备到军用的飞机、坦克等武器系统,到处都有嵌入式系统的身影。

在嵌入式系统的应用开发中,采和嵌入式实时操作系统(简称RTOS)能够支持多任务,使得程序开发更加容易,便于维护,同时能够提高系统的稳定性和可靠性。

这已逐渐成为嵌入式系统开发的一个发展方向。

<P&NBSP; 随着计算机技术的迅速发展和芯片制造工艺的不断进步,嵌入式系统的应用日益广泛:从民用的电视、手机等电路设备到军用的飞机、坦克等武器系统,到处都有嵌入式系统的身影。

在嵌入式系统的应用开发中,采和嵌入式实时操作系统(简称RTOS)能够支持多任务,使得程序开发更加容易,便于维护,同时能够提高系统的稳定性和可靠性。

这已逐渐成为嵌入式系统开发的一个发展方向。

<>2 嵌入式操作系统概述嵌入式操作系统是一种支持嵌入式系统应用的操作系统软件。

它是嵌入式系统(包括硬、软件系统)极为重要的组成部分,通常包括与硬件相关的底层驱动软件、系统内核、设备驱动接口、通信协议、图形界面、标准化浏览器Browser等。

嵌入式操作系统具有通用操作系统的基本特点,如能够有效管理越来越复杂的系统资源;能够把硬件虚拟化,使得开发人员从繁忙的驱动程序移植和维护中解脱出来;能够提供库函数、标准设备驱动程序以及工具集等。

与通用操作系统相比较,嵌入式操作系统在系统实时高效性、硬件的相关依赖性、软件固态化以及应用的专用性等方面具有较为突出的特点。

嵌入式系统的出现至今已经有30多年的历史。

uCOS-II简介

uCOS-II简介

uC/OS-II简介u C / O S 是一种免费公开源代码、结构小巧、具有可剥夺实时内核的实时操作系统。

μC/OS-II 的前身是μC/OS,最早出自于1992 年美国嵌入式系统专家Jean brosse 在《嵌入式系统编程》杂志的5 月和6 月刊上刊登的文章连载,并把μC/OS 的源码发布在该杂志的B B S 上。

μC/OS 和μC/OS-II 是专门为计算机的嵌入式应用设计的,绝大部分代码是用C语言编写的。

CPU 硬件相关部分是用汇编语言编写的、总量约200行的汇编语言部分被压缩到最低限度,为的是便于移植到任何一种其它的CPU 上。

用户只要有标准的ANSI 的C交叉编译器,有汇编器、连接器等软件工具,就可以将μC/OS-II 嵌人到开发的产品中。

μC/OS-II 具有执行效率高、占用空间小、实时性能优良和可扩展性强等特点,最小内核可编译至 2KB 。

μC/OS-II 已经移植到了几乎所有知名的CPU 上。

严格地说uC/OS-II只是一个实时操作系统内核,它仅仅包含了任务调度,任务管理,时间管理,内存管理和任务间的通信和同步等基本功能。

没有提供输入输出管理,文件系统,网络等额外的服务。

但由于uC/OS-II 良好的可扩展性和源码开放,这些非必须的功能完全可以由用户自己根据需要分别实现。

uC/OS-II目标是实现一个基于优先级调度的抢占式的实时内核,并在这个内核之上提供最基本的系统服务,如信号量,邮箱,消息队列,内存管理,中断管理等。

任务管理uC/OS-II 中最多可以支持64 个任务,分别对应优先级0~63,其中0 为最高优先级。

63为最低级,系统保留了4个最高优先级的任务和4个最低优先级的任务,所有用户可以使用的任务数有56个。

uC/OS-II提供了任务管理的各种函数调用,包括创建任务,删除任务,改变任务的优先级,任务挂起和恢复等。

系统初始化时会自动产生两个任务:一个是空闲任务,它的优先级最低,改任务仅给一个整形变量做累加运算;另一个是系统任务,它的优先级为次低,改任务负责统计当前cpu的利用率。

嵌入式μcosii内核实验四哲学家就餐问题的实现

嵌入式μcosii内核实验四哲学家就餐问题的实现

操作系统配置
#define OS_LOWEST_PRIO
7
/*任务优先级不能够不小于7*/
#define OS_SEM_EN
1
/*是否允许使用信号量功能*/
#define OS_MAX_EVENTS
5
/*最多能够有5个事件*/
#define OS_TICKS_PER_SEC 200 /*设置每秒之内旳时钟节拍数目*/
本试验中所用到旳µC/OS-II有关函数
□ OSTaskCreateExt () : 创建一种任务 □ OSSemCreate() :建立并初始化一种信号量 □ OSSemPend() :申请信号量 □ OSSemPost() :释放信号量 □ OSTimeDly():将一种任务延时若干个时钟节拍
操作系统配置
#define OS_TASK_CREATE_EN
1
/*允许使用OSTaskCreate()*/
#define OS_TASK_STAT_EN
0
/* 禁止统计任务*/
#define OS_MAX_TASKS
6
/*最多能够创建6个任务*/
ห้องสมุดไป่ตู้
#define OS_TASK_CREATE_EXT_EN 1 /*是否允许使用OSTaskCreateExt()*/
源程序阐明
TaskStart负责:
□安装时钟中断服务例程
–ucos_x86_idt_set_handler(0x20,(void *)OSTickISR,0x8e00);
□初始化操作系统时钟
–ucos_timer_init();
□创建信号量
–fork[i] = OSSemCreate(1);

μCOS-II-下-LwIP-协议栈的移植和测试

μCOS-II-下-LwIP-协议栈的移植和测试

1、引言为了实现嵌入式系统终端连入互联网,而有必要为其引入了网络功能。

μC/OS II 是一个源代码开放的实时操作系统,但是它只是一个实时的任务调度及通信内核,并没有集成TCP/IP 通信协议,为了实现网络功能,需要在μC/OS II 移植一个轻量级的TCP/IP 通信协议LwIP。

本文主要论述μC/OS II 下通信协议LwIP 的移植以及测试。

2、LwIP 简介LwIP ( light weight IP)是瑞士计算机科学院的Adam Dunkels 等开发的一套开放TCP/IP 协议栈源代码。

LwIP 既可以移植到操作系统上,又可以在无操作系统的情况下独立运行。

LwIP 实现的重点是在保持TCP/IP 协议主要功能的基础上减少对RAM 的占用,这使LwIP 适合在低端嵌入式系统中使用。

其主要特点如下:(1)支持多网络接口下IP 转发;(2)支持ICMP 协议;(3)包括试验性扩展的UDP;(4)包括简单的拥塞控制,RTT 估算和快速恢复和快速转发的TCP;(5)提供专门的内部回调接口(Raw API)用于提高应用程序性能;(6)可选择的Berkeley 接口API;3、LwIP 协议栈移植到μC/OS II 操作系统的具体实现3.1 嵌入式系统结构和LwIP 接口整个嵌入式系统的结构如图 1 所示,由ARM 微处理器、网卡、网络设备驱动、μC/OSII 操作系统、LwIP 协议栈和应用程序组成。

图 1 嵌入式系统结构图LwIP 在设计时为了适应不同的操作系统,并没有在代码中使用和某个特定的操作系统相关的系统调用和数据结构,而是在LwIP 和操作系统之间提供了一个接口层(sys_arch interface),该接口主要实现的功能包括数据类型的定义、存储模式的选择、任务间的同步、时间和内存的管理等。

因此,完成LwIP 在μC/OS II 移植,我们就是要通过修改这个接口层来实现。

同时,还要根据自己所要实现的具体目的,可以对LwIP 协议栈进行一定的裁减。

μCOSII在单片机MSP430F5438上的应用

μCOSII在单片机MSP430F5438上的应用


3 I O 在 MS 4 0 5 3 上 的移 植 x SI C I P3F4 8
I O 操作 系统 作为一 个开 放性 的代码 , 在 x SI C I 其
I NTI 6U t p; o
ot p = o t p;
t — — =(N 1 U )ts o p I T 6 po ;
入到 U盘 中的文件 中 , .t 如 t 文件 中。 x
OS

模仿 中断产 生时 的寄存 器人栈 的方 式编 写任务
堆栈初始化 函数如下 :
S K O T sSknt (od (ts )(o *d T S ak tli vi ak vi p ), vi d od

p a g,OS S po , NTt U o t _r TK ts I 6 p )
小 , 以移植到单片机 内运行 。 可
图 1 硬 件系统组成框 图
堕 鲢 型垒 鲞 国 妻 垂 蔓塑 蔓
器 件 与 电 路
囿 圈响四 @6 @ 6 该信 号采 集设 备 硬件设 计 主要 由以下 4 分构 部
成:
中。不 同的硬件平 台的 C U特性都不 相同 : P 入栈出栈
进行信 号分 析 。同时 , 该设 备有一个 U B接 口 , 以 S 可
实时地将采集 到的信号保存在外 挂 u盘 内的文件 中, 方便使 用者 移动或 查阅信号 采集 文件 。为保证 整个 系统 的实 时性 , 在单片机 中采用 了 c s I O 操作 系统 , I 该 系统稳 定性 强 , 有较好 的实 时性 , 具 且作 为公 开 的 源代码 , 于方便地 进行裁 剪及移植 , 便 同时 占用 内存
系到采集 的数 据是否 有效 干净 , 能否在 P C机 中对该

嵌入式μCOS-II内核实验四(哲学家就餐问题的实现)

嵌入式μcos-ii内核实验四
目录
• 引言 • 哲学家就餐问题概述 • μcos-ii内核任务管理 • 哲学家就餐问题的μcos-ii实现 • 实验结果与分析 • 总结与展望
01
引言
嵌入式系统与μcos-ii内核简介
嵌入式系统
是一种专用的计算机系统,主要用于控制、监视或帮助操作 机器设备。它通常具有实时性、可靠性和低功耗等特点,广 泛应用于工业控制、智能家居、医疗设备等领域。
任务优先级与调度
任务优先级
在μcos-ii内核中,每个任务都有自己 的优先级。优先级高的任务会优先获 得CPU的使用权。
任务调度
μcos-ii内核使用基于优先级的抢占式任务 调度算法。当一个高优先级的任务就绪时, 内核会立即抢占当前正在运行的任务,并切 换到高优先级的任务上运行。
任务同步与通信
任务同步
解决方案的分类与比较
解决方案分类
解决哲学家就餐问题的方案可以分为两类:静态方案和动态方案。静态方案在 系统启动时分配固定的资源,而动态方案则在运行时动态地分配资源。
解决方案比较
静态方案实现简单,但可能导致死锁或饥饿问题。动态方案可以更好地解决这 些问题,但实现起来较为复杂,需要更多的系统资源和时间。在实际应用中, 需要根据具体需求和系统限制选择合适的解决方案。
05
实验结果与分析
实验环境与配置
01
硬件平台
ARM Cortex-M4微控制器 (具体型号为
STM32F407ZGT6)
02
开发环境
Keil uVision5
03
04
实验任务
实现基于μcos-ii内核的多任务 切换
配置参数
任务优先级、任务堆栈大小、 任务状态等

基于RTOS_μCOS-II和GSM的野外水位监测系统

华东交通大学电子测量大作业题目基于RTOS μCOS-II和GSM地野外水位监测系统课程名称电子测量技术院部名称信息工程学院专业通信工程班级 10 通信二班学生姓名龚建生学号 20100610080指导教师黄德昌目录目录 (1)基于RTOS μCOS-II和GSM网络地野外水位监测系统 (2)摘要 (2)Summary (3)绪论 (3)总体方案设计 (4)1 水位传感器 (4)2 传输网络 (6)3 监控中心 (6)4 集中器 (6)系统地工作方式 (6)1 主动式 (6)2 被动式 (7)3 混合式 (7)系统硬件电路地设计 (7)1 采集终端地设计 (7)2 集中器地设计 (9)3 单片机电路 (10)系统软件地设计 (17)1 系统流程 (17)2 μCOS II移植 (19)3 程序设计 (22)总结与展望 (22)谢辞 (23)参考文献 (23)基于RTOS μCOS-II和GSM网络地野外水位监测系统摘要水位监测是水温采集地重要组成部分,在防汛减灾、水利建设、工业生产等领域发挥着重要地作用.水位监测系统是一种水情信息地实时检测、处理地系统,它应用监测、数据处理、通信和计算机技术,对江河、水库、地下水、矿井等水位地监测,因此通常设计成无人值守地方式,从而减少人工观测强度,并提高水情地实时性.由于野外水位地特殊环境,这就要求系统必须足够稳定.如果采用传统地单片机地设计方法,让程序逐个顺序执行,这无疑增加了系统地不稳定性.所以,在本个检测系统中,我们加入了μCOS II操作系统,这大大提高了系统地稳定性.μCOS II是一个基于优先级地可抢占式地硬实时内核.它属于一个完整地、可移植、可固化、可裁减地抢占式地多任务内核.μCOS II具有免费、简单、可靠性高、实时性好等优点,其开放性使得开发人员可以自行裁减和添加所需地功能,在许多应用领域发挥着独特地作用.本系统数据传输网络采用了GPRS数据传输方式.关键词:uC/OS-II、C51、GSM网络、水位监测SummaryWater level monitoring is the important part of temperature acquisition, It play an important role in flood control and disaster reduction, water conservancy construction, industrial production, etc.Water level monitoring system is a system of Hydrologic data real-time detection and processing,It use the Monitoring, data processing, communication and computer technology for the monitoring of the rivers, reservoirs, groundwater, mine water, etc.So It usually designed to unattended mode, so as to reduce artificial observation strength, and improve the real-time performance of the water.Because of the special environment of field water, which requires the system must be stable enough.If we use the traditional design method of single chip microcomputer, let one program order execution, that undoubtedly increased the instability of system.So, in this a detection system, we joined the μCOS II operating system, which greatly improves the system's stability.μ COS II is a based on priority can-take type hard core.It belongs to a complete, portable, curing, scalable pre-emptive multitasking kernel.μ COS II has an advantages of free, simple, high reliability, good real-time, etc., and its openness enables developers may make the cuts and adding the function, It plays a in many application fieldsx special role alone.The system data transmission network using a mode. Of the GPRS data transmission.绪论本论文主要介绍使用基于80C51、GSM模块和μCOS II操作系统地野外水位监测系统地设计,首先介绍了水位检测系统地组成部分和工作方式;然后介绍了系统地硬件电路设计,主要是单片机和GSM模块地接口电路以及外围电路地设计;最后介绍了系统地软件设计,包括μCOS II操作系统地移植、主程序、初始化子程序、短信息字程序及数据处理子程序等.本设计是一个通用地设计实例,也可以将其应用于远程抄表、远程控制等应用场合.总体方案设计水位检测系统一般由采集终端、集中器、传输网络以及监控中心组成.其中,采集终端负责事实、准确地采集水位信息,是实现测量及控制地首要环节;集中器是水位检测系统地重要组成部分,负责将采集终端发送过来地数据进行存储、处理并通过有线或者无线将数据网络将数据传输到监控中心,或者接收中心地命令,完成相应地动作;监控中心是整个系统地核心控制单元,负责将各个采集终端发送地数据进行存储、处理并生成各种图表及数据库,另外,可以根据需要向采集终端发送命令,以实现对各个监测点地控制.水位检测系统地主要组成如下图.此外,由于系统地数据采集设备在野外工作,环境相对恶劣,因此,在选择传感器、设计集中器时需要充分考虑不利因素地影响,从而保证数据采集和传输地可靠性.1 水位传感器水位传感气是水位监测系统地最前端,其测量地准确性和可靠性直接关系到整个系统地性能.用于自动化检测地水位传感器等.这些传感器可以直接接到数据终端上,自动检测水位参数.浮体式水位传感器地特点是必须有浮体浮于水面.它采集水位信号地原理是:浮体浮于水面随着水升降,同时浮体随水位移地信号,通过浮体以一定地方式传递出去,实现水位采集.浮体式水位感应器地优点是稳定、可靠、成熟、运用最广泛.缺点主要有两个:一是冬季结冰是不适合使用,二是无法在流动地水中测量水位,如果需要测量水井中地水位,则需要清除淤积.压阻式水位传感器是一种利用水地压力与睡得深度成正比地性质采集水位信号地传感器.其水位取样地基本原理是基于单晶体硅材料地压阻效应.单晶体硅在受到水压之后,其电阻会发生变化,且改变量与水地压力成正比.为了实现单晶硅地压阻效应,在应用中一般是在圆形硅膜片上扩散出四个P行电阻,构成惠斯登电桥地四个臂.电桥地输出与电阻变化量成正比,也就是与水地压力深度成正比,从而实现对谁信号地采集.压阻式水位传感器灵敏度比较高,动态响应好,精度高,易于微型化和集成化,至目前非电量电测技术中非常重要地检测手段.这类传感器地主要缺点是,在大应变状态中有明显地非线性,输出信号弱,抗干扰能力差.超声波水位传感器是根据水能发射超声波地特性研制地.超声波水位传感器采集水位信号地原理是,传感器内部地发射源向水表面发射超声波,水反射部分回波,这种反射波被超声波接收器探测,并转化成电信号.超声波地运动时间和运动距离(传感器与水表面地距离)成正比.根据超声波运动地时间,便可得知传感器与水面地距离,经信号处理,就可将此转换成水位.超声波水位传感器是一种适用于各种过程控制系统地智能型一体化非接触式水位测试仪,可以测量腐蚀性液体,精度比较高,受温度影响比较小.导电式水位传感器采集水位信号地基本原理,是利用水地导电性将水位转化成电容地变化;另一种是利用水位变化与电极接触,来实现水位信号到电信号地转变.根据水位信号转化成电信号地不同方式,导电式水位传感器可分成两种类型:电容型和电接触型.这类传感器地特点是精度与结构有关,不需要建造水位井,可分段安装.野外环境影响稳定工作,适用浅水位检测,需要定时检查接触点.通过比较,本系统选用压力型传感器.这里选择压力、液位传感器JYB-KO-LAG(北京昆仑海岸传感器中心),它是一种硅压力传感器,利用专门线性放大芯片进行放大及线性化处理.其外形小巧,精度较高.采用集成设计,便于现场安装和使用.JYB-KO-LAG传感器技术参数如下:液压量程:0--100M压力量程:0--35MPa环境温度:-10--60℃供电电压:12--32VDC输出信号:4--20mA/0--5V负载特性:电流输出型:小于等于600欧,电压输出型小于等于3千欧绝缘电阻:大于100兆欧准确度:A级±0.25%FS,B级±0.1%FS非线性:≤±0.2%FS迟滞性与可重复性:≤±0.1%FS长期稳定性:≤±0.1%FS/年热力零点飘移:≤±0.03%FS/℃响应时间:≤30ms最大工作压力:2倍量程2 传输网络一般来说,野外水位检测系统所处地形复杂,监控点分散,距离监测中心比较远,有线网络(如利用公用交换电话网络PTSN)铺设困难,而且维护费用昂贵.在现有地无线通信方式中,建立无线基站耗资巨大,建设周期长,维护苦难,并且使用必须申请频道;射频无线通信技术传输距离短(小于50m),不适合远距离传输;GSM短消息方式使用移动网络,可避免重复建设,减少成本,在低频、率.小容量等应用场合是一个不错地选择,但是响应偏慢,不能做到实时传输,而且在野外、山区等信号较弱地区,传输成功率也不容乐观;GPRS传输方式,多个用户可以共享同一无信道,传输速率较高,保证实时在线,特别适合于一些流量小,传输频率高,需要实时响应地通讯系统.综上所述,本系统地传输网络采用GPRS数据传输方式.3 监控中心监控中心负责接受并处理监控终端上传来地数据,包括系统接收处理,数据地存储、实时显示、实时报表、报警、曲线图、打印、数据库等几部分;同时实现对监控点所有重要设备地运行参数进行实时监控,以及状态和故障地预测欲报,同时以图形、文字、发光地方式报警.安全员可以随时通过数据查询调出数据参数,并打印出来.本论文主要针对基于GSM地野外监控系统(以集中器为中心)地设计,监控中心地设计这里不再介绍.4 集中器集中器是整个野外检测系统(下位机)地核心,是联系采集终端和监控中心地桥梁,负责将采集终端送来地数据通过GPRS网络将数据传输到监控中心,或将接收到地监控中心地命令产送给采集终端.因此,集中器实际上就是一个透明地传输系统,对采集终端和监控中心而言,只是一个传输通路.系统地工作方式目前自动测报系统通常采用主动方式(自报式)、被动报式(查询应答式)及混合式(自报一应答兼容式)三种工作方式,主要特点如下:1 主动式主动式工作方式下,监测站点不受中心指令地控制,当监测站点到达一定时间或检测到水位参数发生一个计量地变化是,主动将水位信息发送给监控中心.其特点是功耗低、结构简单、实时性强,能很好地反映参数变化全过程.缺点是监控中心不能控制各监测站,不能获取及时信息.2 被动式被动式工作方式下,监测站点自动采集和存储水位地信息,但不主动传送给监控中心.只有接收到监控中心地查询命令时,才将数据发出.其优点是控制性好,监控中心可随时获取数据.缺点是如果遇到水位突变地场合不能及时上报,造成反应滞后,甚至导致事故发生.3 混合式混合式集成了上述方式地优点,既能实时反应参数地变化,又能及时响应监控中心地命令.GPRS具有双向数据传输地功能,适合于混合式工作方式,同时GPRS按数据流量收费,在不传送数据时无费用,而且监测站设备耗电很低,设和野外作业.同时考虑到水位参数平时变化缓慢.而在水位突变时需及时上报,而且监控中心能够随时控制监测站,因此系统采用混合工作方式.另外,由于每次GPRS传送数据都将发生通话费用,所以应选择合适地水位参数变化量,是数据传输频率不至于过高.系统硬件电路地设计根据实际应用地需要,整个系统分为两个相互独立地部分:采集终端部分和集中器部分.集中器分为服务器端和客户端两大类,其中服务器端和监控中心相连,使用RS-232接口,客户端和采集终端相连,使用RS-485接口,在监控中心端可以使用一根232/485转接线或在监控中心安装转接卡,系统地原理框图如下图所示.1 采集终端地设计采集终端实际上是一个智能仪表,单片机是仪表地主体.传感器测量地模拟信号经过A/D转换之后,经过输入通道进入单片机内部进行数据处理、存储等操作,如果接收到命令,可以通过通信接口与其他仪器仪表甚至计算机作远距离通信,以达到资源共享地目地.如今,许多单片机采用超大规模CMOS集成电路技术,而且在芯片内部集成了许多新地功能部件,如片内A/D转换器、片内看门狗电路、片内脉宽调制电路、更大地RAM及EEPROM等,从而使得系统硬件电路功耗更低、体积更小,也更适合于野外使用.采集器终端原理框图如下图所示.为了适合野外作业,需要竟可能地减少系统地功耗.因此在进行系统设计地时候需要充分考虑.采集终端地单片机在这里选择使用STC12C5410AD,其主要特性如下:RISC型8051内核,1个时钟/机器周期,运行速度更快;3.4--5.5V宽电压供电,保证了在电量降低时能够正常工作;片内集成了512字节地RAM和10K字节地程序存储器,能够存储较大地程序和处理更多地数据;8路10位A/D转换器,可直接处理模拟信号;内置看门狗和复位电路,保证了系统地工作稳定;内置EEPROM,掉电可以存储重要数据;内置SPI告诉通信端口和一个全双工异步串口UART;另外,其高抗静电(ESD保护)、宽温度范围(-40~85℃)、超低功耗(掉电模式<0.1μA,空闲模式<1.3mA,正常工作模式2.7mA~7mA)等设计非常适合于野外使用.采用STC12C5410AD单片机后,采集终端部分地设计变得非常简单,仅涉及通信接口电路(RS-485)和实时时钟电路,本论文对此模块不再做详细地介绍.2 集中器地设计集中器是水位检测系统地重要部分,主要由单片机电路、GSM模块、SIM卡电路、485电路和供电电源电路组成.由于单片机仅有一个串行口,但需要和GSM模块和485电路两个部分通信,因此需要进行功能切换,增加一个开关电路.本设计中,单片机选用STC89C58RD+芯片,GSM模块选择西门子公司地MC55,485转换芯片选择MAX485E,模拟开关选择CD4066.集中器地电路图下.1 电源电路本系统中有5V、4.2V、2.6V三种典型电压.其中5V为单片机STC89C58RD+、模拟开关4066、MAX485E等芯片地电源电压;4.2V为MC55模块电源电压BATT+;2.6V为MC55模块串口高电平地典型电压.5V电压由锂电池直接提供.MC55模块地供电电压是3.3V~4.8V.典型值电压是4.2V直接用5V供电会引起模块工作不稳定甚至可能烧毁模块,所以在5V输出和MC55模块之间加了两个并联地二极管IN4007.IN4007地额定电流是1A,电压降是0.7V.经测量,两个二极管并联可以将MC55地电源电压拉至4.3V左右,达到其典型电压.并且会防止在GPRS发送数据地时候,电流消耗峰值超过其额定电流而烧坏管子.此外,MC55模块地串口收发数据时电压典型是2.65V.单片机地串口收发数据时高电平电压是大于3.5V,直接连接可能会引起数据错误.所以,在电路地原理图中设计了两个电平转换电路,分别将5V转换为2.5V,2.6V转换为5V.每个转换用了两个三极管9013(Q1、Q2、和Q4、Q5),在最后一级9013上拉各自需要地电压.3 单片机电路采集器地单片机采用STC89C58RD+芯片.STC89C58RD+与51系列单片机完全兼容,但是功能更加强大,价格便宜.其主要特性如下:芯片内部有1280字节地RAM,可以进行大量数据地处理,在本系统中GPRS地数据流可以一次性吞吐,从而提高了处理速度和可靠性;内嵌了32K地Flash程序存储器,保证了程序地存放空间;片上集成了大于16K地EEPROM,可以用来存放数据,掉电数据不丢失,每个扇区512个字节,读一个字节/编程一个字节/擦除一个扇区地时间大约是10μs/60μs/10ms;内部集成地MAX810专用复位电路,可以实现软件复位;双数据指针,对外部数据存储单元地操作更加方便;有三个定时器,使用方式同52系列单片机兼容;内置ISP,可以在线编程.STC89C58RD+芯片内部程序框图如下图所示.单片机地晶振选用地是11.0592MHz.用这个晶振可以提供很准确地波特率,可以避免通讯时出错.使用11.0592MHz晶振波特率可以达到115200bit/s.4 GSM模块电路本系统地GSM模块选择MC55模块.MC55和MC56无线模块是当今市场上尺寸最小地三频模块.其紧凑型设计特别适用于大规模生产地生活消费品,例如移动电话、Smart phones、PDAs 以及其他便携式设备.同时这两款覆盖了当今全球所有GSM/GPRS网络地三频模块使您可以为全球市场设计您地产品.更小巧,更紧凑是下一代地移动电话、智能手机和PDAs 发展地趋势.5.5 克地重量和35×32.5×2.95 mm地尺寸使MC55/56模块能够大大提高您将语音和数据传输功能溶合到您地产品地集成度.运用这两款模块可构成双三频模式地方案:MC55适用于欧洲和亚洲地频段(900,1800和1900 MHz),MC56适用于北美洲市场地频段(850,1800和1900 MHz),由此使您可以为全球市场设计您地产品.4-1 MC55接口相关地AT指令:4-1-1 AT+IPR:设置波特率读命令:AT+IPR?<cr>读取MC55串口波特率,回复:+IPR:<rate> rate是波特率;写命令:AT+IPR=<rate><cr> 设置波特率大小;可以在线直接设置波特率,设置完后,改用设置地波特率去通讯就可完成.ASC0为自动波特率,ASC1默认波特率为57600;当选用地是ASC1串口,那么在系统启动地时候,会收到:^SYSSTART 这个指令用于提示用户MC55已经开始工作了;而选用地是ASC0,由于默认地是自动波特率,所以不会收到^SYSSTART,而要通过判断VDD是否上电判断MC55启动情况,然后再发送“AT”指令,用于与MC55协商波特率,这个过程需要等待3-5秒钟,确认后,会回复OK,那么这个时候可以通过A T+IPR设置MC55地波特率,然后需要重新启动才能生效.4-1-2 AT^SSYNC:设置接口工作情况读命令:AT^SSYNC?<cr>读取该接口地设置情况,回复:^SSYNC:<mode> mode=1表示触发LED模式;写命令:AT^SSYNC=<mode><cr> 将需要设置地状态写入,0或1;4-2 呼叫有关地指令:4-2-1 AT+CHUP:挂断呼叫,此功能跟ATH相同读命令:AT+CHUP=?<cr> 回复:OK或是ERROR写命令:AT+CHUP 回复:OK或是ERROR4-2-2 ATX[<value>]:设置拨号音返回和呼叫监控返回参数说明:Value:0表示仅仅返回连接结果,拨号音和忙碌监控关闭;1表示仅仅返回连接结果地文本内容,拨号音和忙碌监控关闭,2表示仅仅返回连接结果地文本内容,拨号音开启,忙碌监控关闭;3表示仅仅返回连接结果地文本内容,拨号音关闭,忙碌监控开启;4表示仅仅返回连接结果地文本内容,拨号音开启,忙碌监控也开启.4-2-3 ATD:拨号命令.这个命令用来设置通话、数据或传真呼叫.写命令:ATD<N>[<mgsm>][。

嵌入式 网络题目答案

第一单元FIQ中断的入口地址是(0x0000001C )。

问题Thumb指令集和ARM指令集分别是(16位,32位)的。

问题ARM处理器有几种工作模式(7 )。

问题存储一个32位数0x12168465到2000H~2003H四个字节单元中,若以小端模式存储,则2000H存储单元的内容为(0x65 )。

问题下列不是嵌入式系统的特点的是(A. 嵌入式系统开发可以在开发板上直接二次开发。

)。

问题下列不是嵌入式系统的特点的是(A. 嵌入式微处理器通常不包含专用调试电路)。

问题军用雷达跟踪系统是借助于嵌入式技术开发的,可以对军事目标做实时监控,按照系统的实时性来分,它是(D.硬实时系统)。

问题ARM寄存器组有(37 )个寄存器。

问题每种嵌入式操作系统都有自身的特点以吸引相关用户,下列说法错误的是(C. C/OS-Ⅱ操作系统不是一种实时操作系统(RTOS))。

问题10下列CPSR寄存器标志位的作用说法错误的是(D. V: 进位)。

问题μCOS-II操作系统属于(A. 占先式实时操作系统)问题下列属于ARM体系的技术特征的是(Loaded/Store体系结构)。

第二单元在内嵌汇编代码中实现x+x/y的运算,用如下代码是否能获得正确的结果,应如何修改?_ _asm{ MOV R0, xADD y, R0, x/y}问题一条ARM数据处理指令,例如“ADD R0,R1,#immed”中使用的立即数#immed 是有一定限制的,下列立即数表示中合法的是(0x12800 )。

问题ARM中使用的指令都是32位的。

(错)问题下列哪条指令可以实现异常返回时的操作( SUBS PC,R14,#4 )。

问题计数循环是程序中十分常用的流程控制结构,一般有以下两种形式:for (loop=1;loop<=limit;loop++)和for (loop=limit;loop!=0;loop--)这两种循环形式在逻辑上并没有效率差异,但是映射到具体的ARM体系结构中时,就产生了很大的不同,请分析原因,并说明何种形式更优?问题系统上电后执行的第一段代码可以编译为32位ARM指令,也可以编译为16位Thumb指令。

基于μCOS—Ⅱ的软定时器算法的研究与实现


中图分类号 : 3 2 TP 0
文献标识码 : A
1 引言
在嵌入式系统应用领域 , 由于成 本等因素的限制 , 存储 器资源通常 比较 紧张。在 存储器 资源 受限 的情 况下 , 引入 嵌入式操作系统环境进行软件开发是不 现实 的。直接对功 能需求较 多的应用进行任务规划并对 软件模块化 会比基 于 操作 系统更加复 杂。而且 , 软件模块 化的趋势使得各模块 、 任务之 间存在复 杂的相互触 发关 系, 这需要 类似 于操作 系 统 中采用的多任 务调度算法 的支 持 。这些需 求的 实现 , 依 赖于足够的定时器资源 。
匿 耍凰
图 1 软定时器链 表

本文设计了一 种能 够提 供足 够 多软 定时 器资 源 的算 法。该 算法 保留了源码公 开的  ̄ O - 实时操作 系统 任务 * SI C I
调度的基本思想 , 精简任务 调度的代码 , 大大减小 了软件所 软定时器链表 中的每 个软 定时 器节 点都 是 动态生 成 的 。系统 在使用定 时器之前 必须 先为定时器开辟一定大小 的堆栈空间 , 以便系统能 够动 态地给新 的定时器分 配内存 空 间 。在确定堆空间大小之 前 , 要先评估 系统在 端情
Ke r s :) I ; o t t r t s c e u e ; i e r cso ; mb d e y t m ; mo y r s u c ; p r t g s se ; y wo d : ( I s f i me ; a k s h d lr t m rp e ii n e e d d s s e me r e o r e o e a i y t m n s f t rrs u c ot i e o re me
维普资讯
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

操作, 因此其初始化工作必须在 μC/OS—II 完全启动之后, 即在 任务中进行。主函数程序框架如下: main ( ) { OSInit ( ) ; 目标板初始化; OSTaskCreat (LWIP_main ( ) , (void * ) 0, (void * )& [STACKSIZE - 1] , 0 ) ; TasklwipStk OSStart ( ) ; } 编译运行后, 用 ping IP 地址命令可等到 ICMP reply 回应, 用 telnet IP 地址命令可以看到 echo server 的回显效果。图 2 是 Ping 命令的测试结果图,这表明 LWIP 已成功地移植到了 μC/OS—II 中。
1
μC/OS—II
μC/OS—II 是由 Jean brosse 于 1992 年编写的一个嵌入 可移植、 固化、 裁剪的抢占 式多任务操作系统。它是一个完整的, 式实时多任务内核。 μC/OS—II 大部分代码是用 ANSIC 语言编 写, 仅少量与微处理器硬件相关的代码是用汇编语言编写, 这使 得它可以方便地移植到其他微处理器上。μC/OS—II 移植只需要 OS_CPU_C.C 和 修 改 与 处 理 器 相 关 的 3 个 文 件 OS_CPU.H, OS_CPU_A.ASM。 本文中实现 μC/OS—II 网络通信功能的硬件平 台采用基于 ARM 的微处理器 S3C44BOX。
科技情报开发与经济 文章编号: 1005-6033 (2MATION DEVELOPMENT & ECONOMY
200 9 年 第 19 卷
第 18 期
收稿日期: 2009-04-09
μC/OS—II 网络通信功能的实现 *
李彦军
(山西大学商务学院, 山西太原, 030031 ) 摘 要: 通过移植 LWIP 协议, 扩充 μC/OS—Ⅱ的内核, 实现了网络通信功能, 并对移植 结果进行了测试。 关键词: μC/OS—Ⅱ; LWIP; 移植; 网络通信功能 TP316.8 文献标识码: A 中图分类号: 随着嵌入式系统应用的普及, 我们面对的系统越来越复杂, 采用以专用计算机或单片机为核心,通过汇编语言编程对系统 进行直接控制的方式难以满足开发的需求,嵌入式操作系统的 作用正变得日益重要 。 目前国际上主流的嵌入式操作系统有 Windows CE、 嵌入式 Linux 和 μC/OS—II, 而 μC/OS—II 又以其免 费且公开源码的特点得到广泛应用。
图 2 测试结果 参考文献 [1] J J Labross.μC/OS—II—源码公开的实时嵌入式操作系统 .邵贝贝, 译.北京: 中国电力出版社, 2001. [M] [2] 王田苗.嵌入式系统设计与实例开发 [M] .北京: 清华大学出 版社, 2004. [3] ADAM Dunkels.Design an implementation of the lwIP TCP/IP .[2009 -03 -06] .http://www.sics.se/~adam/lwip/doc/ Stack [EB/OL] lwip.pdf. (责任编辑: 李 敏 ) ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ 第一作者简介: 李彦军, 男, 1979 年 10 月生, 2006 年毕业于 中北大学 (硕士 ) ,助教,山西大学商务学院,山西省太原市, 030031. (下转第 225 页 )
4 LWIP 移植测试
在做完相关的移植工作后, LWIP 就可以在 μC/OS—II 上运 行了。我们以 TCP 任务为例测试。S3C44B0X 的 IP 地址设置为 192.168.48.10, LWIP 的初始化用到了信号量等操作系统相关的 (上接第 89 页 )
Study on Optimizing the Construction of Literature Resources in Small and Medium-sized Libraries —— —Taking the Library of Fushun Vocational and Technical Institute as an Example
2
LWIP
μC/OS—II 作为一个实时内核缺少对网络通信功能的支持, 本文将介绍如何在 μC/OS—II 上实现一种轻型 TCP/IP 协议栈 LWIP。LWIP 是瑞士计算机科学院的 Adam Dunkels 等开发的一 套用于嵌入式系统的开放源代码 TCP/IP 协议栈。 LWIP 可以移植 到操作系统上,也可以在无操作系统的情况下独立运行。LWIP 对 RAM 的占用非常小, 通常只需要几十 kB 的 RAM 和 40 kB 左 右的 ROM 就可以运行,这使得它非常适合在嵌入式系统中使 用。 LWIP 协议类似于其 TA1 的 TCP/IP 协议,也是采用分层设 计。每个协议声明为一个模块,同时留有与其他协议的接口函 数。LWIP 协议为了提高内存的利用率, 加快处理速度, 每一个协 议都是分开声明的。为了使 LWIP 能够正确地运行, 除了 TCP/IP 协议本身固有的模块 (TCP, IP, UDP, ICMP 和 ARP ) 外还需要声 明一些系统支持模块。例如缓冲及内存管理子系统、 操作系统仿 真层 、 计算检验和函数 、 网络接口函数和应用程序接口函数等, 其结构见图 1。
信息工作研究
LWIP 中每个与外界网络连接的线程都有自己的 timeout 属 性,即等待超时时间 。 这个属性表现为每个线程都对应一个 sys_timeout 结构体队列, 该队列包括这个线程的 timeout 时间长度 以及超时后调用的 timeout 函数。timeout 该函数会做一些释放连 接、 回收资源的工作。 如果一个线程对应的 sys_timeout 为空, 那么 该线程对连接做永久等待。 LWIP 已在 sys.h 中定义好了 timeout 结 构体, 我们的工作是实现函数 sys_arch_timeouts ( ) , 该函数将返回 目前正处于运行态的线程所对应的 timeout 队列指针。 LWIP 可以是单线程运行, 也可以是多线程运行, 这有助于提 高运行效率,降低编程复杂度。我们主要实现新线程的创建函数 sys_thread_new ( ) , 而 μC/OS—II 没有线程的概念, 只有任务。μC/ OS—II 已经提供了创建新任务的函数 OSTaskCreate ( ) , 通过把任 务创建重新封装来实现线程创建。LWIP 的线程中没有优先级的 概念, 因此实现时要事先为 LWIP 中创建的线程分配好优先级。 3.3 外部库函数的实现 LWIP 协议栈中用到了 8 个外部函数, 这些函数通常与用户 使用的系统或编译器有关。 它们是: 16 位数据高低字节交换函数 u16_t htons (u16_t n ) 和 u16_t ntohs(u16_t n ) , 32 位数据高低字 (u32_t n ) 和 u32_t ntohs(u32_t n ) , 字符 节交换函数 u32_t htons 串比较函数 strcmp ( ) , 内存数据块之间拷贝函数 bcopy ( ) , 内存 ( ) 。其中 16 位与 32 位的数 中指定长度的数据块清 0 函数 bzero 据高低字节交换函数由用户实现, 其余的函数由编译器确定。 3.4 网络设备的驱动程序 它与 NE2000 兼 本设计中网络接口芯片采用了 RTIB019AS, 容,实现驱动程序时可参考开源软件 Linux 相关驱动程序的编 LWIP 在 \src\netif\ethernetif。C 有一个驱动模型, 实现时对照 写, 该模板。 从编程的角度看, RTL8019AS 工作流程非常简单, 驱动程序 将要发送的数据包按指定格式写入芯片并启动发送命令, RTL8019AS 自动把数据包转换成物理帧格式在物理信道上传 RTL8019AS 收到物理信号后将其还原成数据, 按指定 输。反之, 格式存放在芯片 RAM 中以便主机程序取用。驱动程序的主要功 能是实现网卡 RTL8019AS 以下函数:初始化函数 ethernetif_init ( ) , 数 据 接 收 函 数 ethernetif_recv ( ) ,数据发送函数 ethernetif_send ( ) 和中断服务函数 ethernetif_isr ( ) 。
3
LWIP 在 μC/OS—II 中的实现
3.1 CPU 或编译器相关的 include 文件的实现 ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ * 本文为山西大学商务学院科研基金项目 (项目编号: 2008006 ) 资助。
李彦军 μC/OS—II 网络通信功能的实现
本刊 E-mail:bjb@sxinfo.net
缓冲及内存 管理子系统 操作系统 仿真层 TCP/IP 协议模块, TCP, IP, UDP, ICMP 与 ARP
应用程序 接口函数 网络接口 函数
图 1 LWIP 总体结构图 cpu.h, perf.h 中 有 一 些 在/src/arch/include/arch 目 录 下 cc.h, 与 CPU 或编译器相关的定义, 如数据长度 、 字的高低位顺序等, 这应该与用户实现 μC/OS—II 时定义的数据长度等参数是一致 的。 在 C 语言中结构体 (Struct ) 是 4 字节对齐的, 但是 LWIP 在处 理数据包时,是通过结构体中不同数据的长度来读取相应数据 让编译器放 的, 所以在定义 Struct 的时候使用 _packed 关键字, 弃 Struct 的字节对齐。 3.2 操作系统相关内容的实现 sys_arch.h 中的内容是与操作系统相关的一些结构和函数, 主要可以分为 5 个部分:系统初始化函数 sys_init ( ) , sys_sem_t 信号量实现, sys_mbox_t 消息队列实现, sys_arch_timeout ( )函数, 新线程创建函数 sys_thread_new ( ) 。 sys_init ( ) 是系统初始化函数,它必须在 TCP/IP 协议栈 tcpip_thread 任务创建前被调用。 LWIP 在内部通信中需要使用信号量,因此我们需要在 sys_arch.h 中实现信号量结构体和处理函数。它们包括创建信号 量 sys_sem_new ( ) , 释 放 信 号 量 sys_ sem _free ( ) , 发送信号量 sys_ sem _signal ( ) , 请求信号量 sys_ arch_sem _wait ( ) 。 而 μC / OS—II 已经实现了信号量 OS_EVENT 的各种操作,因此我们的 主要工作是修改以上函数, 使它们能够被 LWIP 调用。 LWIP 使用消息队列来缓冲 、 传递数据报文,因此要在 sys_arch.h 中实现与之适应消息队列的数据结构及相应的操作函 数。μC/OS—II 仅实现相应的数据结构及操作函数, 但是没有对 消息队列中的消息进行管理。为了实现对消息的管理, 我们定义 如下数据结构: typedef struct{ OS_EVENT* pQ; void* pvQEntries [MAX_QUEUE_ENTRIES] ; }sys_mbox_t; 对消息队列本身的管理利用 μC/OS—II 自带的操作完成, 对 消息的创建、使用和删除结合 μC/OS—II 中的内存管理模块实 现, 两部分综合起来实现 LWIP 中的消息队列。我们主要实现以 下函数: 创建一个消息队列 sys_mbox_new ( ) , 删除一个消息队列 sys_mbox_free ( ) , 给消息队列发送一条消息 mbox (sys_mbox_post ( ) , 从消息队列中读取一条消息 sys_arch_mbox_fetch ( ) 。 121
相关文档
最新文档