搜档网
当前位置:搜档网 › 嵌入式系统软硬件设计

嵌入式系统软硬件设计

嵌入式系统软硬件设计
嵌入式系统软硬件设计

《嵌入式系统的软、硬件设计》

实验报告

实验题目:交通灯控制系统

2015年1月

南京理工大学自动化学院

目录

1、实验设计目的和要求 (1)

2、实验原理分析 (2)

3、实验解决方案 (6)

4、软件具体设计 (9)

5、调试及结果分析 (14)

6、个人工作 (15)

附录 (19)

Ⅰ软件设计文档 (19)

Ⅱ.部分重要程序源代码 (22)

1、实验设计目的和要求

1.1实验目的

本实验是基于嵌入式教学实验基础进行再开发,实现交通灯控制系统多项功能。主要的设计目的是:交通灯(LED灯)基本流程控制,时间倒计时显示、行驶方向指示、蜂鸣器报警(响声频率可调)、模拟各方向车辆行驶(南北方向以步进电机转动表示,东西方向以直流电机转动表示)。

1.2实验具体设计要求

led:

⑴南北绿灯,东西红灯(20秒) ;

⑵南北方向绿灯闪烁(3秒);

⑶南北方向黄灯(1.5秒);

⑷南北方向红灯,东西绿灯(20秒);

⑸东西方向绿灯闪烁(3秒);

⑹东西方向黄灯亮(1.5秒)。

⑺回到⑴

LCD:

LCD屏幕上显示倒计时,并且显示箭头指示当前可以通行的方向。

蜂鸣器:

当绿灯闪烁时蜂鸣器发声。

电机:

东西方向绿灯亮时直流电机转动,南北方向绿灯亮时步进电机转动。

键盘:

当键2按下后,系统的处于暂停状体(电机和指示灯保持目前状体不变,倒计时暂停保持当前数字)。

当键1按下后,系统退出暂停,继续暂停前状态执行。

当键3按下后,退出系统。

基于以上设计要求,本实验最中完成后实现的功能流程如下图1-1所示:

开始

南北绿灯亮,东西红灯亮,步进电机转动,

计时20s

南北绿灯闪烁,蜂鸣器响

计时3s

南北绿灯关,南北黄灯亮,步进电机停止

计时2s

蜂鸣器关,南北黄灯关,东西红灯关南北红灯亮,东西绿灯亮,直流电机转动

计时20s

东西绿灯闪烁,蜂鸣器响

计时3s

东西绿灯关,直流电机停止,东西黄灯亮

计时2s

蜂鸣器关,东西黄灯关

南北红灯关显示器进行倒计时和方向指示显示

图1-1 交通灯系统流程图

1.3实验设备

(1)PC 兼容机一台,操作系统为Windows,虚拟机有Linux系统;

(2)ICETEK-OMAPL138-A实验箱。

2、实验原理分析

ICETEK-OMAPL138-A套件是一块以OMAPL138为核心的双核处理器扩展评估板,它通过扩展接口与实验箱的显示/控制模块连接,可以控制其各种外围设备,也可以接受外设发送的各种数据、信息。CTR设备连接在EMIFA的片选4上,所以通过操作以片选4为基础地址(0x64000000)的空间再加上设备控制寄存器的偏移就可以访问到实验箱上的CTR设备。

⑴交通灯控制

CTR上的发光二极管显示阵列的显示是由扩展端口控制,由扩展在EMIFA 的地址空间接口的两个寄存器提供具体控制。

在ICETEK-OMAPL138-A 套件的Linux 内核里集成了ICETEK-CTR V6.2 的驱动,驱动中将CTR 上的发光二极管做为一个标准的led 进行挂载,这样在Linux 下对这些led 的操作就可以用通用的Linux 控制和读写函数来完成。

⑵步进电机控制

步进电机是由寄存器PWMR 控制。这个寄存器映射在OMAPL138 的CE4 空间,当DSP 向该地址写数据(8 位有效值)时,高两位为‘10’时数据的低4 位将写入PWMR 寄存器(PWM4、PWM3、PWM2、PWM1)。步进电机的起动频率大于500PPS(拍每秒),空载运行频率大于900PPS。如果PWM1-4按照下面拍的顺序给电机的四相输入端送入控制信号,且频率大于900PPS,电机将开始正向转动。如果按照拍的逆序送控制信号,且频率大于900PPS,电机将开始反向转动。

控制的方法是:首先设置全局控制寄存器中的PWME 位为‘1’,再使DSP 以一定的频率改变PWM4-1 各位状态,输出正向或反向的PWM 波。

在ICETEK-OMAPL138-A 套件的Linux 内核里集成了ICETEK-CTR V6.2 的驱动,驱动中给CTR 上的步进电机配置了Linux2.6 下驱动属性接口,通过操作属性文件可实现对电的的起动,转速和转向的控制。

⑶直流电机控制

直流电动机使用定频调宽法。

ICETEK-CTR 即显示/控制模块上直流电机部分的原理图如图2-1所示:图中PWM 输入对应ICETEK-OMAPL138-A 板上P4 外扩插座第26 引脚的UHPI_HCNTL1 信号,DSP将此引脚配置成GPIO,并在此引脚上给出PWM 信号用来控制直流电机的转速;图中的DIR 输入对应ICETEK-OMAPL138-A 板上P4 外扩插座第29 引脚的MMCSD1_D0 信号,DSP 将此引脚配置成GPIO,并在此引脚上给出高电平或低电平来控制直流电机的方向。从DSP 输出的PWM 信号和转向信号先经过2个与门和1个非门再与各个开关管的栅极相连。

图2-1 ICETK-CTR 直流电机模块原理图

当电动机要求正转时,MMCSD1_D0 给出高电平信号,该信号分成3 路:第1 路接与门Y1的输入端,使与门Y1 的输出由PWM 决定,所以开关管V1 栅极受PWM 控制;第2 路直接与开关管V4 的栅极相连,使V4 导通;第3 路经非门F1 连接到与门Y2 的输入端,使与门Y2 输出为0,这样使开关管V3 截止;从非门F1 输出的另一路与开关管V2 的栅极相连,其低电平信号也使V2截止。同样,当电动机要求反转时,MMCSD1_D0 给出低电平信号,经过2 个与门和1 个非门组成的逻辑电路后,使开关管V3 受PWM 信号控制,V2 导通,V1、V4 全部截止。

在ICETEK-OMAPL138-A 套件的Linux 内核里集成了ICETEK-CTR V6.2 的驱动,驱动中给CTR 上的直流电机配置了Linux2.6 下驱动属性接口,通过操作属性文件可实现对电的的起动、占空比和转向的控制。

⑷音频信号发生

采用DSP通用I/O引脚直接驱动的方式。硬件连接如下图2-2所示:

在ICETEK-OMAPL138-A 套件的Linux 内核里集成了ICETEK-CTR V6.2 的驱动,驱动中将CTR 上的蜂鸣器做为一个标准的拨声器进行注册挂载,这样在Linux 下对这个蜂鸣器的操作就可以用通用的Linux 控制和读写函数来完成。

图2-2 蜂鸣器硬件连接图

⑸键盘输入控制

键盘输入连接如图2-3:

图2-3 键盘输入硬件连接图

在ICETEK-OMAPL138-A 套件的Linux 内核里集成了ICETEK-CTR V6.2 的驱动,驱动中将CTR 上的keypad 做为一个标准的keypad 进行挂载,并将按键值映射成了标准的1 到9 的按键值,这样在Linux 下对这个keypad 的操作就可以用通用的Linux 控制和读写函数来完成。

⑹液晶屏显示

写显示数据:在使用命令控制字选择操作位置(页数、列数)之后,可以将待显示的数据写入液晶显示模块的缓存。将数据发送到相应数据控制地址即可。由于液晶模块相对于DSP 来讲是慢速设备,在命令之间可能需要增加延时语句,或将CE1 空间的EMIF访问控制寄存器设置的访问延时加大。写入液晶显示模块的缓存,将数据发送到相应数据控制I/O接口即可。

图2-4 液晶显示器硬件连接

在ICETEK-OMAPL138-A 套件的Linux 内核里集成了ICETEK-CTR V6.2 的驱动,驱动中将CTR 上的LCD 做为一个标准的frame buffer 设备进行挂载,这样在Linux 下对这个LCD 的操作就可以用通用的Linux 控制和读写函数来完成。液晶显示器与DSP的硬件连接如图2-4所示。

3、实验解决方案

根据实验目的设计要求,首先将设计任务分为定时器模块、交通灯模块、倒计时模块、报警模块、电机模块和键盘控制模块;然后分别制定各模块的功能实现;最后将各个模块按一定的时序、逻辑关系整合起来,完成最初的设计要求。

(一)、定时器模块

交通灯系统的工作遵循严格的时间规定,本次设计以一个定时器为时间基准来确定各模块工作的时序。定时周期为500ms。

(二)、交通灯模块

交通灯模块实现的是交通灯系统的主体功能,即东西南北12个led灯按照规定的时间和时序点亮和熄灭。这个模块中用到了CTR上的12个led灯。由于ICETEK-OMAPL138-A套件的Linux内核里集成了相应的驱动,这些led灯作为标准的led进行挂载。因此在Linux下对这些led的操作可以用通用的Linux控制和读写函数来完成。

交通灯模块中主要定义三个函数:

on() 点亮led

off() 熄灭led

toggle() led状态变换一次具体实现交通灯规则时,按相应的时序关系分别点亮和熄灭相应的led灯,即可完成交通灯的亮灭控制。

(三)、倒计时模块

倒计时模块主要实现的是在lcd屏上显示绿灯亮的剩余时间以及通行方向箭头。倒计时以秒为单位。这个模块中用到了CTR上的LCD屏幕。这里的LCD 是作为一个标准的frame buffer设备进行挂载的,在Linux下对这个LCD的操作可以用通用的Linux控制和读写函数来完成。

倒计时模块中主要定义如下函数:

drawshuzi(x,y,number)。参数x,y指的是显示数字的左上定点的位置坐标;参数number指的是所要显示的数字。

drawjiantou(n)。参数n为0显示南北箭头,n为1显示东西箭头。

倒计时模块按照之前设置的定时器为基准以规定的时序显示数字和箭头,即可实现交通等系统倒计时的功能。

(四)、报警模块

报警模块主要实现的是当某个方向上的绿灯闪烁和黄灯点亮时,蜂鸣器会发出声音报警。提醒该方向上车辆红灯即将点亮,注意停车。报警模块主要应用了CTR上的蜂鸣器设备,这里的蜂鸣器作为一个标准的发声器进行注册和挂载,这样在Linux下对这个蜂鸣器的操作就可以用通用的Linux控制和读写函数来完成。

报警模块中主要定义了如下函数:

sound(frequency) 蜂鸣器以频率frequency发声stopsound() 蜂鸣器停止发声在规定的时间分别调用这两个函数即可实现设计要求的报警功能。(五)、电机模块

电机模块模拟的是车道上行驶的车辆,步进电机代表南北方向上的车辆,当南北方向绿灯亮时步进电机运转,南北方向黄灯及红灯时步进电机停转。直流电机代表东西方向上的车辆,当东西方向绿灯亮时直流电机运转,东西方向黄灯及红灯时直流电机停转。

驱动给CTR上的步进电机和直流电机配置了Linux2.6下的驱动属性接口,通过操作属性文件即可实现对步进电机和直流电机的控制。

电机模块中主要定义了如下函数:

nanbeidianji(speed) 步进电机以速度speed运转

stopnanbeidianji() 停止步进电机

dongxidianji(speed) 直流电机以速度speed运转

stopdongxidianji() 停止直流电机在规定的时间调用上述相应的函数,即可模拟不同方向上的车辆行为。(六)、键盘控制模块

键盘控制模块完成的是通过按键来暂停、开始和退出交通灯系统的运行。模拟了现实中人工控制交通灯的方法。这里我们采用事件驱动的方式,当有按键事件发生时,程序执行相应的功能。

通过以上六个模块的设计,基本确定了交通灯系统的总体解决方案。总体解决方案的流程框图如下所示: 主程序:各变量初始化,开启定时器 交通灯程序流程图如图3-1:

开始

南北绿灯亮,东西红灯亮

步进电机转动

南北绿灯闪烁,蜂鸣器响

南北绿灯关,南北黄灯亮,步进电机停止

直流电机转动, 蜂鸣器关,南北黄灯关,东西红灯关,南北红灯亮,东西绿灯亮,

东西绿灯闪烁,蜂鸣器响

东西绿灯关,直流电机停止,东西黄灯亮

Count<=40?

设置静态变量Count=0

Count++

Count<=46?

Count<=49?

Count<=89?

Count<=95?

Count<98?

Count==98?

Y

Y

Y

Y

Y

Y

Y N

N

N

N

N

N

蜂鸣器关Count=0

图 3-1 交通灯流程图

倒计时程序流程图如图3-2:

开始

设置静态变量,cnt=26

cnt--

显示cnt值

Cnt==0?

Y

cnt=26

图3-2 倒计时流程图

4、软件具体设计

软件具体设计中仍然将交通灯系统划分为定时器模块、交通灯模块、倒计时模块、报警模块、电机模块和键盘控制模块五大部分,分别对其进行设计。(一)、定时器模块

首先用QTimer类创建一个定时器,timer=new QTimer(this);然后用QTimer 类中的成员函数start(500)来开启定时器,周期为500ms。这样每过500ms定时器就会产生一个timeout()信号,我们将timeout()信号连接到适当的槽,这样就可以实现定时功能,使交通灯系统按一定的时序工作。

这里我们将timeout()信号连接到两个子函数中,一个是myjiaotongdeng()子函数,这个子函数主要完成的功能是按一定的规则点亮和熄灭led灯,以及控制蜂鸣器在规定的时间发声,控制电机在规定的时间旋转。此子函数的详细设计见下述的交通灯模块。另一个子函数是daojishi()子函数,这个子函数主要完成的功能是在LCD屏幕上显示剩余时间和通行箭头,详细设计见下述的倒计时模块。

将timeout()信号连接到上述两个子函数用以下语句实现:

connect(timer, SIGNAL(timeout()), this, SLOT(myjiaotongdeng()));

connect(timer, SIGNAL(timeout()), this, SLOT(daojishi()));

(二)、交通灯模块

交通灯模块的所有功能我们通过一个子函数myjiaotongdeng()来实现,由上述可知我们将定时器的timeout()信号连接到了这个子函数中,因此每隔500ms

这个子函数就会执行一次。

首先定义一个静态变量count,用来指示当前是第几次调用myjiaotongdeng()函数,每调用一次count值加1。按实验要求中所写:

(1)南北绿灯亮20s,东西红灯亮20s,步进电机旋转。因为定时周期为0.5s,count值加到40表示经过了20秒。因此count值小于等于40时一直执行点亮南北绿灯、东西红灯,启动步进电机的操作。部分代码如下:

if(count<=40)

{

nanbeidianji(8); //启动步进电机以速度8旋转

onLeds(allQleds.at(S_G)) ; //S_G是宏定义,表示南边绿灯,下同

onLeds(allQleds.at(N_G)) ;

onLeds(allQleds.at(E_R)) ;

onLeds(allQleds.at(W_R));

}

(2)南北绿灯闪烁3s,并且蜂鸣器发出报警声。代码如下:

else if(count<=46)

{

sound(1200); //蜂鸣器发声

toggleLeds(allQleds.at(S_G)) ;

toggleLeds(allQleds.at(N_G));

}

(3)南北绿灯熄灭,南北黄灯点亮1.5s,并且步进电机停转。代码如下:else if(count<=49)

{

stopnanbeidianji(); //停止步进电机旋转,表示黄灯亮时不能通行

offLeds(allQleds.at(S_G)) ;

offLeds(allQleds.at(N_G)) ;

onLeds(allQleds.at(S_Y));

onLeds( allQleds.at(N_Y));

}

以上三步是南北通行时的软件代码实现,同理东西通行时的代码实现也是一样的,只要改变相应的led灯,并且将驱动步进电机改为驱动直流电机即可。因此在这里不再赘述,具体的程序代码见源代码文档。

(三)、倒计时模块

要实现倒计时模块,最主要的是要实现在LCD屏幕上显示数字。在例子程序中有画直线的函数LCDDrawLine(x0,y0,x1,y1,color)。因此我们参考八位数码管显示数字的方式,将数字拆分为几段直线,以画直线的方式来画出数字。下来以

数字2为例来说明我们如何实现画出数字2。

drawshuzi2(unsigned int x,unsigned int y)

{ //参数x,y表示数字2左上角点在屏幕上的位置LCDDrawLine(x,y,x+danwei,y,1); //danwei=10,指每段线长10个像素

LCDDrawLine(x+danwei,y,x+danwei,y+danwei,1);

LCDDrawLine(x+danwei,y+danwei,x,y+danwei,1);

LCDDrawLine(x,y+danwei,x,y+2*danwei,1);

LCDDrawLine(x,y+2*danwei,x+danwei,y+2*danwei,1);

}

通过同样的方法定义画0-9的其它数字的子函数。在倒计时函数中分别调用这10个函数会非常麻烦,这里我们将这10个函数用switch语句整合起来再定义一个总的画数字的函数如下:

drawshuzi(unsigned int x,unsigned int y,int shuzi)

{ //参数x,y指数字左上角点在屏幕上的坐标,shuzi表示要画的数字switch(shuzi)

{

case 0:

drawshuzi0(x,y);

break;

case 1:

drawshuzi1(x,y);

break;

:

:

case 9:

drawshuzi9(x,y);

break;

default:

break;

}

}

通过以上的工作我们有了在屏幕上画数字的函数。接下来就是让数字显示和交通灯变化同步起来。在定时器模块中已经说明过我们将timeout()信号连接到了daojishi()函数中,这样每隔500ms它就会调用一次,而且由于daojishi()函数和myjiaotongdeng()函数都是以同一个定时器为基准,因此它们是同步被调用的。但是由于定时周期为0.5s,而倒计时需要的是1s变化一次,因此这里我们设置一个静态标志变量flag,每次调用flag加1,如果flag能被2整除,表示过了1s,通过这种方式实现定时1s的目的。部分代码实现如下:

daojishi()

{

static int cnt=26,flag=0;

if(flag%2==0)

{

cnt--;

a=cnt/10; //取十位

b=cnt%10; //取个位

lcd->clearBuffer(); //清空屏幕

lcd->drawshuzi(50,5,a);

lcd->drawshuzi(70,5,b);

lcd->flush();

if(cnt==1)

{

cnt=26;

flag=-1;

}

}

flag++;

}

在倒计时模块中还一个显示箭头的功能,这个用画直线函数可以很容易的实现,在这里不再赘述。

(四)、报警模块

报警模块中只需定义发声和停止发声两个函数。利用Linux系统函数system 即可操作CTR上的蜂鸣器设备。

sound(int frequency) //发声函数,参数为频率

{

system("echo 1 > /sys/devices/platform/davinci_ctr.2/buzzer/enable");

QString cmdLine = QString::fromUtf8("echo %1 > /sys/devices/platform/davinci_ctr.2/buzzer/frequency").arg(frequency);

system(cmdLine.toAscii());

}

stopsound()

{

system("echo 0 > /sys/devices/platform/davinci_ctr.2/buzzer/enable");

}

(五)、电机模块

电机模块主要完成的是驱动电机旋转和停止的功能,同样可以通过操作Linux系统下的驱动属性接口来控制电机。下面以步进电机为例来说明电机模块的实现方法。

nanbeidianji(int speed)

{ //驱动步进电机旋转,参数为速度

QString cmdline;

cmdline = QString::fromUtf8("echo %1 > /sys/devices/platform/davinci_ctr.2/sa_motor/rapid").arg(speed);

system(cmdline.toAscii());

cmdline = QString::fromUtf8("echo 1 > /sys/devices/platform/davinci_ctr.2/sa_motor/enable");

system(cmdline.toAscii());

}

stopnanbeidianji()

{

system("echo 0 > /sys/devices/platform/davinci_ctr.2/sa_motor/enable");

}

(六)、键盘控制模块

因为交通灯系统的运行是以定时器的运转作为时间基准的,因此停止定时器,就可以让交通灯系统停止运转。通过这种方式可以控制交通灯系统的暂停以及开始。

驱动中将CTR上的keypad作为一个标准的keypad进行挂载,并将按键值映射成了标准的1到9的按键值,因此我们按不同的键就会返回一个不同的键值,我们定义一个事件函数来实现键盘控制的功能。

keyPressEvent ( QKeyEvent * e )

{

switch(e->key())

{

case Qt::Key_2:

timer->stop(); //按键2时,定时器停止

break;

case Qt::Key_1:

timer->start(); //按键1时,定时器开始

break;

case Qt::Key_3:

QApplication::quit(); //按键3时,程序退出

break;

}

}

5、调试及结果分析

(一)实验调试:

连接好试验箱各部件,打开实验箱开关,启动超级终端Davinci,启动虚拟机Ubuntu10.04。

登陆超级终端。

在虚拟机中对程序进行编译、安装。

在超级终端中输入指令运行实验程序。

(二)实验结果:

程序启动进入交通灯状态,南北方向绿灯亮,液晶显示器从25秒开始倒计时,显示南北方向箭头,步进电机运转。

倒计时为5秒时,南北方向绿灯开始闪烁,蜂鸣器启动。

倒计时为2秒时,南北方向绿灯关闭,黄灯亮,步进电机停转。

倒计时应当为0秒时,液晶显示器重新由25秒开始倒计时,显示东西方向箭头,直流电机运转,蜂鸣器停止。

倒计时为5秒时,东西方向绿灯开始闪烁,蜂鸣器启动。

倒计时为2秒时,东西方向绿灯关闭,黄灯亮,直流电机停转。

倒计时应当为0时,系统重复开始运行状态进行循环。

在系统运行过程中,点击键盘数字键2,液晶显示器、指示灯、蜂鸣器静止在现有工作状态,步进电机/直流电机保持现有运转/停止状态。点击数字键1,系统恢复运行。点击数字键3,系统退出。调试结果运行正常,符合设计要求。

实验结果如图5-1所示:

图5-1 实验结果图

1、个人承担的工作

本次嵌入式课程实验中本人主要承担了以下几方面的工作:

(1)研究了基础实验中给的例子程序,掌握了CTR上各个外设的使用方法,并且读懂了例子程序的编程思想,为自主性实验奠定了基础。

(2)和其他两位同学商量确定了自主性实验的设计任务和目标。

(3)提出了总体解决方案,并将实验工作分成了几个模块,给其他两位同学分配了各自的任务。

(4)本人完成了交通灯模块的编程,并且负责完成了LCD倒计时显示和交通灯变化同步协调工作的时序设计部分。

(5)和其他两位同学共同调试,解决了各个模块不能协调工作的问题。

(6)主要撰写了实验报告中实验解决方案和软件具体设计两部分内容。2、遇到的问题及解决方案

(1)由于三人之前所学的编程语言都为C语言,对C++中的类的使用不熟悉,看懂例子程序非常困难。因此快速自学了C++中类的定义以及使用的方法。

(2)起初看例子程序时不明白程序中各个子函数之间是如何调用的,以及定时是如何实现的。通过在网上查找资料知道了QTimer类的定义以及其中成员函数的功能,看懂了例子程序的工作流程,也为自主性实验编程提供了借鉴。

(3)调试过程中发现交通灯的变化和倒计时显示不能同步,通过重新梳理交通灯模块和倒计时模块的时序问题,发现了编程中出现的计数问题,解决了两个模块的同步问题。

3、个人工作自我评价

本次嵌入式课程实验中本人作为组长,积极组织两位组员商量确定了实验的设计任务及目标,并且将实验要完成的工作分为几个部分进行合理分配,确保每位组员都能参与进来,发挥各自的作用。本人认为较好的完成了组长的工作,并在实验编程中承担了主要工作。

但是本次自主性实验任务也存在创新性不足的问题,主要是因为自己之前没有接触过相关的工作,基础知识薄弱,看懂例子程序花去了较多的时间,剩余的时间比较紧张,所以选择的实验任务比较简单,没有体现出创新性。在以后的学

习中需要改进这方面的缺陷,多做一些有创意的实验内容。

1、个人承担的工作

在进行交通灯控制实验过程中承担工作:

(1)与组员共同商定实验的目和设计方向,根据实验设定的初步目表,分任务的对教学实验中的基础实验部分内容(主要是交通灯控制)进行了解。

(2)对基础教学实验部分的程序进行了解(主要是交通灯控制实验源程序),共同汇总对源程序的理解和根据基础源程序构想设计程序。

(3)确定首要设计程序和实验实现,根据组长安排任务,编写倒计时数字显示程序和方向指示箭头程序。

(4)共同参与实验调试工作,对于实验出现的问题提供自己的参考意见。

2、遇到的问题及解决方案

交通灯系统设计过程中出现的问题及解决方案:

(1)编写数字显示过程中编译一直未通过,一直提示“;”。

解决方法:根据编译过程中的提示,对源程序进行查找,最终确定是在宏定义过程中多打写了一个分号。造成了程序显示数字模块一直提示编译错误。把分号去掉后问题的到解决。

(2)在进行蜂鸣器发生设计过程中,一直未编译通过。

解决办法:进行蜂鸣器发生时候,设计本初是先使蜂鸣器响起来。编写过程中没有考虑到整个程序的设计,因为部分程序是直接从系统的源程序中调用。最后询问本组其他成员得到解决。

(3)调试过程中,程序运行起来以后一直是原来的源程序,编写好的程序无法挂载进去。

解决办法:进过几次尝试都无法挂载,最后按程序关掉试验箱,重新启动控制终端。在从新进行加载问题得到解决。

3、个人工作自我评价

通过这次实验,对嵌入式系统有了一定的了解。并对设计嵌入式系统原理的实验也有了一定的了解和掌握,为以后更进一步学习并掌握嵌入式系统打下一定

的基础。实验过程中因为源程序是同时C++语言编写,自己以前学习的是C,这次实验也给自己机会去了解和掌握了部分C++部分知识。在实际的开发板上动手实验也增强了动手能力,切实的把理论和实际联系到一起。对于系统软件设计能力有了一定的提高。在系统实现过程中软件的编写已经整体总体的设计有一定的掌握。

同时通过这次实验也发现了自己的很多不足,在对实验整体的设计方面缺乏经验,对于软件编写过程缺乏一定的整体设计能力,平时对软件的编写欠缺,在操作过程中出现很多不应该犯的错误。也发现了自己对新事物的学习和自学能力不足,通过这次也给自己今后的学习指明了方向。使自己更加明确了实际和理论的联系,要想学好这门课程要不断的动手,通过自己动手设计才能更好的提高自己,也真正的让自己学到知识。

1、个人承担的工作

在本次嵌入式课程实验中,本人主要承担了如下分工:

1、与两位同学一起在实验初期对实验平台和实验系统进行了熟悉和操作,对实验指导书上的例题逐个进行了操作实现。

2、共同讨论设计课题,确定了交通灯这项题目之后,一起讨论了可能的实验方案和总体框架。

3、完成了部分功能(蜂鸣器、电机、键盘)的编程工作,并使其顺利运行实验。

4、与两位同学一起对实验中出现的各种问题进行讨论并对程序进行更改直至程序最终顺利运行。

5、编写了实验报告中的调试及结果分析部分和软件设计文档。

2、遇到的问题及解决方案

1、实验初期由于对Linux系统以及Ubuntu平台的不熟悉,操作书上例题时多次失败,后经过向值班同学请教以及多次实验熟悉,最终可以顺利完成各项操作。

2、开始进行编程工作时由于对于C++的不了解以及编程水平不过关,在源文件基础上编写自己程序模块时多次产生错误并导致功能无法实现,如蜂鸣器、

电机模块等。后经过对资料及书籍对C++的巩固自学,并研究实验指导书中各个例题的源程序,并借鉴其中的功能实现,搞清了各类需要的功能模块的函数编写,最终将自己的程序改正,并可以顺利进行编译、安装、运行。

3、在最终运行时偶尔出现某个单独模块无法正常运行的状况,但是在未更改程序的前提下重启实验箱并重新编译运行程序后功能模块恢复正常,原因未知。

3、个人工作自我评价

通过嵌入式课程实验部分的学习,深刻增加了对嵌入式这项技术的理解,在上课过程中虽然学到了嵌入式技术的现状、相关硬件知识以及其他相关理论知识,但是感觉对于嵌入式的具体设计以及操作还是感觉茫然无从下手,在实验中更是深刻意识到对这门课程学习的不足,通过嵌入式实验中,学会了初级的嵌入式设计方法,并且发现了自己的C++编程水平的欠缺,为了完成实验设计,重新自学了C++的编程,提高了自己的编程水平,并且学会了软件和硬件相结合的应用。

在实验过程中与两位同学共同分工合作也促进提高了合作能力,因为在实际设计中分工合作非常常见,所以这方面的能力同样不可缺少。

在这次试验中,从开始的无法下手到最后设计成功,虽然坎坷,但是在这个过程中不断发现自己的不足,然后努力克服,最终还是顺利完成了分工任务,使知识不仅仅是理论层面而真正落实到了实践中,得到了一定提高,并且顺利完成了嵌入式这门课程的要求。

附录:

附录Ⅰ软件设计文档

1、组员分工

嵌入式系统设计与应用

嵌入式系统设计与应用第五章程序设计与分析(1) 西安交通大学电信学院 任鹏举

本章主要内容 Software Design Cycle ●嵌入式软件中的组件(状态机 、循环缓存器、队列) ●编程模型,如数据流和控制图●编译方法介绍 ●根据性能、大小和功耗来分析 和优化程序 ●如何测试程序以验证其正确性

1 嵌入式程序组件 ●状态机(State machine) 用变量来表示内部的状态,根据输入完成状态的转移交通灯控制、CPU design controller ●循环缓冲区(Circular buffer) I/O input buffer ●队列(Queue)

状态机(1) ● 反应系统(reactive system ):响应外部事件的系统。 ●外部输入是间歇到达● 适合使用状态机描述 ● 有限状态机是表示有限个状态以及在这些状态之间的转移和动作等行为的数学模型。 ●Moore 机:● Mealy 机:输出只由当前状态确定 输出依赖于当前状态和输入

状态机(2) 例子:一个简单的座位安全带控制器 idle buzzer seated belted 未入座/-入座/定时器启动 未系安全带且定时器未超时/- 未系安全带/定时器启动系好安全带/-系好安全带/蜂鸣器关闭 定时器超时/蜂鸣器启动 未入座/-未入座/蜂鸣器关闭输入/输出-= 无动作

状态机(3) #define IDLE 0#define SEATED 1#define BELTED 2#define BUZZER 3switch (state) { case IDLE: if (seat) { state = SEATED; timer_on = TRUE; } break; case SEATED: if (belt) state = BELTED; else if (timer) state = BUZZER; break; case BELTED: if (!seat) state = IDLE; else if (!belt) state = SEATED; break; case BUZZER: if (belt) state = BELTED; else if (!seat) state = IDLE; break; } Inputs :seat, belt, timer Outputs: buzzer

嵌入式系统设计与开发试卷

一、选择题(共30分,每题2分) 1.嵌入式处理器指令的执行周期包括() A.启动、运行、退出 B.取指令、指令译码、执行指令、存储 C.启动、运行、挂起、退出 D.取指令、指令译码、执行指令 2.下列不属于嵌入设计处理器本身带有的基本接口是() A.串口; B.并口; C.PCIE; D.AD/DA; 3.以下几个步骤是DMA控制过程的主要节点,请选出正确的DMA控制流程(请求信号HRQ)为() A. CPU让出总线控制权(响应信号HLDA) B. DMA控制器向CPU请求总线使用权 C. DMA控制器控制总线,发总线命令、传送数据 D. DMA总线控制器归还总线控制权 5. CPU重新获取总线控制权 A. 2,1,3,4; B. 1,2,3,4; C. 3,1,4,2; D. 3,4,1,2; 4、一个嵌入式系统可以含有多个总线,以下不属于IO总线的为() A.AGP; B.PCI; C.AHB; D.ISA 5.VHDL是() A.硬件描述语言 B.软件描述语言 C.构件描述语言 D.软件开发工具 6.以下不属于mC/OS-II中支持的中断类型的是() A.硬件中断 B.外部中断 C.陷井中断 D.临界区中断 7.将系统启动代码读入内存是()的主要职责 A.内存管理; B. VFS; C.Boot Loader;D:虚拟内存 8.CAN总线是指()

A.控制器局域网 B.网络传输协议 C.数据标准 D.软硬件接口 9.属于LCD三种显示方式的是() A.投射型、反射型、透射型 B.投射型、透反射型、透射型 C.反射型、透射型、透反射型 D.投射型、反射型、透反射型 10.操作系统内核是指() A.操作系统的调度部分 B.操作系统的驱动 C.操作系统的存储管理 D.操作系统的核心部分 11.ICE在线仿真器上有大量的RAM,()是主要的一种 A SRAM B DRAM C Block RAM D 影子RAM 12.下面是PowerPC架构嵌入式微处理器的不是主要特点是() A.独特的分支出来单元可以让指令预期效率大大提高。 B.超标量的设计。 C.适合大量向量运算,指针现行寻址的智能化算法。 D.可处理“字节非对齐”的数据存储。 13.下列选项中,不是实时操作系统必须满足的条件是() A.具有可抢占的内核 B.中断可嵌套 C.任务调度的公平性 D.具有优先级翻转保护 14.BSP作为一种嵌入式软件,他的主要特点是() A:与硬件无关,与操作系统有关 B:与硬件和操作系统都相关 C:与硬件有关,与操作系统无关D:与操作系统和硬件都无关 15.JTAG的引脚TCK的主要功能是() A.测试时钟输入; B.测试数据输入,数据通过TDI输入JTAG口; C.测试数据输出,数据通过TDO从JTAG口输出; D.测试模式选择,TMS用来设置JTAG口处于某种特定的测试模式。 二、判断题(每题2分,共20分) ( )1.嵌入式系统调试通常可以分为硬件级调试和在线仿真器调试。

嵌入式软件开发流程图

嵌入式软件开发流程 一、嵌入式软件开发流程 1.1 嵌入式系统开发概述 由嵌入式系统本身的特性所影响,嵌入式系统开发与通用系统的开发有很大的区别。嵌入式系统的开发主要分为系统总体开发、嵌入式硬件开发和嵌入式软件开发3大部分,其总体流程图如图1.1所示。 图1.1 嵌入式系统开发流程图 在系统总体开发中,由于嵌入式系统与硬件依赖非常紧密,往往某些需求只能通过特定的硬件才能实现,因此需要进行处理器选型,以更好地满足产品的需求。另外,对于有些硬件和软件都可以实现的功能,就需要在成本和性能上做出抉择。往往通过硬件实现会增加产品的成本,但能大大提高产品的性能和可靠性。 再次,开发环境的选择对于嵌入式系统的开发也有很大的影响。这里的开发环境包括嵌入式操作系统的选择以及开发工具的选择等。比如,对开发成本和进度限制较大的产品可以选择嵌入式Linux,对实时性要求非常高的产品可以选择Vxworks等。

1.2 嵌入式软件开发概述 嵌入式软件开发总体流程为图4.15中“软件设计实现”部分所示,它同通用计算机软件开发一样,分为需求分析、软件概要设计、软件详细设计、软件实现和软件测试。其中嵌入式软件需求分析与硬件的需求分析合二为一,故没有分开画出。 由于在嵌入式软件开发的工具非常多,为了更好地帮助读者选择开发工具,下面首先对嵌入式软件开发过程中所使用的工具做一简单归纳。 嵌入式软件的开发工具根据不同的开发过程而划分,比如在需求分析阶段,可以选择IBM的Rational Rose等软件,而在程序开发阶段可以采用CodeWarrior(下面要介绍的ADS 的一个工具)等,在调试阶段所用的Multi-ICE等。同时,不同的嵌入式操作系统往往会有配套的开发工具,比如Vxworks有集成开发环境Tornado,WindowsCE的集成开发环境WindowsCE Platform等。此外,不同的处理器可能还有对应的开发工具,比如ARM的常用集成开发工具ADS、IAR和RealView等。在这里,大多数软件都有比较高的使用费用,但也可以大大加快产品的开发进度,用户可以根据需求自行选择。图4.16是嵌入式开发的不同阶段的常用软件。 图1.2 嵌入式开发不同阶段的常用软件 嵌入式系统的软件开发与通常软件开发的区别主要在于软件实现部分,其中又可以分为编译和调试两部分,下面分别对这两部分进行讲解。 1.交叉编译 嵌入式软件开发所采用的编译为交叉编译。所谓交叉编译就是在一个平台上生成可以在另一个平台上执行的代码。在第3章中已经提到,编译的最主要的工作就在将程序转化成运行该程序的CPU所能识别的机器代码,由于不同的体系结构有不同的指令系统。因此,不同的CPU需要有相应的编译器,而交叉编译就如同翻译一样,把相同的程序代码翻译成不同CPU的对应可执行二进制文件。要注意的是,编译器本身也是程序,也要在与之对应的某一个CPU平台上运行。嵌入式系统交叉编译环境如图4.17所示。

(完整word版)嵌入式系统设计与应用

嵌入式系统设计与应用 本文由kenneth67贡献 ppt文档可能在W AP端浏览体验不佳。建议您优先选择TXT,或下载源文件到本机查看。 课程名称:课程名称:嵌入式系统设计与应用 总学时:其中讲课36学时,上机实践环节12 36学时12学时总学时:其中讲课36学时,上机实践环节12学时教材:嵌入式系统设计教程》教材:《嵌入式系统设计教程》电子工业出版社马洪连参考书:参考书:1、《嵌入式系统开发与应用》北航出版社、田泽编著. 嵌入式系统开发与应用》北航出版社、田泽编著. 2、《ARM体系结构与编程》清华大学出版社杜春雷编著ARM体系结构与编程体系结构与编程》嵌入式系统设计与实例开发—ARM ARM与C/OS3、《嵌入式系统设计与实例开发ARM与μC/OS-Ⅱ》清华大学出版社王田苗、魏洪兴编著清华大学出版社王田苗、ARM嵌入式微处理器体系结构嵌入式微处理器体系结构》4、《ARM嵌入式微处理器体系结构》北航出版社、马忠梅等著. 北航出版社、马忠梅等著. 张石.ARM嵌入式系统教程嵌入式系统教程》5、张石.《ARM嵌入式系统教程》.机械工业出版2008年社.2008年9月 1 课程内容 绪论:绪论: 1)学习嵌入式系统的意义2)高校人才嵌入式培养情况嵌入式系统设计(实验课)3)嵌入式系统设计(实验课)内容安排 第1章嵌入式系统概况 1.1 嵌入式系统的定义1.2 嵌入式系统的应用领域及发展趋势1.3 嵌入式系统组成简介 第2章嵌入式系统的基本知识 2.1 2.2 2.3 嵌入式系统的硬件基础嵌入式系统的软件基础ARM微处理器的指令系统和程序设计ARM微处理器的指令系统和程序设计 2 第3章 3.1 3.2 3.3 基于ARM架构的嵌入式微处理器基于ARM架构的嵌入式微处理器ARM 概述嵌入式微处理器的组成常用的三种ARM ARM微处理器介绍常用的三种ARM 微处理器介绍 第4章 4.1 4.2 4.3 4.4 4.5 4.6 嵌入式系统设计 概述嵌入式系统的硬件设计嵌入式系统接口设计嵌入式系统人机交互设备接口嵌入式系统的总线接口和网络接口设计嵌入式系统中常用的无线通信技术 3 第5章嵌入式系统开发环境与相关开发技术 5.1 5.2 5.3 5.4 5.5 6.1 6.2 6.3 6.4 概述嵌入式系统的开发工具嵌入式系统调试技术嵌入式系统开发经验嵌入式系统的Bootloader Bootloader技术嵌入式系统的Bootloader技术μC/OS-II操作系统概述C/OS-II操作系统概述ADS开发环境ARM ADS开发环境C/OS-II操作系统在ARM系统中的移植操作系统在ARM μC/OS-II操作系统在ARM系统

嵌入式系统设计与应用复习资料.docx

嵌入式系统设计与应用复习资料 (一)?单项选择题: 1. 下面哪个系统属于嵌入式系统。 ( 八、“天河一号”计算机系统 C 、联想S10±网木 D ) B 、联想T400笔记本计算机 D 、联想OPhone 手机 2. 软硕件协同设计方法与传统设计方法的最大不同Z 处在于(B )。 A 、软硬件分开描述 C 、协同测试 3. 卜?面关于哈佛结构描述正确的是(A A 、程序存储空间与数据存储空间分离 C 、程序存储空间与数据存储空间合并 4. 下面哪一种工作模式不属于ARM 特权模式 A 、用户模式 B 、系统模式 C 、 5. ARM7TDM1的工作状态包括(D )。 A 、测试状态和运行状态 C 、就绪状态和运行状态 6. USB 接口移动硬盘最合适的传输类型为( A 、控制传输 B 、批量传输 C 、 7. 下而哪一种功能单元不属于I/O 接口电路。(D ) A 、USB 控制器 B 、UART 控制器 C 、以太网控制器 &下面哪个操作系统是恢入式操作系统。(B ) As Red-hat Linux B 、 PCLinux C 、 Ubuntu Linux D 、 SUSE Linux 9. 使用Host-Target 联合开发嵌入式应用,(B )不是必须的。 A 、宿主机 B 、银河麒麟操作系统 C 、目标机 D 、交叉编译器 10. 下面哪个系统不属于嵌入式系统(D )。 A 、MP3播放器 B 、GPS 接收机 C 、“银河玉衡”核心路由器 D 、“犬河一号”计算机系统 11. 在嵌入式系统设计中,嵌入式处理器选型是在进行(C )吋完成。 A 、需求分析 B 、系统集成 C 、体系结构设计 D 、软便件设计 12. 下面哪一类嵌入式处理器最适合于用于工业控制(B )。 A 、嵌入式微处理器 B 、微控制器 C 、DSP D 、以上都不合适 13. 关于ARM 了程序和Thumb 了程序互相调用描述正确的是(B )。 A 、 系统初始化Z 后,ARM 处理器只能工作在一种状态,不存在互相调用。 B 、 只要遵循一定调用的规则,Thumb 子程序和ARM 子程序就可以互相调用。 C 、 只要遵循一定调用的规则,仅能Thumb 子程序调用ARM 子程序。 D 、 只耍遵循一定调用的规则,仅能ARM 子程序调用Thumb 子程序。 14. 关于ARM 处理器的异常的描述不正确的是(C )。 A 、复位属于异常 B 、除数为零会引起异常 B 、软硬件统一描述 D 、协同验证 B 、存储空间与10空间分离 D 、存储空间与10空间合并 (A )0 软中断模式 D 、FTQ 模式 B 、挂起状态和就绪状态 D 、ARM 状态和Thumb 状态 B )0 中断传输 D 、等时传输 D 、LED

嵌入式Linux应用软件开发流程

从软件工程的角度来说,嵌入式应用软件也有一定的生命周期,如要进行需求分析、系统设计、代码编写、调试和维护等工作,软件工程的许多理论对它也是适用的。 但和其他通用软件相比,它的开发有许多独特之处: ·在需求分析时,必须考虑硬件性能的影响,具体功能必须考虑由何种硬件实现。 ·在系统设计阶段,重点考虑的是任务的划分及其接口,而不是模块的划分。模块划分则放在了任务的设计阶段。 ·在调试时采用交叉调试方式。 ·软件调试完毕固化到嵌入式系统中后,它的后期维护工作较少。 下面主要介绍分析和设计阶段的步骤与原则: 1、需求分析 对需求加以分析产生需求说明,需求说明过程给出系统功能需求,它包括:·系统所有实现的功能 ·系统的输入、输出 ·系统的外部接口需求(如用户界面) ·它的性能以及诸如文件/数据库安全等其他要求 在实时系统中,常用状态变迁图来描述系统。在设计状态图时,应对系统运行过程进行详细考虑,尽量在状态图中列出所有系统状态,包括许多用户无需知道的内部状态,对许多异常也应有相应处理。 此外,应清楚地说明人机接口,即操作员与系统间地相互作用。对于比较复杂地系统,形成一本操作手册是必要的,为用户提供使用该系统的操作步骤。为使系统说明更清楚,可以将状态变迁图与操作手册脚本结合起来。

在对需求进行分析,了解系统所要实现的功能的基础上,系统开发选用何种硬件、软件平台就可以确定了。 对于硬件平台,要考虑的是微处理器的处理速度、内存空间的大小、外部扩展设备是否满足功能要求等。如微处理器对外部事件的响应速度是否满足系统的实时性要求,它的稳定性如何,内存空间是否满足操作系统及应用软件的运行要求,对于要求网络功能的系统,是否扩展有以太网接口等。 对于软件平台而言,操作系统是否支持实时性及支持的程度、对多任务的管理能力是否支持前面选中的微处理器、网络功能是否满足系统要求以及开发环境是否完善等都是必须考虑的。 当然,不管选用何种软硬件平台,成本因素都是要考虑的,嵌入式Linux 正是在这方面具有突出的优势。 2、任务和模块划分 在进行需求分析和明确系统功能后,就可以对系统进行任务划分。任务是代码运行的一个映象,是无限循环的一段代码。从系统的角度来看,任务是嵌入式系统中竞争系统资源的最小运行单元,任务可以使用或等待CPU、I/O设备和内存空间等系统资源。 在设计一个较为复杂的多任务应用系统时,进行合理的任务划分对系统的运行效率、实时性和吞吐量影响都极大。任务分解过细会不断地在各任务之间切换,而任务之间的通信量也会很大,这样将会大大地增加系统的开销,影响系统的效率。而任务分解过粗、不够彻底又会造成原本可以并行的操作只能按顺序串行执行,从而影响系统的吞吐量。为了达到系统效率和吞吐量之间的平衡折中,在划分任务时应在数据流图的基础上,遵循下列步骤和原则:

江苏科技大学通信专业嵌入式系统设计及应用_复习大纲

嵌入式系统设计复习 题型: 1、填空,15分左右 2、选择,30分左右 3、简答题40分左右 4、综述15分左右 第一章嵌入式系统概述 提纲: 1、掌握嵌入式系统的定义 2、了解嵌入式系统的一般组成 嵌入式微处理器、外围硬件设备、嵌入式操作系统以及用户的应用程序 (嵌入式系统一般由嵌入式计算机和执行部件组成。其中嵌入式计算机是整个嵌入式系统的核心,主要包括硬件层、中间层、系统软件层以及应用软件层) 知识点: 1、嵌入式系统的定义与特点 定义:是以应用为中心、以计算机技术为基础、软件硬件可裁剪、适应应用系统对功能、可靠性、成本、体积、功耗严格要求的专用计算机系统 特点:软件硬件可裁剪 ①专用性:嵌入式系统具有特定的功能,用于特定的任务; ②低成本:嵌入式系统极其关注成本; ③低功耗:嵌入式系统大都有功耗的要求; ④高实时性OS; ⑤嵌入式系统的运行环境广泛; ⑥嵌入式系统的软件通常要求固态化存储; ⑦嵌入式系统的软件、硬件可靠性要求更高; 2.RISC指令系统的特点 答:指令系统:RISC设计者把上要精力放在那些经常使用的指令上,尽量使它们具有简单高效的特色。对不常用的功能,常通过组合指令来实现。因此,在RISC机器上实现特殊功能时,效率可能较低。但可以利用流水技术和超标量技术加以改进和弥补。 存储器操作:RISC对存储器操作有限制,使控制简单化 程序:RISC汇编语言程序一般需要较大的内存空间,实现特殊功能时程序复杂,不易设计 中断:RISC机器在一条指令执行的适当地方可以响应中断 CPU:由于RISC CPU包含少的单元电路,因而面积小、功耗低 设计周期:RISC微处理器结构简单,布局紧凑,设计周期短,且易于采用最新技术易用性:RISC微处理器结构简单,指令规整,性能容易把握,易学易用 应用范围:由于RISC指令系统的确定与特定的应用领域有关,所以RISC机器更适合于嵌入式应用 3、嵌入式系统由硬件与软件组成,其中软件的组成 答:由实时多任务操作系统、文件系统、图形用户界面接口、网络系统及通用组件模块组成 4、嵌入式系统的运行可靠性指标

嵌入式系统设计与应用-西安交通大学教师个人主页

嵌入式系统设计与应用第六章进程和操作系统(3)西安交通大学电信学院孙宏滨 i n S u n i 'a n J i a o t o n g U i v e r s i t y I n t e r n a l T e a c h i n g U s e O n l y

● 我们该如何评估调度策略?● 能满足所有截止时限 ● CPU 利用率---CPU 执行有用工作所占的时间比例● 调度开销---做调度决策所需的时间 i n S u n i 'a n J i a o t o n g U i v e r s i t y I n t e r n a l T e a c h i n g U s e O n l y

● 分配优先级主要有两种方法:● 静态优先级:在整个执行过程中优先级始终不变● 动态优先级:在执行过程中优先级发生变化 i n S u n i 'a n J i a o t o n g U i v e r s i t y I n t e r n a l T e a c h i n g U s e O n l y

● 单调速率调度(Rate-Monotonic Scheduling, RMS ):首先为实时操作系统开发的调度策略之一,直至现在仍然被广泛使用。● RMS 属于静态调度策略。事实证明,固定优 先级的做法在许多情况下都足以有效地调度进程。● RMS 的理论基础是单调速率分析(Rate Monotonic Analysis, RMA )。i n S u n i 'a n J i a o t o n g U i v e r s i t y I n t e r n a l T e a c h i n g U s e O n l y

嵌入式系统设计与开发(章坚武)ZXM0909练习题目

1、编写一程序,查找存储器从0x500000开始的200个字中为5的数目,将其结果存到0x600000中。(10分) 2、注释下面各条指令,并指出这段程序的功能 MOV R2,#100 MOV R1,#0 LOOP ADD R1,R1,R2 SUBS R2,R2,#1 BNE LOOP HERE B HERE 3、编写程序,将存储器从0x400000开始的200个字数据,传送到0x400600开始的区域。 4.用ARM汇编指令写出实现64位加法和64位减法的代码段,使用的寄存器请自行分配。 假定低32位数存放在r0和r1里面,高32位数存放在r2和r3里面。 5.指出下面各条指令的寻址方式。 SUB R0,R1,R2 ;寻址方式为: SUBS R0,R0,#1 ;寻址方式为: MOV R0,R2,LSL #3 ;寻址方式为:

SWP R1,R1,[R2] ;寻址方式为: LDR R2,[R3,#0x0C] ;寻址方式为: 6.分别写出语句a)与b)中LDR的作用 a) LDR r0,[r1,#6] b) LDR r0,=0x999 7.假设R0的内容为0x104,寄存器R1、R2的内容分别为0x01与0x10,存储器所有单元初始内容为0。连续执行下述指令后,说明存储器及寄存器的内容如何变化? STMIB R0!,{R1,R2} LDMIA R0!,{R1,R2} 8.分析下面的程序,正确填写下面的空格。 ; 功能: AREA Example1,CODE ,READONLY ; 此语句是声明代码段Example1 ENTRY ;此语句功能是标识程序入口 CODE32 ; 声明32位ARM指令START MOV R0,#0 ; R0 = 0 MOV R1,#10 ; R1 = LOOP BL ADD_SUB ; 调用子程序 ADD_SUB B LOOP ; 跳转到LOOP ADD_SUB ADDS R0,R0,R1 ; 此语句作用是完成 MOV PC, ; 子程序返回 END ; 此语句作用是声明 9.用汇编语言调用C语言实现n个数相加,n为C函数的参数,

嵌入式系统设计与应用复习资料

嵌入式系统设计与应用复习资料 (一).单项选择题: 1.下面哪个系统属于嵌入式系统。( D ) A、“天河一号”计算机系统 B、联想T400笔记本计算机 C、联想S10上网本 D、联想OPhone手机 2.软硬件协同设计方法与传统设计方法的最大不同之处在于( B )。 A、软硬件分开描述 B、软硬件统一描述 C、协同测试 D、协同验证 3.下面关于哈佛结构描述正确的是( A )。 A、程序存储空间与数据存储空间分离 B、存储空间与IO空间分离 C、程序存储空间与数据存储空间合并 D、存储空间与IO空间合并 4.下面哪一种工作模式不属于ARM特权模式( A )。 A、用户模式 B、系统模式 C、软中断模式 D、FIQ模式 5.ARM7TDMI的工作状态包括( D )。 A、测试状态和运行状态 B、挂起状态和就绪状态 C、就绪状态和运行状态 D、ARM状态和Thumb状态 https://www.sodocs.net/doc/9f8398750.html,B接口移动硬盘最合适的传输类型为( B )。 A、控制传输 B、批量传输 C、中断传输 D、等时传输 7.下面哪一种功能单元不属于I/O接口电路。( D ) A、USB控制器 B、UART控制器 C、以太网控制器 D、LED 8.下面哪个操作系统是嵌入式操作系统。( B ) A、Red-hat Linux B、μCLinux C、Ubuntu Linux D、SUSE Linux 9.使用Host-Target联合开发嵌入式应用,( B )不是必须的。 A、宿主机 B、银河麒麟操作系统 C、目标机 D、交叉编译器 10.下面哪个系统不属于嵌入式系统( D )。 A、MP3播放器 B、GPS接收机 C、“银河玉衡”核心路由器 D、“天河一号”计算机系统 11.在嵌入式系统设计中,嵌入式处理器选型是在进行( C )时完成。 A、需求分析 B、系统集成 C、体系结构设计 D、软硬件设计 12.下面哪一类嵌入式处理器最适合于用于工业控制( B )。 A、嵌入式微处理器 B、微控制器 C、DSP D、以上都不合适 13.关于ARM子程序和Thumb子程序互相调用描述正确的是( B )。 A、系统初始化之后,ARM处理器只能工作在一种状态,不存在互相调用。 B、只要遵循一定调用的规则,Thumb子程序和ARM子程序就可以互相调用。 C、只要遵循一定调用的规则,仅能Thumb子程序调用ARM子程序。 D、只要遵循一定调用的规则,仅能ARM子程序调用Thumb子程序。 14.关于ARM处理器的异常的描述不正确的是( C )。 A、复位属于异常 B、除数为零会引起异常 C、所有异常都要返回 D、外部中断会引起异常

嵌入式系统设计教程(第2版)简答题答案.pdf

第一章嵌入式系统概论 1.嵌入式系统的定义是什么? 答:以应用为中心,以计算机技术为基础,硬件、软件可裁剪,功能、可靠性、成本、体积、功耗严格要求的专用计算机系统。 2.简述嵌入式系统的主要特点。 答:(1)功耗低、体积小、具有专用性 (2)实时性强、系统内核小 (3)创新性和高可靠性 (4)高效率的设计 (5)需要开发环境和调试工具 3. 嵌入式系统一般可以应用到那些领域? 答:嵌入式系统可以应用在工业控制、交通管理、信息家电、家庭智能管理系统、网络及电子商务、环境监测和机器人等方面。 4. 简述嵌入式系统的发展趋势 答:(1)嵌入式应用的开发需要强大的开发工具和操作系统的支持 (2)连网成为必然趋势 (3)精简系统内核、算法,设备实现小尺寸、微功耗和低成本 (4)提供精巧的多媒体人机界面 (5)嵌入式软件开发走向标准化 5.嵌入式系统基本架构主要包括那几部分? 答:嵌入式系统的组织架构是由嵌入式处理器、存储器等硬件、嵌入式系统软件和嵌入式应用软件组成。嵌入式系统一般由硬件系统和软件系统两大部分组成,其中,硬件系统包括嵌入式处理器、存储器、I/O系统和配置必要的外围接口部件;软件系统包括操作系统和应用软件。 6.嵌入式操作系统按实时性分为几种类型,各自特点是什么? 答:(1)具有强实时特点的嵌入式操作系统。 (2)具有弱实时特点的嵌入式操作系统。 (3)没有实时特点的嵌入式操作系统。 第二章嵌入式系统的基础知识 1.嵌入式系统体系结构有哪两种基本形式?各自特点是什么? 答:冯诺依曼体系和哈佛体系。冯诺依曼体系结构的特点之一是系统内部的数据与指令都存储在同一存储器中,其二是典型指令的执行周期包含取指令TF,指令译码TD,执行指令TE,存储TS四部分,目前应用的低端嵌入式处理器。 哈佛体系结构的特点是程序存储器与数据存储器分开,提供了较大的数据存储器带宽,适用于数据信号处理及高速数据处理的计算机。

2019嵌入式课程设计-嵌入式系统设计与应用(第2版)-王剑-清华大学出版社

嵌入式系统课程设计计划 具体内容、进度安排及要求 (附课表,包含指导、答疑、上机的时间、地点,指导教师,学生班级,分组情况等)一、内容及要求: 通过本次课设,使学生了解嵌入式系统的特点,进一步理解和巩固课堂所学的嵌入式系统的基本理论和知识。掌握嵌入式系统的基本设计与分析方法,从而达到理论与实际相结合,并为今后从事嵌入式系统设计及其相关领域的各项工作打下坚实的基础。具体要求如下: 1、掌握嵌入式系统的硬件设计原理。 2、掌握嵌入式linux操作系统下的C语言应用程序设计技术 3、掌握嵌入式linux操作系统驱动程序设计技术 4、掌握嵌入式linux操作系统的移植技术 5、掌握嵌入式linux操作系统的交叉编译与动态调试技术 具体内容如下: (1)熟悉嵌入式硬件系统基础知识及基于Linux的应用开发环境的建立和程序设计方法 熟悉嵌入式硬件系统基础知识,熟悉嵌入式操作系统Linux的特点,了解Linux的主要模块及各自的功能。掌握虚拟机VMW ARE的使用方法,掌握通过交互式的环境来设计和定制内核、选择系统特性,然后进行编译和调试的全过程。了解BSP在嵌入式系统中位置及其作用。掌握在嵌入式操作系统Linux上搭建嵌入式应用开发环境的方法,熟悉Bootloader的使用方法。 (2)嵌入式操作系统Linux平台的编译移植搭建 安装嵌入式实验开发平台的BSP。根据嵌入式实验开发平台的特点和系统需求,利用VMARE环境配置Linux操作系统的特性和功能, 熟悉Bootloader的使用方法,使用TOOLCHAIN进行交叉编译、链接生成操作系统内核,生成系统映像文件ZImage。下载并运行编译好的Linux系统内核。对文件系统同样进行相关编译移植下载至嵌入式开发平台上。 (3)嵌入式数据库SQLITE与UI开发工具QT的掌握。 (4)根据所学理论知识和嵌入式硬件开发平台的具体情况,设计一个具有一定规模较复杂功能的嵌入式系统(如嵌入式系统设备驱动程序),一般来讲需要2个学生共同完成. (5)编写课设报告。课设报告要求: 1.要求使用A4纸打印,必须有封面和目录。封面内容有课设题目、班级、序号(两位)、姓名、指导教师、日期等内容。 2.课设内容一般应包含如下部分: ①课设名称、目的、要求、内容。 ②嵌入式系统a8开发硬件平台的基本概述。 ③嵌入式操作系统Linux配置、编译、移植的基本原理和过程及测试程序设计。 ④嵌入式数据库sqlite的移植过程及程序设计。 ⑤基于QT的数据库应用程序设计。 ⑥目标系统如嵌入式设备驱动程序的设计。 ⑦课设结果及分析。 ⑧收获、体会和建议。 二、进度安排: 1.嵌入式开发平台的熟悉(硬件设计环境和软件开发环境)(1天) 2.嵌入式操作系统Linux平台的编译移植搭建(1天) 3.嵌入式linux操作系统的交叉编译与动态调试(1天) 4.嵌入式数据库SQLITE的熟悉(1天)

嵌入式软件开发流程

嵌入式软件的开发流程 嵌入式系统是指用于执行独立功能的专用计算机系统。它由包括微处理器、定时器、微控制器、存储器、传感器等一系列微电子芯片与器件,和嵌入在存储器中的微型操作系统、控制应用软件组成,共同实现诸如实时控制、监视、管理、移动计算、数据处理等各种自动化处理任务。嵌入式系统以应用为中心,以微电子技术、控制技术、计算机技术和通讯技术为基础,强调硬件软件的协同性与整合性,软件与硬件可剪裁,以此满足系统对功能、成本、体积和功耗等要求。最简单的嵌入式系统仅有执行单一功能的控制能力,比如说单片机的应用,在唯一的ROM 中仅有实现单一功能控制程序,无微型操作系统。复杂的嵌入式系统,例如个人数字助理(PDA)、手持电脑(HPC)等,具有与PC几乎一样的功能。实质上与PC的区别仅仅是将微型操作系统与应用软件嵌入在ROM、RAM 和/或FLASH存储器中,而不是存贮于磁盘等载体中。很多复杂的嵌入式系统又是由若干个小型嵌入式系统组成的。 近些年来,随着以计算机技术,通讯技术为主的信息技术的快速发展和Internet 的广泛应用,传统的控制学科正在发生变革,出现了许多新的生长点。伴随而来的一个现象是控制专业的相当多的学生在毕业后进入了计算机,通讯行业,以致有人说学控制没有用,自动化专业可以取消了。这些情况的出现使我们控制教育工作者反复思考,传统的控制应如何拓宽它的领域?控制专业应该教什么才使学生感到有用?流行的嵌入式操作系统可以分为两类:一类是从运行在个人电脑上的操作系统向下移植到嵌入式系统中,形成的嵌入式操作系统,如微软公司的Windows CE及其新版本,SUN公司的Java操作系统,朗讯科技公司的Inferno,嵌入式Linux等。这类系统经过个人电脑或高性能计算机等产品的长期运行考验,技术日趋成熟,其相关的标准和软件开发方式已被用户普遍接受,同时积累了丰富的开发工具和应用软件资源。 另一类是实时操作系统,如WindRiver 公司的VxWorks,ISI 的pSOS,QNX系统软件公司的QNX,ATI 的Nucleus,中国科学院凯思集团的Hopen嵌入式操作系统等,这类产品在操作系统的结构和实现上都针对所面向的应用领域,对实时性高可靠性等进行了精巧的设计,而且提供了独立而完备的系统开发和测试工具,较多地应用在军用产品和工业控制等领域中。Linux 是90年代以来逐渐成熟的一个开放源代码的操作系统。PC机上的Linux 版本在全球数以百万计爱好者的合力开发下,得到了非常迅速的发展。90 年代末uClinux,RTLinux 等相继推出,在嵌入式领域得到了广泛的关注,它拥有大批的程序员和现成的应用程序,是研究开发工作的宝贵资源。 一、嵌入式软件开发流程 1.1 嵌入式系统开发概述 由嵌入式系统本身的特性所影响,嵌入式系统开发与通用系统的开发有很大的区别。嵌入式系统的开发主要分为系统总体开发、嵌入式硬件开发和嵌入式软件开发3大部分,其总体流程图如图1.1所示。

嵌入式系统设计原理及应用复习题答案自制

考试题型:填空题、选择题、简答题、计算题、设计题 考试方式:开卷 第0章绪论 l、什么是数字系统设计技术? 在解决了对不同目标信息的数字化编码、数字化传输、数字化解码的基本理论、算法定义和协议规范之后,对其如何进行系统的构成,如何以最优 化的性能(如速度)、最低廉的成本(如芯片而积、集成密度等)来实现该系统的技术。2、什么是集成电路IC? 集成电路(IC)是指通过一系列特定的加工工艺,将多个晶体管、电阻、电容等器件,按照一定的电路连接集成在一块半导体单品片(如Si或GaAs) 或陶瓷等基片上,作为一个不可分割的整体完成某一特定功能的电路组件 3、什么是集成电路IP? 集成电路IP是经过预先设计、预先验证,符合产业界普片认同的设计规范和设计标准,具有相对独立功能的电路模块或予系统。其具有知识含量高、 占用芯片而积小、运行速度快、功耗低、工艺容差性大等特点,可以复用(Reuse)于SOC、SOPC或复杂ASIC设计中。 4、什么是sOc? SOC,即嵌入式系统发展的最高形式—一片上系统。从狭义角度讲,它是信息系统核心的芯片集成,是将系统关键部件集成在一块芯片上;从广 义角度讲,SOC是一个微小型系统, 5、光刻的基本原理。 光刻是以某种波长的光为曝光光源,透过掩模版(由不透光的图形组成),照射在涂有光刻胶(光致抗蚀剂)的被加工材料表面上,利用光刻胶的感光性和抗蚀性,经过化学显影,制作出与掩模版图形一致的光刻胶图形。 光刻是复制微细图形的最有效手段之一,是芯片制作的核心技术。 掩模版是一种玻璃板,加了一个反射金属层。 光刻胶是一种光敏组织聚合物,性质与胶卷类似,光能改变它的化学性质。 第1章嵌入式系统基础知识 4、嵌入式系统的定义和特点是什么? 分别从技术角度和系统角度给出嵌入式系统的定义 技术角度:以应用为中心、以计算机技术为基础,软硬件可裁剪,应用系统对功能、可靠性、成本、体积、功耗和应用环境有特殊要求的专用计算机 系统。是将应用程序、操作系统和计算机硬件集成在—起的系统 系统角度:嵌入式系统是设计完成复杂功能的硬件和软件,并使其紧密耦合在一起的计算机系统 嵌入式系统的特点是什么? 从三要素说:嵌入式:嵌入到对象体系中,有对象环境要求 专用性:软、硬件按对象要求裁减 计算机系统:实现对象的智能化功能

嵌入式系统设计与应用课程设计报告

《嵌入式系统设计与应用》课程设计报告 专业: 班级: 姓名: 学号: 指导教师:

目录 一、设计目的 (3) 二、开发环境 (3) 三、设计任务及要求 (3) 四、实现过程 (3) 用户应用程序设计 (3) 服务器端程序 (3) 五、总结 (4)

一、设计目的 (1)、熟悉并掌握在Linux开发环境下C语言程序设计及编译方法、嵌入式系统;(2)、掌握嵌入式linux下基础网络编程:socket编程 (3)、独立编写客户机/服务器通信程序; 二、开发环境 (1) 编程环境:在Linux开发环境下设计及编译C语言程序。 (2) 硬件设备:PXA270开发板,PC机。 三、设计任务及要求 设计一套可远程调用求和函数并返回客户端的程序。 四、实现过程 用户应用程序设计 1.程序 int sum(); 2.程序 #include <> int sum(){ int i=1,sum=0; while(i<=100){ sum=sum+i; i++; } return sum; } 服务器端程序 /******************************* * 服务器端程序*

********************************/ #include #include #include <> #include <> #include <> #include <> #include <> #include #include “” main() { int sockfd,new_fd,numbytes; struct sockaddr_in my_addr; struct sockaddr_in their_addr; int sin_size,sum; char buff[100] ,temp[100]; sum=sum(); itoa(sum, temp, 10); ..\n"); ,100,0)==-1) { perror("send"); exit(1); } socket success! Sockfd=3; bind success; Listening... Hello!I am Client. (5)、在PC机上运行客户端程序 # ./ result:5050 五、总结 通过本次课程设计,让我熟悉并掌握在Linux开发环境下C语言程序设计及编译方法、嵌入式系统、明白了嵌套字的使用方法、嵌入式linux下基础网络编

嵌入式软件开发流程

嵌入式软件开发流程

————————————————————————————————作者:————————————————————————————————日期:

嵌入式软件开发流程 一、嵌入式软件开发流程 1.1 嵌入式系统开发概述 由嵌入式系统本身的特性所影响,嵌入式系统开发与通用系统的开发有很大的区别。嵌入式系统的开发主要分为系统总体开发、嵌入式硬件开发和嵌入式软件开发3大部分,其总体流程图如图1.1所示。 图1.1 嵌入式系统开发流程图 在系统总体开发中,由于嵌入式系统与硬件依赖非常紧密,往往某些需求只能通过特定的硬件才能实现,因此需要进行处理器选型,以更好地满足产品的需求。另外,对于有些硬件和软件都可以实现的功能,就需要在成本和性能上做出抉择。往往通过硬件实现会增加产品的成本,但能大大提高产品的性能和可靠性。 再次,开发环境的选择对于嵌入式系统的开发也有很大的影响。这里的开发环境包括嵌入式操作系统的选择以及开发工具的选择等。比如,对开发成本和进度限制较大的产品可以选择嵌入式Linux,对实时性要求非常高的产品可以选择Vxworks等。

1.2 嵌入式软件开发概述 嵌入式软件开发总体流程为图4.15中“软件设计实现”部分所示,它同通用计算机软件开发一样,分为需求分析、软件概要设计、软件详细设计、软件实现和软件测试。其中嵌入式软件需求分析与硬件的需求分析合二为一,故没有分开画出。 由于在嵌入式软件开发的工具非常多,为了更好地帮助读者选择开发工具,下面首先对嵌入式软件开发过程中所使用的工具做一简单归纳。 嵌入式软件的开发工具根据不同的开发过程而划分,比如在需求分析阶段,可以选择IBM的Rational Rose等软件,而在程序开发阶段可以采用CodeWarrior(下面要介绍的ADS 的一个工具)等,在调试阶段所用的Multi-ICE等。同时,不同的嵌入式操作系统往往会有配套的开发工具,比如Vxworks有集成开发环境Tornado,WindowsCE的集成开发环境WindowsCE Platform等。此外,不同的处理器可能还有对应的开发工具,比如ARM的常用集成开发工具ADS、IAR和RealView等。在这里,大多数软件都有比较高的使用费用,但也可以大大加快产品的开发进度,用户可以根据需求自行选择。图4.16是嵌入式开发的不同阶段的常用软件。 图1.2 嵌入式开发不同阶段的常用软件 嵌入式系统的软件开发与通常软件开发的区别主要在于软件实现部分,其中又可以分为编译和调试两部分,下面分别对这两部分进行讲解。 1.交叉编译 嵌入式软件开发所采用的编译为交叉编译。所谓交叉编译就是在一个平台上生成可以在另一个平台上执行的代码。在第3章中已经提到,编译的最主要的工作就在将程序转化成运行该程序的CPU所能识别的机器代码,由于不同的体系结构有不同的指令系统。因此,不同的CPU需要有相应的编译器,而交叉编译就如同翻译一样,把相同的程序代码翻译成不同CPU的对应可执行二进制文件。要注意的是,编译器本身也是程序,也要在与之对应的某一个CPU平台上运行。嵌入式系统交叉编译环境如图4.17所示。

《嵌入式系统设计与应用》教学大纲

《嵌入式系统设计与应用》课程教学大纲 中文名称:嵌入式系统设计与应用 英文名称:Embedded Design and Application 学时数:34(理论)+ 17(实验)学分:2 + 1 一、课程性质和目的 嵌入式系统是电子信息的重要发展方向之一,电子信息类专业的学生(包含计算机科学与技术、软件工程、电子信息工程、通信工程等专业)应该掌握必要的嵌入式系统开发与应用知识。该课程为兼具理论性和实用性的综合应用型课程。本课程是计算机科学与技术、软件工程专业的专业选修课,一般在第四学年第一学期开设。本课程以理论教学为主,并穿插部份实验教学,使理论和实践更好结合。通过本课程的学习,使学生了解有关嵌入式系统的基本原理、设计方法以及嵌入式系统的最新发展,初步掌握嵌入式系统开发的过程和常用方法,能够进行嵌入式系统设备驱动程序设计。 二、教学基本要求及基本内容 教学基本要求: 通过本课程的学习,要求学生了解嵌入式系统的基本概念,掌握嵌入式系统的基本设计方法,了解和掌握嵌入式系统应用项目的开发过程。本课程重点介绍的内容为:1.嵌入式系统的软、硬件结构;2.Linux操作系统的应用;3.嵌入式系统开发环境的建立; 4.嵌入式系统的网络应用; 5.嵌入式系统设备驱动程序的设计与应用。课程的重点为嵌入式系统的应用。 教学基本内容: 第一章嵌入式系统基础(2学时理论) 1.教学内容: (1)嵌入式系统简介; (2)嵌入式操作系统; (3)嵌入式系统的开发过程; (4)嵌入式系统的应用方案。 2.教学目的及要求:通过本章内容的学习,使学生对嵌入式系统及其应用所了解。 第二章嵌入式系统硬件体系结构(2学时理论) 1.教学内容: (1)相关基础知识 (2) 嵌入式系统硬件平台; (3) 微处理器结构。(重点)

相关主题