当前位置:文档之家› 嵌入式-work1

嵌入式-work1

嵌入式-work1
嵌入式-work1

实验报告

课程名称嵌入式系统设计

实验仪器清华同方辰源嵌入式系统实验箱实验名称实验一:人机交互接口-显示实验

系别__计算机学院_

专业计算机科学与技术

班级/学号 1402/2014011150

学生姓名蔡晨

实验日期___2016-9-21_

成绩___________________

指导教师朱敏玲

实验一:人机交互接口-显示实验

一、实验问题回答

(1)介绍以下四个函数的作用、参数涵义及使用方法。

答:RIT128x96x4StringDraw//输出字符串

RIT128x96x4ImageDraw//输出点

RIT128x96x4Clear//清屏

RIT128x96x4Init//初始化屏幕

(2)实验平台OLED显示屏的最大宽度和高度,超出范围会怎么样(自己测试)

答:超出范围不显示

(3)比较Keil uVision4上开发嵌入式C程序与Visual C++中开发C程序的异同。

答:本质都一样,都是生成CPU可执行的二进制文件。 VC一般是生成PC机可执行的文件,而keil是生成keil能支持的那些MCU可执行的二进制文件,在VC上变成一般不用考虑内存大小,ROM大小。字长等因素,而在keil上变成必须考虑这些,不能使用超过MVU所能提供的资源。

(4)描述一下你的项目从开始创建到下载的整个流程

答:(1)新建一个project

(2)CPU选Luminary LM3S 8962

(3)加载库文件

(4)项目相关配置项修改

(5)加载必要程序

(6)新建主函数程序,并加载到项目中

(7)开发主函数,完成基本显示功能(信息提示与直线)

(8)开发主函数,完成拼接字符显示功能

(9)编译、连接,生成可执行程序文件

(10)反复(3)--(4)步骤,直到完成

(11)硬件连接

(12)联调

(5)每个像素是怎么表示的?

答: 0x00表示暗像素点0xff表示亮像素点

(6)画线时,为什么要定义数组?

答:确定像素点的亮度与暗度。

(7)如何使显示的字符变亮?变暗?

答:用十六进制从0-f,通过改变字符显示函数的第二个参数来改变亮度和暗度。

(8)如何使显示的图形变亮?变暗?

答:用十六进制从0-f,通过改变字符显示函数的第二个参数来改变亮度和暗度(9)如何使显示的图形变宽?变窄?变高?变矮?

答:通过改变显示图形函数RIT128x96x4ImageDraw(buf, 18, 84, 162, 1)中的第三个数,可变宽变窄,最后一个数,改变高瘦。

(10)汉字如何显示?

答:可用显示图形的方法进行字符拼接。

二、实验目的和效果(效果即是否达到实验目的,达到的程度如何)

目的:(1)初步学习、理解、掌握OLED字符显示方法

(2)初步学习、理解、掌握OLED图形显示方法

效果:(1)在OLED屏幕上分行显示自己的学号、姓名、项目序号、时间,(2)在OLED屏幕上显示一条横线和竖线。

(3)在OLED屏幕上显示三个5*7比例的字符图形(大、中、小各一个),每位同学根据附录1分配表查找自己应该显示的字符,每个字符显示效果见附录2。(4)扩展:在OLED屏幕上画一个“”型图案。

(5)扩展:在OLED屏幕上画出自己的“姓”或“名”图案。

三、实验内容和步骤(重点阐述自己的思路及遇到的问题)

(一)建立项目

(1)首先新建一个project

(2)选择CPU本实验选Luminary LM3S 8962

(3)加载库文件

(4)项目相关配置项修改

(二)嵌入式C程序开发

(1)加载必要程序:本次实验提供了几个源程序rit128x96x4.h,rit128x96x4.c,startup.s并且将这几个文件复制到项目工作目录中。

(2)新建主函数程序,并加载到项目中

(3)开发主函数,完成基本显示功能(信息提示与直线)头文件有以下三个 #include

#include

#include "rit128x96x4.h"

(4)开发主函数,完成拼接字符显示功能

(5)编译、连接,生成可执行程序文件

(6)反复(3)--(4)步骤,直到完成

(三)硬件连接

(1)接上电源线,先关闭开关(2)用蓝色USB线接上仿真器,仿真器另一JTAG 端接LM3S8962 CPU板(左下较大子板),USB线接电脑

(3)确认连接无误后,打开电源开关

(四)联调

(1)在Keil uVision4中执行下载,(Flash菜单---Download),即可通过仿真器将(一)步编译链接好的执行程序下载到LM3S8962芯片内的Flash中。(2)按下实验箱上LM3S8962子板屏幕上方的白色按钮Reset键,即可查看程序执行效果。

若有问题,返回第一步继续修改程序,编译、链接、下载,一直到显示出满意的效果。

实验代码:

(1)

#include

#include

#include "rit128x96x4.h"

unsigned char buf1[] = {

0x00,0x00, 0xff,0xff, 0xff,0xff, 0xff,0xff, 0x00,0x00, };

unsigned char buf2[] = {

0xff,0xff, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0xff,0xff, };

unsigned char buf3[] =

{

0xff,0xff, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0xff,0xff, };

unsigned char buf4[] = {

0xff,0xff,

0xff,0xff,

0xff,0xff,

0xff,0xff,

0xff,0xff, };

unsigned char buf5[] = {

0xff,0xff,

0x00,0x00,

0x00,0x00,

0x00,0x00,

0xff,0xff };

unsigned char buf6[] = {

0xff,0xff, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0xff,0xff, }; unsigned char buf7[] = {

0xff,0xff, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0xff,0xff, }; unsigned char buf15[] =

{

0xff,0xff,

0x00,0x00,

0x00,0x00,

0x00,0x00,

0x00,0x00,

};

unsigned char buf16[] =

{

0xff,0xff,

0x00,0x00,

0x00,0x00,

0x00,0x00,

0x00,0x00,

};

unsigned char buf17[] =

{

0xff,0xff,

0x00,0x00,

0x00,0x00,

0x00,0x00,

0x00,0x00,

};

unsigned char buf18[] =

0xff,0xff,

0x00,0x00,

0x00,0x00,

0x00,0x00,

0x00,0x00,

};

unsigned char buf19[] = {

0xff,0xff,

0x00,0x00,

0x00,0x00,

0x00,0x00,

0x00,0x00,

};

unsigned char buf22[] = {

0xff,0xff,

0xff,0xff,

0xff,0xff,

0xff,0xff,

0xff,0xff,

};

unsigned char buf33[] = {

0xff,0xff,

0x00,0x00,

0x00,0x00,

0x00,0x00,

0x00,0x00,

};

unsigned char buf44[] = {

0xff,0xff,

0x00,0x00,

0x00,0x00,

0x00,0x00,

0x00,0x00,

};

unsigned char buf55[] = {

0xff,0xff, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, }; unsigned char buf66[] = {

0xff,0xff, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, }; unsigned char buf77[] = {

0xff,0xff, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, }; unsigned char buf111[] = {

0x00,0x00, 0xff,0xff, 0xff,0xff, 0x00,0x00,

};

unsigned char buf222[] = {

0xff,0xff, 0x00,0x00, 0x00,0x00, 0xff,0xff, };

unsigned char buf333[] ={

0xff,0xff, 0x00,0x00, 0x00,0x00, 0xff,0xff, };

unsigned char buf444[] = {

0xff,0xff, 0xff,0xff, 0xff,0xff, 0xff,0xff, };

unsigned char buf555[] = {

0xff,0xff, 0x00,0x00, 0x00,0x00, 0xff,0xff, };

unsigned char buf666[] = {

0xff,0xff, 0x00,0x00, 0x00,0x00, 0xff,0xff, };

unsigned char buf777[] = {

0xff,0xff, 0x00,0x00, 0x00,0x00, 0xff,0xff, };

unsigned char buf1111[] = {

0x00,0x00, 0xff,0xff, 0xff,0xff, 0xff,0xff, 0x00,0x00, }; unsigned char buf2222[] = {

0xff,0xff, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0xff,0xff, }; unsigned char buf3333[] =

{

0xff,0xff, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0xff,0xff, };

unsigned char buf4444[] = {

0xff,0xff,

0xff,0xff,

0xff,0xff,

0xff,0xff,

0xff,0xff, };

unsigned char buf5555[] = {

0xff,0xff,

0x00,0x00,

0x00,0x00,

0x00,0x00,

0xff,0xff };

unsigned char buf6666[] = {

0xff,0xff, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0xff,0xff, };

unsigned char buf7777[] = {

0xff,0xff, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0xff,0xff, };

unsigned char buf11111[] = {

0x00,0x00,0xff,0xff,0xff,0xff, 0x00,0x00,0xff,0xff,0xff,0xff, 0x00,0x00, }; unsigned char buf11112[] = {

0xff,0xff,0x00,0x00,0x00,0x00, 0xff,0xff,0x00,0x00, 0x00,0x00, 0xff,0xff, }; unsigned char buf11113[] = {

0x00,0x00, 0xff,0xff,0x00,0x00, 0x00,0x00, 0x00,0x00,0xff,0xff, 0x00,0x00, }; unsigned char buf11114[] = {

0x00,0x00, 0x00,0x00,0xff,0xff, 0x00,0x00, 0xff,0xff,0x00,0x00, 0x00,0x00, }; unsigned char buf11115[] = {

0x00,0x00, 0x00,0x00, 0x00,0x00,0xff,0xff, 0x00,0x00,0x00,0x00, 0x00,0x00, };

int main()

{

SysCtlClockSet(SYSCTL_SYSDIV_4 | SYSCTL_USE_PLL | SYSCTL_OSC_MAIN | SYSCTL_XTAL_8MHZ);

RIT128x96x4Init(1000000);

RIT128x96x4Clear();

while(1)

{

RIT128x96x4StringDraw("2014011150", 0, 6, 15); RIT128x96x4StringDraw("caichen", 0, 18, 15); RIT128x96x4StringDraw("work1", 0, 30, 15); RIT128x96x4StringDraw("2016-9-21", 0, 42, 15);

RIT128x96x4ImageDraw(buf1, 50, 64, 20, 1); RIT128x96x4ImageDraw(buf2, 50, 67, 20, 1); RIT128x96x4ImageDraw(buf3, 50, 70, 20, 1); RIT128x96x4ImageDraw(buf4, 50, 73, 20, 1); RIT128x96x4ImageDraw(buf5, 50, 76, 20, 1); RIT128x96x4ImageDraw(buf6, 50, 79, 20, 1); RIT128x96x4ImageDraw(buf7, 50, 81, 20, 1);

RIT128x96x4ImageDraw(buf15, 2,69, 2, 1);

RIT128x96x4ImageDraw(buf16, 2,69, 2, 1);

RIT128x96x4ImageDraw(buf17, 2, 70, 2, 1);

RIT128x96x4ImageDraw(buf18, 2, 71, 2, 1);

RIT128x96x4ImageDraw(buf19, 2, 72, 2, 1);

RIT128x96x4ImageDraw(buf22, 2, 73, 20, 1); RIT128x96x4ImageDraw(buf33, 2, 74, 2, 1);

RIT128x96x4ImageDraw(buf44, 2, 75, 2, 1);

RIT128x96x4ImageDraw(buf55, 2, 76, 2, 1);

RIT128x96x4ImageDraw(buf66, 2, 77, 2, 1);

RIT128x96x4ImageDraw(buf77, 2, 78, 2, 1);

RIT128x96x4ImageDraw(buf111, 30, 64, 16, 1); RIT128x96x4ImageDraw(buf222, 30, 68, 16, 1); RIT128x96x4ImageDraw(buf333, 30, 72, 16, 1); RIT128x96x4ImageDraw(buf444, 30, 76, 16, 1); RIT128x96x4ImageDraw(buf555, 30, 80, 16, 1); RIT128x96x4ImageDraw(buf666, 30, 84, 16, 1); RIT128x96x4ImageDraw(buf777, 30, 88, 16, 1); RIT128x96x4ImageDraw(buf1111, 80, 64, 20, 1); RIT128x96x4ImageDraw(buf2222, 80, 66, 20, 1); RIT128x96x4ImageDraw(buf3333, 80, 68, 20, 1); RIT128x96x4ImageDraw(buf4444, 80, 70, 20, 1); RIT128x96x4ImageDraw(buf5555, 80, 72, 20, 1); RIT128x96x4ImageDraw(buf6666, 80, 74, 20, 1); RIT128x96x4ImageDraw(buf7777, 80, 76, 20, 1);

RIT128x96x4ImageDraw(buf11111, 70, 10, 28, 1); RIT128x96x4ImageDraw(buf11112, 70, 14, 28, 1);

RIT128x96x4ImageDraw(buf11113, 70, 18, 28, 1);

RIT128x96x4ImageDraw(buf11114, 70, 22, 28, 1);

RIT128x96x4ImageDraw(buf11115, 70, 26, 28, 1);

}

return 0;

}

(2)

#include

#include

#include "rit128x96x4.h"

unsigned char buf1[] = {

0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00, 0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0x00,0x00,0x00,0x00, };

unsigned char buf11[] = {

0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00, 0xff,0xff, 0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff, 0x00,0x00,0x00,0x00, };

unsigned char buf2[] = {

0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00, 0xff,0xff, 0x00,0xff,0xff,0xff,0xff,0x00,0xff,0xff, 0x00,0x00,0x00,0x00, };

unsigned char buf12[] = {

0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00, 0xff,0xff, 0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff, 0x00,0x00,0x00,0x00, };

unsigned char buf3[] =

{

0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00, 0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0x00,0x00,0x00,0x00, };

unsigned char buf4[] = {

0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00, };

unsigned char buf5[] = {

0x00,0x00, 0x00,0x00,0x00,0x00,0xff,0xff, 0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff, };

unsigned char buf6[] = {

0x00,0x00, 0x00,0x00,0x00,0x00,0xff,0xff, 0x00,0x00, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0x00,0x00,0x00,0x00, };

unsigned char buf7[] = {

0x00,0x00, 0x00,0x00,0x00,0x00,0xff,0xff, 0x00,0x00, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0x00,0x00, };

unsigned char buf8[] = {

0x00,0x00,0x00,0x00, 0x00,0x00,0xff,0xff,0x00,0x00, 0xff,0xff,0x00,0x00,0x00,0x00,0xff,0xff,0x00,0x00, 0xff,0xff, };

unsigned char buf9[] = {

0x00,0x00,0x00,0x00, 0x00,0xff,0xff,0x00,0x00,0x00,0xff,0xff, 0x00,0x00,0xff,0xff,0x00,0x00, 0xff,0xff,0x00,0x00, };

unsigned char buf10[] = {

0x00,0x00,0x00,0xff,0xff,0x00, 0x00,0x00, 0x00,0x00,0xff,0xff,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0xff,0xff, };

int main()

{

SysCtlClockSet(SYSCTL_SYSDIV_4 | SYSCTL_USE_PLL | SYSCTL_OSC_MAIN | SYSCTL_XTAL_8MHZ);

RIT128x96x4Init(1000000);

RIT128x96x4Clear();

while(1)

{

RIT128x96x4StringDraw("2014011150", 0, 6, 15);

RIT128x96x4StringDraw("caichen", 0, 18, 15);

RIT128x96x4StringDraw("work1", 0, 30, 15);

RIT128x96x4StringDraw("2016-9-21", 0, 42, 15);

RIT128x96x4ImageDraw(buf1, 50, 48, 44, 1);

RIT128x96x4ImageDraw(buf11, 50, 50, 44, 1);

RIT128x96x4ImageDraw(buf2, 50, 52, 44, 1);

RIT128x96x4ImageDraw(buf12, 50, 54, 44, 1);

RIT128x96x4ImageDraw(buf3, 50, 56, 44, 1);

RIT128x96x4ImageDraw(buf4, 50, 57, 44, 1);

RIT128x96x4ImageDraw(buf5, 50, 61, 44, 1);

RIT128x96x4ImageDraw(buf6, 50, 66, 44, 1);

RIT128x96x4ImageDraw(buf7, 50, 71, 44, 1);

RIT128x96x4ImageDraw(buf8, 50, 76, 44, 1);

RIT128x96x4ImageDraw(buf9, 50, 81, 44, 1);

RIT128x96x4ImageDraw(buf10, 50, 86, 44, 1);

}

return 0;

}

四、实验总结与收获

实验学会了如何通过OLED屏静态显示字符和图形,理解了各个函数的作用,在改变字母A的高矮时,改变横竖线长短以及横竖线闪烁的时候遇到了困难,通过不断试验与同学的讨论,修改完成了实验。并且可以熟练使用Keil uVision4软件显示想要的图形

三种常用的嵌入式操作系统分析与比较

三种常用的嵌入式操作系统分析与比较 摘要:提要三种常用的嵌入式操作系统——Palm OS、Windows CE、Linux;在此基础上、分析、比较这三种嵌入式操作系统,给出它们之间的异同点及各自的适用范围。 1 嵌入式系统与嵌入式操作系统 1.1 嵌入式系统 嵌入式系统是以嵌入式计算机为技术核心,面向用户、面向产品、面向应用,软硬件可裁减的,适用于对功能、可靠性、成本、体积、功耗等综合性能有严格要求的专用计算机系统。 嵌入式系统应具有的特点是:高可靠性;在恶劣的环境或突然断电的情况下,系统仍然能够正常工作;许多嵌入式应用要求实时性,这就要求嵌入式操作系统具有实时处理能力;嵌入式系统和具体应用有机地结合在一起,它的升级换代也是具体产品同步进行;嵌入式系统中的软件代码要求高质量、高可靠性,一般都固化在只读存储器中或闪存中,也就是说软件要求固态化存储,而不是存储在磁盘等载体中。 1.2 嵌入式操作系统 嵌入式操作系统EOS (Embedded Operating System)是一种用途广泛的系统软件,过去它主要应用于工业控制和国防系统领域。EOS负责嵌入系统的全部软、硬件资源的分配、调度作,控制、协调并发活动;它必须体现其所在系统的特征,能够通过装卸某些模块来达到系统所要求的功能。目前,已推出一些应用比较成功的EOS产品系列。随着Internet技术的发展、信息家电的普及应用及EOS的微型化和专业化,EOS开始从单一的弱功能向高专业化的强功能方向发展。嵌入式操作系统在系统实时高效性、硬件的相关依赖性、软件固化以及应用的专用性等方面具有较为突出的特点。EOS是相对于一般操作系统而方的,它除具备了一般操作系统最基本的功能,如任务调度、同步机制、中断处理、文件处理等外,还有以下特点: ①可装卸性。开放性、可伸缩性的体系结构。 ②强实时性。EOS实时性一般较强,可用于各种设备控制当中。 ③统一的接口。提供各种设备驱动接口。

近年来嵌入式硬件的发展

近年来嵌入式硬件的发展 施明 摘要:近年来随着移动处理、嵌入式应用的大量涌现,以及通用微处理器工艺水平和主频的不断提升,双核乃至四核的出现,功耗日益成为设计者必须关心的问题。这就要求嵌入式软硬件提出了新的要求,需要不断的改进和创新。本文围绕嵌入式近年的发展与更新,主要翻阅了十几篇论文,直接参考文献12篇,其中外文资料4篇。根据所阅读的文献通过对比浅析嵌入式硬件近年来的发展状况。 关键词:8位微控制器,32位微控制器,DSP核MPU In recent years the development of embedded hardware Abstract: in recent years as mobile processing, embedded application, as well as the general microprocessor to improve the technological level and frequency, dual-core and even the emergence of four nuclear power has increasingly become the designers must concern. This requires an embedded hardware and software is put forward new requirements, need continuous improvement and innovation. Around embedded in recent years, the development and updating, this paper mainly through more than ten papers, direct 12 references, including 4 foreign data. According to the reading of literature by comparing the embedded hardware is analysed in recent years the development of the situation Key words:8-bit microcontroller.32- bit microcontroller. DSP core MPU 一、引言 20世纪90年代后期,正处后PC机的前夜.开始兴起了嵌入式的第二次浪潮。随着手机的铺天盖地,惊醒了国内的专家和广大的单片机技术人员,引发了一场单片机与嵌入武的议论。无论改论是否有一致的认识,议论总是有益的。如果能取得一致的认识当然就更好。嵌入式,即嵌入式计算机,是从功能上说的。嵌入式计算机强调的要点是:计算机不为表现自己,而为辅助它所在的宿主设备.智能化地,剃现设备的功能。单片机的叫法,一,未能体现它初始的控制使命,二,它不能代表嵌入式的总体.仅是嵌入式中的类。尽管单片机的结构展示着嵌入式的极终方向,正如今日人们追求的SoC。单片机是Intel 初期的命名,但随后不久就改口叫微控制器了,并把它列入嵌入式器件的一类之中。

嵌入式操作系统实验报告

中南大学信息科学与工程学院实验报告 姓名:安磊 班级:计科0901 学号: 0909090310

指导老师:宋虹

目录 课程设计内容 ----------------------------------- 3 uC/OS操作系统简介 ------------------------------------ 3 uC/OS操作系统的组成 ------------------------------ 3 uC/OS操作系统功能作用 ---------------------------- 4 uC/OS文件系统的建立 ---------------------------- 6 文件系统设计的原则 ------------------------------6 文件系统的层次结构和功能模块 ---------------------6 文件系统的详细设计 -------------------------------- 8 文件系统核心代码 --------------------------------- 9 课程设计感想 ------------------------------------- 11 附录-------------------------------------------------- 12

课程设计内容 在uC/OS操作系统中增加一个简单的文件系统。 要求如下: (1)熟悉并分析uc/os操作系统 (2)设计并实现一个简单的文件系统 (3)可以是存放在内存的虚拟文件系统,也可以是存放在磁盘的实际文件系统 (4)编写测试代码,测试对文件的相关操作:建立,读写等 课程设计目的 操作系统课程主要讲述的内容是多道操作系统的原理与技术,与其它计算机原理、编译原理、汇编语言、计算机网络、程序设计等专业课程关系十分密切。 本课程设计的目的综合应用学生所学知识,建立系统和完整的计算机系统概念,理解和巩固操作系统基本理论、原理和方法,掌握操作系统开发的基本技能。 I.uC/OS操作系统简介 μC/OS-II是一种可移植的,可植入ROM的,可裁剪的,抢占式的,实时多任务操作系统内核。它被广泛应用于微处理器、微控制器和数字信号处理器。 μ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操作系统的组成 μC/OS-II可以大致分成核心、任务处理、时间处理、任务同步与通信,CPU的移植等5个部分。如下图:

详解嵌入式系统的发展特点及架构

详解嵌入式系统的发展特点及架构 随着电子产品的发展,嵌入式系统已经广泛地应用我们的生活的各个领域,例如:计算机、汽车、航天飞机等等。提到嵌入式系统首先联想到单片机,是的,MCU是最基础和常用的嵌入式系统。嵌入式系统与模拟电路或其他功能电路组成的SoC(System on Chip,片上系统)或SiP(System in Package,系统级封装)在手机、机顶盒等功能复杂的产品中的应用也越来越多。 嵌入式系统发展呈现如下特点:·由8位处理向32位过渡·由单核向多核过渡·向网络化功能发展·MCU、FPGA、ARM、DSP等齐头并进·嵌入式操作系统呈多元化趋势所有的嵌入式处理器都是基于一定的架构的,即IP核(Intellectual Property,知识产权),生产处理器的厂家很多,但拥有IP核的屈指可数。有自己的IP核,光靠卖IP核即可坐拥城池。嵌入式系统的架构有专有架构和标准架构之分,在MCU(微控制器)产品上,像瑞萨(Renesas)、飞思卡尔(Freescale)、NEC都拥有自己得专有IP核,而其他嵌入式处理器都是基于标准架构。 标准的嵌入式系统架构有两大体系,目前占主要地位的是所谓RISC(Reduced Instruction Set Computer,精简指令集计算机)处理器。RISC体系的阵营非常广泛,从ARM、MIPS、PowerPC、ARC、Tensilica等等,都是属于RISC处理器的范畴。不过这些处理器虽然同样是属于RISC体系,但是在指令集设计与处理单元的结构上都各有不同,因此彼此完全不能兼容,在特定平台上所开发的软件无法直接为另一硬件平台所用,而必须经过重新编译。 其次是CISC(Complex Instruction Set Computer,复杂指令集计算机)处理器体系,我们所熟知的Intel的X86处理器就属于CISC体系,CISC体系其实是非常低效率的体系,其指令集结构上背负了太多包袱,贪大求全,导致芯片结构的复杂度被极大的提升。过去被应用在嵌入式系统的X86处理器,多为旧世代的产品,比如说,工业计算机中仍可常见数年前早已退出个人计算机市场的Pentium3处理器。由于此世代的产品效能与功耗比可以说是过去X86体系的甜蜜点,加上已经被市场长久验证,稳定性高,故常被应用于效能需求不高,但稳定性要求高的应用中,如工控设备等产品。 1、RISC家族之ARM处理器 ARM 公司于1991年成立于英国剑桥,主要出售芯片设计技术的授权。目前,采用ARM技术智能财产(IP)核心的处理器,即我们通常所说的ARM处理器,已遍及工业控制、消费类电子产品、通信系统、网络系统、无线系统等各类产品市场,基于ARM技术的处理器应用约占据了32位RISC微处理器75%以上的市场,ARM技术不止逐步渗入到我们生活的各个方面,我们甚至可以说,ARM 于人类的生活环境中,已经是不可或缺的一环。 目前市面上常见的ARM处理器架构,可分为ARM7、ARM9以及ARM11,新推出的Cortex系列尚在进行开发验证,市面上还未有相关产品推出。ARM也是嵌入式处理器中首先推出多核心架构的厂商。ARM 首个多核心架构为ARM11 MPCore,架构于原先的ARM11处理器核心之上。ARM11核心是发布于2002年10月份,为了进一步提升效能,其管线长度扩展到8阶,处理单元则增加为预取、译码、发送、转换/MAC1、执行/MAC2、内存存取/MAC3和写入等八个单元,体系上属于ARM V6指令集架构。ARM11采用当时最先进的0.13μm制造制程,运行频率最高可达500到700MHz。如果采用90nm制程,ARM11核心的工作频率能够轻松达到1GHz以上—对于嵌入式处理器来说,这显然是个相当惊人的程度,不过显然1GHz在ARM11体系中不算是个均衡的设定,因此几乎没有厂商推出达到1GHz的ARM11架构处理器。 ARM11的逻辑核心也经过大量的改进,其中最重要的当属“静/动态组合转换的预测功能”。ARM11的执行单元包含一个64位、4种状态的地址转换缓冲,它主要用来储存最近使用过的转换地址。当采用动态转换预测机制而无法在寻址缓冲内找到正确的地址时,静态转换预测功能就会立刻接替它的位置。在实际测试中,单纯采用动态预测的准确率为88%,单纯采用静态预测机制的准确率只有77%,而ARM11的静/动态预测组合机制可实现92%的高准确率。针对高时脉速度带来功耗增加的问题,ARM11采用一项名为“IEM (Intelligent Energy Manager)”的智能电源管理技术,该技术可根据任务负荷情况动态调节处理器的电压,进而有效降低自身的功耗。这一系列改进让ARM11的功耗效能比得以继续提高,平均每MHz只需消耗0.6mW(有快取时为0.8mW)的电力,处理器的最高效能可达到660 Dhrystone MIPS,远超过上一代产品。至于ARM11 MPCore,其在架构上与ARM11同样属于V6指令体系。根据不同应用的需要,MPCore可以被配置为1-4个处理器的组合方式,根据官方资料,其最高性能约可达到2600 Dhrystone MIPS的程度。MPCore是标准的同质多核心处理器,组成MPCore的是4个基于ARM11架构的处理器核心,由于多核心设计的优点是在频率不变的情况下让处理器的性能获得明显提升,因此可望在多任务应用中拥有良好的表现,这一点很适合未来家庭消费电子的需要。例如,机顶盒在录制多个频道电视节目的同时,还可通过互联网收看数字视频点播节目、车内导航系统在提供导航功能的同时,仍然有余力可以向后座乘客播放各类视频码流等。 2、RISC家族之MIPS处理器 MIPS是美国历史悠久的RISC处理器体系,其架构的设计,也如美国人的性格一般,相当的大气且理想化。MIPS架构起源,可追溯到1980年代,斯坦福大学和伯克利大学同时开始RISC架构处理器的研究。MIPS公司成立于1984年,随后在1986年推出第一款R2000处理器,在1992年时被SGI所并购,但随着MIPS架构在桌面市场的失守,后来在1998年脱离了SGI,成为MIPS技术公司,并且在1999年重新制定公司策略,将市场目标导向嵌入式系统,并且统一旗下处理器架构,区分为32-bit以及64-bit两大家族,以技术授权成为主要营利模式。 MIPS除了在手机中应用得比例极小外,其在一般数字消费性、网络语音、个人娱乐、通讯、与商务应用市场有着相当不错的成绩,不过近年来因为其它IP授权公司的兴起,其占有比率稍有衰退。MIPS应用最为广泛的应属家庭视听电器(包含机顶盒)、网通产品以及汽车电子方面。对于MIPS,其核心技术强调的是多执行绪处理能力(Multiple issue,国内也通常称作多发射核技术,以下以此称谓)。一般来说,多核心与多发射是两个并不是互斥的体系,可以彼此结合,然而在嵌入式领域,ARM与MIPS这两大处理器IP厂商对这两个架构的态度不同,造成这两个架构在嵌入式市场上对抗的结果。 MIPS 的多发射体系为MIPS34K系列,此为32位架构处理器,从架构上来看,其实多发射核技术只是为了尽量避免处理单元闲置浪费而为的折衷手段,就是将处理器中的闲置处理单元,分割出来虚拟为另一个核心,以提高处理单元的利用率。在技术上,为了实现硬件多重处理,多核心与多发射两者对于软件最佳化的复杂度方面同样都比单核心架构来得复杂许多。34K核心能执行现有的对称式二路SMP操作系统(OSes)与应用软件,通过操作系统的主动管理,现有的应用软件也能善用多发射处理能力。它亦能应用在多个执行线程各自有不同角色的(AMP或非对称式多重处理)环境下。此外,34K核心能设定一或两个虚拟处理组件(VPE)以及多至5个线程内容(Thread Content),提供相当高的设计弹性。MIPS的多发射在任务切换时,有多余的硬件缓存器可以记录执行状态,避免切换任务时,因为必须重新加载指令,或者是重新执行某部分的工作,造成整个执行线程的延迟。不过即便能够达到同时执行多个任务的能力,多发射处理器本质上仍然是单核心处理器,在单一执行绪

吉林大学嵌入式系统与结构考题及答案

一、单选题 1. (4分) 通常用作堆栈指针的寄存器叫什么名字? ? A. r13 ? B. r14 ? C. r15 ? D. cpsr 得分:0知识点:嵌入式系统与结构作业题收起解析答案A 解析 2. (4分) ARM使用什么样的总线协议? ? A. AMBA ? B. CAN ? C. 1553b总线 ? D. TCP/IP 得分:0知识点:嵌入式系统与结构作业题收起解析答案A 解析

(4分) 通常用作堆栈指针的寄存器叫什么名字? ? A. r13 ? B. r14 ? C. r15 ? D. cpsr 得分:0知识点:嵌入式系统与结构作业题收起解析答案A 解析 4. (4分) 根据ARM命名规则,ARM7TDMI的T代表什么意思? ? A. debug ? B. 支持Thumb指令 ? C. 多媒体处 ? D. 支持Jazelle加速 得分:0知识点:嵌入式系统与结构作业题收起解析答案B 解析 5.

当前程序状态字寄存器的名称是什么? ? A. CPSR ? B. SPSR ? C. MCR ? D. MSR 得分:0知识点:嵌入式系统与结构作业题收起解析答案A 解析 6. (4分) ARM上的外设中断,通常产生哪种异常? ? A. FIQ ? B. IRQ ? C. Data Abort ? D. SWI 得分:0知识点:嵌入式系统与结构作业题收起解析答案B 解析 7. (4分) ARM中位于主存储器和内核之间的快速存储器叫什么?

? A. Cache ? B. MMU ? C. MPU ? D. SDRAM 得分:0知识点:嵌入式系统与结构作业题收起解析答案A 解析 8. (4分) 下列哪条指令可以实现r1=r0×3? ? A. ADD r1,r0,r0,LSL#1 ? B. ADD r1,r0,r0,LSL#3 ? C. MOV r1,r0,LSL#1 ? D. MOV r1,r0,LSL#3 得分:0知识点:嵌入式系统与结构作业题收起解析答案A 解析 9. (4分) ARM上实现内存管理的单元叫什么? ? A. MMU

嵌入式学习心得体会5篇

嵌入式学习心得体会5篇 嵌入式学习心得体会(一) 首先我声明,我是基于嵌入式系统平台级设计的,硬件这个方向我相对来讲比较有发言权,如果是其它方面所要具备的基本技能还要和我们培训中心其它专业级讲师沟通。他们的方面上我只能说是知道些,但不是太多,初级的问题也可以问我。 对于硬件来讲有几个方向,就单纯信号来分为数字和模拟,模拟比较难搞,一般需要很长的经验积累,单单一个阻值或容值的精度不够就可能使信号偏差很大。因此年轻人搞的较少,随着技术的发展,出现了模拟电路数字化,比如手机的modem 射频模块,都采用成熟的套片,而当年国际上只有两家公司有此技术,自我感觉模拟功能不太强的人,不太适合搞这个,如果真能搞定到手机的射频模块,只要达到一般程度可能月薪都在15k以上。 另一类就是数字部分了,在大方向上又可分为51/arm的单片机类,dsp类,fpga 类,国内fpga的工程师大多是在ic设计公司从事ip核的前端验证,这部分不搞到门级,前途不太明朗,即使做个ic前端验证工程师,也要搞上几年才能胜任。dsp 硬件接口比较定型,如果不向驱动或是算法上靠拢,前途也不会太大。 而arm单片机类的内容就较多,业界产品占用量大,应用人群广,因此就业空间极大,而硬件设计最体现水平和水准的就是接口设计这块,这是各个高级硬件工程师相互pk,判定水平高低的依据。而接口设计这块最关键的是看时序,而不是简单的连接,比如pxa255处理器i2c要求速度在100kbps,如果把一个i2c外围器件,最高还达不到100kbps的与它相接,必然要导致设计的失败。这样的情况有很多,比如51单片机可以在总线接lcd,但为什么这种lcd就不能挂在arm的总线上,还有arm7总线上可以外接个winband的sd卡控制器,但为什么这种控制器接不到arm9或是xscale处理器上,这些都是问题。 因此接口并不是一种简单的连接,要看时序,要看参数。一个优秀的硬件工程师应该能够在没有参考方案的前提下设计出一个在成本和性能上更加优秀的产品,靠现有的方案,也要进行适当的可行性裁剪,但不是胡乱的来,我遇到一个工程师

嵌入式系统与结构

?作业详细信息 ?单选题 ?多选题 ?判断题 ?填空题 作业>>详细信息 ?学期:141511 ?课程名称:嵌入式系统与结构 ?作业名称:嵌入式系统与结构 ?本次作业成绩:0分作业综合成绩:0分 ?本次题目信息:多选题:15 单选题:35 ?多选题个数:15个完成次数:1次 ?单选题个数:35个完成次数:1次 ?指导教师:张晋东所在学院:算机科学与技术学院 ?EMail:zhangjindong_100@https://www.doczj.com/doc/396536334.html, 作业>>单选题 1.r13 2.r14 3.r15 4.cpsr 1.debug 2.支持Thumb指令 3.多媒体处 4.支持Jazelle加速

1.PowerPC 2.SecurCore 3.OMAP 4.AT91 1.7 2.8 3.9 4.10 1.会 2.不会 3.根据程序的执行状态决定是否影响 4.根据执行的指令决定是否影响 1.Data Abort 2.指令预取异常 3.IRQ中断请求

4.FIQ中断请求 1.37个 2.16个 3.38个 4.39个 1.ADD 2.SUB 3.MUL 4.MOV 1.r1 2.r14 3.spsr 4.cpsr 1.MPU除有内存单元保护功能外,还具有虚拟地址到物理地址的映射 2.两种功能相同,可以在不同的芯片上集成不同的模块

3.MMU的功耗比MPU低 4.MMU除有内存单元保护功能外,还具有虚拟地址到物理地址的映射 1.32位 2.16位 3.除MOV指令32位外,其他指令均为16位 4.可以通过编译器的选项设定其是16位还是32位 1.ADD 2.SUB 3.MUL 4.MOV 1.ADD 2.SUB 3.MUL 4.MOV

ARM的十一种嵌入式操作系统

ARM的十一种嵌入式操作系统 ARM的十一种嵌入式操作系统 嵌入式LINUX 嵌入式Linux是将日益流行的Linux操作系统进行裁剪修改,使之能在嵌入式计算机系统上运行的一种操作系统。Linux做嵌入式 的优势,首先,Linux是开放源代码;其次,Linux的内核小、效率高,可以定制,其系统内核最小只有约134KB;第三,Linux是免费 的OS,Linux还有着嵌入式操作系统所需要的很多特色,突出的就是Linux适应于多种CPU和多种硬件平台而且性能稳定,裁剪性很好,开发和使用都很容易。同时,Linux内核的结构在网络方面是非常 完整的,Linux对网络中最常用的TCP/IP协议有最完备的支持。提 供了包括十兆、百兆、千兆的以太网络,以及无线网络, TokenRing(令牌环网)、光纤甚至卫星的支持。 移植步骤:1.Bootloader的移植;2.嵌入式Linux操作系统内核 的移植;3.嵌入式Linux操作系统根文件系统的创建;4.电路板上外 设Linux驱动程序的编写。 WinCE WinCE是微软公司嵌入式、移动计算平台的基础,它是一个开放的、可升级的32位嵌入式操作系统,是基于掌上型电脑类的电子设 备操作系统,它是精简的Windows95,WinCE的图形用户界面相当出色。WinCE是从整体上为有限资源的平台设计的多线程、完整优先权、多任务的操作系统。它的模块化设计允许它对于从掌上电脑到 专用的工业控制器的用户电子设备进行定制。操作系统的基本内核 需要至少200K的ROM。 一般来说,一个WinCE系统包括四层结构:应用程序、WinCE内 核映像、板级支持包(BSP)、硬件平台。而基本软件平台则主要由

嵌入式系统与结构 吉大考试题库答案

嵌入式系统与结构 1:假设r0=0x01,r1=0x03,正确执行MOV r0,r1后,r0的值为?3.0x03 2:ARM上实现内存管理的单元叫什么?1.MMU 3:ARM采用多少位的体系结构?2.32位 4:Thumb指令集的长度是多少?2.16位 5:下列描述中,哪些是正确的?1.ARM包含除法硬件 6:程序状态寄存器CPSR的C位表示什么?3.运算结果产生进位 7:指令MOV r0,r1,LSL,#3中,LSL的作用是?2.逻辑左移 8:下列哪条指令,可以实现将地址单元(r1+r2×4)的数据读到r0?1.LDR r0,[r1,r2,LSL ×2] 9:ARM使用什么样的总线协议?1.AMBA 10:用户模式下的可见通用寄存器个数为多少个?2.16个 11:处理器上电默认进入哪种状态?1.ARM 12:提供了安全解决方案的ARM系列产品是以下系列中的哪一种? 2.SecurCore 13:当前程序状态字寄存器的名称是什么?1.CPSR 14:CPSR寄存器的作用是什么?1.存储当前的处理器状态 15:下面所列指令,哪一条指令语法格式正确?2.ADD r1,r2,r3 16:ARM汇编指令中,用于实现减法运算的是哪条指令?2.SUB 17:ARM上实现内存管理的单元叫什么?1.MMU 18:ARM的全称是什么?1.Advanced RISR Machines 19:下列哪些指令可以协处理器的访问?1.MRC

20:ARM用于响应快速外部中断的处理器模式叫什么?1.FIQ 21:下面哪条指令使用了ARM中的桶型移位寄存器?3.STR r0,[r1,r2,LSL #2] 22:ARM共有几种处理器模式?1.7 23:假设r0=0x05,r1=0x03,正确执行SUB r0,r0,r1后,r0的值为?2.0x02 24:ATPCS中规定,使用哪个寄存器存放堆栈基地址?2.r13 25:如何禁止IRQ中断?1.将CPSR寄存器的I位置1 26:ATPCS中规定,用哪些寄存器传递参数?1.r0~r3 27:ARM上电后进入哪种模式?2.管理模式 28:什么样的ARM指令可以条件执行?1.所有的 29:ATPCS中规定,使用哪个寄存器存放程序的返回地址?1.r14 30:Thumb指令集的长度是多少?1.16 31:当程序直接改写cpsr来切换模式时,cpsr会被复制到spsr?2.不会32:下列哪些指令可以访问程序状态寄存器?1.MRS 33:ARM中位于主存储器和内核之间的快速存储器叫什么?1.Cache 34:ARM使用那个寄存器存放程序的返回地址?1.R14 35:ARM指令中对立即数的操作有一定限制,下面所列立即数中,属于合法立即数的是哪一个?4.0xff 4:下列那个寄存器被当作程序计数器pc?4.r15 5:对MMU和MPU的区别描述正确的是?4.MMU除有内存单元保护功能外,还具有虚拟地址到物理地址的映射功能 7:ARM中哪个异常优先级最高?1.Reset 9:ARM上电执行下列哪种异常?1.Reset

嵌入式数据结构

程序的执行与嵌入式编码 这一节主要描述的是主要数据结构的代码生成和嵌入式编码器实时车间。他也总结概括了由文件和头文件构成的编码器实时车间嵌入式的程序,还有描述了怎么找到他们。另外,这一节将描述如何生成实时嵌入式编码器车间项目,从最高水平下降到定时器中断水平。本章节包含下列主题:(略) 一:代码模块的数据结构 实时模型数据结构 实时嵌入式编码在车间实时模型数据结构中封装关于根模型的信息。我们把数据结构的实时模型叫做运转计时器(简称rtm)。 为了减少内存需求,rtm只包含响应你模型的信息。例如,相关领域的数据只有在拥有MAT-file具有代码生成选项时启用。Rtm可能也包含有关时间,结算器,还有模型数据的特殊模型的rtM相关信息,例如:输入,输出,声明,参数。 由于默认,rtM包含一个错误状态,在此时你的代码就可以监视或者设置。如果你不需要日志或监控你的应用程序错误状态,就选择错误状态实时抑制模型数据结构的选项。这将进一步减少内存使用。选择此选项,也可能导致rtM从生成的代码中完全消失。 rtM符号的定义的生成代码如下: ?Structure definition (in model.h): struct _RT_MODEL_model_Tag { ... }; ?Forward declaration typedef (in model_types.h): typedef struct _RT_MODEL_model_Tag RT_MODEL_model; ?Variable and pointer declarations (in model.c): RT_MODEL_model model_M_; RT_MODEL_model *model_M = &model_M_; ?Variable export declaration (in model.h): extern RT_MODEL_model *model_M; 栈宏 实时车间提供的嵌入式编码器栈宏,使你的代码能够与rtM界面有接口。通过model.h,你的代码可以使用宏,并可以进入他们引用的任何字段。 如果你的代码是连接到一个单一的模型,一般来说,你应该把rtM指向model_M,使用宏来访问model_M,就像下面的代码片断。 #include "model.h" const char *errStatus = rtMGetErrorStatus(model_M); 你的代码与rtMs的接口有多个,只需要把头文件对应于每个模型,就像下面的代码片断。 #include "modelA.h" /* Make model A entry points visible */ #include "modelB.h" /* Make model B entry points visible */ void myHandWrittenFunction(void) { const char_T *errStatus; modelA_initialize(1); /* Call model A initializer */ modelB_initialize(1); /* Call model B initializer */ /* Refer to model A s rtM */ errStatus = rtmGetErrorStatus(modelA_M);

嵌入式操作系统的种类与特点

1.3.1 嵌入式操作系统的种类、特点与发展 1.嵌入式操作系统的种类 一般情况下,嵌入式操作系统可以分为两类: 非实时操作系统:面向消费电子产品等领域,这类产品包括个人数字助理(PDA)、移动电话、机顶盒、电子书等。 实时操作系统RTOS(Real-Time Embedded Operating System):面向控制、通信等领域,如windriver公司的vxworks、isi的psos、qnx系统软件公司的qnx等。 (1)非实时操作系统 早期的嵌入式系统中没有操作系统的概念,程序员编写嵌入式程序通常直接面对裸机及裸设备。在这种情况下,通常把嵌入式程序分成两部分,即前台程序和后台程序。前台程序通过中断来处理事件,其结构一般为无限循环;后台程序则掌管整个嵌入式系统软、硬件资源的分配、管理以及任务的调度,是一个系统管理调度程序。这就是通常所说的前后台系统。一般情况下,后台程序也叫任务级程序,前台程序也叫事件处理级程序。在程序运行时,后台程序检查每个任务是否具备运行条件,通过一定的调度算法来完成相应的操作。对于实时性要求特别严格的操作通常由中断来完成,仅在中断服务程序中标记事件的发生,不再做任何工作就退出中断,经过后台程序的调度,转由前台程序完成事件的处理,这样就不会造成在中断服务程序中处理费时的事件而影响后续和其它中断。 实际上,前后台系统的实时性比预计的要差。这是因为前后台系统认为所有的任务具有相同的优先级别,即是平等的,而且任务的执行又是通过FIFO队列排队,因而对那些实时性要求高的任务不可能立刻得到处理。另外,由于前台程序是一个无限循环的结构,一旦在这个循环体中正在处理的任务崩溃,使得整个任务队列中的其它任务得不到机会被处理,从而造成整个系统的崩溃。由于这类系统结构简单,几乎不需要RAM/ROM的额外开销,因而在简单的嵌入式应用被广泛使用。 (2)实时操作系统 所谓实时性,就是在确定的时间范围内响应某个事件的特性。而实时系统是指能在确定的时间内执行其功能并对外部的异步事件做出响应的计算机系统。其操作的正确性不仅依赖于逻辑设计的正确程度,而且与这些操作进行的时间有关。“在确定的时间内”是该定义的核心。也就是说,实时系统是对响应时间有严格要求的。 实时系统对逻辑和时序的要求非常严格,如果逻辑和时序出现偏差将会引起严重后果。实时系统有两种类型:软实时系统和硬实时系统。软实时系统仅要求事件响应是实时的,并不要求限定某一任务必须在多长时间内完成;而在硬实时系统中,不仅要求任务响应要实时,而且要求在规定的时间内完成事件的处理。通常,大多数实时系统是两者的结合。实时应用软件的设计一般比非实时应用软件的设计困难。实时系统的技术关键是如何保证系统的实时性。实时操作系统可分为可抢占型和不可抢占型两类。 嵌入式实时操作系统在目前的嵌入式应用中用得越来越广泛,尤其在功能复杂、系统庞大的应用中显得愈来愈重要。 从某种意义上说,没有操作系统的计算机(裸机)是没有用的。在嵌入式应用中,只有把CPU嵌入到系统中,同时又把操作系统嵌入进去,才是真正的计算机嵌入式应用。 操作系统的实时性在某些领域是至关重要的,比如工业控制、航空航天等领域。想像飞机正在空中飞行,如果嵌入式系统不能及时响应飞行员的控制指令,那么极有可能导致空难事故。有些嵌入式系统应用并不需要绝对的实时性,比如PDA播放音乐,个别音频数据丢失并不影响效果。这可以使用软实时的概念来衡量。

嵌入式系统和嵌入式操作系统

一什么是嵌入式系统 嵌入式系统一般指非PC系统,有计算机功能但又不称之为计算机的设备或器材。它是以应用为中心,软硬件可裁减的,适应应用系统对功能、可靠性、成本、体积、功耗等综合性严格要求的专用计算机系统。简单地说,嵌入式系统集系统的应用软件与硬件于一体,类似于PC中BIOS的工作方式,具有软件代码小、高度自动化、响应速度快等特点,特别适合于要求实时和多任务的体系。嵌入式系统主要由嵌入式处理器、相关支撑硬件、嵌入式操作系统及应用软件系统等组成,它是可独立工作的“器件”。 嵌入式系统几乎包括了生活中的所有电器设备,如掌上PDA、移动计算设备、电视机顶盒、手机上网、数字电视、多媒体、汽车、微波炉、数字相机、家庭自动化系统、电梯、空调、安全系统、自动售货机、蜂窝式电话、消费电子设备、工业自动化仪表与医疗仪器等。 嵌入式系统的硬件部分,包括处理器/微处理器、存储器及外设器件和I/O端口、图形控制器等。嵌入式系统有别于一般的计算机处理系统,它不具备像硬盘那样大容量的存储介质,而大多使用EPROM、EEPROM或闪存(Flash Memory)作为存储介质。软件部分包括操作系统软件(要求实时和多任务操作)和应用程序编程。应用程序控制着系统的运作和行为;而操作系统控制着应用程序编程与硬件的交互作用。 二嵌入式处理器 嵌入式系统的核心是嵌入式微处理器。嵌入式微处理器一般具备4个特点:(1)对实时和多任务有很强的支持能力,能完成多任务并且有较短的中断响应时间,从而使内部的代码和实时操作系统的执行时间减少到最低限度;(2)具有功能很强的存储区保护功能,这是由于嵌入式系统的软件结构已模块化,而为了避免在软件模块之间出现错误的交叉作用,需要设计强大的存储区保护功能,同时也有利于软件诊断;(3)可扩展的处理器结构,以能迅速地扩展出满足应用的高性能的嵌入式微处理器;(4)嵌入式微处理器的功耗必须很低,尤其是用于便携式的无线及移动的计算和通信设备中靠电池供电的嵌入式系统更是如此,功耗只能为mW甚至μW级。 据不完全统计,目前全世界嵌入式处理器的品种总量已经超过1000种,流行的体系结构有30多个系列。其中8051体系占多半,生产这种单片机的半导体厂家有20多个,共350多种衍生产品,仅Philips就有近100种。现在几乎每个半导体制造商都生产嵌入式处理器,越来越多的公司有自己的处理器设计部门。嵌入式处理器的寻址空间一般从64kB到16MB,处理速度为0.1~2000MIPS,常用封装8~144个引脚。 根据现状,嵌入式计算机可分成下面几类。 (1)嵌入式微处理器(Embedded Microprocessor Unit, EMPU) 嵌入式微处理器采用“增强型”通用微处理器。由于嵌入式系统通常应用于环境比较恶劣的环境中,因而嵌入式微处理器在工作温度、电磁兼容性以及可靠性方面的要求较通用的标

嵌入式系统

第一章绪论 1.嵌入式系统的定义、特点和分类 2.嵌入式操作系统 3.嵌入式系统的选型 4.嵌入式系统的发展趋势 5.嵌入式系统的关键技术 6.嵌入式系统的应用 思考与练习 1.什么是嵌入式系统?嵌入式系统的特点是什么? 2.请说出嵌入式系统与其它商用计算机系统的区别。 3.嵌入式系统的关键技术有哪些? 4.请说明嵌入式系统技术发展及开发应用的趋势。 5.你知道嵌入式系统在我们日常生活中哪些设备中应用?说明其采用的处理器是什么?采用的哪一个嵌入式操作系统? 6.开发嵌入式系统的计算机语言主要有哪几种?分别用在什么场合?7. 嵌入式系统和专用集成电路的关系是什么? 第二章嵌入式系统设计方法 1. 需求分析与系统分析法 2.软硬件协同设计方法 3.嵌入式硬件开发方法 4.嵌入式软件开发方法 5.构件式开发方法 6.软件调试与软件测试方法 思考与练习 1.请说出嵌入式系统设计的主要方法及设计流程。在嵌入式系统开发的总体设计中,需要进行哪几方面的工作? 2.嵌入式硬件调试的主要方法及技术手段有哪些? 3.什么是构件式开发方法?说明该方法对嵌入式系统开发具有什么意义,并举例说明。4.需求分析阶段分为哪几个步骤?每个步骤完成什么工作? 5.在进行系统设计时,概要设计和详细设计的工作内容有什么不同? 6.在嵌入式系统实现阶段,需要选择开发平台,通常开发平台的选择包括哪些内容?7.在当今IT 时代,为了使产品尽快进入市场,就产品开发阶段,你认为有哪些方法可以加快产品的开发速度? 8.什么是“黑盒”测试?什么是“白盒”测试?什么是“灰盒”测试? 9.嵌入式系统开发中,使用软件组件技术有什么好处? 10.什么是知识产权核(Intellectual Property Core,简称IP Core)?指出“软知识产权核(Soft IP Core)”、“硬知识产权核(Hard IP Core)”、“固知识产权核(Firm IP Core)”的意义和差别。 11.根据嵌入式软件开发的不同阶段,嵌入式开发工具有哪些种类? 12.从底层硬件到上层应用,嵌入式软件的开发可以分为哪几种? 13.什么是交叉开发环境? 14.什么是OCD 调试方法?指出OCD 的主要形式JTAG 和BDM 的特点和区别? 15.嵌入式软件的调试运行环境和固化运行环境主要区别是什么?

嵌入式系统架构发展趋势及比较分析

嵌入式系统架构发展趋势及比较分析 范虎 嵌入式系统已经广泛地应用到当今各个领域,与我们的生活息息相关,小到掌上的数字产品,大到汽车、航天飞机。提到嵌入式系统我们很快会联想到单片机,不错,MCU是最基础和常用的嵌入式系统,但是目前像FPGA、ARM、DSP、MIPS 等其他嵌入式系统应用也越来越广泛。 总的来说,嵌入式系统发展呈现如下特点:·由8位处理向32位过渡·由单核向多核过渡·向网络化功能发展·MCU、FPGA、ARM、DSP等齐头并进·嵌入式操作系统呈多元化趋势,所有的嵌入式处理器都是基于一定的架构的,即IP 核(IntellectualProperty,知识产权),生产处理器的厂家很多,但拥有IP 核的屈指可数。嵌入式系统的架构有专有架构和标准架构之分,在MCU(微控制器)产品上,像瑞萨(Renesas)、飞思卡尔(Freescale)、NEC等都拥有自己的专有IP核,而其他嵌入式处理器都是基于标准架构。 标准的嵌入式系统架构有两大体系,目前占主要地位的是所谓RISC (ReducedInstructionSetComputer,精简指令集计算机)处理器。RISC体系的阵营非常广泛,从ARM、MIPS、PowerPC、ARC、Tensilica等等,都是属于RISC 处理器的范畴。不过这些处理器虽然同样是属于RISC体系,但是在指令集设计与处理单元的结构上都各有不同,因此彼此完全不能兼容,在特定平台上所开发的软件无法直接为另一硬件平台所用,而必须经过重新编译。 其次是CISC(ComplexInstructionSetComputer,复杂指令集计算机)处理器体系,我们所熟知的Intel的X86处理器就属于CISC体系,CISC体系其实是比较低效率的体系,但由于其已经被市场长久验证,稳定性高,故常被应用于效能需求不高,但稳定性要求高的应用中,如工控设备等产品。 下面将简单介绍一下几种比较常见的RISC和CISC嵌入式系统架构。 1、RISC家族之ARM处理器 ARM公司于1991年成立于英国剑桥,主要出售芯片设计技术的授权。目前,采用ARM技术(IP)核心的处理器,即我们通常所说的ARM处理器,已遍及工业控制、消费类电子产品、通信系统、网络系统、无线系统等各类产品市场,基于ARM技术的处理器应用约占据了32位RISC微处理器75%以上的市场。 目前市面上常见的ARM处理器架构,可分为ARM7、ARM9,ARM11以及Cortex 系列。ARM也是嵌入式处理器中首先推出多核心架构的厂商。ARM首个多核心架构为ARM11MPCore,架构于原先的ARM11处理器核心之上。ARM11采用当时最先进的0.13μm制造制程,运行频率最高可达500到700MHz。如果采用90nm制程,ARM11核心的工作频率能够轻松达到1GHz以上—对于嵌入式处理器来说,这显然是个相当惊人的程度。

四种常见的嵌入式操作系统方案

常见的四种嵌入式操作系统 嵌入式操作系统EOS(Embedded Operating System)又称实时操作系统RTOS(Real Time Operation System)是一种支持嵌入式系统应用的操作系统软件,它是嵌入式系统(包括硬、软件系统)极为重要的组成部分,通常包括与硬件相关的底层驱动软件、系统核、设备驱动接口、通信协议、图形界面、标准化浏览器Browser 等。嵌入式操作系统具有通用操作系统的基本特点,如能够有效管理越来越复杂的系统资源;能够把硬件虚拟化,使得开发人员从繁忙的驱动程序移植和维护中解脱出来;能够提供库函数、驱动程序、工具集以及应用程序。嵌入式操作系统负责嵌入式系统的全部软、硬件资源的分配、调度、控制、协调并发活动;它必须体现其所在系统的特征,能够通过装卸某些模块来达到系统所要求的功能。 在嵌入式实时操作系统环境下开发实时应用程序使程序的设计 和扩展变得容易,不需要大的改动就可以增加新的功能。通过将应用程序分割成若干独立的任务模块,使应用程序的设计过程大为简化;而且对实时性要求苛刻的事件都得到了快速、可靠的处理。通过有效的系统服务,嵌入式实时操作系统使得系统资源得到更好的利用。但是,使用嵌入式实时操作系统还需要额外的ROM/RAM 开销,2~5%的CPU 额外负荷。 到目前为止,商业化嵌入式操作系统的发展主要受到用户嵌入式系统的功能需求、硬件资源以及嵌入式操作系统自身灵活性的制约。

而随着嵌入式系统的功能越来越复杂,硬件所提供的条件越来越好,选择嵌入式操作系统也就越来越有必要了。到了高端产品的阶段,可以说采用商业化嵌入式操作系统是最经济可行的方案,而这个阶段的应用也为嵌入式操作系统的发展指出了方向现在主流的嵌入式操作系统包括Linux、VxWorks、Windows CE、μC/OSⅡ等。 (一)嵌入式Linux 这是嵌入式操作系统的一个新成员,其最大的特点是源代码公开并且遵循GPL协议,在近一年多以来成为研究热点,据IDG预测嵌入式Linux将占未来两年的嵌入式操作系统份额的50%。 由于其源代码公开,人们可以任意修改,以满足自己的应用,并且查错也很容易。遵从GPL,无须为每例应用交纳许可证费。有大量的应用软件可用。其中大部分都遵从GPL,是开放源代码和免费的。可以稍加修改后应用于用户自己的系统。有大量的免费的优秀的开发工具,且都遵从GPL,是开放源代码的。有庞大的开发人员群体。无需专门的人才,只要懂Unix/Linux和C语言即可。随着Linux在中国的普及,这类人才越来越多。所以软件的开发和维护成本很低。优秀的网络功能,这在Internet时代尤其重要。稳定——这是Linux本身具备的一个很大优点。核精悍,运行所需资源少,十分适合嵌入式应用。 支持的硬件数量庞大。嵌入式Linux和普通Linux并无本质区别,PC 上用到的硬件嵌入式Linux几乎都支持。而且各种硬件的驱动程序源代码都可以得到,为用户编写自己专有硬件的驱动程序带来很大方

相关主题
文本预览
相关文档 最新文档