现代电子系统设计习题解答5.docx
- 文档编号:10724709
- 上传时间:2023-05-27
- 格式:DOCX
- 页数:17
- 大小:36.12KB
现代电子系统设计习题解答5.docx
《现代电子系统设计习题解答5.docx》由会员分享,可在线阅读,更多相关《现代电子系统设计习题解答5.docx(17页珍藏版)》请在冰点文库上搜索。
现代电子系统设计习题解答5
第5章习题参考答案
1.什么是嵌入式?
目前主要有哪些硬件平台?
嵌入式系统是指以应用为核心,以计算机技术为基础,软硬件可裁剪,适用于应用系统,对功能、可靠性、成本、体积和功耗等严格要求的专用计算机系统。
嵌入硬件平台一般包含以下部分:
1)嵌入式处理器2)存储器3) I/O接口4)输入/输出设备
2.嵌入式操作系统有哪些?
Linux操作系统适用于LPC2200平台吗?
嵌入式操作系统有:
Linux、uC/OS-Ⅱ、VxWorks、WindowsCE、Psos、PalmOS、LynxOS、QNX、LYNX等。
Linux操作系统不能直接应用于用于LPC2200平台。
但Linux的分支uCLinux可以支持LPC2200平台。
3.嵌入式系统有哪些特点?
并请说说嵌入式芯片的选择原则。
嵌入式系统具有以下特点:
(1)系统内核小。
(2)目标代码小。
(3)专用性强。
(4)系统精简。
(5)高实时性操作系统。
(6)低功耗、体积小、集成度高、成本低。
(7)嵌入式系统开发需要专门的开发工具和环境。
嵌入式芯片的选择原则:
在一个系统中使用什么样的嵌入式处理器主要取决于应用领域、用户的需求、成本、开发的难易程度等因素。
在开发过程中,还需要考虑其他一些工程因素,综合选择最适用的硬件平台。
4.嵌入式系统应用开发过程包含哪些?
其中操作系统的移植步骤是必要的吗?
嵌入式项目的开发过程,大的方面可以分为两个阶段。
第一阶段为在实验开发平台上的开发调试阶段,要完成完成项目的主要指标;第二阶段是在第一阶段实现目标的基础上,量体裁衣,再根据项目的需求剪裁或扩展,设计适合该项目的硬件工程板。
设计好的工程板资源既要满足目标的需求,同时要考虑产品的集成性、低成本、小型化等,更重要的是可靠性等因素,另外要考虑设计的可升级性和兼容性等.
1.硬件系统的准备
2.C/C++、ARM汇编语言知识的学习
3.ARM芯片资料的研究
4.熟练开发软件环境的使用
5.编写启动代码
6.编写用户代码
7.其他文件的编写
8.工程板的开发与调试
对于嵌入式系统的应用,如果当设计一个简单的应用程序时,可以不使用操作系统,但是当设计较复杂的程序时,可能就需要一个操作系统(OS)来管理和控制内存、多任务、周边资源等。
5.LPC2200系列ARM硬件结构有何特点?
LPC2200系列ARM是基于ARM7TDMI-S为内核的微控制器,处理器时钟高达60~75MHz,片内集成高达512KB的高速FLASH存储器(内存),128位宽度的存储器接口和独特的加速结构使32位代码能够在最大时钟速率下运行。
内部集成UART、CAN、SPI、SSP、I2C、ADC、DAC、PWMO、RTC。
开放的外部总线接口可以扩展64MB的异步静态存储器设备。
由于使用了3级流水线技术,处理和存储系统的所有部分都可连续工作。
采用ARM7TDMI-S处理器,使用了一个被称为Thumb的独特的结构化策略,因此具有两个指令集:
(1)标准32位ARM指令集。
(2) 16位Thumb指令集。
6.什么是大端模式和小端模式?
请判断下列两种情况分别是什么模式。
大尾端(大端),高位优先存储。
即→(A3)11,22,33,44(A0);
小尾端(小端),低位优先存储。
即→(A3)44,33,22,11(A0);
(1) →(MSB)11,22,33,44(LSB);大端模式
(2) →(MSB)44,33,22,11(LSB)。
小端模式
7.请在下划线上指明以下ARM指令的寻址方式。
(1) ADDR0,R1,R2,LSL#3寄存器移位寻址寻址方式
(2) LDRR0,[R1],#4基址寻址寻址方式
(3) LDMIAR0,{R1,R2,R3}多寄存器寻址寻址方式
(4) MOVPC,R14相对寻址寻址方式
(5) ADDR0,R0,#0x3f立即寻址寻址方式
(6) STRR0,[R1]寄存器间接寻址寻址方式
(7) ADDR0,R1,R2寄存器寻址寻址方式
(8) LDRR0,[R1,R2]基址寻址寻址方式
8.在MDK350集成开发环境中,若要达到以下要求如何进行设置?
(1)项目编译链接后可以生成HEX格式的编程文件;
方法:
右击Target选项,在弹出的快捷菜单中选择OptionsforTarget'Target1'命令进行工程参数设置,在Output选项卡下选中CreateHEXFile复选框,以便编译后自动生成HEX编程文件。
(2)项目编译链接后自动进入软件仿真模式;
方法:
右击Target选项,在弹出的快捷菜单中选择OptionsforTarget'Target1'命令进行工程参数设置,在Debug选项卡下选中左边的UseSimulator单选按钮及LimitSpeedtoReal-Time复选项,以便在没有硬件环境情况下采用软件模拟器来进行模拟调试。
(3)文件中包含的头文件不在工程文件夹内时引导路径的设置;
方法1:
右击Target选项,在弹出的快捷菜单中选择OptionsforTarget'Target1'命令进行工程参数设置,在C51选项卡下IncludeFilePath输入框中选择正确路径。
方法2:
直接添加相应头文件到工程中。
(4)项目编译链接后通过JLINK编程器自动下载程序至ARM芯片上的FLASH中;
uVision3为FLASH编程工具提供了一个命令接口,在Project-OptionforTarget对话框的Utilities选项卡中可配置FLASH编程器,通过选择Flash>ConfigureFlashTools命令也可进入此对话框。
一旦配置好了命令接口方式,就可以通过Flash菜单下载(Download)或擦除(Erase)目标板中FLASH存储器的内容。
(5)项目编译链接后通过JLINK编程器自动下载程序至ARM芯片上的RAM中并运行;
方法:
在Linker选项卡下取消选中UseMemoryLayoutfromTargetDialog复选框,此时ScatterFile文本框中程序分散加载地址文件有效。
该文件的路径或内容可以通过右边的
和
按钮进行修改,引导编程器自动下载程序至ARM芯片上的RAM中并运行。
(6)在软件模拟仿真中能够观察程序中各语句的执行时间。
方法:
在调试状态下,进入“调试”菜单下“执行”进入点击“时间”即可。
9.在MDK350中如何进行LPC2292系统启动程序的开发设计?
KeiluVision3会自动生成启动文件Startup.s,方便用户在该模板基础上根据需要进行修改。
10.MDK350可以利用JLINK编程调试器进行编程下载和调试的步骤是什么?
使用JLINK编程下载的过程:
JLINK仿真器允许用户进行程序调试,并且下载到目标板的flash存储器。
使用过程如下。
(1)连接JLINK到目标板的JTAG接口。
(2)上电目标板。
(3)在ProjectOptionsforTargetUtilities对话框中配置Flash编程。
(4)配置FlashDownloadSetup对话框。
在RAMforAlgorithm选项区域中,设置Start参数为0x;Size参数为0x3FE0。
(5)单击Add按钮,根据目标板中的Flash芯片型号,并选择加入相应编程算法。
然后,单击OK按钮来保存Flash下载设置。
(6)将应用程序下载到Flash。
使用DownloadtoFlash工具栏按钮
来下载应用程序到LPC2292器件及外挂Flash芯片。
下载成功后断电,然后断开JLINK编程器。
(7)重新加电,目标板独立工作,进行功能验证。
11.嵌入式ARM项目开发过程及要点有哪些?
嵌入式ARM项目开发过程及要点如下:
1.硬件系统的准备
2.C/C++、ARM汇编语言知识的学习
3.仔细研究所用的芯片的资料
4.熟练开发软件环境的使用
5.编写启动代码
6.编写用户代码
7.其他文件的编写
8.10.工程板的开发与调试
12.
C/OS-Ⅱ操作系统移植文件有哪些?
其中哪几个文件需要用户进行修改?
移植工作主要集中在与处理器相关的4个文件,即OS_CPU.H、OS_CPU_C.C、OS_CPU_A.S和IRQ.INC。
其中OS_CPU.H移植代码头文件,文件中主要包含与编译器相关的数据类型定义、堆栈类型定义、两个宏定义和几个函数说明。
13.设计一GPIO独立式按键输入电路及使用GPIO直接驱动LED电路,并编写通过按键控制LED点亮程序。
按键按下时LED灯亮,按键松开时LED灯灭。
#include"config.h"
constuint32LED=1<<7;//P0.7控制LED
constuint32KEY1=1<<16;//P0.16连接KEY1
/*************************************************************************
**函数名称:
main()
**函数功能:
GPIO输入实验测试。
**检测按键KEY1。
KEY1按下,LED亮,LED灭。
*************************************************************************/
intmain(void)
{
PINSEL0=0x;//所有管脚连接GPIO
PINSEL1=0x;
IO0DIR=LED;//LED控制口输出,其余输入
while
(1)
{
if((IO0PIN&KEY1)==0)IO0CLR=LED;//如果KEY1按下,LED亮
elseIO0SET=LED;//松开则LED灭
}
return0;
}
/*************************************************************************
**EndOfFile
*************************************************************************/
14.设计一个具有按键选择状态功能的16位流水灯项目,演示状态不少于8个,并能够实现脱机独立运行。
#include"config.h"
/*LED16~LED116个LED分别由P1.25~P1.10控制*/
constuint32LEDS16=(0XFF<<10);//P1[25:
10]控制LED16~LED1,低电平点亮
/***************************************************************************函数名称:
DelayNS()
**函数功能:
长软件延时
**入口参数:
dly延时参数,值越大,延时越久
**出口参数:
无
*************************************************************************/
voidDelayNS(uint32dly)
{
uint32i;
for(;dly>0;dly--)
for(i=0;i<50000;i++);
}
/*******************************************************************
**函数名称:
main()
**函数功能:
LED流水灯显示实验。
**********************************************************************/
intmain(void)
{
uint8i;
PINSEL1=0x;//设置管脚连接GPIO
IO1DIR=LEDS16;//设置IO1控制口为输出
while
(1)
{
for(i=0;i<8;i++)
{/*流水灯花样显示*/
IO1SET=~(LEDS16&(15<<(10+i)));
DelayNS(20);
IO1CLR=LEDS16&(15<<(10+i));
DelayNS(20);
}
}
return0;
}
/************************************************************************
**EndOfFile
*************************************************************************/
15.写出最小系统的定义,并画出最小系统原理框图。
嵌入式最小系统是由保证微处理器可靠工作所必需的基本电路组成的。
最小系统一般由微处理器、电源电路、晶体振荡器电路、复位电路和JTAG接口电路等组成。
如果微处理器芯片没有片内程序存储器,则还要加上存储器系统,然后嵌入式处理器芯片才可能工作。
16.请在空格中注释出mem_c.SCF文件中各行语句的含义。
ROM_LOAD0x0;//内部ROM起始地址,因为LPC系列的ROM地址是从0x开始的
{
ROM_EXEC0x;//可执行代码存放的起始地址,即所写的代码编译成二进制之后往ROM存放的起始代码
{
Startup.o(vectors,+First);//文件Startup存放在ROM的第一个块,即;//Startup文件存放在低地址单元,这是启动代;//码的存放位置
*(+RO);//接着放置其它代码(即*(+RO)),*是通配符
}
IRAM0x;//内部RAM的起始地址是0x,这是针对;//LPC系列来说的,如果其他芯片不是这样就需;//要修改
{
Startup.o(MyStacks);//放置Startup.o(MyStacks)
*(+RW,+ZI)
}
HEAP+0UNINIT;//+0表示接着上一段,UNINIT表示不初始化
{
Startup.o(Heap);//放置堆底
}
STACKS0xUNINIT;//这是RAM的最高地址,LPC2292有16KB的空;//间,所以为0x,要根据实际情况进;//行修改
{
Startup.o(Stacks);//Stacks区域数据存放在最高地址单元中,这是用;//户堆栈
}
}
17.上题中,若改为在片上RAM(地址0x)中进行调试,请你设计相应的.SCF加载文件。
在DebugInRam模式下,有如下分散加载文件:
ROM_LOAD0x
{
ROM_EXEC0x //加载映像文件(通用RAM首地址)
{
Startup.o(vectors,+First)
*(+RO)
}
IRAM0x //用户堆栈
{
Startup.o(MyStacks)
}
STACKS0xUNINIT //系统堆栈
{
Startup.o(Stacks)
}
ERAM0x7fe
{
*(+RW,+ZI)
}
HEAP+0UNINIT
{
Startup.o(Heap)
}
}
18.LPC2000微控制器的UART有何特点?
若要和PCRS-232串口进行通信,应该如何连接?
并试设计UART串口收发程序。
/***************************************************************************
**Descriptions:
UART0通讯实验,中断方式,使用FIFO。
**
***************************************************************************/
#include"config.h"
/*定义串口模式设置数据结构*/
typedefstructUartMode
{
uint8datab;//字长度,5/6/7/8可选
uint8stopb;//停止位,1/2可选
uint8parity;//奇偶校验位,0-无校验,1-奇校验,2-偶校验
}UARTMODE;
uint8rcv_buf[8];//UART0数据接收缓冲区
volatileuint8rcv_new;//接收新数据标志
/***************************************************************************
**函数名称:
IRQ_UART0()
**函数功能:
串口0接收中断服务程序
**入口参数:
无
**出口参数:
无
***************************************************************************/
void__irqIRQ_UART0(void)
{
uint8i;
if((U0IIR&0x0F)==0x04)
rcv_new=1;//设置接收到新的数据标志
for(i=0;i<8;i++)
{
rcv_buf[i]=U0RBR;//读取FIFO的数据,并清除中断
}
VICVectAddr=0x00;//中断处理结束
}
/***************************************************************************
**函数名称:
UART0_SendByte()
**函数功能:
向串口0发送1字节数据
**入口参数:
dat要发送的数据
**出口参数:
无
***************************************************************************/
voidUART0_SendByte(uint8dat)
{
U0THR=dat;//要发送的数据
}
/***************************************************************************
**函数名称:
UART0_SendBuf()
**函数功能:
向串口发送8字节数据
**入口参数:
dat要发送的数据
**出口参数:
无
***************************************************************************/
voidUART0_SendBuf(void)
{
uint8i;
for(i=0;i<8;i++)
UART0_SendByte(rcv_buf[i]);
while((U0LSR&0x20)==0);//等待数据发送完毕
}
/***************************************************************************
**函数名称:
UART0_Init()
**函数功能:
串口初始化,设置工作模式和波特率。
**入口参数:
baud波特率
**set模式设置(UARTMODE数据结构)
**出口参数:
1-初始化成功,0-初始化失败
***************************************************************************/
int8UART0_Init(uint32baud,UARTMODEset)
{
uint32bak;
/*参数过滤*/
if((baud==0)||(baud>))return(0);
if((set.datab<5)||(set.datab>8))return(0);
if((set.stopb==0)||(set.stopb>2))return(0);
if(set.parity>4)return(0);
/*设置串口波特率*/
U0LCR=0x80;//DLAB=1
bak=(Fpclk>>4)/baud;
U0DLM=bak>>8;
U0DLL=bak&0xFF;
/*设置串口模式*/
bak=set.datab-5;//设置字长
if(set.stopb==2)bak|=0x04;//判断是否为2位停止位
if(set.parity!
=0)
{
set.parity=set.parity-1;
bak|=0x08;
}
bak|=set.parity<<4;//设置奇偶校验
U0LCR=bak;
return
(1);
}
/***************************************************************************
**函数名称:
main()
**函数功能:
从串口UART0接收字符串"ABCDEFGH",并发送回上位机显示。
**调试说明:
需要PC串口显示终端软件如EasyARM.exe。
**************************************************************************/
intmain(void)
{
UARTMODEset;
set.datab=8;
set.stopb=1;
set.parity=0;
rcv_new=0;
PINSEL0=0x;//设置I/O连接到UART0
UART0_Init(,set);//
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 现代 电子 系统 设计 习题 解答