第一篇:嵌入式远程医疗监护系统(范文模版)
嵌入式远程医疗监护系统
嵌入式医疗监护系统设计
一、整体设计
MSP430系列单片机是美国德州仪器(TI)1996年开始推向市场的一种16位超低耗(具有精简指令集的混合信号处理器(Mixed Signal Processor)。称之为混合信号处理器,是由于其针对实际应用需求,将多个不同功能的模拟电路、数字电路模块和微处理器集成在一个芯片上,以提供“单片”解决方案。该系列单片机多应用于需要电池供电的便携式仪器仪表中。MSP430特点
MSP430系列单片机是一个16位的单片机,采用了精简指令集(RISC)结构,具有丰富的寻址方式(7 种源操作数寻址、4 种目的操作数寻址)、简洁的 27 条内核指令以及大量的模拟指令;大量的寄存器以及片内数据存储器都可参加多种运算;还有高效的查表处理指令。这些特点保证了可编制出高效率的源程序。
MSP430 系列单片机能在25MHz晶体的驱动下,实现40ns的指令周期。16位的数据宽度、40ns的指令周期以及多功能的硬件乘法器(能实现乘加运算)相配合,能实现数字信号处理的某些算法(如 FFT 等)。
MSP430 单片机之所以有超低的功耗,是因为其在降低芯片的电源电压和灵活而可控的运行时钟方面都有其独到之处。
首先,MSP430 系列单片机的电源电压采用的是1.8-3.6V 电压。因而可使其在1MHz 的时钟条件下运行时,芯片的电流最低会在165μA左右,RAM 保持模式下的最低功耗只有0.1μA。
其次,独特的时钟系统设计。在 MSP430 系列中有两个不同的时钟系统:基本时钟系统、锁频环(FLL 和FLL+)时钟系统和DCO数字振荡器时钟系统。可以只使用一个晶体振荡器(32768Hz),也可以使用两个晶体振荡器。由系统时钟系统产生 CPU 和各功能所需的时钟。并且这些时钟可以在指令的控制下,打开和关闭,从而实现对总体功耗的控制。
由于系统运行时开启的功能模块不同,即采用不同的工作模式,芯片的功耗有着显著的不同。在系统中共有一种活动模式(AM)和五种低功耗模式(LPM0~LPM4)。在实时时钟模式下,可达2.5μA,在RAM 保持模式下,最低可达0.1μA。
MSP430 系列单片机的各系列都集成了较丰富的片内外设。它们分别是看门狗(WDT)、模拟比较器A、定时器A0(Timer_A0)、定时器A1(Timer_A1)、定时器B0(Timer_B0)、UART、SPI、I2C、硬件乘法器、液晶驱动器、10位/12位ADC、16位Σ-Δ ADC、DMA、I/O端口、基本定时器(Basic Timer)、实时时钟(RTC)和USB控制器等若干外围模块的不同组合。其中,看门狗可以使程序失控时迅速复位;模拟比较器进行模拟电压的比较,配合定时器,可设计出 A/D 转换器;16 位定时器(Timer_A 和 Timer_B)具有捕获/比较功能,大量的捕获/比较寄存器,可用于事件计数、时序发生、PWM 等;有的器件更具有可实现异步、同步及多址访问串行通信接口可方便的实现多机通信等应用;具有较多的 I/O 端口,P0、P1、P2 端口能够接收外部上升沿或下降沿的中断输入;10/12位硬件 A/D 转换器有较高的转换速率,嵌入式远程医疗监护系统
最高可达200kbps,能够满足大多数数据采集应用;能直接驱动液晶多达 160 段;实现两路的 12 位 D/A 转换;硬件I2C串行总线接口实现存储器串行扩展;以及为了增加数据传输速度,而采用的DMA模块。MSP430 系列单片机的这些片内外设为系统的单片解决方案提供了极大的方便。
另外,MSP430 系列单片机的中断源较多,并且可以任意嵌套,使用时灵活方便。当系统处于省电的低功耗状态时,中断唤醒只需5μs。
MSP430 系列有 OPT 型、FLASH 型和 ROM 型三种类型的器件,这些器件的开发手段不同。对于 OPT 型和 ROM 型的器件是使用仿真器开发成功之后烧写或掩膜芯片;对于 FLASH 型则有十分方便的开发调试环境,因为器件片内有 JTAG 调试接口,还有可电擦写的 FLASH 存储器,因此采用先下载程序到 FLASH 内,再在器件内通过软件控制程序的运行,由 JTAG 接口读取片内信息供设计者调试使用的方法进行开发。这种方式只需要一台 PC 机和一个 JTAG 调试器,而不需要仿真器和编程器。开发语言有汇编语言和 C 语言。
考虑以上原因,我们决定采用该型号单片机为本系统的微处理器。
二、温度采集芯片 18B20 DS18B20数字温度计是DALLAS公司生产的1-Wire,即单总线器件,具有线路简单,体积小的特点。因此用它来组成一个测温系统,具有线路简单,在一根通信线,可以挂很多这样的数字温度计,十分方便。
1、DS18B20产品的特点
(1)、只要求一个端口即可实现通信。
(2)、在DS18B20中的每个器件上都有独一无二的序列号。
(3)、实际应用中不需要外部任何元器件即可实现测温。
(4)、测量温度范围在-55。C到+125。C之间。
(5)、数字温度计的分辨率用户可以从9位到12位选择。(6)、内部有温度上、下限告警设置。2. DS18B20的使用方法
由于DS18B20采用的是1-Wire总线协议方式,即在一根数据线实现数据的双向传输,而对AT89S51单片机来说,硬件上并不支持单总线协议,因此,我们必须采用软件的方法来模拟单总线的协议时序来完成对DS18B20芯片的访问。
由于DS18B20是在一根I/O线上读写数据,因此,对读写的数据位有着严格的时序要求。DS18B20有严格的通信协议来保证各位数据传输的正确性和完整性。该协议定义了几种信号的时序:初始化时序、读时序、写时序。所有时序都是将主机作为主设备,单总线器件作为从设备。而每一次命令和数据的传输都是从主机主动启动写时序开始,如果要求单总线器件回送数据,在进行写命令后,主机需启动读时序完成数据接收。数据和命令的传输都是低位在先。
DS18B20的复位时序
DS18B20的读时序
对于DS18B20的读时序分为读0时序和读1时序两个过程。
对于DS18B20的读时隙是从主机把单总线拉低之后,在15秒之内就得释放单总线,以让DS18B20把数据传输到单总线上。DS18B20在完成一个读时序过程,至少需要60us才能完成。
嵌入式远程医疗监护系统
DS18B20的写时序
对于DS18B20的写时序仍然分为写0时序和写1时序两个过程。对于DS18B20写0时序和写1时序的要求不同,当要写0时序时,单总线要被拉低至少60us,保证DS18B20能够在15us到45us之间能够正确地采样IO总线上的“0”电平,当要写1时序时,单总线被拉低之后,在15us之内就得释放单总线。
综合各方原因我们采用该芯片模拟所有医用传感器,来完成整个系统设计。
三、无线模块 NRF2401 nRF2401是单片射频收发芯片,工作于2.4~2.5GHz ISM频段,芯片内置频率合成器、功率放大器、晶体振荡器和调制器等功能模块,输出功率和通信频道可通过程序进行配置。芯片能耗非常低,以-5dBm的功率发射时,工作电流只有10.5mA,接收时工作电流只有18mA,多种低功率工作模式,节能设计更方便。其DuoCeiverTM技术使nRF2401可以使用同一天线,同时接收两个不同频道的数据。nRF2401适用于多种无线通信的场合,如无线数据传输系统、无线鼠标、遥控开锁、遥控玩具等。nRF2401内置地址解码器、先入先出堆栈区、解调处理器、时钟处理器、GFSK滤波器、低噪声放大器、频率合成器,功率放大器等功能模块,需要很少的外围元件,因此使用起来非常方便。QFN24引脚封装,外形尺寸只有5×5mm。
nRF2401的收发模式有ShockBurstTM收发模式和直接收发模式两种,收发模式由器件配置字决定,具体配置将在器件配置部分详细介绍。
ShockBurstTM收发模式
ShockBurstTM收发模式下,使用片内的先入先出堆栈区,数据低速从微控制器送入,但高速(1Mbps)发射,这样可以尽量节能,因此,使用低速的微控制器也能得到很高的射频数据发射速率。与射频协议相关的所有高速信号处理都在片内进行,这种做法有三大好处:尽量节能;低的系统费用(低速微处理器也能进行高速射频发射);数据在空中停留时间短,抗干扰性高。nRF2401的ShockBurstTM技术同时也减小了整个系统的平均工作电流。
在ShockBurstTM收发模式下,nRF2401自动处理字头和CRC校验码。在接收数据时,自动把字头和CRC校验码移去。在发送数据时,自动加上字头和CRC校验码,当发送过程完成后,数据准备好引脚通知微处理器数据发射完毕。
ShockBurstTM发射流程
接口引脚为CE,CLK1,DATA
A.当微控制器有数据要发送时,其把CE置高,使nRF2401工作;
B.把接收机的地址和要发送的数据按时序送入nRF2401;
C.微控制器把CE置低,激发nRF2401进行ShockBurstTM发射;
D.nRF2401的ShockBurstTM发射
给射频前端供电;
射频数据打包(加字头、CRC校验码);
高速发射数据包;
发射完成,nRF2401进入空闲状态。
嵌入式远程医疗监护系统
ShockBurstTM接收流程
接口引脚CE、DR1、CLK1和DATA(接收通道1)
A.配置本机地址和要接收的数据包大小;
B.进入接收状态,把CE置高;
C.200us后,nRF2401进入监视状态,等待数据包的到来;
D.当接收到正确的数据包(正确的地址和CRC校验码),nRF2401自动把字头、地址和CRC校验位移去;
E.nRF2401通过把DR1(这个引脚一般引起微控制器中断)置高通知微控制器;
F.微控制器把数据从nRF2401移出;
G.所有数据移完,nRF2401把DR1置低,此时,如果CE为高,则等待下一个数据包,如果CE为低,开始其它工作流程。
直接收发模式
在直接收发模式下,nRF2401如传统的射频收发器一样工作。
直接发送模式
接口引脚为CE、DATA
A.当微控制器有数据要发送时,把CE置高;
B.nRF2401射频前端被激活;
C.所有的射频协议必须在微控制器程序中进行处理(包括字头、地址和CRC校验码)。
直接接收模式
接口引脚为CE、CLK1和DATA
A.一旦nRF2401被配置为直接接收模式,DATA引脚将根据天线接收到的信号开始高低变化(由于噪声的存在);
B.CLK1引脚也开始工作;
C.一旦接收到有效的字头,CLK1引脚和DATA引脚将协调工作,把射频数据包以其被发射时的数据从DATA引脚送给微控制器;
D.这头必须是8位;
E.DR引脚没用上,所有的地址和CRC校验必须在微控制器内部进行。
配置模式
在配置模式,15字节的配置字被送到nRF2401,这通过CS、CLK1和DATA三个引脚完成,具体的配置方法请参考本文的器件配置部分。
空闲模式
nRF2401的空闲模式是为了减小平均工作电流而设计,其最大的优点是,实现节能的同时,缩短芯片的起动时间。在空闲模式下,部分片内晶振仍在工作,此时的工
嵌入式远程医疗监护系统
作电流跟外部晶振的频率有关,如外部晶振为4MHz时工作电流为12uA,外部晶振为16MHz时工作电流为32uA。在空闲模式下,配置字的内容保持在nRF2401片内。
关机模式
在关机模式下,为了得到最小的工作电流,一般此时的工作电流小于1uA。关机模式下,配置字的内容也会被保持在nRF2401片内,这是该模式与断电状态最大的区别。
nRF2401的所有配置工作都是通过CS、CLK1和DATA三个引脚完成,把其配置为ShockBurstTM收发模式需要15字节的配置字,而如把其配置为直接收发模式只需要2字节的配置字。由上文对nRF2401工作模式的介绍,我们可以知道,nRF2401一般工作于ShockBurstTM收发模式,这样,系统的程序编制会更加简单,并且稳定性也会更高,因此,下文着重介绍把nRF2401配置为ShockBurstTM收发模式的器件配置方法。
ShockBurstTM的配置字使nRF2401能够处理射频协议,在配置完成后,在nRF2401工作的过程中,只需改变其最低一个字节中的内容,以实现接收模式和发送模式之间切换。ShockBurstTM的配置字可以分为以下四个部分:
数据宽度:声明射频数据包中数据占用的位数。这使得nRF2401能够区分接收数据包中的数据和CRC校验码;
地址宽度:声明射频数据包中地址占用的位数。这使得nRF2401能够区分地址和数据;
地址:接收数据的地址,有通道1的地址和通道2的地址;
CRC:使nRF2401能够生成CRC校验码和解码。
当使用nRF2401片内的CRC技术时,要确保在配置字中CRC校验被使能,并且发送和接收使用相同的协议。
在配置模式下,注意保证PWR_UP引脚为高电平,CE引脚为低电平。配置字从最高位开始,依次送入nRF2401。在CS引脚的下降沿,新送入的配置字开始工作。PCB设计
PCB设计对nRF2401的整体性能影响很大,所以PCB设计在nRF2401收发系统的开发过程中主要的工作之一,在PCB设计时,必须考虑到各种电磁干扰,注意调整电阻、电容和电感的位置,特别要注意电容的位置。
nRF2401的PCB一般都是双层板,底层一般不放置元件,为地层,顶层的空余地方一般都敷上铜,这些敷铜通过过孔与底层的地相连。直流电源及电源滤波电容尽量靠近VDD引脚。nRF2401的供电电源应通过电容隔开,这样有利于给nRF2401提供稳定的电源。在PCB中,尽量多打一些通孔,使顶层和底层的地能够充分接触。
nRF2401通过ShockBurstTM收发模式进行无线数据发送,收发可靠,其外形尺寸小,需要的外围元器件也少,因此,使用方便,在工业控制、消费电子等各个领域都具有广阔的应用前景。
由于2401的诸多优点,我们决定选用此芯片完成无线部分。至此我们已经完成整体设计。
嵌入式远程医疗监护系统
二、软件部分
接收程序:
#include “msp430.h” #include “cry1602.h” typedef unsigned char uchar;typedef unsigned intuint;
/**************宏定义***************/ #define DataDir P4DIR #define DataPort P4OUT
#define Busy 0x80 #define CtrlDir P3DIR #define CLR_RS P3OUT&=~BIT0;//RS = P3.0 #define SET_RS P3OUT|=BIT0;
#define CLR_RW P3OUT&=~BIT1;//RW = P3.1 #define SET_RW P3OUT|=BIT1;
#define CLR_EN P3OUT&=~BIT2;//EN = P3.2 #define SET_EN P3OUT|=BIT2;
/*********************************************** 函数名称:DispStr 功 能:让液晶从某个位置起连续显示一个字符串 参 数:x--位置的列坐标 y--位置的行坐标 ptr--指向字符串存放位置的指针 返回值 :无
***********************************************/ voidDispStr(ucharx,uchary,uchar *ptr){ uchar *temp;uchari,n = 0;
temp = ptr;while(*ptr++!= ' ')n++;//计算字符串有效字符的个数
for(i=0;i 嵌入式远程医疗监护系统 } /******************************************* 函数名称:DispNchar 功 能:让液晶从某个位置起连续显示N个字符 参 数:x--位置的列坐标 y--位置的行坐标 n--字符个数 ptr--指向字符存放位置的指针 返回值 :无 ********************************************/ voidDispNChar(ucharx,uchar y, ucharn,uchar *ptr){ uchari; for(i=0;i ********************************************/ voidLocateXY(ucharx,uchar y){ uchar temp; temp = x&0x0f;y&= 0x01;if(y)temp |= 0x40;//如果在第2行 temp |= 0x80; LcdWriteCommand(temp,1);} /******************************************* 函数名称:Disp1Char 嵌入式远程医疗监护系统 功 能:在某个位置显示一个字符 参 数:x--位置的列坐标 y--位置的行坐标 data--显示的字符数据 返回值 :无 ********************************************/ void Disp1Char(ucharx,uchary,uchar data){ LocateXY(x, y); LcdWriteData(data); } /******************************************* 函数名称:LcdReset 功 能:对1602液晶模块进行复位操作 参 数:无 返回值 :无 ********************************************/ voidLcdReset(void){ CtrlDir |= 0x07;//控制线端口设为输出状态 DataDir = 0xFF;//数据端口设为输出状态 LcdWriteCommand(0x38, 0);//规定的复位操作 Delay5ms();LcdWriteCommand(0x38, 0); Delay5ms();LcdWriteCommand(0x38, 0);Delay5ms(); LcdWriteCommand(0x38, 1);//显示模式设置 LcdWriteCommand(0x08, 1);//显示关闭 LcdWriteCommand(0x01, 1);//显示清屏 LcdWriteCommand(0x06, 1);//写字符时整体不移动 LcdWriteCommand(0x0c, 1);//显示开,不开游标,不闪烁 } /******************************************* 函数名称:LcdWriteCommand 功 能:向液晶模块写入命令 参 数:cmd--命令,chk--是否判忙的标志,1:判忙,0:不判 返回值 :无 ********************************************/ voidLcdWriteCommand(ucharcmd,ucharchk){ 嵌入式远程医疗监护系统 if(chk)WaitForEnable();// 检测忙信号? CLR_RS;CLR_RW;_NOP(); DataPort = cmd;//将命令字写入数据端口 _NOP(); SET_EN;//产生使能脉冲信号 _NOP();_NOP();CLR_EN; } /******************************************* 函数名称:LcdWriteData 功 能:向液晶显示的当前地址写入显示数据 参 数:data--显示字符数据 返回值 :无 ********************************************/ voidLcdWriteData(uchar data){ WaitForEnable();//等待液晶不忙 SET_RS;CLR_RW;_NOP(); DataPort = data;//将显示数据写入数据端口 _NOP(); SET_EN;//产生使能脉冲信号 _NOP();_NOP();CLR_EN; } /******************************************* 函数名称:WaitForEnable 功 能:等待1602液晶完成内部操作 参 数:无 返回值 :无 ********************************************/ 嵌入式远程医疗监护系统 voidWaitForEnable(void){ P4DIR &= 0x00;//将P4口切换为输入状态 CLR_RS;SET_RW;_NOP();SET_EN;_NOP();_NOP(); while((P4IN & Busy)!=0);//检测忙标志 CLR_EN; P4DIR |= 0xFF;//将P4口切换为输出状态 } /******************************************* 函数名称:Delay5ms 功 能:延时约5ms 参 数:无 返回值 :无 ********************************************/ void Delay5ms(void){ uinti=40000;while(i!= 0){ i--;} } 发送程序: #include #define DQ1 P2OUT |= BIT4 #define DQ0 P2OUT &= ~BIT4 #define DQ_in P2DIR &= ~BIT4 #define DQ_out P2DIR |= BIT4 #define DQ_val(P2IN & BIT4) /******************************************* 嵌入式远程医疗监护系统 函数名称:DelayNus 功 能:实现N个微秒的延时 参 数:n--延时长度 返回值 :无 说明 :定时器A的计数时钟是1MHz,CPU主频8MHz 所以通过定时器延时能够得到极为精确的 us级延时 ********************************************/ voidDelayNus(uint n){ CCR0 = n;TACTL |= MC_1;//增计数到CCR0 while(!(TACTL & BIT0));//等待 TACTL &= ~MC_1;//停止计数 TACTL &= ~BIT0;//清除中断标志 } /******************************************* 函数名称:Init_18B20 功 能:对DS18B20进行复位操作 参 数:无 返回值 :初始化状态标志:1--失败,0--成功 ********************************************/ uchar Init_18B20(void){ uchar Error; DQ_out;_DINT();DQ0;DelayNus(500);DQ1;DelayNus(55);DQ_in;_NOP();if(DQ_val){ Error = 1;//初始化失败 } else { Error = 0;//初始化成功 } DQ_out;DQ1; 嵌入式远程医疗监护系统 _EINT(); DelayNus(400); return Error;} /******************************************* 函数名称:Write_18B20 功 能:向DS18B20写入一个字节的数据 参 数:wdata--写入的数据 返回值 :无 ********************************************/ void Write_18B20(ucharwdata){ uchari; _DINT();for(i = 0;i< 8;i++){ DQ0;DelayNus(6);//延时6us if(wdata& 0X01)DQ1;else DQ0;wdata>>= 1;DelayNus(50);//延时50us DQ1;DelayNus(10);//延时10us } _EINT();} /******************************************* 函数名称:Read_18B20 功 能:从DS18B20读取一个字节的数据 参 数:无 返回值 :读出的一个字节数据 ********************************************/ uchar Read_18B20(void){ uchari;uchar temp = 0; _DINT();for(i = 0;i < 8;i++){ 嵌入式远程医疗监护系统 temp>>= 1;DQ0;DelayNus(6);//延时6us DQ1;DelayNus(8);//延时9us DQ_in;_NOP();if(DQ_val)temp |= 0x80;DelayNus(45);//延时45us DQ_out;DQ1;DelayNus(10);//延时10us } _EINT(); return temp;} /******************************************* 函数名称:Skip 功 能:发送跳过读取产品ID号命令 参 数:无 返回值 :无 ********************************************/ void Skip(void){ Write_18B20(0xcc);} /******************************************* 函数名称:Convert 功 能:发送温度转换命令 参 数:无 返回值 :无 ********************************************/ void Convert(void){ Write_18B20(0x44);} /******************************************* 函数名称:Read_SP 功 能:发送读ScratchPad命令 参 数:无 返回值 :无 ********************************************/ 嵌入式远程医疗监护系统 voidRead_SP(void){ Write_18B20(0xbe);} /******************************************* 函数名称:ReadTemp 功 能:从DS18B20的ScratchPad读取温度转换结果 参 数:无 返回值 :读取的温度数值 ********************************************/ uintReadTemp(void){ uchartemp_low;uint temp; temp_low = Read_18B20();//读低位 temp = Read_18B20();//读高位 temp =(temp<<8)| temp_low; return temp;} /******************************************* 函数名称:ReadTemp 功 能:控制DS18B20完成一次温度转换 参 数:无 返回值 :测量的温度数值 ********************************************/ uint Do1Convert(void){ uchari;do { i = Init_18B20();} while(i);Skip();Convert();for(i = 20;i > 0;i--)DelayNus(60000);//延时800ms以上 do { i = Init_18B20();} 嵌入式远程医疗监护系统 while(i);Skip();Read_SP();returnReadTemp();} 附:为方便排版,故将硬件连接以照片形式上交。故此处略去该部分图片。 《嵌入式系统》作业四 一、判断题 1.X86 CPU有8位、16位、32位通用寄存器各8个,共能存储448位数据。× 2.状态寄存器的SF标志位是进位标志。× 3.超线程技术和多线程技术原理一样,只是同一种技术的不同叫法。× 4.BIOS的唯一作用就是引导操作系统。× 5.ROM能够永久或半永久地保存数据,ROM内的数据永远不会丢失。× 6.SATA的数据传输速率不及PATA,因为SATA只有一根线在传输数据,而PATA在同一时刻有几根线在并行传输数据。× 7.鼠标、键盘为低速输入设备,所以一定连接在南桥芯片上。√ 8.DDR和DDR2内存都在时钟的上升和下降沿读取内存数据。√ 9.当电脑的USB接口不够使用时,可以使用USB HUB来扩展USB接口。√ 10.X86中,不同指令的长度不一致。√ 二、选择题 11.下列处理器中,哪个是真正的双核处理器(D) A奔腾3 B奔腾4 C奔腾4超线程处理器 D奔腾D 12.下列中断中,哪一个中断与其他3个中断不属于同一个类型(D)A鼠标按键 B键盘按键 C写字板写入D 程序读取内存时缺页 13.下列设备中,哪个设备不是连接在北桥芯片上的(D)ACPU B内存 C显卡 DUSB 14.下列哪个段寄存器指示程序的代码段(A) A.CS B DS C SS DFS 15.MMX指令时一组多媒体扩展指令,能够加速图形命令,这组扩展指令是由哪个公司提出的(A) A. Intel BAMD CNvidia DATI 16.下列存储设备中,数据最不容易丢失的是(A) A. EPROM BDRAM C内存 DSDRAM 17.下列接口中,数据传输速率最高的是(C)A. IDE BSATA CSCSI DUSB 18.Hyper Threading和SMT的区别在于(B) A. 多组寄存器 B并行执行多个线程 C共享执行单元 D共享控制逻辑 19.下列哪个指令集不属于多媒体、3D图形加速的指令集(D)A.MMX BSSE C3D NOW DAT 20.下列Intel处理器中,使用微指令的处理器为(D)A.80386 B80486 CPentium DPentium4 三、简答题 21.BIOS的作用和功能是什么? 作用:BIOS 硬件与软件程序之间的一个“连接器”或者说是接口,负责解决硬件的即时需求,并按软件对硬件的操作要求具体执行。它为计算机提供最低级的、最直接的硬件控制,计算机的原始操作都是依照固化在BIOS里的内容来完成的。功能:1自检及初始化2程序服务3设定中断 22.南桥和北桥的主要功能各是什么? 北桥连接高速数据传输设备。北桥芯片负责与CPU的联系并控制内存、AGP、PCI数据在北桥内部传输,提供对CPU的类型和主频、系统的前端总线频率、内存的类型(SDRAM,DDR SDRAM以及RDRAM等等)和最大容量、ISA/PCI/AGP插槽、ECC纠错等支持,整合型芯片组的北桥芯片还集成了显示核心。 南桥连接低速数据传输设备。南桥芯片负责I/O总线之间的通信,如PCI总线、USB、LAN、ATA、SATA、音频控制器、键盘控制器、实时时钟控制器、高级电源管理等。 作业一 1.Linux 内核稳定、功能强大并且可以裁减,因为非常适合嵌入式应用。√ 2.Linux 内核的中断服务程序运行于与所有进程都无关的中断上下文中。√ 3.Linux遵循POSIX标准,意味着绝大多数UNIX应用程序不需要任何改动就可以在Linux系统上编译且运行。√ 4.Linux内核支持可以裁减的功能,因此它属于微内核架构。× 5.Linux在fork()时采用了写时拷贝(简称COW)技术,允许父进程和子进程同时共享相同的物理页面。√ 6.任何一个Linux应用程序都需要调用exit()函数。√ 7.当前的Linux调度算法非常高效,但是查找当前最高优先级的可运行程序时,开销会随着可运行程序的多少而变化。× 8.Linux的系统调用是作为C库的一部分提供的。√ 9.为了对硬件做出迅速的响应并完成对时间严格的操作,中断处理下半部必须在关中断状态下执行。× 10.Linux的内存管理采用了分页的机制,因此即使是内核本身也全部是分页的。× 11.通过文件名存取文件时,文件系统内部的操作过程是通过(B)C A.文件在目录中查找文件数据存取位置。B.文件名直接找到文件的数据,进行存取操作。 C.文件名在目录中查找对应的i节点,通过i节点存取文件数据。 D.文件名在中查找对应的超级块,在超级块查找对应i节点,通过i节点存取文件数据。12.Linux 实现的虚拟文件系统(VFS)有几个主要类型的结构体对象,以下选项中,不属于VFS结构体对象的是(D) A.超级块(superblock)对象 B.目录项(inode)对象 C.文件(file)对象 D.数据(date)对象 13.关于Linux的内存管理方式中,叙述正确的是(A) A.在32位x86上,当内存容量超过896M时,必须采用区(zone)的概念 B.为了能够执行磁盘的DMA操作,任有架构上必须有ZONE_DMA这个区 C.slab分配器作为通用数据结构缓存层的角色,不会产生内存碎片 D.内核具有超级权限,在内核栈中可以比用户栈中分配更多的空间 14.Linux的内核同步方法中哪种可用于休眠(B)C A.原子操作方法 B.自旋锁与读-写自旋锁 C.信号量与读-写信号量 D.屏障 15.关于Linux的系统调用使用情况,最恰当的是(B) A.由于系统调用号数目有限,那些不再使用的调用号需要回收利用 B.系统调用函数的参数必须通过寄存器传送 C.Linux的所有系统调用都有一个明确的用途 D.自定义系统调用可以不修改内核 16.Linux的进程管理中,正确的是(A)B A.Linux中,进程和程序是一个概念 B.Linux中,进程和线程是一个概念 C.进程描述结构是task_struct,其空间由slab分配器分配。 D.x86结构中有一个寄存器存储了task_struct的地址,用于快速定位 17.关于Linux的调度机制中,不恰当的是(A)D A.Linux提供了基于动态优先级的调度机制 B.调度程序对优先级高的进程默认分配更长的时间片 C.当调度程序查找可执行程序时,查找时间不会因为系统任务繁重而变慢 D.当need_resched被设置时,系统就立刻调用schedule()进行调度 18.不属于Linux在处理器上的上下文执行环境的是(D) A.运行于内核空间的进程上下文,代表请求服务的进程被执行 B.C.D.A.B.C.D.A.B.C.D.运行于内核空间的进程上下文,处理当前响应的中断 运行于用户空间,执行用户进程 运行于用户空间,处理当前响应的中断 Linux的效率非常高,因此经常被用在有硬实时需求的环境中 在用Linux作为系统的嵌入式环境中,一定要使用ARM的处理器 Linux可以运行在没有内存管理单元(MMU)的架构上 Linux的内核抢占是所有嵌入式应用中必须的 不必在相同的架构上编译,也就是可以交叉编译 内核编译可以不提供动态加载模块的功能 模块的编译必须在编译内核时进行 Linux内核的编译只能使用gcc才能完成 19.对Linux内核的理解,一定正确的是(C) 20.关于Linux内核的编译,错误的是(C) 21.请简述用户自定义一个Linux系统调用的步骤过程。 答: 如果用户在Linux中添加新的系统调用,应该遵循几个步骤才能添加成功。 (1)添加源代码 (2)连接新的系统调用 (3)重建新的Linux内核 (4)用新的内核启动系统 22.简述Linux的slab分配器作用和原理 答:slab分配器的作用 slab分配器源于 Solaris 2.4 的分配算法,工作于物理内存页框分配器之上,管理特定大小对象的缓存,进行快速而高效的内存分配。 slab 分配器为每种使用的内核对象建立单独的缓冲区。Linux 内核已经采用了伙伴系统(Buddy System)管理物理内存页框,因此slab分配器直接工作于伙伴系统之上。每种缓冲区由多个 slab 组成,每个 slab就是一组连续的物理内存页框,被划分成了固定数目的对象。 为了充分利用硬件高速缓存,slab 分配器允许对象在一级硬件高速缓存中对齐(创建缓冲区时,设置 SLAB_HWCACHE_ALIGN 标志);同时使用着色(color)策略,使得同一缓冲区内不同 slab 中相同编号的对象的地址相互错开,避免它们被放入同一物理高速缓存行而造成频繁换入/换出的性能损失。 为了支持多处理器同时分配对象,缓冲区为每个处理器维护一个本地缓存。处理器直接从本地缓存中分配对象,从而避免了锁的使用;当本地缓存为空时,从 slab 中批量分配对象到本地缓存。 slab分配器的原理:slab分配器分配的各种内存块被看作不同类型的对象,采用对象复用技术可以对对象进行如下操作:①.分配内存;②.构造对象;③.使用对象;④.析构对象;⑤.释放对象.有时系统会频繁地分配和释放对象,从而使对象构造和析构的开销很大, slab分配器采用基于对象缓存技术,可以大大优化这方面的性能.。slab分配器的结构:slab分配器主要有三层数据结构:对象缓存, slab对象.对象缓存 slab分配器给每一种对象分配一个缓存,同时提供一组2次幂常用缓存给不需要私有对象缓存的用户.Cache_cache缓存负责分配管理缓存的结构kmem_cache_s,再由kmem_cache_s以链表结构引出空闲对象.slab分配器是一种快速,安全,高效,对硬件支持较好的分配器,预计在未来的Linux版本中还将使用slab分配器并对其做出改进 《嵌入式系统》作业二 1.嵌入式系统由上到下主要分为3个层次:应用软件层,系统软件层,硬件层。× 2.嵌入式系统的软硬件是独立设计的。× 3.嵌入式系统设计需要建立交叉开发环境。√ 4.通用系统程序开发不需要建立和使用交叉编译环境√ 5.对于C++代码,gcc命令只能编译其源文件,而不能自动和C++程序使用的库链接。√ 6.嵌入式系统可以没有操作系统√ 7.JTAG测试允许多个器件通过JTAG接口串联在一起形成一个JTAG链,能实现对各个器件分别测试。√ 8.GDB调试器只支持本地调试应用程序 × 9.KGDB程序是一个 专门用于调试Linux内核的GDB调试桩 √ 10.片上调试器是存在重叠RAM。× 11.(B)是针对不同的硬件模块、硬件模块与嵌入式处理器之间的连接关系对硬件位置的调整。 A 硬件划分 B 硬件布局 C 硬件选择 D 软硬件协同 12.(C)是嵌入式系统设计者在选择处理器时不考虑的因素。A 处理性能 B 功耗 C 市场占有率 D 是否有成熟的评估板设计 13.交叉开发环境包括交叉编译环境和(A)。 A 交叉链接器 B 交叉调试器 C 交叉编辑器 D 交叉生成器 14.嵌入式软件测试分黑盒测试和(A)。 A 白盒测试 B 交叉测试 C 功能测试 D 需求测试 15.(B)不是JTAG接口的5条线之一 A TCK B TAP C TDI D TRST 16.(D)不是嵌入式硬件调试中使用的主流工具 A 示波器 B 逻辑分析仪 C 在线仿真器 D 逻辑仿真器 17.ICE在线仿真器上有大量的RAM,(C)是主要的一种 A SRAM B DRAM C 影子RAM D Block RAM 18.嵌入式系统调试通常可以分为硬件级调试和(B)。 A 软件级调试 B 源码级软件调试 C 在线仿真器调试 D 片上器调试 19.(A)是目前使用最广泛的一类调试手段 A 断点 B 插桩 C 触发器 D 步进 20.(D)不是断点的4种状态之一 A 有效 B 一次有效 C 禁止 D 一次禁止 21.嵌入式系统设计流程 1产品定义2硬件与软件部分划分3迭代与实现4详细的硬件与软件设计5硬件与软件的集成6系统测试与发布 22.嵌入式的软件调试方法有哪些? 插桩调试法,直接调试法,ROM仿真法,模拟器法 作业三 一、判断题 1.ARM属于CISC体系架构。× 2.除了用户模式外,ARM处理器的其它几种工作模式属于特权模式。√ 3.在任何模式下,ARM处理器都可以访问全部寄存器。× 4.在ARM处理器中,快速中断(FIQ)的优先级高于外部中断(IRQ)。√ 5.使用立即寻址时,目标寄存器可以为立即数。× 6.BLX指令可以将处理器切换到Thumb状态。√ 7.链接寄存器(LR)用于保存子程序的返回地址,它不能用作其他用途。× 8.由于使用寄存器R0-R3来传递参数,所以调用子程序时,参数不能超过4个。× 9.使用汇编编写ARM程序时,可直接为PC寄存器赋值。√ 10.ATPCS是ARM程序和Thumb程序中子程序调用的规则,它是一套强制规则。× 11.下列哪项不是ARM处理器的特点。B A.小体积、低功耗 B.可以使用除加载/存储指令外的多种指令访问存储器 C.大多数数据操作在寄存器中完成,执行速度快 D.支持Thumb/ARM双指令集 12.当加法指令产生进位时,下列哪个条件标志位会发生变化:A A.C BT CI DF 13.下列哪个不属于ARM处理器的寻址方式:D A.立即寻址 B.寄存器寻址 C.寄存器间接寻址 D.链表寻址 14.下列哪条指令是块操作指令:C A.STMFD BPOP CLDMIA D PUSH 15.下列哪条指令把寄存器R1、R2的值相加后存到R0中:C A.AND R0, R1, R2 B.SUB R0, R1, R2 C.ADD R0, R1, R2 D.AND R1, R2, R0 16.R0的中的值为0xFFF3,执行指令AND R0, R0, #3后,R0的值为:A A.0x0003 B0Xffff C0xFFF0 D0xFFF3 17.CPZSR寄存器中的Z条件码为0,当前的PC值为0xFF00,则执行BEQ 0xAAA0后,PC值为:C A.0xAAA0 B0xAAA4 C0xFF04 D 0xFF00 18.下列哪条ARM汇编伪指令可用来定义符号:A A.GBLA B.IF C.MAP D.WHILE 阅读下列程序,回答9~10题: LDR R0, 0x22 LDR R1, 0x11 SUB R0, R0, R1 CMP R0, R1 19.执行这段程序后,R0的值为:C A.A 0x22 B.B 0x33 C.C 0x11 D.D 0 20.执行这段程序后,CPSR的下列哪个标志位将发生变化:C A.C B.V C.Z D.以上都不对 三、简答题 21.请简述ARM处理器的堆栈寻址和块拷贝寻址模式,并比较它们的不同点。堆栈寻址: 按先入先出的方式工作。 块拷贝寻址: 一种多寄存器传送指令,用于将一块数据从存储器的某一块位置拷贝到多个寄存器中或相反。主要不同点:两者存放数据的顺序相反。 22.函数strncpy的作用是将长度为n的数组s拷贝至d,void strncpy(char *s, const char *d, int n){ int c;__asm { loop: CMP n, #0 BEQ out LDRB c, [s], #1 STRB c, [d], #1 SUB n, n, #1 B loop out: } } 请将该函数补充完整。 作业四 一、判断题 1.2.3.4.5.6.7.8.9.X86 CPU有8位、16位、32位通用寄存器各8个,共能存储448位数据。× 状态寄存器的SF标志位是进位标志。× 超线程技术和多线程技术原理一样,只是同一种技术的不同叫法。× BIOS的唯一作用就是引导操作系统。× ROM能够永久或半永久地保存数据,ROM内的数据永远不会丢失。× SATA的数据传输速率不及PATA,因为SATA只有一根线在传输数据,而PATA在同一时刻有几根线在并行传输数据。× 鼠标、键盘为低速输入设备,所以一定连接在南桥芯片上。√ DDR和DDR2内存都在时钟的上升和下降沿读取内存数据。√ 当电脑的USB接口不够使用时,可以使用USB HUB来扩展USB接口。√ 10.X86中,不同指令的长度不一致。√ 11.下列处理器中,哪个是真正的双核处理器(D) A奔腾3 B奔腾4 C奔腾4超线程处理器 D奔腾D 12.下列中断中,哪一个中断与其他3个中断不属于同一个类型(D) A鼠标按键 B键盘按键 C写字板写入D 程序读取内存时缺页 13.下列设备中,哪个设备不是连接在北桥芯片上的(D) ACPU B内存 C显卡 DUSB 14.下列哪个段寄存器指示程序的代码段(A) A.CS B DS C SS DFS 15.MMX指令时一组多媒体扩展指令,能够加速图形命令,这组扩展指令是由哪个公司提出的(A) A. Intel BAMD CNvidia DATI 16.下列存储设备中,数据最不容易丢失的是(A) A. EPROM BDRAM C内存 DSDRAM 17.下列接口中,数据传输速率最高的是(C) A. IDE BSATA CSCSI DUSB 18.Hyper Threading和SMT的区别在于(B) A. 多组寄存器 B并行执行多个线程 C共享执行单元 D共享控制逻辑 19.下列哪个指令集不属于多媒体、3D图形加速的指令集(D) A.A.MMX BSSE C3D NOW DAT 80386 B80486 CPentium DPentium4 20.下列Intel处理器中,使用微指令的处理器为(D)21.BIOS的作用和功能是什么? 作用:BIOS 硬件与软件程序之间的一个“连接器”或者说是接口,负责解决硬件的即时需求,并按软件对硬件的操作要求具体执行。它为计算机提供最低级的、最直接的硬件控制,计算机的原始操作都是依照固化在BIOS里的内容来完成的。功能:1自检及初始化2程序服务3设定中断 22.南桥和北桥的主要功能各是什么? 北桥连接高速数据传输设备。北桥芯片负责与CPU的联系并控制内存、AGP、PCI数据在北桥内部传输,提供对CPU的类型和主频、系统的前端总线频率、内存的类型(SDRAM,DDR SDRAM以及RDRAM等等)和最大容量、ISA/PCI/AGP插槽、ECC纠错等支持,整合型芯片组的北桥芯片还集成了显示核心。 南桥连接低速数据传输设备。南桥芯片负责I/O总线之间的通信,如PCI总线、USB、LAN、ATA、SATA、音频控制器、键盘控制器、实时时钟控制器、高级电源管理等。 作业五 一、判断题 1.根据电路是否具有存储功能,将逻辑电路划分为两种类型:组合逻辑电路和时序逻辑电路。√ 2.所谓时序逻辑电路,是指电路任一时刻的输出仅与该时刻的输入有关。× 3.触发器按时钟控制方式来分,有电位触发、边沿触发、主从触发等方式。√ 4.总线数据通信方式按照传输定时的方法可分为同步式和异步式两类。√ 5.在计算机系统中,有效功耗与电源电压成正比。× 6.动态调整处理器的时钟频率和电压有助于降低系统功耗。√ 7.高速缓存(cache)相比内存容量更大,速度更快。× 8.RS-232C是一种广泛应用于微机通信中的并行通信协议。× 9.硬件描述语言(HDL)是一种用软件编程的方式来描述电子系统的逻辑功能、电路结构和连接形式的计算机语言。√ 10.内建测试系统(BIST)是SoC片上系统的重要 结构之一,JTAG测试接口是IC芯片测试方法的标准。√ 11.下列哪一个不是布尔代数的操作符 D A.OR B.AND C.NOT D.YES 12.早期的可编程逻辑器件不包括下列哪一种 D A.PROM B.EPROM C.EEPROM D.FPGA 13.XC系列FPGA是下列哪个公司的产品 A A.Xilinx B.Altera C.Intel D.AMD 14.下列哪种不是低功耗的设计技术 D A.采用低功耗器件 B.实现电源管理 C.动态调压技术 D.散热设计技术 15.下列哪个是计算机系统中存储速度最慢的存储设备 D A.CPU内部寄存器 B.高速缓存(Cache)C.内存 D.硬盘 16.下列哪种存储设备在掉电情况下会丢失数据 A A.内存 B.Flash Memory C.CF卡 D.硬盘 17.下列那个单位用来表示信息的传输速率 C A.刷新率 B.分辨率 C.比特率 D.占有率 18.下列哪一种不是计算机总线 D A.USB B.PCI C.VME D.EDA 19.下列哪一种不是硬件描述语言 C A.AHDL B.VHDL C.C++ D.Verilog 20.下列哪种方法不能改善电路的可测试性 C A.将复杂的电路做成单独的模块 B.采用电路技术,使测试矢量生成难度减少 C.改进可控性和可观察性 D.添加自检查设备 21.描述总线性能的有哪些参数?什么样的情况会导致总线冲突?后果是什么?采用什么样的技术来避免这种情况的发生?描述总线性能的参数有总线带宽、总线宽度、总线的单元时钟频率和总线的负载能力 如果两个设备正好同时把数据放到总线上,就可能发生总线冲突 后果是可能会使设备失效 采用三态门 22.可编程门阵列由哪几部分组成?各自的作用是什么? 1、可编程逻辑宏单元:通过编程来实现用户所需的逻辑 2、可编程输入输出宏单元:通过编程来实现所需的输入输出方式控制 3、互连资源:内部互连 4、重构逻辑的程序存储器:存储配置程序 作业六 一、判断题 1.SoC拥有电子整机的完整功能。√ 2.SoC的部分功能需借助传统的PCB来实现。× 3.三种IP核中对移植,改进的工作灵活性最差的是固核。× 4.传统的ASIC设计方案是自下而上的(down-up)。√ 5.SoC结构发展的一个特点是:用硬连接逻辑功能块替代定制的专用处理器。× 6.7.8.9.VHDL语言与工艺有关。× Verilog HDL可以从算法级,门级到开关级的多种抽象设计层次的数字系统建模。√ Verilog没有内置开关级原语。× VHDL的代码风格类似于C语言。× 10.Leon系列处理器的cache不分离指令和数据。× 11.以下哪些部件不一定包括在SoC当中(C) A.微处理器 B.模拟IP核 C.存储器或片外存储控制接口 D.FPGA 12.以下哪一个不属于IP核的分类(C.) A.软核 B.硬核 C.模拟核 D.固核 13.目前SoC的结构通常是(D) A.片上网络 B.总线 C.硬连线 D.共享存储器交互 14.致力于IP核质量衡量,提升IP核安全性和有关标准研发的组织不包括(D) A.VSIA B.OCP-IP C.SPIRT D.VCID 15.SoC形成或产生的过程不包括以下哪个方面(C.) A.单片集成系统的软硬件协同设计和验证,以实现系统功能为主要目的 B.逻辑面积计数的使用和产能占有比例的有效提高,即开发和研究IP核生成及复用技术 C.系统软件的建模与开发,即对IP核的配套 D.超深亚微米(VDSM),纳米集成电路的设计理论和计数,即与底层技术的结合 16.以下哪个不属于比较成熟的嵌入式处理器技术(C)。A.RISC B.DSP C.CMP D.ASISP 17.VHDL的基本单元描述不包括(C) A.实体 B.构造体 C.函数 D.库 18.以下哪种方式不是Verilog对设计建模的方式(B.) A.行为描述方式---用过程化结构建模B.接口描述方式---用模块化结构建模 C.数据流方式---使用连续赋值语句方式建模D.结构化方式---用门和模块实例语句描述建模 19.目前Leon系列处理器包括以下哪个型号(A) A.Leon2 B.Leon1 C.Leon4 D.Leon5 20.Leon系列处理器目前最多有几级流水(C.) A.5 B.6 C.7 D.8 三、简答题 21.简述SoC设计的三种方法 系统集成法 部分集成法 IP集成法 p227 22.简述软硬件划分的原则 软硬件划分的基本原则是高速,低功耗由硬件实现;多品种、小批量由软件对应,处理器和专用硬件并用以提高处理速度和降低功耗。P231 作业七 一、判断题 1.2.3.4.5.6.7.8.9.嵌入式系统是用来控制、监视或辅助设备、机器和工程运行的装置。√ 嵌入式处理器可以是通用处理器(GPP),专用系统处理器(ASSP), FPGA核。× 冯∙诺依曼结构与哈佛结构的不同之处在于前者将程序与数据存储在不同的存储空间,或者则相反。× 指令集一般由数据传输指令,运算指令,逻辑指令和程序流控制指令组成。(位传送或控制指令)× 吞吐量是指单位时间里执行的指令数量。即p = 1/∆T, ∆T= max(∆t1,∆t2,…,∆tm)。√ 小端字节顺序存储法是把高字节数据存放到在低地址,低字节的数据存放到高地址处;而大端字节顺序存储法则相反。× MIPS 体系由 MIPS指令集体系ISA, MIPS特权资源体系PRA,MIPS特定应用扩展ASE,MIPS用户定义指令集UDI。√ 嵌入式微处理与微控制器(MCU)相比,具有单片化,体积大大减少,功耗和成本低,可靠性好。× DSP处理器由于本身的设计适合执行DSP算法,编译效率高,执行速度高,但是DSP的发展随着嵌入式系统智能化的发展,出现不适合运算量较大的情况。× 10.嵌入式系统比较流行的操作系统有Linux, Windows CE, VxWorks等。√ 11.嵌入式系统的发展可大概分为四个阶段,其中第三个阶段是(B)A.单片机的嵌入式系统,结构和功能单一,用于工业控制领域。B.实时操作系统的嵌入式系统的嵌入式系统阶段。 C.简单的嵌入式阶段,有较高的可靠性,低功耗的嵌入式处理器和简单的操作系统。D.面向Internet的阶段。 12.下面不是CISC与RISC的架构的差异是(D) A.指令数量不同,前者多,或者较少,通常少于100.B.前者有些指令执行时间较长,后者则没有。 C.前者有丰富的寻址模式,而后者有较少的寻址模式。 D.前者有复杂的编译器设计,可优化编译技术,生成高效的目标代码程序,而后者则是简单的编译器设计,难以优化生成高效的目标代码程序。 13.下面不是嵌入式ARM架构的嵌入式处理器的特点是(C) A.具有大量的寄存器,指令执行速度快。 B.绝大多数操作都在寄存器中进行,通过Load/Store的体系结构在内存和寄存器之间传递数据。C.同时支持大端、小端(Big/Little-Endian)数据类型。D.寻址方式简单,采用固定长度的指令格式。 14.Linux是UNIX类操作系统的一种,它对UNIX有很好的兼容性,下面不是它特点的是(A) A.实时性强 B.互操作性强 C.多硬件平台支持,多处理器支持。 D.内存保护模式,共享库支持,TCP/IP、SLIP和PPP支持。 15.VxWorks 操作系统是WindRiver公司推出的一种32位嵌入式实时操作系统,下面不是它优点的是(A)A.VxWorks源码开源,用户的开发成本低。B.简洁、紧凑、高效的内核。C.支持多任务,实时性强。 D.较好的兼容性和对多种硬件环境的支持。16.下面不是流水线技术的特点是(A) A.指令流水将会终止,如果发生不能顺序执行时。B.流水线可分成若干相互联系的子过程。C.实现子过程的功能所需时间尽可能相等。D.形成流水处理需要一定的准备的时间。 17.下面不是PowerPC的嵌入式微处理器的通信产品是(D) A.MPC860 B.MPC8245 C.MPC8260 D.Pro SeriesTM 18.下面是PowerPC架构嵌入式微处理器的不是主要特点是(C) A.独特的分支出来单元可以让指令预期效率大大提高。B.超标量的设计。 C.适合大量向量运算,指针现行寻址的智能化算法。D.可处理“字节非对齐”的数据存储。19.下面不是Windows CE操作系统开发工具是(B) A.Platform Builder.B.Eclipse。 C.Embedded Microsoft Visual C++.D.Visual Studio.NET 20.嵌入式系统性能从几个方面进行度量,下面不是其性能指标的是(B) A.吞吐量。B.功耗高低。C.资源利用率。D.实时性。 21.简述各各嵌入式微处理器之间的特点以及微处理器与微控制器之间的优劣。 答:1.RAM微处理器的一般特点。大量寄存器,绝大操作都在寄存器中,寻址方式简单,固定长度的指令格式。2.3.4.22.分析嵌入式Linux 操作系统特点,以及与其他操作系统的不同。 答:1 互操作性强 任务和多用户支持 多处理器支持 多硬件平台支持 多文件系统支持 多格式可执行文件支持 内存保护模式 共享库支持 按需调入执行 TCP/IP、SLIP和PPP支持。2写出Windows CE 和VxWorks的一两个特点比较即可 作业八 一、判断题 1.对于软实时系统来说,它的时间有求有一个确定的底线(deadline),超出底线的响应属于错误的结果,系统将会崩溃。× 2.wind内核任务切换开销非常低,并且没有系统调用开销。√ 3.嵌入式操作系统通常采用整体式内核或层次式内核的结构。× 4.在VxWorks中,系统调用和一般函数调用没有什么差别。√ 5.wind内核支持256级优先级:0~255,优先级255为最高优先级,优先级0为最低优先级,任务优先级在创建时确定,并允许在程序运行中动态修改。× 6.任务一旦被“挂起”,在解除“挂起”之前,任务的一切状态都保持不变。× 7.wind的调度算法是逐进程的,不同进程内的线程可以采用不同的调度策略。× 8.在VxWorks系统中,仿照UNIX操作系统,将设备当作文件来管理。√ 9.VxWorks的中断服务程序不能像其它的程序一样进行内存的分配。√ 10.在VxWorks启动过程的第二阶段中断被禁止。× 11.当任务等待的资源变得可用时,会触发的任务状态的转换是(B) A.运行-->阻塞 A.吞吐量 A.串口设备 A.字符设备 A.TLB B.阻塞-->就绪 B.响应时间 C.延迟-->就绪 C.优先级 D.运行-->延迟 D.周转时间 12.下列的评价指标中,对于实时系统的调度策略最重要的是(C)13.设备名”/sd0”对应的设备类型是(D) B.软盘驱动器 B.虚拟设备 B.TCB C.管道设备 C.网络设备 C.BSP D.SCSI设备 D.块设备 D.以上皆不是 14.在VxWorks系统中,下面不属于I/O设备宏观上分类的类型的是(B)15.用来描述一个任务,使得任务得以独立运行的数据结构是(B)16.下列选项中,是属于引起异步上下文切换的原因的是(A) A.ISR使更高优先级任务就绪 C.降低自身优先级或退出 A.具有可抢占的内核 C.任务调度的公平性 B.进行阻塞的调用 D.进行延迟、挂起的调用 B.中断可嵌套 D.具有优先级翻转保护 MIPS 其机制是尽量利用软件方法避免流水线中的数据相关。 PowerPC独特的分支出来单元可以让指令预期效率大大提高;超标量的设计;可处理“字节非对齐”的数据存储。微处理器与微控制单元区别:微控制单片化,体积大大减少,从而功耗和成本下降、可靠性提高。 17.下列选项中,不是实时操作系统必须满足的条件是(C) 18.Vxworks的wind微内核采用单一是地址空间模式,其优势在于(D)A.任务切换时不需要进行虚拟地址空间切换B.任务间可以直接共享变量 C.系统调用时不需要在核心态和用户态之间切换D.以上皆是 19.下列属于虚拟设备的是(A) A.管道 B.键盘 C.磁盘 D.网卡 20.下列中断处理过程的步骤,最先执行的是(D) A.安装堆栈 B.调用中断服务 C.恢复堆栈 D.保存寄存器 1.简述VxWorks的启动过程 参考P334图 第一阶段 1代码已经位于RAM中2系统处于不会发生中断的静止状态(必须包括处理器中断被禁止和各个设备中断被禁止)在该阶段,“处理器初始化”和“代码装入”即通常所说的引导代码。第二阶段 1、激活多任务的内核 2、安装设备驱动 3、各种组件初始化 2.简述VxWorks下中断处理过程 参考P337 1当设备产生IRQ(中断请求)时,中断当前任务并取中断类型号2在中断应答期间,系统决定哪个设备需要服务(计算中断向量地址)3为设备调用适当的函数(系统注册的设备中断服务程序)4在VxWorks定义的中断包裹函数里,保存寄存器值及调用用户定义的中断服务程序5中断处理结束后,从中断服务器程序返回并恢复寄存器值6如果执行中断服务程序后,没有高优先级的任务运行,则恢复被中断任务的执行 第九次: 一、判断题 1.2.3.4.5.6.7.8.9.GUI是指用户图形接口,是计算机与其使用者之间的对话接口,是计算机系统的重要组成部分。√ GUI系统涉及到的主要技术有事件驱动、输出显示和资源管理等。√ 嵌入式GUI系统大多内嵌于操作系统,不能进行配置。× MiniGUI-Processes上的程序可以在不同的线程中建立多个窗口,但所有的窗口在一个进程或者地址空间中运行。× MiniGUI不支持跨操作系统。× Qtopia Core使用的是一种客户/服务器的体系结构。√ 在Qt中使用信号和槽的机制来代替回调。√ Qtopia Core支持所有主流的嵌入式Linux。√ Alpha混合技术的作用是实现半透明效果。√ 10.分层窗口技术会依赖于一些高级图形技术的支持。√ 11.以下不是嵌入式中常用GUI的是 C A.Tiny-X B.UC/GUI C.Gnome D.Qtopia Core 12.以下不是嵌入式GUI特征的是 C A.功能强,体积小 B.可靠性高 13.嵌入式GUI的发展趋势有 D A.以用户为中心 B.智能化 C.高带宽 D.以上都是 B.MiniGUI-Processes C.MiniGUI-Independent D.UC/GUI C.不支持多种字体 D.可定义新字体 D.MiniGUI-Standalone 14.以下MiniGUI配置中不需要多线程和多进程配置的是 D A.MiniGUI-Threads 15.Qtopia Core的前身是 B A.x-window B.Qt/embedded C.VxWorks B.不支持浮点 16.以下不是UC/GUI特征的是 C A.支持位图转换 A.三维图形API A.ASCII 17.WindML的主要功能中没有的是 A B.事件服务 C.区域和窗口管理 D.多媒体和资源管理 D.GB2312 D.电容式触摸屏 18.以下字符编码中属于Unicode的是 C B.Big5 C.UTF-16 19.以下不是常见的触摸屏种类的是 C A.红外线触摸屏 A.Tiny-X 分为四个模块: 1、GUI用户接口模块:该模块为上层应用软件开发人员提供方便、易用的API接口函数 2、GUI对象模块:GUI对象模块对窗口环境中的逻辑对象进行组织管理。 3、GUI基本图形模块:在该模块中实现了对显示输出设备的操作,如画点、画线、画矩形等基本功能,还有对字符的解析输出以及对图形的解析输出。 4、GUI消息驱动模块:该模块是GUI系统的通信模块,负责GUI的消息接收和与其他任务的通信以及消息队列的维护。22.Qtopia Core的底层图形接口是什么?它的驱动程序的实现分为哪两个方面? Framebuffer。Framebuffer驱动程序的实现分为两个方面:一方面是对LCD以及其相关部件的初始化,包括画面缓冲区的创建和对DMA通道的设置;另外一方面是对画面缓冲区的读写.(课本354页倒数第二段和355页第四段)B.表面声波触摸屏 C.电感式触摸屏 C.Qtopia Core 20.以下基于VxWorks的GUI是 D B.MiniGUI D.WindML 21.嵌入式GUI的实现一般要划分为几个模块?简述各个模块的功能。 C.平台针对性强,可移植性差 D.占用资源少 基于web的嵌入式远程监控系统 第1页 共33页 基于web的嵌入式远程监控系统 学生:刘 仁 指导老师:蔡 硕 摘要: 随针对当前国内国外嵌入式服务器技术研究和发展情况的分析,本报告提出了将 WEB 服务器、嵌入式系统以及当前的一些嵌入式实验板板载功能进行融合的设计思想。设计了结合 WEB 服务器技术的嵌入式监控系统。该系统具有浏览交互式网页,对嵌入式平台进行监视和控制等功能。通过本套嵌入式WEB 服务器系统,用户可以通过 HTTP 协议方便的访问相应的嵌入式平台进行有效监视的同时还可以进行实时的有效控制。该系统对硬件要求极低、响应速度快、安全性好、可扩展性强等优点,具有较高的实际应用价值。该系统在智能家居、嵌入式组网等方面的应用将有较广阔的发展前途。 关键词:ARM 嵌入式系统;嵌入式 web 监控;boa 服务器;CGI 编程;Linux 操作系统 关键词:自动化、奏乐器、VHDL、数字电路 基于web的嵌入式远程监控系统 第2页 共33页 Abstract: According to the analysis of the researches about the status of the mbeddedserver of the world.We rise a design of a embedded internet control system basedon the Web service which integrates the web server,embedded technology and thefunctions on the embedded experiment Board.This system has the function of browsing the web pages,monitoring theembedded Board and so on.With this embedded WEB server,the users can watchthe embedded system conveniently according the HTTP protocol.At the sametime the users can also monitor the ystem.This system have a lot of longtageslike a low request of the hardware,limited time of response and a stable status.Wewill see that this kind of system used in the application of intelligent familyelectronics,embedded neting and so on would have a good development.Keywords: ARM Embedded System;Embedded Web Server System;Boa Server;CGI Programing;Linux Operating System 基于web的嵌入式远程监控系统 第3页 共33页 引 言 嵌入式系统课程设计是本专业在学习完 C 语言、LINUX 操作系统、嵌入式系统原理与接口设计、嵌入式操作系统原理之后的专业课程设计,属于专业课内容。通过课程设计建立嵌入式系统主体环节,嵌入式系统的最小结构和系统应用设计基本技能,培养分析和解决一些简单的实际问题的能力,为今后毕业设计奠定基础。随着嵌入式技术的发展和高速宽带网络的普及, 利用网络实现远程监控已为人们广泛接受, 嵌入式网络监控技术正是在此条件下逐步发展成熟起来的。用户使用 Web 浏览器, 通过以太网远程访问内置 Web 服务器的监控摄像机, 不但可以实现对现场的远程视频监控, 而且可以向监控现场发送指令。在整个系统的实现过程中, 嵌入式 Web 服务器起着十分重要的作用。本课题就是基于该项技术,最终编程实现通过网络控制下位机嵌入式控制器的电机启动和停止。 1.1研究目的和意义 1、通过嵌入式课程设计,熟练掌握 C 语言的编程方法。基于 WEB 的远程监控的实现,CGI 的编写和使用,将理论联系到实践中去,提高我们的动脑和动手的能力。 2、通过基于 WEB 的嵌入式远程监控系统的设计,掌握 S3C2410 实验箱,直流电机的工作原理,BOA 服务器的使用,CGI 的使用和简单程序的编写及调试方法,最终提高我们的动手实践能力。 3、本课题的研究目的是用 BOA 服务器、CGI、IE 浏览器设计一个通过 IE 浏览器监控电机的系统,能够通过两个简单的按键对电机进行启动和停止的控 3 基于web的嵌入式远程监控系统 第4页 共33页 制,并能够在 IE 浏览器上看到电机的当前状态。 4、由于基于 WEB 的嵌入式远程监控系统将成为今后远程监控技术发展的主流方向,所以需要设计出简单实用,让人们更满意的产品。 1.2 本设计任务和主要内容 1.基本要求 本课题主要设计和研究基于WEB的嵌入式远程监控系统,要求在保证可靠运行的前提下,电路设计尽量简洁紧凑,以减小成本、提高系统的效率和安全性。 2.应解决的问题 1)设计系统网络方案 2)分析网络程序结构和应用程序的使用方法 3)编程实现嵌入式系统服务器功能 4)编程实现嵌入式系统联网功能 5)编程实现通过网络控制下位机嵌入式控制器的电机启动和停止 3.扩展功能 演奏时可以通过按键选择是手动演奏还是自动演奏,手动演奏是通过按键进行简易乐曲的演奏。 基于web的嵌入式远程监控系统 第5页 共33页总体方案设计 2.1 整体方案设计 系统总体设计是基于嵌入式系统和 WEB 服务器结合的思想开发的,其网络拓扑结构如图 2.1 所示 图 2.1 系统网络拓扑图 针对本次课程设计提出的系统设计如图 2.2 所示 图 2.2 系统方案框图 基于web的嵌入式远程监控系统 第6页 共33页 2.2 硬件系统设计 2.3.1 核心处理器的选择 核心处理芯片需要完成处理和支持整个系统的功能需求,通过运行 BOA 服务器要实施的接收来自各个客户端的请求和信息,并根据获得的请求和信息进行相应的后台处理以及信息的反馈。为完成上述功能,实现服务器正常运行,对处理芯片进行选型,对比现有处理芯片的优缺点,选择 ARM9 S3C2410X 芯片作为设计开发嵌入式服务器系统的核心处理芯片。S3C2410X 微处理器是一款由 Samsung 公司为手持设备设计的低功耗、高集成度的基于ARM920T 核的微处理器,为了降低系统总成本和减少外围器件,这款芯片还集成了以下部件:16KB 指令 Cache、16KB 数据 Cache、MMU、外部存储器控制器、LCD 控制器、NAND FLASH 控制器、4 个 DMA 通道、3 个 UART 通道、1 个 IIC 总线控制器、1 个 IIS总线控制器、4 个 PWM 定时器、1 个内部定时器、通用 IO 口、实时时钟、8 通道 10 位ADC 和触摸屏接口、USB 主、USB 从、SD/MMC 卡接口等。 2.3 软件环境选择 2.3.1 操作系统的选择 当选定了硬件系统后,为了配合硬件达到系统的最优控制要求,对市面上常用的嵌入式系统进行分析比较。 (1)价格比较:Linux 是完全免费的操作系统,只需遵循 GPL 声明,不需支付任何费用;WinCE 是微软的商用嵌入式操作系统,使用它需要支付 WinCE 及其开发环境的费用,开发出来的每套产品也需交纳一定费用。uc/os—II 系统,可以免费用于学习或科研,但开发商使用产品或销售都是收费的。 (2)开放性比较:Linux 是源代码完全开放的操作系统,可以自由下载,并且 基于web的嵌入式远程监控系统 第7页 共33页 在遵循GPL 声明的前提下可以自由地修改、移植,为系统的开发和调试带来极大的便利;winCE是部分源码开放的商用操作系统,如果要修改其中的代码,需获得微软公司的授权;uc/os—II 也是开放的实时操作系统。 (3)文件系统的比较:Linux 支持绝大部分文件系统,只需选择相应的文件系统即可; WinCE 仅支持 Windows 系列的 FAT16、有限文件系统;uc/os—II 本身没有包括文件系统,需购买或移植。Linux 与 ARM 处理器从以上可以看出,Linux 系统在诸多方面都存在优势,而且本身的 ARM 处理器与 Linux 也有着紧密的联系。因此采用 Linux 操作系统。2.3.2 服务器的选择 典型的嵌入式 Web 服务器有 Boa 和 thttpd 两种,它们和 Apache 等高性能的 Web 服务器主要的区别在于它们一般是单进程服务器,只有在完成一个用户请求后才能响应另一个用户的请求,而无法并发响应,但这在嵌入式设备的应用场合里已经足够了。Boa 是一个非常小巧的 Web 服务器,可执行代码只有约 60KB。它是一个单任务 Web服务器,只能依次完成用户的请求,而不会 fork 出新的进程来处理并发连接请求。但 Boa支持 CGI,能够为 CGI 程序 fork 出一个进程来执行。Boa 的设计目标是速度和安全,在其站点公布的性能测验中,Boa 的性能要好于 Apache 服务器。经过上述的对比和判断,选择Boa 作为系统的嵌 入式服务器。 综合以上的讨论以及选择,根据系统的实际需求,最终确定了采用 S3C2410X 为核心处理器,Linux 为嵌入式操作系统,boa 为服务器以及相应的 http 浏览器的系统设计方案。 基于web的嵌入式远程监控系统 第8页 共33页硬件设计 3.1 系统硬件平台介绍 我们所介绍的硬件平台是基于 ARM 体系结构,由北京博创兴业科技有限公司开发的UP-NetARM2410-S 实验仪器。UP-NetARM2410-S 的 CPU 为 ARM920T 内核的三星S3c2410 芯片,由于有 MMU(内存管理单元)可以运行标准的 ARM-LINUX 内核。通过这个平台,我们可以实现嵌入式 LINUX 中的针对无 MMU 的开发过程。 3.2 s3c2410 芯片介绍 图 3.1 芯片结构图 基于web的嵌入式远程监控系统 第9页 共33页 3.3 ARM 处理器的外围设备 3.3.1 电源电路 设备提供 12v 的电源,经 LM1085-3.3V 和 AS1117-1.8V 分别得到 3.3V 和 1.8V 的工作电压。开发板上的芯片多数使用了 3.3V 电压,而 1.8V 是供给 S3C2410 内核使用的。5V 电压供给 LCD、电机、总线等电路使用。 图 3.2 电源电路 3.3.2 硬件复位电路 硬件复位电路由IMP811T构成,实现对电源电压的监控和手动复位操作。2410-S主板复位电路设置专用逻辑:IMP811T 的复位电平可以使CPU JTAG(nTRST和板级系统(nRESET)全部复位;来自仿真器的ICE_nSRST 信号只能使板级复位;来自仿真器的ICE_nTRST 可以使JTAG(nTRST)复位,通过跳线选择是否使板级nRESET复位。nRESET反相后得到RESET 信号。硬件复位电路如图3.3所示 基于web的嵌入式远程监控系统 第10页 共33页 图3.3 硬件复位 基于web的嵌入式远程监控系统 第11页 共33页软件设计 4.1 设计思想 基于 web 的嵌入式监控系统设计主要的功能有简单的网页浏览,实现简单应用功能(客户端与服务器的交互)以及服务器端的控制功能。因此软件的设计分为三个部分:boa 服务器的搭建、应用程序设计和驱动程序的加载。 4.2 BOA 服务器的简介与搭建 4.2.1 嵌入式 Web 服务器 Boa 的特点 Boa 是一款单任务的 HTTP 服务器, 与其他传统的 Web 服务器不同的是当有连接请求到来时, 它并不为每个连接单独创建进程, 也不通过复制自身进程来处理多链接, 而是通过建立 HTTP 请求列表来处理多路 HTTP 连接请求, 同时它只为 CGI 程序创建新的进程,这样就在最大程度上节省了系统资源, 这对嵌入式系统来说至关重要。同时它还具有自动生成目录、自动解压文件等功能, 因此 Boa 具有很高的 HTTP 请求处理速度和效率, 在嵌入式系统中具有很高的应用价值。4.2.2 Boa 的功能实现 嵌入式 Web 服务器 Boa 和普通 Web 服务器一样, 能够完成接收客户端请求、分析请求、响应请求、向客 户端返回请求结果等任务。它的工作过程主要包括: (a)完成 Web 服务器的初始化工作, 如创建环境变量、创建 TCP 套接字、绑定端口、开始侦听、进入循环结构, 以及等待接收客户浏览器的连接请求; (b)当有客户端连接请求时,Web 服务器负责接收客户端请求, 并保存相关请求信息; (c)在接收到客户端的连接请求之后,分析客户端请求, 解析出请求的方法、基于web的嵌入式远程监控系统 第12页 共33页 URL 目标、可选的查询信息及表单信息, 同时根据请求做出相应的处理; (d)Web 服务器完成相应处理后, 向客户端浏览器发送响应信息, 关闭与客户机的TCP 连接。嵌入式 Web 服务器 Boa 根据请求方法的不同,做出不同的响应。如果请求方法为HEAD,则直接向浏览器返回响应首部;如果请求方法为 GET,则在返回响应首部的同时,将客户端请求的 URL 目标文件从服务器上读出,并且发送给客户端浏览器;如果请求方法为 POST,则将客户发送过来的表单信息传送给相应的 CGI 程序,作为 CGI 的参数来执行 CGI 程序,并将执行结果发送给客户端浏览器。Boa 的功能实现也是通过建立连接、绑定端口、进行侦听、请求处理等来实现的。4.2.3 BOA 的搭建与移植 (1)准备源代码、解压软件包,安装源代码到 boa 网站 http://www.xiexiebang.comTB0 = DCM_TCNTB0;/* less than 10ms */ TCMPB0 = DCM_TCNTB0/2;TCON &=~(0xf);TCON |=(0x2);TCON &=~(0xf);TCON |=(0x19);})在 s3c2410_dcm_ioctl 中提供调速功能接口: case DCM_IOCTRL_SETPWM: return dcm_setpwm((int)arg);应用程序 dcm_main.c 中调用: ioctl(dcm_fd, DCM_IOCTRL_SETPWM,(setpwm * factor));实现直流电机速度的调整。a.编译直流电机模块 cd /arm2410s/kernel-2410s 基于web的嵌入式远程监控系统 第20页 共33页 make menuconfig 进入 Main Menu / Character devices 菜单,选择 DC MOTOR 为模块加载: b.编译内核模块: make dep make make modules 直流电机模块的编译结果为: /arm2410s/kernel-2410s/drivers/char/s3c2410-dc-motor.o c.编译应用程序 cd /arm2410s/exp/basic/10_dcmotor/ make 生成 dcm_main d.挂载驱动模块 insmod /host/kernel-2410s/drivers/char/s3c2410-dc-motor.o e.运行程序 mount –t nfs 192.168.0.xxx:/arm2410s /host insmod /host/kernel-2410s/drivers/char/s3c2410-dc-motor.o cd /host/exp/basic/10_dcmotor/./dcm_main 程序运行结果:直流电机转动 1 秒,停转 1 秒。由于是根据原有变速程序稍做改动完成的程序,所以遇到的问题不是很多,经过几次尝试就得到了期望的结果。 基于web的嵌入式远程监控系统 第21页 共33页 5.3 调试结果分析 5.3.1 调试结果 1、静态网页 图 5.1 静态网页 2、乘法网页 图 5.2 乘法网页 基于web的嵌入式远程监控系统 第22页 共33页 3、电机控制网页 图 5.3 电机控制网页 图 5.4 返回结果 5.3.2 结果分析 经过 x86 下的调试和基于 ARM 的下载与调试后,系统能够实现静态网页浏览,简单人机交互以及电机控制的功能,系统工作稳定,响应速度快,组网方便快捷,如果与 DNS 服务器或者 WINS 服务器相结合即可实现用主机名就能登录相应平台的功能。 基于web的嵌入式远程监控系统 第23页 共33页设计总结 经过三个周的学习与努力,经过系统分析、方案论证、硬件和软件设计、调试 等阶段完成了基于 web 的嵌入式远程监控系统的设计制作。在这三个周的课程设计中,我得到了老师和同学很大的帮助,有时候觉得进行不下去了,老师或同学一句话就能让我茅塞顿开。即使听不懂,他们也会耐心的讲解。 在系统的设计制作过程中,确实遇到了各种各样的问题,如调试思路正确但是没有能够进行找到合适的方法进行进一步的实验,设计中对于程序的编写以及目录结构的认知上存在偏差,其主要原因还是基础功不扎实,把握系统的能力不足,这为我们以后的学习和工作提了一个醒。在问题的解决过程中,也提高了组员的动手动脑能力,学到了许多在书本上学不到的知识。在具体的设计当中解决了诸如 boa 服务器的搭建,C 程序的修改及 CGI编程的理解,程序的调试和系统的整体认识等问题,小组成员收获很大。 基于web的嵌入式远程监控系统 第24页 共33页 致谢 在这次课程设计中,学校和学院给予了大力的支持,提供了与设计有关的环境,方便了课程设计的顺利进行。在这其中我确实学到了很多知识,在此仅代表个人衷心的感谢学校和学院的大力支持。本论文是在指导老师蔡烁的悉心指导和严格要求下完成的。在整个课程设计过程中,蔡烁老师时时督促和引导,并在设计过程中进行了方向指导,在总体方向不出错的基础上,施展自己的所学,发挥个人的所长。他不仅在学习上和生活上给予了我们多方面的指导和无微不至的关怀,而且他渊博的学识、严谨的治学态度、孜孜不倦的工作作风和宽以待人的处事风格使我终身受益,并且还从中学会了分析问题和解决问题的方法此外,在本次设计过程中,还得到了其他老师和的热情关心和帮助,值此论文完成之际,谨向老师表示崇高的敬意和最诚挚的谢意。 基于web的嵌入式远程监控系统 第25页 共33页 参考文献 [1]郑灵翔编著 《嵌入式 LINUX 系统设计》 北京航空航天大学 2008 年 [2]孙纪坤、张小全编著 《嵌入式 LINUX 系统开发技术详解-基于 ARM》人民邮电出版社 2007.9、[3]王进德 编著 《嵌入式 LINUX 程序设计与应用案例》 中国电力出版社 2007.5 [4]郑慕德 编著 《嵌入式微型计算机系统实例教程-ARM 与 LINUX》 科学出版社2006.7 [5]刘淼 编著 《嵌入式系统接口设计与 LINUX 驱动程序开发》 北京航空航天大学出版社,2006.5 [6]魏洪兴等编著 《嵌入式系统设计与实例开发 II-基于 ARM9 微处理器与 LINUX 操作系统》 清华大学出版社 2005.12 [7]魏洪兴等编著 《嵌入式系统设计与实例开发实验教材 II-基于 ARM9 微处理器与LINUX 操作系统》清华大学出版社 2005.12 [8]金敏等编著 《嵌入式组成、原理与设计编程》 人民邮电出版社 2007.6 基于web的嵌入式远程监控系统 第26页 共33页 附录 1 主要程序清单 乘法网页的HTML表单: 基于ARM linux的嵌入式远程测控系统 设计 基于ARM linux的嵌入式远程测控系统设计 类别:嵌入式系统 前言 目前,大多数远程测控系统中,系统的硬件采用8/16位的单片机,软件多采用汇编语言编程,该编程仅包含一个简单的循环处理的控制流程;单片机与单片机(或上位机)之间的通信通过RS232、RS485或CAN总线来组成局域网,再用Pc机作为 Web服务器,与Internet进行通讯。这样的远程测控设备成本高、体积大、速度慢、功耗大。现在,32位嵌入式CPU价格已下降,性能指标也有提高,为嵌入式系统的广泛应用提供了可能性。基于上述情况,我们将嵌入式系统应用于远程测控系统,大大提高了测控系统的性能,同时降低了成本和功耗,体积也大大减小。 嵌入式系统一般应用嵌入式操作系统来开发。在嵌入式操作系统的选择上,由于Linux有完整开放的源代码,因而它具有修改和优化系统、内核稳定、适用于多种CPU和多种硬件平台、支持网络等特点,所以选择Linux作为嵌入式操作系统较好。本文提出的基于 ARMlinux的嵌入式远程测控系统不仅能够实现本地数据采集与控制,还能实现远程测控任务。 1、硬件系统 硬件系统如图1。S3C2410包含一个16/32-bit的Risc(ARM920T)的CPU内核,主频200Hz,内部含有8通道1O位AD转换器和大量的I/O口、LCD控制器等丰富接口,能运行Ucosll、ARMlinux和Wince嵌入式操作系统,DM 9OOO是10M/100M以太网接口控制芯片。本硬件系统结构简单,成本低,不需要Pc机就可直接接入Internet。 2、软件系统 嵌入式操作系统是整个嵌入式系统的核心。本系统选择ARMlinux系统。由于嵌入式系统的存储容量很小,因此要把ARMLinux操作系统装入有限的存储器内,就要对它进行裁剪。很多资料对此都有论述,这里就不再累述。下面主要介绍基于操作系统上的远程测控软件设计。其体系结构如图2。 2.1 基于Boa的Web服务器 嵌入式linux主要有三个web Server:Hapd、Thttpd和Boa。Httpd是最简单的一个web Server。它的功能最弱,不支持认证,不支持CG1。Thttpd和Boa都支持认证、CGI等,功能都比较全。Boa是一个单任务的小型Httpd 服务器,源代码开放、性能优秀,特别适合应用在嵌入式系统中。下面介绍Boa的移植与编译。 对于有MMU嵌入式linux,把Boa下载到Redhat宿主机上后,解压到任意目录,再修改Boa/src/Makefde里面的编译器。例如: CC=/opfhosfarmv41/bin/armv41—unkllown—linux—gcc CPP=/opt/host/army41/bin/armv41—unknown—linux—g++ 此后直接在Boa/src目录下执行make即可生成Boa可执行文件。将其复制到ramdisk加载mount的目录的bin里面后,等一同加入配置文件和HTML/CGI文件后,重做ramdisk即可。 配置文件Boa.conf的编制见下。 需要说明的是,Linux下的应用程序的配置都是以配置文件的形式提供的,~般都是放在目标板/ete/目录下或者/ctc/config目录下,但Boa 的配置文件Boa.conf一般都放置在目标板/home/httpd/目录下。本系统Boa.conf文件的编写程序为: Servername S A M S U N G—A R M DocumentRoot/home/httpd/cgi—bin/ ScfiptAlias/index.html/home/httpd/html/index.html 它指定了HTML页面index.html必须放/home/httpd/html目录下,CGI可执行文件必须放到/home/httpd/cgi~bin目录下。 2.2 CGI程序技术原理 CGI(Common Gateway Interface)是外部扩展应用程序与WWW服务器交互的一个标准接口。按照CGI标准编写的外部扩展应用程序可以处理客户端浏览器输入的数据,从而完成客户端与服务器的交互操作。而CGI规范定义了Web服务器如何向扩展应用程序发送消息,在收到扩展应用程序的信息后又如何进行处理等内容。通过 CGI可以提供许多静态的Html网页无法实现的功能。其www与CGI的工作原理如下。 HTTP协议是WWW的基础,它基于客户/服务器模型。一个服务器可以为分布在网络各处的客户提供服务。它是建立在TCP/IP协议之上的“无连接”协议。每次连接只处理一个请求。当一个请求到来时,便创建一个子进程为用户的连接服务。根据请求的不同,服务器会返回HTML文件或通过CGI凋用外部应用程序,返回处理结果。服务器通过CGI与外部程序和脚本之问进行交互,根据客户端在进行请求时所采取的方法,服务器会收集客户所提供的信息,并将该部分信息发送给指定的CGI扩展程序。CGI扩展程序对信息进行处理并将结果返回服务器。服务器对信息进行分析后,将结果发送网客户端。 外部CGI程序与www服务器进行通信、传递有关参数和处理结果是通过环境变量、命令行参数和标准输入来进行的。服务器提供了客户端(浏览器)与CGI扩展程序之问的信息交换的通道。客户的请求通过服务器的标准输出传送给CGI的标准输入。CGI对信息进行处理后,会将结果发回到它的标准输入,然后由眼务器将处理结果发送给客户端。 2.3 CGI外部扩展程序的编制 服务器程序可以通过三种途径接收信息:环境变量、命令行和标准输入。具体使用哪一种方法要由标签的Method属性来决定。在“Method=GET”时,向CGI程序传递表单编码信息的正常做法是通过命令来进行的。 大多数表单编码信息都是通过Qucry-String的环境变量来传递的。如果“Method=POST”,表单信息将通过标准输入来读取。还有一种不使用表单就可以向CGI传送信息的方法。那就是把信息直接追回在URL地址后面,信息和URL之间用问号(?)来分隔。本测控系统采用的是GET方法。下面是远程控制LED闪烁快慢的程序。其网页如下页图3,其程序如下。 ;LED测试 <input type=“radio”name=“speed”value=“show”checked>慢速 <input type=“radio”name=“speed”value=“normal”>中速 <input type=“radio”name=“speed”value=“rast”>高速 <input type=“submit”value=确定“name=”submit> 其中leds.cgi程序如下: #!/bin/sh Period=1+case $QUERY-STRING in slow) period=0.25 ;; normal)period = 0.125 ;; fast period=0.0625+;; fast)+ period =0.0626 ;; esac /bin/echo $ period ? /tmp/led-control//通过Query_String的环境变量传递给应用程序。 echo “Content-type:texe/html;charset=gb2312” echo /bin/cat led =result.template exit 0 led—control是编译好的可执行的应用程序,通过led驱动来实现对LED的控制。因为S3C2410有MMU,所以通过操作系统来对硬件控制需要驱动程序来实现。其数据采集部分也类似,不再单独说明。 图3 实验结果 3、测试结果 首先建立好基于S3C2410嵌入式开发环境,把编译好的booloader、嵌入式linux内核和ramdisk烧人Flash中,然后起动Boa服务器,在PC机的浏览器上输人嵌入式系统的IP地址,即显示出如图3的网页。通过点击慢速、中速和高速,再点击确定,测控板上LED的闪烁由慢变快,圆满实现了设计目标。 4、结论 找们开发的基于ARMLinux的远程测控系统,在真正意义上实现了通过互联网进行远程测控。它具有一般通用平台性能,特别适合实时性要求不很强的家电网络监控和远程工业控制。当然随着硬件和网络速度提高及操作系统实时性的改善,将会大大提高此测控系统的性能,因此有很好的应用前景。第二篇:浙大远程 嵌入式系统第4次(本站推荐)
第三篇:浙大远程浙大嵌入式系统作业全
第四篇:基于web的嵌入式远程监控系统
测试
第五篇:基于ARMlinux的嵌入式远程测控系统设计.