电子科技大学微处理器与嵌入式系统设计实验报告一
嵌入式综合实验报告
《嵌入式系统综合实验》报告学号:姓名:Shanghai University of Engineering Science School of Electronic and Electrical Engineering基于STM32的GPS信息显示系统——嵌入式系统综合实验报告班级:0211112 姓名:褚建勤学号:021111228班级:0211112 姓名:于心忆学号:021111216班级:0211112 姓名:乐浩奎学号:021111232一、产品设计要求(产品规格描述)1 、嵌入式产品名称GPS信息显示系统2 、嵌入式产品目的在学校的生活中,你经常可能需要联系不是同一间宿舍的同学,但是你不能确定他现在在什么地方,这时候全球定位系统(GPS)就可以发挥作用了,但是传统的GPS系统只能提供经纬度信息,不能直观的显示你想要找到人在何处,我们的系统就在传统的GPS的基础上添加了对应位置显示的功能,方便你更方便更快捷的找到你想找的同学3 、嵌入式产品功能使用GPS输入用户位置信息GPS将相关经纬度信息反馈给主处理器主处理器处理相关位置信息并将信息转换为对应位置在LCD上显示出来在LCD上输出用户状态信息4 、嵌入式产品的输入和输出输入设备:GPS系统输出设备:LCD二、产品方案设计(产品设计方案)121 )处理器选择本系统选用基于ARMCortex-M3内核的STM32F103RB嵌入式微控制器作为处理器。
①选用原因A 技术因素工作频率: 最高72MHz。
内部和外部存储器: 128K字节的闪存程序存储器,用于存放程序及数据;多达20K字节的内置SRAM,CPU能以0等待周期访问(读/写)。
定时器和中断:包含1个高级控制定时器、3个普通定时器,以及2个看门狗定时器和1个系统嘀嗒定时器;内置嵌套的向量式中断控制器,能够处理多达43个可屏蔽中断通道和16个优先级。
IO接口:通用输入输出接口(GPIO)。
嵌入式系统实验报告一
void led_blink() { GPL2CON = 0x00000001; GPK1CON = 0x00000010; while(1) { GPL2DAT = 1; GPK1DAT = 0; delay(0x80000); GPL2DAT = 0; GPK1DAT = 0x2; delay(0x80000); } } 在上面的代码中,同 GPL2 的控制类似,对 GPK1 进行了设置,其用于实现 DC3.3V 电源使能控 制,其原 理图连接如下图所示,配置方法同 GPL 类似。
第五步:编写 Makefile,通过 make 命令生成可执行程序
六、实验结果及总结
将程序烧录到开发板中运行后可以看到 LED 灯交替亮灭
嵌入式系统设计实验报告一:裸机条件下 led 灯操作
一、实验目的
1、熟悉开发板基本结构及相关接口连接、安装裸机程序下载 DNW 驱动、熟练掌握裸机程序下 载方法; 2、熟悉基本软件开发环境:Ubuntu 下 shell 基本命令及操作、Ubuntu 下汇编及 C 程序的编译 过程及 方法、学会修改 Makefile 文件基本内容; 3、设计、编译及调试 led 程序
二、实验设备
开发板:迅为 Exynos iTop-4412 精英板; 开发工具:UltraEdit 宿主机:VmWare12.04 (64bit) 编译工具:arm-linux-gcc4.5.1
三、实验内容
控制原理说明:如下原理图及芯片管脚链接,由 GPL2_0 管脚输出不同电平控制三极管导通或 截止,从而 实现 LED 灯的亮或灭。
四、实验硬件原理分析
第一步:设置 GPL2_0 相对应的控制寄存器 GPL2CON,基址 0x1100_0000,偏移量如下图:
电子科技大学微处理器与嵌入式系统设计实验报告一
电⼦科技⼤学微处理器与嵌⼊式系统设计实验报告⼀微处理器系统结构与嵌⼊式系统设计实验报告微处理器系统结构与嵌⼊式系统设计实验名称 ARM基础编程实验⼀、实验⽬的1.熟悉并掌握常⽤ARM汇编指令2.熟悉并掌握“C+汇编”混合编程技术3.熟练使⽤ARM软件开发调试⼯具Keil⼆、实验内容1.学习使⽤Keil开发⼯具2.使⽤ARM汇编语⾔,编程实现1+2+……+N累加运算功能3.使⽤C调⽤汇编函数,实现字符串拷贝功能4.使⽤汇编调⽤C函数,实现求和运算功能5.使⽤ARM汇编语⾔,实现冒泡排序算法(选做)三、实验步骤1.实验1.1:运⾏Keil,建⽴⼯程⽂件,单步运⾏调试演⽰⽰例程序,深刻理解每⼀条指令,观察寄存器,内存空间的变化。
2.实验1.2:⽤汇编语⾔实现1+2+...+N的累加:a)建⽴新⼯程,加⼊实验1.2⽂件夹中的sum.s。
b)⽤汇编补充算法核⼼部分,代码参考流程图如下图1.1所⽰。
c)使⽤单步调试,仔细观察过程中关键寄存器值的变化。
微处理器系统结构与嵌⼊式系统设计实验报告RO=R0+R1R1=R1+1SUM_END结果溢出?R1>=NNOYESYESNO图1.13. 实验1.3:C 调⽤汇编实现字符串拷贝功能:a) 建⽴新⼯程,加⼊实验1.3⽂件夹中的main.c 和testfile.s(同⼀个⼯程下添加两个⽂件⼀起编译)。
b) 补充完成源代码中缺失的部分,分别实现1. 拷贝源字符串的⼀个字节到R2中;2. 将拷贝的字节复制到⽬标空间。
c) 运⾏Debug 进⾏调试。
4. 实验1.4:汇编调⽤C 实现求和1+2+ (10)a) 建⽴新⼯程,加⼊实验1.4⽂件夹中的sum.c 和testfile.s(同⼀个⼯程下添加两个⽂件⼀起编译)。
b) 补充完成源代码中缺失的部分,通过调⽤c 函数g()实现1+2+3+glovb1,结果存在R8中。
c) 运⾏Debug 进⾏调试5. 实验1.5:ARM 汇编实现冒泡算法:a) 建⽴新⼯程,加⼊实验1.5⽂件夹中的maopao.s 。
嵌入式系统原理与设计实验报告
嵌入式系统实验报告指导教师:学科专业:班级:学号:姓名:2014年6月前言从20世纪七十年代单片机的出现到各式各样的嵌入式微处理器,微控制器的大规模应用,嵌入式系统已经有了近30年的发展历史,并在全世界各行业得到广泛应用。
嵌入式系统产品的研制与应用已经成为我国信息化带动工业化、工业化促进信息化发展的新的国民经济增长点。
经过几十年的发展,嵌入式系统已经在很大程度改变了人们的生活、工作与娱乐方式,而且这些改变还在加速。
嵌入式系统具有无数的种类,每类都具有自己独特的个性。
例如,MP3、数码相机与打印机就有很大的不同。
汽车中更就是具有多个嵌入式系统,使汽车更轻快、更干净、更容易驾驶,机顶盒、高清电视、游戏机、智能玩具、交换机、路由器、数控设备或仪表、汽车电子、家电控制系统、医疗仪器、航天航空设备等等,都就是典型的嵌入式系统。
事实上,几乎所有带有一点“智能”的家电(全自动洗衣机、电脑电饭煲…)都就是嵌入式系统。
嵌入式系统广泛的适应能力与多样性,使得视听、工作场所甚至健身设备中到处都有嵌入式系统。
高端的嵌入式系统与工业软件的发展, 实际上与我们对该行业最先进的科学技术前沿的掌握有关,换言之,与我国该行业的科学技术水平有关。
学习与研究嵌入式系统,具有重大意义。
这学期的嵌入式系统的学习过程中我们在2410RP这一实验开发平台上进行了诸多嵌入式的基础实验。
在本报告中,将把其中两个具有代表性的实验的原理、内容、结果以及驱动与测试程序写出来。
目录实验一数码管显示 (1)1、1 实验目的 (1)1、2 实验内容 (1)1、3 实验原理 (1)1、3、1 LED的发光原理 (1)1、3、2 八段LED显示器 (1)1、3、3 芯片zlg7289A的介绍 (2)1、3、4 数码管的连接电路 (3)1、4 实验步骤 (3)1、5 实验源代码解释与说明 (3)1、6 总结 (10)实验二LED点阵驱动实验 (11)2、1 实验目的 (11)2、2 实验内容 (11)2、3 实验原理 (11)2、3、1 8X8点阵数码管发光原理 (11)2、3、2 数码管的连接电路 (11)2、3、3 I/O接口 (12)2、4 实验步骤 (12)2、5 实验源代码解释与说明 (13)2、6 实验结果 (17)2、7 总结 (17)实验一数码管显示1、1 实验目的学习串并转换的相关知识,并编写驱动程序。
嵌入式系统 实验报告
使能 IRQ 中断。
4 装载并使能外中断;
5 选用 DebugInExram 生成目标,然后编译连接工程。
6 选择【Project】->【Debug】,启动 AXD 进行 JTAG 仿真调试。
7 全速运行程序,LED 闪烁;
8 每一次按键 Key,蜂鸣器就会转换静音或鸣响状态。
四.测试数据及运行结果
1
五.总结
1.实验过程中遇到的问题及解决办法;
由于本次实验较简单,且我们之前学习的微机原理课程也进行了流水灯的设
计实验,所以对于本次实验,我完成地很顺利,在实验中没有遇到问题。
2.对设计及调试过程的心得体会。
本次实验是本学期该课程我们进行的第一次实验,总的来说,实验不是很难,
设计过程也相对简单,其主要目的是让我们熟悉一下实验环境,并且能在实验环
6
五.总结 1.实验过程中遇到的问题及解决办法;
实验第一次运行时,蜂鸣器一直处于鸣响状态,及时按了按键,蜂鸣器还是 一直鸣叫,不产生外中断。后来仔细检查了程序,发现原来是忘记使能 EINT0 中 断了,加上 VICIntEnable = 1<<0x0e 代码,程序就能正常运行了。 2. 对设计及调试过程的心得体会。
境下进行简单的实验操作,为之后的实验打下坚实的基础。
六.附录:源代码(电子版)
#include "config.h"
const uint32 LEDS8 = 0xFF << 18;//P1[25:18]控制 LED1~LED8,低电平点亮
const uint32 KEY = 1 << 16;
//P0.16 连接 KEY1
三.方案设计
① 启动 ADS1.2IDE 集成开发环境,选择 ARM Executable Image for lpc2131
《嵌入式系统》实验报告指导书(含答案).
实验一熟悉嵌入式LINUX开发环境1、实验目的熟悉UP-TECHPXA270-S的开发环境。
学会WINDOWS环境与嵌入式Linu环境共享资源的基本方法。
2、实验内容学习UP-TECHPXA270-S系统的使用、XP和虚拟机之间传送文件方法以及UP-TECHPXA270-S和虚拟机之间共享目录的建立方法。
3、预备知识了解UP-TECHPXA270-S的基本结构和配置,Linux基本知识。
4、实验设备硬件:UP-TECHPXA270-S开发板、PC机(内存500M以上)。
软件:PC机操作系统RADHAND LINUX 9+MIMICOM+RAM LINUX操作系统5、实验步骤(1)、在虚拟机下练习Linux常用命令。
(注意以下操作只能在[root@BC root]#,也就是root文件夹下运行,不然会导致系统不能启动)a. 学习命令通过“man ***”和“*** --help”得到的命令使用方法。
b.学习并掌握如下命令:ls,cd ,pwd,cat,more,less,mkdir, rmdir ,rm,mv,cp,tar,ifconfig(2)、XP与虚拟机之间传送文件(Samba服务器建立、网络设置、文件传送);(3)、了解系统资源和连线;(4)、开发板与虚拟机之间共享目录建立(设置NFS、开发板IP设置、目录挂载),挂载文件;(5)vi(vim)的使用(6)输入qt,启动桌面,按CTRL+C退出6、实验报告要求(1)、XP和虚拟机之间传送文件步骤;虚拟机共享XP文件:选择虚拟机设置,设置要共享的文件启动Linux进入/mnt/hgfs即可看到共享文件夹服务器设置——samba服务器(设置需要共享的目录)XP共享虚拟机文件:服务器设置——samba服务器(设置需要共享的目录)确保网络的PING通(即在同一局域网):1.虚拟机的192.168.1.234(RH9)2.XP的为192.168.1.1253.在XP 下点击开始-》运行(\\192.168.1.234)4.用户名bc密码123456以上实现了Linux虚拟机(RH9)和XP的文件的共享(2)、开发板与虚拟机之间建立共享目录以及文件挂载步骤;1.服务器设置——nfs服务器(设置需要共享的目录)2.设置开发板的ip地址:ifconfig eth0 192.168.1.53.在实验箱终端里输入mount -t nfs -o nolock 192.168.1.234:/up-techpxa270/exp /mnt/nfs4./mnt/nfs即为共享目录(3)、请画出虚拟机、PC机和ARM实验箱之间的硬件连接图;(4)、在Linux中怎样配置网络;系统设置->网络,在新的选项卡中(5)、实验中遇到的问题与解决过程。
电子科大微嵌实验报告一
电子科技大学实验报告课程名称微处理器系统与嵌入式系统综合实验实验名称实验一_ARM基础编程实验任课教师实验教师姓名学号实验地点科B239 分组号时间年月日一、实验目的1.熟悉并掌握常用ARM汇编指令2.熟悉并掌握“C+汇编”混合编程技术3.熟练使用ARM软件开发调试工具Keil二、实验内容a)学习使用Keil开发工具b)实现累加运算功能(汇编编程,必做)c)实现字符串拷贝功能(C+汇编,必做)d)实现求和运算功能(C+汇编,必做)三、实验步骤1、运行Keil,建立工程文件,单步运行调试演示示例程序,深刻理解每一条指令,观察寄存器,内存空间的变化。
此处提供六个示例实验:其中ARM数据处理指令寻址方式实验和ARM内存访问指令寻址方式实验为必做实验。
ARM堆栈指针寄存器实验、ARM程序计数器实验、ARM程序状态寄存器实验、ARM 工作模式切换实验为选做部分,鼓励大家利用课上剩余时间或课后完成此部分内容。
2、用ARM汇编实现1+2+…+N的累加运算在sum.s文件中,用汇编实现算法核心部分,需添加的代码参考流程图如下:使用单步调试,仔细观察过程中关键寄存器值的变化。
3、理解C和汇编,并用汇编程序实现字符串拷贝,并在C程序中调用该汇编程序。
在汇编文件testfile.s中添加两行汇编代码,分别实现:1) 拷贝源字符串的一个字节到R2中;2) 将拷贝的字节复制到目标空间。
运行Debug进行调试。
4、在汇编中调用C函数在汇编文件testfile.s中相应位置添加汇编代码,通过调用c函数g()实现1+2+3+glovb1,结果存在R8中。
运行Debug进行调试。
四、实验结果实验2R0=R0+R1,判断结果是否溢出,若溢出跳转,否则与N比较继续相加,若等于N,则结束,其中使用循环直至计算完成。
实验3把R1中的字符利用寄存器间接寻址复制到R0中,循环执行并判断字符串是否结束,然后返回。
调试时,地址中显示数字62变为61即表明实验成功。
电子科技大学
电子科技大学计算机学科实验基地实验报告实验类型:必修选修实验日期:年月日实验名称:嵌入式系统实验实验地点:电子科技大学计算机学院硬件实验室学生姓名:指导教师:班级:评阅教师:同组学生:计算机科学与工程学院制实验报告内容:1)实验目的了解嵌入式系统下的应用程序的仿真开发;熟悉EPSON 的仿真开发环境WB33以及其开发过程、熟练应用gui 编程(图形用户接口)。
2)实验器材和设备硬件:IBM PC 机或者其兼容机,PII (300M )以上CPU ,128MB 内存,5G以上硬盘空间,101标准键盘,标准鼠标,1个以上串口、红外口、USB 口、一个USB 设备。
软件:windows2000操作系统上、vc6.0(含ANSI C LIB ) 、仿真库、 装有针对S1C33的EPSON 仿真开发环境。
3)实验任务在原有的模板上修改程序,修改、增加功能;利用gui 编写不同风格的按钮;自编一计算器界面,并实现+、—功能。
4)实验原理(1)嵌入式系统仿真开发原理仿真开发环境的总体目的是在PC 上仿真实现一个虚拟的目标系统。
应用程序开发工程师、用户及硬件厂家能基于此仿真开发环境,开发独立运行的应用程序。
PC 仿真开发环境用来实现目标应用在PC 机上的仿真开发,并把仿真开发出的应用转化为目标平台的代码,通过应用动态下载工具和目标平台的加载工具,把应用加载到目标平台,实现应用的动态添加。
其特点是只需宿主机,无需目标机【方便、快捷】、硬件和软件协同开发【省时】。
(2)EPSON 的仿真开发环境工作原理:EPSON 的仿真开发环境的体系结构如下图所示:WorkBench 是仿真开发环境的一个应用控制界面,主要实现PDA 设置:包括PDA 的外观图形,LCD 点阵类 型、分辨率和颜色,以及键盘键仿真开发环境体系结构码。
●仿真PDA实现PDA的模拟显示,以及同用户的交互操作。
包括PDA外观显示;LCD显示内容输出;键盘和触摸屏输入事件处理功能。
《微处理器与嵌入式系统设计》实验报告
《微处理器与嵌入式系统设计》实验报告
微处理器与嵌入式系统设计实验报告
实验目的
本实验旨在通过使用微处理器和嵌入式系统设计,加深对相关
概念和原理的理解,并能够实际运用这些知识进行系统设计与开发。
实验步骤
1. 阅读相关理论材料,了解微处理器和嵌入式系统设计的基本
概念和原理。
2. 确定实验所需的硬件和软件资源,并进行准备工作。
3. 根据实验要求,进行系统设计与开发。
4. 实施系统测试与调试,确保系统正常运行。
5. 撰写实验报告,总结实验过程及结果。
实验结果
本实验按计划完成了实验步骤,并成功设计并开发了一个微处
理器和嵌入式系统。
实验分析
通过本实验,进一步加深了对微处理器和嵌入式系统设计的理解。
通过实践,我们能够更好地掌握其设计原理和应用技术,并能够运用这些知识解决实际问题。
总结
通过本次实验,我们深入研究了微处理器和嵌入式系统设计的基本概念和原理,并通过实践运用这些知识进行系统设计与开发。
通过实验的完成,我们对微处理器和嵌入式系统设计有了更深入的了解,对其应用领域和技术有了更清晰的认识。
参考文献
- [参考文献1]
- [参考文献2]。
电子科技大学微处理器系统结构与嵌入式系统设计实验一
电子科技大学实验报告课程名称微处理器系统结构与嵌入式系统设计实验名称ARM汇编基础实验任课教师 XXX 实验教师 XXX姓名黑XX学号2012XXXXXXXXX 实验地点 XXXXXXX 分组号 X组时间 XXXX年 X月X日XX:XX~XX:XX一、实验目的1.掌握ARM汇编指令。
2.学习掌握C与汇编混合编程基础。
3.熟练使用ARM调试工具RVDS进行调试操作。
二、实验内容1.熟悉ARM汇编。
2.用ARM汇编实现1+2+...+N。
3.C调用汇编实验(实现字符串拷贝功能)。
4.汇编调用C实验。
5.ARM汇编实现冒泡算法(选做)三、实验步骤1)用ARM汇编实现1+2+….n的运算。
在sum.s文件中,添加如下代码:SUN_L1ADD R0,R1BVS SUM_ENDCMP R1,R2BHS SUM_ENDADD R1,#1B SUN_L12)理解C和汇编,并用汇编程序实现字符串拷贝,并在C程序中调用该汇编程序。
在汇编文件testfile1. s中添加两行汇编代码,实现:拷贝源字符串的一个字节到R2中,将拷贝的字节复制到目标空间。
关键代码如下:strcopy;------------------------------------------;用汇编实现字符串拷贝LDRB R2,[R1],#1 ;R1对应源字符串首地址,利用寄存器间接寻址读取字符到R2STRB R2,[R0],#1 ;R0对应目的字符串首地址,利用寄存器间接寻址保存字符CMP R2,#0BNE strcopyMOV PC,LR;------------------------------------------END ;文件结束3)在汇编中调用C函数。
在汇编文件testfile2.s中相应位置添加汇编代码,通过调用c函数g()实现1+2+3+glovb1,结果存在R8中。
关键代码如下:STR LR,[SP,#-4]!MOVS R0,#1MOVS R1,#2MOVS R2,#3LDR R4,=glovb1LDR R3,[R4] ;传递参数BL gMOV R8,R0ADD sp,sp,#4LDR pc,[sp],#4中,通过伪指令EQU,定义N的值。
《微机原理与嵌入式系统基础》 实验报告
西安邮电学院《微机原理与嵌入式系统基础》实验报告专业班级: 通工0803班 学生姓名: 郑龙龙 学号(班内序号): 03081092(20)——————————————————————————装订线————————————————————————————————二进制数加减运算1. 实验目的了解ADS1.2 集成开发环境及ARMulator 软件仿真。
掌握ARM7TDMI 常用汇编指令的用法,并能编写简单的汇编程序。
学习使用LDR/STR/ADD/SUB 指令完成存储器的访问及二进制数据加减运算。
领会处理器进行数据处理的方式原理。
2. 实验设备硬件:PC 机一台软件:Windows 98/XP/2000 系统,ADS1.2 集成开发环境3. 实验内容(1) 使用LDR 指令读取Data1、Data2 数据,完成两数相加/减,将结果写入到Data3 单元。
(2) 使用ADS1.2 软件仿真,单步、全速运行程序,设置断点,打开寄存器窗口(Processor Registers )监视R0 和R1 的值,打开存储器观察窗口(Memory )监视Data1、Data2 和Data3存储单元的值。
4. 实验预习要求学习ADS 工程编辑和AXD 调试工具的使用,二进制运算,处理器运行原理。
5. 实验步骤①启动ADS1.2IDE 集成开发环境,选择asm for lpc2131 工程模板建立一个工程TEST2。
②在模板文件main.S 中,补加用户代码,编写实验程序,保存。
③选择主窗口菜单Project->Make (或直接快捷键<F7> ),联编工程;④联编无错后,选择主窗口菜单Project->Debug,启动AXD 进行软件仿真调试。
⑤注意首次使用AXD 时,需要设置AXD 仿真环境,AXD 主菜单:选择Options->Configure Target…,打开Choose Target 窗口,并在其中选择:ARMUL 仿真器;方法如下图示:备注:ARMUL 仿真器是AXD 环境下的软件仿真器,在PC 机上仿真了ARM 处理器的执行情况;可用于软件算法调试,不能仿真硬件外设系统。
嵌入式系统实验报告
实验报告课程名称:嵌入式系统学院:信息工程专业:电子信息工程班级:学生姓名:学号:指导教师:开课时间:学年第一学期实验名称:IO接口(跑马灯)实验时间:11.16 实验成绩:一、实验目的1.掌握 STM32F4 基本IO口的使用。
2.使用STM32F4 IO口的推挽输出功能,利用GPIO_Set函数来设置完成对 IO 口的配置。
3.控制STM32F4的IO口输出,实现控制ALIENTEK 探索者STM32F4开发板上的两个LED实现一个类似跑马灯的效果。
二、实验原理本次实验的关键在于如何控制STM32F4的IO口输出。
IO主要由:MODER、OTYPER、OSPEEDR、PUPDR、ODR、IDR、AFRH和AFRL等8个寄存器的控制,并且本次实验主要用到IO口的推挽输出功能,利用GPIO_Set函数来设置,即可完成对IO口的配置。
所以可以通过了开发板上的两个LED灯来实现一个类似跑马灯的效果。
三、实验资源实验器材:探索者STM32F4开发板硬件资源:1.DS0(连接在PF9)2.DS1(连接在PF10)四、实验内容及步骤1.硬件设计2.软件设计(1)新建TEST工程,在该工程文件夹下面新建一个 HARDWARE文件夹,用来存储以后与硬件相关的代码。
然后在 HARDWARE 文件夹下新建一个LED文件夹,用来存放与LED相关的代码。
(2)打开USER文件夹下的test.uvproj工程,新建一个文件,然后保存在 LED 文件夹下面,保存为 led.c,在led.c中输入相应的代码。
(3)采用 GPIO_Set 函数实现IO配置。
LED_Init 调用 GPIO_Set 函数完成对 PF9 和 PF10 ALIENTEK 探索者 STM32F407 开发板教程 119 STM32F4 开发指南(寄存器版) 的模式配置,控制 LED0 和 LED1 输出 1(LED 灭),使两个 LED 的初始化。
嵌入式系统课程设计报告实验报告
- - -. 嵌入式系统课程设计必做部分学院:电控学院专业:通信工程设计名称:IIC同步串行通讯1、设计的目的:1.掌握S3C44B0IIC控制器的编程方法2.编程实现串行EEPROM存储器24C16的数据存储和访问。
2、设计的内容:1.学习S3C44B0 IIC控制器的原理与编程方法;2.学习IIC存储器24C16的编程方法;3.理解IIC存储器24C16的与S3C44B0的电路连接原理;4.掌握C语言中断程序设计方法;5.编程实现对24C16的数据存储和访问。
3、设计思路、遇到的问题及解决方法:此次试验,我们结合《嵌入式系统原理及应用》教材以及老师提供的各种pdf和word资料,了解到了各种寄存器的配置方法,如IICDS等。
对于例程中的各种函数,如Wr24C16(), Rd24C16(),__irq IicInt()等,通过对程序的仔细研读,最终了解了它们的各自用途,并在此基础上,编写了主函数。
实现了从0-255共256个字节的写入及读取操作。
这次实验我们遇到了不少的难题,像开始使用ARM-Project Manager平台一开始,由于对此平台的不了解,我们走了许都弯路。
像对于头文件的配置问题,总是配置不对,后来发现头文件为程序自主生成,无需配置。
还有关于程序中的一些.s文件,开始并不知道是有何作用,后来在老师的指点下,发现有必要将其加入到sourse文件栏中调用,同时调用的同时,由于不理解调用的路径问题,多次编译失败,后来发现了问题,是路径配置不当,最终更改了路径,解决了问题。
再有,在对老师提供的例程进行阅读时候,发现了不少的啰嗦以及错误语句,例如Uart_Printf("%d\n",k);语句就不应该为Uart_Printf("%d\n",&k);这些问题我们都通过调试最终给予了改正。
4、设计的结果及验证正确输出结果如下截图,从超级终端中回显显示了正确数据,实验成立。
嵌入式系统实验报告
嵌入式系统实验报告一、实验目的本次嵌入式系统实验的主要目的是深入了解嵌入式系统的基本原理和开发流程,通过实际操作和项目实践,提高对嵌入式系统的设计、编程和调试能力。
二、实验设备与环境1、硬件设备嵌入式开发板:_____计算机:_____调试工具:_____2、软件环境操作系统:_____开发工具:_____编译环境:_____三、实验内容1、基础实验熟悉开发板的硬件结构和接口,包括处理器、存储器、输入输出端口等。
学习使用开发工具进行程序编写、编译和下载。
2、中断实验了解中断的概念和工作原理。
编写中断处理程序,实现对外部中断的响应和处理。
3、定时器实验掌握定时器的配置和使用方法。
利用定时器实现定时功能,如周期性闪烁 LED 灯。
4、串口通信实验学习串口通信的协议和编程方法。
实现开发板与计算机之间的串口数据传输。
5、 ADC 转换实验了解 ADC 转换的原理和过程。
编写程序读取 ADC 转换结果,并进行数据处理和显示。
四、实验步骤1、基础实验连接开发板与计算机,打开开发工具。
创建新的项目,选择合适的芯片型号和编译选项。
编写简单的程序,如控制 LED 灯的亮灭,编译并下载到开发板上进行运行和调试。
2、中断实验配置中断相关的寄存器,设置中断触发方式和优先级。
编写中断服务函数,在函数中实现相应的处理逻辑。
连接外部中断源,观察中断的触发和响应情况。
3、定时器实验初始化定时器相关的寄存器,设置定时器的工作模式和定时周期。
在主程序中启动定时器,并通过中断或查询方式获取定时时间到达的标志。
根据定时标志控制 LED 灯的闪烁频率。
4、串口通信实验配置串口相关的寄存器,设置波特率、数据位、停止位等参数。
编写发送和接收数据的程序,实现开发板与计算机之间的双向通信。
使用串口调试助手在计算机上进行数据收发测试。
5、 ADC 转换实验配置 ADC 模块的相关寄存器,选择输入通道和转换精度。
启动 ADC 转换,并通过查询或中断方式获取转换结果。
嵌入式实验报告
西安电子科技大学嵌入式系统课程实验报告实验名称 ARM开发基础** 学院 1518021 班Array姓名 ** 学号同作者无实验日期 2018 年 6 月 14 日一、实验目的初步学会使用μVision3 IDE for ARM 开发环境及ARM 软件模拟器;通过实验掌握简单ARM 汇编指令的使用方法;二、实验内容熟悉开发环境的使用并使用ldr/str,mov 等指令学习使用add/sub/lsl/lsr/and/orr 等指令,完成基本算术/逻辑运算;设计实现表达式y=a*8+b/2-c,并验证之。
三、实验原理ARM9 处理器内核共有37 个寄存器:● 31 个通用寄存器,包括程序计数器(PC)。
这些寄存器都是32 位的;● 6 个状态寄存器。
这些寄存器也是32 位的,但是只是使用了其中的12 位。
这里简要介绍通用寄存器,关于状态寄存器的介绍。
1. ARM 通用寄存器通用寄存器(R0-R15)可分为三类:● 不分组寄存器R0~R7;● 分组寄存器R8~R14;● 程序计数器PC。
(1)不分组寄存器R0~R7不分组寄存器R0~R7 在所有处理器模式下,它们每一个都访问一样的32 位寄存器。
它们是真正的通用寄存器,没有体系结构所隐含的特殊用途。
(2)分组寄存器R8~R14分组寄存器R8~R14 对应的物理寄存器取决于当前的处理器模式。
若要访问特定的物理寄存器而不依赖当前的处理器模式,则要使用规定的名字。
寄存器R8~R12 各有两组物理寄存器:一组为FIQ 模式,另一组为除了FIQ 以外的所有模式。
寄存器R8~R12 没有任何指定的特殊用途,只是在作快速中断处理时使用。
寄存器R13,R14 各对应 6 个分组的物理寄存器, 1 个用于用户模式和系统模式,其它 5 个分别用于 5 种异常模式。
寄存器R13 通常用做堆栈指针,称为SP;寄存器R14 用作子程序链接寄存器,也称为LR。
(3)程序计数器PC寄存器R15 用做程序计数器(PC)。
嵌入式系统实验报告1
LINUX操作实验报告一实验要求:1、程序设计思想要阐述清楚;2、要有流程图和源代码及注释;3、要有仿真结果及说明。
【实验一】内容与目的:编写fork/vfork的测试程序,验证二者的区别1、程序设计思想fork/vfork为进程创建操作,为实现以上目的,可以在程序中设置等待,根据打印输出信息,验证父进程与子进程在执行顺序上的差别;在父进程中设置测试使用变量,分别在子进程中对变量进行修改,并打印输出,可以观察子进程对变量的修改是否会影响父进程中变量的取值,进而可以观察父进程与子进程是否数据空间及堆、栈等。
2、流程图、源代码及注释Fork01a程序代码及注释如下:#include<stdio.h>#include<stdlib.h>#include<unistd.h>int global=1; //设定参数初始值int main(void){int var=2;pid_t pid; //显示两个参数初始值printf("The original values:global=%d,var=%d\n",global,var);if((pid=fork())<0) //如果进程号小于0,显示出错{printf("for error\n");}else if(pid==0) //如果处于子进程,显示所处进程,并修改各变量{sleep(10); //(设置等待时间:S)global++;var++;printf("In child process\n");}else //如果处于父进程,显示所处进程和各变量{sleep(5);printf("In parent process\n");}printf("pid=%d,global=%d,var=%d\n",getpid(),global,var);exit(0);}运行结果:若变换等待时间如下:#include<stdio.h>#include<stdlib.h>#include<unistd.h>#include<sys/types.h>int global=1; //设定参数初始值int main(void){int var=2;pid_t pid; //显示两个参数初始值printf("The original values:global=%d,var=%d\n",global,var);if((pid=fork())<0) //如果进程号小于0,显示出错{printf("for error\n");}else if(pid==0) //如果处于子进程,显示所处进程,并修改各变量{sleep(5); //(设置等待时间:S)global++;}else //如果处于父进程,显示所处进程和各变量{sleep(10);printf("In parent process\n");}printf("pid=%d,global=%d,var=%d\n",getpid(),global,var);exit(0);}Fork01b程序代码及注释如下:#include<stdio.h>#include<stdlib.h>#include<unistd.h>#include<sys/types.h>int global=1; //设定参数初始值int main(void){int var=2;pid_t pid; //显示各参数值printf("The original values:global=%d,var=%d\n",global,var);if((pid=vfork())<0) //如果进程号小于0,报错{printf("vfork error\n");}else if(pid==0) //如果处于子进程,设定等待时间,修改各参数值,显示进程状态和参数值,返回{sleep(3);global++;var++;printf("In child process\n");printf("pid=%d,global=%d,var=%d\n",getpid(),global,var);printf("child process ended\n");} //如果处于父进程,设定等待时间,修改各参数值,显示进程状态和参数值,返回else{sleep(1);printf("In parent process\n");global++;var++;}printf("pid=%d,global=%d,var=%d\n",getpid(),global,var);printf("parent process ended\n");exit(0);}运行结果如下:若变换等待时间如下:#include<stdio.h>#include<stdlib.h>#include<unistd.h>#include<sys/types.h>int global=1; //设定参数初始值int main(void){int var=2;pid_t pid; //显示各参数值printf("The original values:global=%d,var=%d\n",global,var);if((pid=vfork())<0) //如果进程号小于0,报错{printf("vfork error\n");}else if(pid==0) //如果处于子进程,设定等待时间,修改各参数值,显示进程状态和参数值,返回{global++;var++;printf("In child process\n");printf("pid=%d,global=%d,var=%d\n",getpid(),global,var);printf("child process ended\n");_exit(0);} //如果处于父进程,设定等待时间,修改各参数值,显示进程状态和参数值,返回else{sleep(3;printf("In parent process\n");global++;var++;}printf("pid=%d,global=%d,var=%d\n",getpid(),global,var);printf("parent process ended\n");exit(0);}运行结果如下:3、仿真结果及说明由fork01a和fork01b的两个等待时间情况下的打印结果可以看出,fork对于子进程与父进程执行的先后顺序没有要求,且在父进程先于子进程退出以后,程序无法正常退出,而vfork要求先执行子进程,后执行父进程。
嵌入式系统实验报告
嵌⼊式系统实验报告1.1 最⼩系统设计实验成员:邢兢业 0910200144刘洋 0910200132⽅锡华 0910200124孙昭 0910200134⼀、实验⽬的(1)熟悉Proteus与Keil for ARM的使⽤;(2)掌握Proteus与Keil for ARM联合调试⽅法;(3)掌握嵌⼊式系统最⼩系统的设计与调试⽅法;(4)掌握嵌⼊式系统的仿真设计技术。
⼆、实验内容本次实验利⽤电路仿真软件Proteus与嵌⼊式开发环境Keil for ARM进⾏嵌⼊式系统的仿真。
在Proteus中进⾏嵌⼊式系统最⼩系统的硬件电路设计,并在Keil for ARM中完成最⼩系统测试程序的编写和编译,最后将编译成的可执⾏代码装载到嵌⼊式微处理器中进⾏电路的仿真运⾏。
三、预备知识C语⾔的基础知识,Proteus与Keil for ARM软件的基本使⽤⽅法和设置。
四、实验设备硬件:PC机(或笔记本电脑)软件:Windows xp以上操作系统,Proteus 7.8以上版本,Keil for ARM 3.0以上版本。
五、实验步骤(1)安装Proteus及Keil for ARM 软件(2)在Proteus中建⽴嵌⼊式最⼩系统电路图1.1.1 嵌⼊式最⼩系统原理图(3)在Keil for ARM中编写最⼩系统测试程序测试程序源代码如下:#includevoid delay(){int i;int j;for(i=0;i<100;i++)for(j=0;j<1000;j++);}int main(void){int i;IO0PIN=0;for(i=7;i<=10;i++){/*IO0DIR=1<<7|1<<8|1<<9|1<<10;*//*IO0CLR=1<<7|1<<8|1<<9|1<<10;*/IO0DIR=1<IO0CLR=1<delay();}IO0DIR=1<<7|1<<8|1<<9|1<<10;IO0CLR=1<<7|1<<8|1<<9|1<<10;for(i=10;i<=7;i--){IO0SET=1<}}(4)下载调试结果记录如图1.1.2所⽰。
嵌入式系统实验报告_大作业_电科
嵌入式系统实验报告安卓闹钟的实现学院电信专业电科学生姓名实验台号指导教师提交日期年月日一、实验目的综合前面几次实验以及自主学习的知识,做一个小应用,体验安卓应用的开发过程二、实验内容实现一个简单的闹钟程序所具备功能有:显示系统当前时间,添加或者删除闹钟,能够设置在一定时间间隔内重复响起的闹钟。
三、实验原理AlarmManagerAlarmManager是安卓中常用的一种系统级别的提示服务,在特定的时刻为我们广播一个指定的Intent。
简单的说就是我们设定一个时间,然后在该时间到来时,AlarmManager 为我们广播一个我们设定的Intent,通常我们使用PendingIntent。
设置闹钟设置一次性的闹钟(闹钟不会重复响起)public void set(int type, long triggerAtTime, PendingIntent operation)type:表示要设置的alarm类型。
triggerAtTime:表示alarm“理应激发”的时间。
operation:指明了alarm闹铃激发时需要执行的动作,比如执行某种广播通告。
设置重复响起的闹钟public void setRepeating(int type, long triggerAtTime, long interval,PendingIntent operation) 其参数基本上和set()函数差不多,只是多了一个“时间间隔”参数。
事实上,在AlarmManager Service一侧,set()函数内部也是在调用setRepeating()的,只不过会把interval 设成了0。
闹钟的类型AlarmManager. ELAPSED_REALTIME:表示闹钟在手机睡眠状态下不可用,该状态下使用相对时间(相对于系统启动开始),状态值为3;AlarmManager. ELAPSED_REALTIME_WAKEUP:表示闹钟在睡眠状态下会唤醒系统并执行提示功能,该状态下也使用相对时间,状态值为2;AlarmManager. RTC:表示闹钟在睡眠状态下不可用,该状态下闹钟使用绝对时间内,即当前系统时间,状态值为1;AlarmManager. RTC_W AKEUP:表示闹钟在睡眠状态下会唤醒系统并执行提示功能,该状态下闹钟使用绝对时间,状态值为0;AlarmManager.POWER_OFF_WAKEUP:表示闹钟在手机关机状态下也能正常进行提示功能,所以是5个状态中用的最多的状态之一,该状态下闹钟也是用绝对时间,状态值为4;不过受SDK版本的影响,某些版本不支持。
《嵌入式系统设计》实验指导书-
电子科技大学微机课程组嵌入式系统设计实验指导书2015年9月目录第一部分嵌入式系统仿真实验系统简介1第一节、开发平台软件资源及文档1第二节、开发平台软件安装1第二部分实验项目说明2第一节、实验项目列表2第二节、实验项目使用建议2第三部分嵌入式开发系统实验案例指导3实验一、多任务程序的建立和运行3一.实验目的3二.实验内容3三.预备知识3四.实验设备与工具3五.实验原理与说明3六、实验步骤4七、思考题8实验二、基于操作系统的任务调度和进程管理9一.实验目的9二.实验内容9三.预备知识9四.实验设备与工具9五.实验原理与说明9六、实验步骤10七、思考题12第一部分嵌入式系统仿真实验系统简介以VC++ 6.0为实验基础软禁平台仿真模拟在uC/OS嵌入式操作系统系统环境下多任务程序的运行和调试,使学生可以在一个纯软件的环境中了解、熟悉嵌入式软件的运行和调试方法。
第一节、开发平台软件资源及文档1)VC6.0集成开发环境;2)配套实验指导书的实验源代码,分为两类:仿uc/OS部分和任务程序部分3)实验环境的工程文件4)实验指导书;第二节、开发平台软件安装1、编译调试环境的安装在XP平台下安装VC6.0;2、实验文件拷贝把实验文件拷贝d:\ucosexperiment目录下第二部分实验项目说明第一节、实验项目列表表1列出了本指导书提供的所有实验项目。
表1 实验项目列表项目编号实验项目课时数实验性质项目类别实验环境1 多任务程序的建立和运行 4软件验证Windows2 基于操作系统的任务调度和进程管理 4 综合实验分为两种种类别:验证性实验,综合设计实验。
●验证实验:本系列实验的基础部分,属于必做内容;●综合设计实验:让使用者在相关的软件环境下实现按实验要求修改相应的软件实现相应的功能。
第二节、实验项目使用建议本实验共提供2个实验项目,可以根据同学个人兴趣和具体的实验情况来进行选择,每一组实验基本涵盖本实验课程要求学生掌握的技能,包括C语言基础、应用程序编程等内容。
嵌入式系统原理与设计实验报告
嵌入式系统实验报告指导教师:学科专业:班级:学号:姓名:2014年6月前言从20世纪七十年代单片机的出现到各式各样的嵌入式微处理器,微控制器的大规模应用,嵌入式系统已经有了近30年的发展历史,并在全世界各行业得到广泛应用。
嵌入式系统产品的研制和应用已经成为我国信息化带动工业化、工业化促进信息化发展的新的国民经济增长点。
经过几十年的发展,嵌入式系统已经在很大程度改变了人们的生活、工作和娱乐方式,而且这些改变还在加速。
嵌入式系统具有无数的种类,每类都具有自己独特的个性。
例如,MP3、数码相机与打印机就有很大的不同。
汽车中更是具有多个嵌入式系统,使汽车更轻快、更干净、更容易驾驶,机顶盒、高清电视、游戏机、智能玩具、交换机、路由器、数控设备或仪表、汽车电子、家电控制系统、医疗仪器、航天航空设备等等,都是典型的嵌入式系统。
事实上,几乎所有带有一点“智能”的家电(全自动洗衣机、电脑电饭煲…)都是嵌入式系统。
嵌入式系统广泛的适应能力和多样性,使得视听、工作场所甚至健身设备中到处都有嵌入式系统。
高端的嵌入式系统和工业软件的发展,实际上与我们对该行业最先进的科学技术前沿的掌握有关,换言之,与我国该行业的科学技术水平有关。
学习和研究嵌入式系统,具有重大意义。
这学期的嵌入式系统的学习过程中我们在2410RP这一实验开发平台上进行了诸多嵌入式的基础实验。
在本报告中,将把其中两个具有代表性的实验的原理、内容、结果以及驱动和测试程序写出来。
目录实验一数码管显示 (1)实验目的 (1)实验内容 (1)实验原理 (1)LED的发光原理 (1)八段LED显示器 (2)芯片zlg7289A的介绍 (3)数码管的连接电路 (3)实验步骤 (4)实验源代码解释与说明 (4)总结 (5)实验二 LED点阵驱动实验 (5)实验目的 (5)实验内容 (5)实验原理 (5)8X8点阵数码管发光原理 (5)数码管的连接电路 (6)I/O接口 (6)实验步骤 (6)实验源代码解释与说明 (6)实验结果 (9)总结 (9)实验一数码管显示实验目的学习串并转换的相关知识,并编写驱动程序。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
微处理器系统结构与嵌入式系统设计实验报告
微处理器系统结构与嵌入式系统设计实验名称 ARM基础编程实验
一、实验目的
1.熟悉并掌握常用ARM汇编指令
2.熟悉并掌握“C+汇编”混合编程技术
3.熟练使用ARM软件开发调试工具Keil
二、实验内容
1.学习使用Keil开发工具
2.使用ARM汇编语言,编程实现1+2+……+N累加运算功能
3.使用C调用汇编函数,实现字符串拷贝功能
4.使用汇编调用C函数,实现求和运算功能
5.使用ARM汇编语言,实现冒泡排序算法(选做)
三、实验步骤
1.实验1.1:运行Keil,建立工程文件,单步运行调试演示
示例程序,深刻理解每一条指令,观察寄存器,内存空间
的变化。
2.实验1.2:用汇编语言实现1+2+...+N的累加:
a)建立新工程,加入实验1.2文件夹中的sum.s。
b)用汇编补充算法核心部分,代码参考流程图如下
图1.1所示。
c)使用单步调试,仔细观察过程中关键寄存器值的
变化。
微处理器系统结构与嵌入式系统设计实验报告
RO=R0+R1
R1=R1+1
SUM_END
结果溢出?
R1>=N
NO
YES
YES
NO
图1.1
3. 实验1.3:C 调用汇编实现字符串拷贝功能:
a) 建立新工程,加入实验1.3文件夹中的main.c 和testfile.s(同一个工程下添加两个文件一起编译)。
b) 补充完成源代码中缺失的部分,分别实现
1. 拷贝源字符串的一个字节到R2中;
2. 将拷贝的字节复制到目标空间。
c) 运行Debug 进行调试。
4. 实验1.4:汇编调用C 实现求和1+2+ (10)
a) 建立新工程,加入实验1.4文件夹中的sum.c 和testfile.s(同一个工程下添加两个文件一起编译)。
b) 补充完成源代码中缺失的部分,通过调用c 函数g()实现1+2+3+glovb1,结果存在R8中。
c) 运行Debug 进行调试
5. 实验1.5:ARM 汇编实现冒泡算法:
a) 建立新工程,加入实验1.5文件夹中的maopao.s 。
b) 补充完成源代码中缺失的部分,实现冒泡排序功能。
c) 运行Debug 进行调试
四、 实验结果
1. 实验1.2:用汇编语言实现1+2+...+N 的累加
R1自增1
R0暂存累加和
微处理器系统结构与嵌入式系统设计实验报告
核心代码如下:
ADD R0,R1
BVS SUM_END
CMP R1,R2
BHS SUM_END
ADD R1,#1
B SUN_L1
图1.2
可以看见最终结果显示在寄存器R8处,十六进制为13BA,转换成十进制为5050,实现了累加功能。
2.实验1.3:C调用汇编实现字符串拷贝功能
核心代码如下:
LDRB R2,[R1],#1 ;拷贝源字符串的一个字节STRB R2,[R0],#1 ;将拷贝的字节复制到目标空间
可以看出拷贝前srcstr是aaaa,dststr是bbbb,拷贝后srcstr是aaaa,dststr是aaaa,实现了字符串拷贝功能。
3.实验1.4:汇编调用C实现求和1+2+...+10
图1.3 前图1.4 后
微处理器系统结构与嵌入式系统设计实验报告
核心代码如下:
MOV R0,#1
MOV R1,#2
MOV R2,#3
MOV R3,#10
BL g
MOV R8,R0
图1.5
可以看出最终结果显示在寄存器R8处,十六进制表示为0010,转换为十进制为16
4.实验1.5:ARM汇编实现冒泡算法
代码如下:
AREA Sort,CODE,READONLY
ENTRY
start
MOV R4,#0
LDR R6,=src
ADD R6,R6,#len
LDR R7,=src
微处理器系统结构与嵌入式系统设计实验报告
inner
MOV R1,R7
CMP R6,R7
BLE outer
inner1
LDR R2,[R1]
LDR R3,[R1,#4]
CMP R2,R3
BGT exchange
inner2
ADD R1,R1,#4
CMP R1,R6
BLT inner1
ADD R4,R4,#4
CMP R4,#len
BLE subtraction
exchange
STR R3,[R1]
STR R2,[R1,#4]
B inner2
subtraction
SUB R6,R6,#4
B inner
outer
LDR R1,=src
src DCD 2,4,10,8,14,1,20
AREA Array,DATA,READWRITE
len EQU 7*4
微处理器系统结构与嵌入式系统设计实验报告
END
图1.6 排序前
图1.7 排序后
可以看见地址0x0000005C保存的排序后的结果正确,程序
实现了冒泡法排序功能。
(注:命令行键入指令“map 0,4095 read write
exec”,解决实验用芯片S3C2440内存访问权限错误问
题。
)
五、实验总结
1.此次实验用汇编和C语言实现了1~N的累加、字符串的拷
贝、数字求和以及冒泡法排序这几项功能,了解了汇编语
言的基础指令及其意义,同时初步入门了Keil编译器的使
用与程序编写调试。
2.知道了C程序与汇编语言相互调用的规则:
a)寄存器的使用规则:“子程序间”通过寄存器R0~R3来
传递参数。
在“子程序中”,使用寄存器R4~R11来保
存局部变量。
b)寄存器R12用于子程序间scratch寄存器(用于保存
SP,在函数返回时使用该寄存器出桟),记作IP。
c)寄存器R13用于数据栈指针,记作SP。
寄存器SP在进
入子程序时的值和退出子程序时的值必须相等。
d)寄存器R14称为链接寄存器,记作LR。
它用于保存子程
序的返回地址。
e)寄存器R15是程序计数器,记作PC。
微处理器系统结构与嵌入式系统设计实验报告
六、实验思考题
1.Q:ADD替换成ADDS,SUB替换成SUBS有什么影响?
A:替换后,运算结果会影响标志寄存器。
因为ADD、SUB
不带进位与借位,ADDS、SUBS带有进位与借位,运算完成
要置符号位。
2.Q:MOV替换成MOVNE有什么影响?
A:替换后只有在上一步比较结果为不相等的时候才会执行
该指令。
3.Q:STMIA换成STMIB,STMIA换成STMDA有什么区别?
A:换成STMIB是将每次传送后地址+4变成每次传送前地
址+4,换成STMDA是将每次传送后地址+4变成每次传送
后地址-4。
4.Q:思考用ARM汇编实现1+3+5+…+(2n+1)或者2+4+6+…
+2n。
A:实现1+3+5+….+(2n+1),将ADD R1,#1改为ADD R1,#2,
设置R1初始值为1。
实现2+4+6+…..+2n,将ADD R1,#1改为ADD R1,#2,设置R1初始值为2.
5.Q:实验3中如果去除汇编代码中的“EXPORT strcopy”会
有什么现象,为什么?
A:若去除汇编代码中的“EXPORT strcopy”,则在c语言
中无法调用该函数,因为EXPORT用于声明strcopy为全局
标号。
6.Q:实验4中如果去除汇编代码中的“IMPORT …..”会有
什么现象,为什么?
A:会无法调用C语言的main函数,因为该伪指令用于通
知编译器要使用的标号或者变量在其他的源文件定义。