嵌入式文档格式.docx
- 文档编号:3971528
- 上传时间:2023-05-02
- 格式:DOCX
- 页数:26
- 大小:27.44KB
嵌入式文档格式.docx
《嵌入式文档格式.docx》由会员分享,可在线阅读,更多相关《嵌入式文档格式.docx(26页珍藏版)》请在冰点文库上搜索。
哪种工作模式下最多?
37个;
31个通用寄存器,含程序计数器PC,6个状态寄存器;
不分组寄存器。
六、寄存器中sp,LR,PC,分别指的是哪个寄存器,分别代表什么含义?
p40
1在每一种运行模式下,都可用R14保存子程序的返回地址,当用BL或BLX指令调用子程序
时,将PC的当前值拷贝给R14,执行完子程序后,又将R14的值拷贝回PC,即可完成子程序的调用返
回。
以上的描述可用指令完成:
1、执行以下任意一条指令:
MOVPC,LR
BXLR
2、在子程序入口处使用以下指令将R14存入堆栈:
STMFDSP!
{<
Regs>
LR}
对应的,使用以下指令可以完成子程序返回:
LDMFDSP!
PC}
R14也可作为通用寄存器。
七、写出下列程序的运行结果
AREAASM_a,CODE,READONLY
xEQU27
yEQU64
stack_topEQU0x1000;
ENTRY
MOVsp,#stack_top
MOVr0,#x
STRr0,[sp]
MOVr0,#y
LDRr1,[sp]
ADDr0,r0,r1
STRr0,[sp]
STOP
BSTOP
END
八、ARM指令共有几种寻址方式?
寄存器寻址、立即寻址、寄存器移位寻址、寄存器间接寻址、基址寻址、多寄存器寻址、堆栈寻址、块拷贝寻址、相对寻址。
九、嵌入式系统中经常要用到无限循环,用C语言实现至少两种死循环
一十、给定一个整型变量a,写两段代码,第一个设置a的bit3,第二个清除a的bit3。
#defineBIT3(0x1<
<
3)
staticinta;
voidset_bit3(void)
{
a|=BIT3;
}
voidclear_bit3(void)
a&
=~BIT3;
}
第3章嵌入式系统硬件开发
1、编址空间的地址范围是0x0~0x3FFFFFF,是多大的存储空间?
64MB。
2、编址空间的地址范围是0x1000000~0x1200000,是多大的存储空间?
2MB。
3、简述obey命令和setmem指令的作用
4、简述指令setmem0x3FF5000,0x0,32的含义,——将模式寄存器的值设为0x0,地址为32位
5、AMBA规格说明包括两条总线:
AHB和APB。
6、总线协议中的基本构件是四周期握手协议。
7、嵌入式系统的硬件除了核心部件嵌入式处理器外,还包括存储器系统、外围接口部件以及连接各种设备的总线系统。
8、嵌入式系统的硬件是以嵌入式处理器为中心,由存储器、I/O单元电路、通信模块、外部设备等必要的辅助接口组成的。
9、在实际的计算机系统中,总是采用分级的方法来设计整个组、高速缓存存储器系统。
它把全部存储系统分为四级,即寄存器组、高速缓存、内存和外存。
它们在存取速度上依次递减,而在存储容量上逐级递增。
10、随机存储器由两大类组成:
静态随机存储器(StaticRAM)和动态随机存储器(DynamicRAM)。
11、在设计嵌入式系统时,随机存储器的选择一般有两种:
SRAM和DRAM。
12、模/数(A/D)转换器和数/模(D/A)转换器是非数字设备(即模拟信号源)和嵌入式系统之间联系的接口。
13、触摸屏按其工作原理分为表面声波屏、电容屏、电阻屏和红外屏等。
其中常见的触摸屏是电阻式触摸屏。
14、数据通信方式/模式大致可以分为双工通信、串行和并行通信、同步和异步通信。
双工通信包括单工、半双工和全双工三种方式。
15、串行通信有两种基本工作方式:
异步通信和同步通信
16、交叉开发环境——是指编译、链接和调试嵌入式应用软件的环境,它与运行嵌入式应用软件的环境有所不同,通常采用宿主机/目标机模式。
17、嵌入式系统开发工具主要包括有高级语言编译器、源程序模拟器和实时在线仿真器。
18、简述ARM三级流水线结构.P36
19、ARM支持的数据类型。
P37
20、简述RAM、ROM的特点P95、97
21、简述关于UART、USB设备P106,、107
第4章无操作系统的应用软件开发
1、什么是初始化程序?
Bootloader初始化程序有什么用?
2、简述Bootloader的启动过程;
P122
第5章有操作系统的嵌入式软件开发
1、Linux下的文件系统和Windows下文件系统有什么区别?
Windows文件系统是以驱动器的盘符为基础的,而且每一个目录是与相应的分区对应;
Linux恰好与Windows相反,文件系统是一个文件树,且它的所有的文件和外部设备(如硬盘、光驱)都是以文件的形式挂结在这个文件树上的。
总之,Windows下,目录结构属于分区;
Linux下,分区属于目录结构
2、Linux中的文件类型有那四种?
普通文件;
目录文件;
链接文件;
设备文件
3、Linux的版本号又分为两部分:
内核(Kernel)版本和发行(Distribution)版本
4、硬盘分区可分为()()()三种分区;
主分区;
扩展分区和逻辑分区
5、多进程和多线程的定义;
P155
6、若有一个文件,其属性为“-rwxr—rw-”,指出其代表的含义?
如何将文件的属性变为“-rwxrw-r--”
“-”代表普通文件;
第一个三位数代表文件拥有者的权限;
第二个三位数代表文件用户组的权限;
第三个三位数代表系统其他用户的权限;
改变文件访问权限的指令为chmod
Linux中文件的拥有者可以把文件的访问属性设成3种不同的访问权限:
可读(r)、可写(w)和可执行(x);
文件有3个不同的用户级别:
文件拥有者(u)、所属的用户组(g)和系统里的其他用户(o)。
-rwxrwxrwx
7、chmod【选项】八进制权限文件
8、Linux下的常用指令
su—用户切换
useradd—用户管理,添加用户账号;
useradd[选项]用户名
fdisk—磁盘相关命令,查看硬盘分区情况及对硬盘进行分区管理;
fdisk[-l]
mount—硬盘挂载命令,挂载文件系统
cd—文件目录相关命令,改变工作目录
mkdir—创建一个目录
cp—复制,将给出的文件或目录复制到另一个文件或目录中
tar—对文件目录进行打包或解包
9、ifcofig
用于查看和配置网络接口的地址和参数
10、什么是交叉编译?
为什么要进行交叉编译
11、什么是操作系统的移植?
是指一个操作系统代码经过一定的修改使其能在特定的微处理器平台上运行。
虽然一些嵌入式操作系统的大部分代码都是使用C语言写成的,但仍要用C语言和汇编语言完成一些与微处理器相关的代码
11、Linux中,每一个分区和某一个目录对应,把分区和目录对应的过程叫做挂载(Mount)。
这个挂载在文件树种的位置就是挂载点
12、文件系统是指操作系统中与管理文件有关的软件和数据;
13、Linux系统结构:
用户——应用层——shell——Linux内核——计算机硬件
●Shell是命令语言、命令解释程序及程序设计语言的统称,不仅拥有自己内建的系统指令集,同时也能被系统中其他应用程序所调用。
●同时是解释型的程序设计语言,shell程序设计语言支持绝大多数在高级语言中能见到的程序元素,如函数、变量、数组和程序控制结构。
●Linux中运行shell的环境是“系统工具”下的“终端”,单击“终端”启动shell环境
●屏幕显示“[sunq@wwwhome]$”
●Sunq指系统用户
●home当前所在的目录
14、gdb调试时会用到的一些命令
●1)file命令:
装入想要调试的可执行文件。
●2)cd命令:
改变工作目录。
●3)pwd命令:
返回当前工作日录。
●4)run命令:
执行当前被调试的程序。
●5)kill命令:
停止正在调试的应用程序。
●6)list命令:
列出正在调试的应用程序的源代码。
●7)break命令:
设置断点。
●8)Tbreak命令;
设置临时断点。
它的语法与break相同。
区别在于用tbreak设置的断点执行一次之后立即消失。
●9)watch命令:
设置监视点,监视表达式的变化。
●10)awatch命令:
设置读写监视点。
当要监视的表达式被读或写时将应用程序挂起。
它的语法与watch命令相同。
●11)rwatch命令:
设置读监视点,当监视表达式被读时将程序挂起,等侍调试。
此命令的语法与watch相同。
●12)next命令:
执行下一条源代码,但是不进入函数内部。
也就是说,将一条函数调用作为一条语句执行。
执行这个命令的前提是已经run,开始了代码的执行。
●
●13)step命令:
执行下一条源代码,进入函数内部。
如果调用了某个函数,会跳到函数所在的代码中等候一步步执行。
执行这个命令的前提是已经用run开始执行代码。
●14)display命令:
在应用程序每次停止运行时显示表达式的值。
●15)infobreak命令:
显示当前断点列表,包括每个断点到达的次数。
●16)infofiles命令:
显示调试文件的信息。
●17)infofunc命令:
显示所有的函数名。
●18)infolocal命令:
显示当前函数的所有局部变量的信息
●19)infoprog命令:
显示调试程序的执行状态。
●20)print命令;
显示表达式的值。
●21)delete命令:
删除断点。
指定一个断点号码,则删除指定断点。
不指定参数则删除所有的断点。
●22)Shell命令:
执行LinuxShell命令。
●23)make命令:
不退出gdb而重新编译生成可执行文件。
●24)Quit命令:
退出gdb。
5、15、
(1)在普通用户文件夹下,创建目录dev_home
6、mkdirdev_home
7、
(2)在安装光盘上找到tftp-server-0.32-4.i386.rpm,将其拷贝到/dev_home下,
8、cptftp-server-0.32-4.i386.rpm/home/arm/dev_home
9、(3)检查tftp-server是否安装
10、rpm–qtftp-server
11、(4)安装tftp-server-0.32-4.i386.rpm
12、rpm–ivhtftp-server-0.32-4.i386.rpm
13、(5)建立tftp的主工作目录
14、[root@localhostbtools]#mkdir/tftpboot
15、(6)备份配置文件
16、[root@localhostbtools]#if[-f/etc/xinetd.d/tftp]
17、>
then
18、>
cp/etc/xinetd.d/tftp/etc/xinetd.d/tftp.old
19、>
fi
20、(7)修改配置文件
21、[root@localhostbtools]#vi/etc/xinedt.d/tftp
22、8)检查tftp服务是否打开
23、[root@localhostbtools]#chkconfig--list
24、(9)如果没有打开,则用下面的命令打开
25、[root@localhostbtools]#chkconfigtftpon
26、(10)重启服务
实验部分
一编写汇编程序,实现三个数的加法计算
①打开ADS集成开发环境,新建一个项目文件
②新建一个init.s文件,在新建的init.s文件中编写系统初始化的汇编代码。
这个程序是该项目文件的入口程序。
AREAasm,CODE,READONLY
IMPORTadd
ENTRY
LDRr0,=0x1
LDRr1,=0x2
LDRr2,=0x3
BLadd;
resultsavedinr0
B.
END
③新建一个main.c文件,在新建的main.c文件中编写一段加法程序,被汇编调用。
intadd(inta,intb,intc)
returna+b+c;
④打开AXD调试程序,单步运行,观察寄存器状态。
⑤新建一个项目文件,编写实现三个数加法运算的汇编程序,在AXD中调试程序,单步执行,观察寄存器状态。
(5)参照下面的程序,用汇编语言实现S=1+2+……+10
AREAB_JUMP,CODE,READONLY
;
跳转指令
start
PRO1LDRR0,=&
BLPRO2;
无条件跳转到PRO2处执行,并将当前PC值保存到R14中,R14为子程序链接寄存器(LR)
CMPR0,#&
4
BEQPRO3;
当R0=4时,跳转到PRO3
PRO2ADDR0,R0,#&
1;
子程序循环加1,直到r0=4
MOVPC,LR;
子程序执行完毕返回调用处
PRO3LDRR0,=&
8
B.;
保留
二使用LDR指令读取0x40003100上的数据,将数据加1,若结果小于10,则使用STR指令把结果写回原地址,若结果大于等于10,则把0写回原地址
新建.s格式的文件,设置工程连接地址ROBase为0x40000000,RWBase为0x40003000,设置调试口地址Imageentrypoint为0x40000000。
打开打开寄存器窗口(processregister)监视r0,r1的值,打开存储器观察窗口(memory)监视0x400031000上的值。
,显示方式size为32Bit。
(在Memory窗口上点击鼠标右键,Size项中显示格式为32bit)
④参考程序
COUNTEQU0x40003100
AREAExample1,CODE,READONLY
ENTRY
STARTLDRR1,=COUNT
MOVR0,#0
STRR0,[R1]
LOOPLDRR1,=COUNT
LDRR0,[R1]
ADDR0,R0,#1
CMPR0,#10
MOVHSR0,#0
STRR0,[R1]
BLOOP
三打开CodeWarriorforARMDeveloperSuite(或ARMProjectManager),新建一个项目,并新建一个文件,名为Init.s,具体内容如下
;
ChineseAcademyofSciences,InstituteofAutomation
FileName:
Init.s
Description:
Author:
JuGuang.Li
Date:
**************************************************************
IMPORTMain
AREAInit,CODE,READONLY
ENTRY
LDRR0,=0x3FF0000
LDRR1,=0xE7FFFF80;
配置SYSCFG,片内4KCache,4KSRAM
STRR1,[R0]
LDRSP,=0x3FE1000;
SP指向4KSRAM的尾地址,堆栈向下生成
BLMain
B.
END
该段代码完成的功能为:
配置SYSCFG特殊功能寄存器,将S3C4510B片内的8K一体化的SRAM配置为4KCache,4KSRAM,并将用户堆栈设置在片内的SRAM中。
4KSRAM的地址为0x3FE,0000~(0x3FE,1000-1),由于S3C4510B的堆栈由高地址向低地址生成,将SP初始化为0x3FE,1000。
完成上述操作后,程序跳转到Main函数执行。
保存Init.s,并添加到新建的项目。
再新建一个文件,名为main.c,具体内容如下:
//*****************************************************************
//ChineseAcademyofSciences,InstituteofAutomation
//FileName:
main.c
//Description:
//Author:
//Date:
//***************************************************************
#defineIOPMOD(*(volatileunsigned*)0x03FF5000)//IOportmoderegister
#defineIOPDATA(*(volatileunsigned*)0x03FF5008)//IOportdataregister
voidDelay(unsignedint);
intMain()
{
unsignedlongLED;
IOPMOD=0xFFFFFFFF;
//将IO口置为输出模式
IOPDATA=0x01;
for(;
){LED=IOPDATA;
LED=(LED<
1);
IOPDATA=LED;
Delay(10);
if(!
(IOPDATA&
0x0F))
return(0);
voidDelay(unsignedintx)
unsignedinti,j,k;
for(i=0;
i<
=x;
i++)
for(j=0;
j<
0xff;
j++)
for(k=0;
k<
k++);
保存main.c,并添加到新建的项目。
此时可对该项目进行编译链接,生成可执行的映象文件。
可执行的映象文件主要用于程序的调试,一般在系统的SDRAM中运行,并不烧写入Flash,因此,项目文件在链接时,注意程序的入口点应与系统中SDRAM的实际配置地址相对应。
链接器默认程序的入口地址为0x8000,该值应根据实际的SDRAM映射地址进行修改。
在编译链接项目文件时,将链接器程序的入口地址为0x0040,0000。
打开AXDDebugger(或ARMDebuggerforWindows)的命令行窗口,执行obey命令:
>
obeyC:
\memmap.txt
系统中SDRAM被映射到0x0040,0000~(0x0140,0000-1),从0x0040,0000处装入生成的可执行的映象文件,并将PC指针寄存器修改为0x0040,0000,就可单步调试或运行生成的可执行的映象文件。
该程序的运行效果为接在P0~P3口的LED显示器轮流被点亮。
四通过串行口UART0发送数据的功能,接收功能的编程与之类似。
通讯协议:
19200波特、8位数据、1位停止、无校验。
打开CodeWarriorforARMDeveloperSuite(或ARMProjectManager),新建一个项目,并新建一个文件,名为Init.s,具体内容与第一个例子相同。
//*******************************************************************
#defineULCON0(*(volatileunsigned*)0x03FFD000)//UARTchannel0linecontrolregister
#defineUCON0(*(volatileunsigned*)0x03FFD004)//UARTchannel0controlregister
#defineUSTAT0(*(volatileunsigned*)0x03FFD008)//UARTchannel0statusregister#defineUTXBUF0(*(volatileunsigned*)0x03FFD00c)//UARTchannel0transimitholdingregiste#defineURXBUF0(*(volatileunsigned*)0x03FFD010)//UARTchannel0recievebufferregister
#defineUBRDIV0(*(volatileunsigned*)0x03FFD014)//Baudrate
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 嵌入式