嵌入式系统——实验3——2

合集下载

嵌入式系统实验报告

嵌入式系统实验报告

嵌入式系统实验报告在本学期的嵌入式系统课程中,我与我的实验伙伴进行了多次实验。

在这篇报告中,我将分享我们实验的过程和结果。

实验一:GPIO控制LED灯在这个实验中,我们使用了Raspberry Pi 3B+开发板和一根杜邦线。

我们在电路板上将一盏LED灯与GPIO引脚连接起来,并编写了一个程序来控制这个引脚的电平状态。

在这个实验中,我们学习了GPIO的基本概念以及如何使用Python编程语言编写GPIO控制程序。

我们成功地让LED灯在不同的时间间隔内闪烁,并且了解了如何使用GPIO.setup()和GPIO.output()函数来控制GPIO引脚的输入和输出。

实验二:串口通信在第二个实验中,我们使用了两个Raspberry Pi 3B+开发板和两根串口线。

我们连接了两个板子的GPIO引脚,使得它们可以通过串口进行通信。

我们使用Python编写了两个程序来进行通信。

一个程序将发送一条消息,另一个程序将接收这个消息并将其打印出来。

通过使用串口通信,我们学会了如何使用Python编写程序来完成数据交换,并掌握了串口通信的基本概念。

实验三:Pi camera模块在第三个实验中,我们使用了Pi camera模块和一个Raspberry Pi 3B+开发板。

我们将摄像头连接到开发板上,并编写了一个程序来捕捉摄像头图像。

我们学习了如何使用Python编程语言来控制Pi camera模块,包括如何设置摄像头参数并如何捕捉静态图像。

我们还尝试了使用OpenCV库来处理图像。

实验四:蓝牙控制在最后一个实验中,我们使用了一个蓝牙透传模块、Raspberry Pi 3B+开发板和一些电路元件。

我们将蓝牙透传模块连接到GPIO引脚,并编写了一个程序来通过蓝牙信号控制电机。

在这个实验中,我们学习了如何使用蓝牙模块进行无线控制。

我们通过使用Python编写控制程序,成功地将蓝牙信号转换成GPIO引脚的电平信号来控制电机。

总结在这个嵌入式系统的实验中,我们学习了许多关于嵌入式系统的知识和技能。

嵌入式系统实验报告

嵌入式系统实验报告

嵌入式系统实验报告引言嵌入式系统作为一种广泛应用于各行各业的计算机系统,其本身具有一定的难度与挑战。

本实验报告将围绕嵌入式系统的设计、开发以及应用展开讨论,旨在总结并分享在实验中所获得的经验与知识。

一. 实验背景嵌入式系统是指以特定功能为目标的计算机系统,其设计与开发过程相较于传统的计算机系统更为复杂和精细。

本次实验的主要目标是通过设计一个基于嵌入式系统的智能家居控制器,来探索嵌入式系统的应用与实践。

二. 实验内容2.1 硬件设计嵌入式系统的硬件设计是整个实验的基础,其合理性与稳定性直接影响系统的性能和可靠性。

在本次实验中,我们选择了一块主频为xx的处理器作为核心,配备了丰富的外设接口,如GPIO、串口等。

我们还为系统增加了一块液晶显示屏和一组按键,以实现简单的用户交互。

2.2 软件开发在硬件设计完成后,我们开始进行软件开发。

首先,我们需要选择一个合适的操作系统作为嵌入式系统的基础。

针对本次实验,我们选择了xx操作系统,其具备较强的实时性和稳定性,能够满足我们对系统性能的要求。

接着,我们进行了嵌入式系统的驱动程序开发。

通过编写各个外设的驱动程序,我们实现了与液晶显示屏和按键的交互,并将其与处理器进行了适当的接口配置。

另外,我们还开发了嵌入式系统的应用程序。

通过编写智能家居控制器的代码,我们成功实现了对家居设备的远程控制和监测。

用户可以通过液晶显示屏和按键进行交互,实现对家居设备的开关、调节和状态查看等操作。

三. 实验结果与分析经过实验测试,我们发现嵌入式系统在智能家居领域的应用具有较高的可行性与实用性。

通过嵌入式系统的控制,用户可以方便地实现对家居设备的远程操控,提升了家居智能化的程度。

同时,嵌入式系统的实时性和稳定性使得智能家居控制器具备了较高的安全性和可靠性。

然而,在实验过程中我们也遇到了一些挑战。

其中,系统的驱动程序开发是较为复杂的一环,需要仔细理解硬件接口和协议,并进行合理的配置。

此外,系统的稳定性和功耗管理也是需要重点关注的问题。

嵌入式系统实验二-LED控制实验

嵌入式系统实验二-LED控制实验

《嵌入式系统》课程实验报告学生姓名:指导教师:记分及评价:一、实验名称LED控制实验二、实验目的掌握利用S3C2410X芯片地址总线扩展到I/O来驱动LED显示;了解ARM芯片中利用总线扩展I/O口的使用方法。

三、实验内容编写程序,控制实验平台的发光二极管LED1,LED2,LED3,LED4,使它们有规律的点亮和熄灭,具体顺序如下:LED1亮->LED2亮->LED3亮->LED4亮>LED1灭>LED2灭->LED3灭>LED4灭->全亮->全灭,如此反复。

四、实验原理片选信号在接入74HC573前经过了如下处理:LE信号的产生:向LED写入数据LED连接图五、实验结果超级终端上显示一下信息:六、练习自己编写程序使数码管以不同的显示方式显示。

显示方式:用LED1、LED2、LED3、LED4依次显示00F9~00F6-00F6~00F9,然后依次显示00FE~00F0-00F0~00FE。

#include "2410lib.h"#define rCPLDLEDADDR (*(volatile unsigned char*)0x21180000)void led_on(void){int i,nOut;nOut = 0xFF;rCPLDLEDADDR = nOut & 0xF9;for(i = 0; i < 500000; i++);rCPLDLEDADDR = nOut & 0xF6;for(i = 0; i < 500000; i++);rCPLDLEDADDR = nOut & 0xF6;for(i = 0; i < 500000; i++);rCPLDLEDADDR = nOut & 0xF9;for(i = 0; i < 500000; i++);}void led_off(void){int i,nOut;nOut = 0xF0;rCPLDLEDADDR = nOut | 0xFE;for(i = 0; i < 100000; i++);rCPLDLEDADDR = nOut | 0xFC;for(i = 0; i < 100000; i++);rCPLDLEDADDR = nOut | 0xF8;for(i = 0; i < 100000; i++);rCPLDLEDADDR = nOut | 0xF0;for(i = 0; i < 100000; i++);rCPLDLEDADDR = nOut | 0xF0;for(i = 0; i < 100000; i++);rCPLDLEDADDR = nOut | 0xF8;for(i = 0; i < 100000; i++);rCPLDLEDADDR = nOut | 0xFC;for(i = 0; i < 100000; i++);rCPLDLEDADDR = nOut | 0xFE;for(i = 0; i < 100000; i++); }void led_on_off(void){int i;rCPLDLEDADDR = 0xF0;for(i = 0; i < 500000; i++);rCPLDLEDADDR = 0xFF;for(i = 0; i < 500000; i++);void led_test(void){uart_printf("\n Expand I/O (Diode Led) Test Example\n");uart_printf(" Please Look At The LEDS \n");led_on();led_off();led_on_off();delay(20000);uart_printf(" End.\n");}。

嵌入式系统实习报告:探索物联网的未来——我的嵌入式系统实习之旅

嵌入式系统实习报告:探索物联网的未来——我的嵌入式系统实习之旅

嵌入式系统实习报告:探索物联网的未来——我的嵌入式系统实习之旅一、引言本报告旨在总结和分享我在嵌入式系统开发领域的实习经历,包括硬件设计、嵌入式编程、外设控制等方面的实践经验和成果展示。

通过这次实习,我深入了解了嵌入式系统的工作原理和应用,并通过实践了解了物联网的前沿技术和发展趋势。

1、实习背景和目标(1)实习背景我是一名计算机科学专业的学生,在大学期间对嵌入式系统开发产生了浓厚的兴趣。

为了提升自己的能力和了解嵌入式系统开发的实际应用,我决定在大学期间参加一次嵌入式系统开发的实习。

(2)实习目标在实习期间,我希望能够提高自己的硬件设计和嵌入式编程能力,并通过实践掌握外设控制的技巧和方法。

同时,我也想了解嵌入式系统在物联网领域的应用,探索物联网的未来发展方向。

二、实习项目介绍1、项目背景(1)物联网的兴起物联网作为信息技术领域的一个重要分支,正在改变我们生活和工作的方方面面。

通过将传感器、设备、网络和人工智能等技术有机地结合,物联网可以实现各种物体之间的互联互通,实现智能化、自动化的功能,为我们的生活带来了许多便利和优势。

(2)嵌入式系统的应用嵌入式系统作为物联网的核心技术之一,负责实现对物理世界的感知和控制功能。

它通常由硬件和软件两部分组成,硬件负责采集和处理数据,软件负责控制硬件和实现各种功能。

2、项目内容根据实习需求和实际情况,我参与了一项基于嵌入式系统的智能家居项目的开发。

该项目旨在通过嵌入式系统实现对家庭环境的监测和控制,提高家居的智能化程度和舒适度。

(1)硬件设计在项目初期,我参与了硬件设计的工作。

根据项目需求,我设计了一套硬件系统,包括传感器、控制模块、执行器等。

通过合理配置和布局硬件元件,我实现了对家居环境的实时监测和控制。

(2)嵌入式编程在硬件设计完成后,我开始进行嵌入式编程的工作。

我使用C语言和汇编语言开发了相应的嵌入式软件,实现了对硬件的控制和数据处理功能。

通过编写优化的代码,我提高了系统的运行效率和响应速度。

《嵌入式系统》实验报告指导书(含答案).

《嵌入式系统》实验报告指导书(含答案).

实验一熟悉嵌入式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)、实验中遇到的问题与解决过程。

嵌入式系统实验报告

嵌入式系统实验报告

嵌入式系统实验报告文件排版存档编号:[UYTR-OUPT28-KBNTL98-UYNN208]大连理工大学本科实验报告课程名称:嵌入式系统实验学院(系):电子信息与电气工程学部专业:自动化班级: 0804学号:学生姓名:何韬2011年 11月 18日大连理工大学实验报告学院(系):电信专业:自动化班级: 0804 姓名:何韬学号:组: ___实验时间: 2011-11-12 实验室: d108 实验台:指导教师签字:成绩:实验二ARM的串行口实验一、实验目的和要求见预习报告二、实验原理和内容见预习报告三、主要仪器设备硬件:ARM嵌入式开发平台、用于ARM7TDMI 的JTAG 仿真器、PC机Pentium100 以上、串口线。

软件:PC 机操作系统win98、Win2000 或WinXP 、ARM SDT 或集成开发环境、仿真器驱动程序、超级终端通讯程序。

四、实验步骤见预习报告五、核心代码在主函数中实现将从串口0接收到的数据发送到串口0()int main(void){char c1[1];char err;ARMTargetInit(); 通过调用OSTaskCreate()或OSTaskCreateExt()创建至少一个任务;.OSStart(); /ucos-ii/" /* uC/OS interface */#include "../ucos-ii/add/"#include "../inc/"#include "../inc/sys/"#include "../src/gui/"#include <>#include <>#pragma import(__use_no_semihosting_swi) .\n");.\n");.\n");于task2 挂起时间为3 秒,所以在task2 挂起期间task1 能执行两次,而当第三次时由于task1 与task2 同时处于就绪态,由优先级次序,还是先执行task1 在执行task2.然后就这样周而复始的循环下去。

北航ARM9嵌入式系统实验实验三uCOS-II实验

北航ARM9嵌入式系统实验实验三uCOS-II实验

北航ARM9嵌⼊式系统实验实验三uCOS-II实验实验三 uCOS-II实验⼀、实验⽬的在内核移植了uCOS-II 的处理器上创建任务。

⼆、实验内容1)运⾏实验⼗,在超级终端上观察四个任务的切换。

2)任务1~3,每个控制“红”、“绿”、“蓝”⼀种颜⾊的显⽰,适当增加OSTimeDly()的时间,且优先级⾼的任务延时时间加长,以便看清三种颜⾊。

3)引⼊⼀个全局变量BOOLEAN ac_key,解决完整刷屏问题。

4)任务4管理键盘和超级终端,当键盘有输⼊时在超级终端上显⽰相应的字符。

三、预备知识1)掌握在EWARM 集成开发环境中编写和调试程序的基本过程。

2)了解ARM920T 处理器的结构。

3)了解uCOS-II 系统结构。

四、实验设备及⼯具1)2410s教学实验箱2)ARM ADS1.2集成开发环境3)⽤于ARM920T的JTAG仿真器4)串⼝连接线五、实验原理及说明所谓移植,指的是⼀个操作系统可以在某个微处理器或者微控制器上运⾏。

虽然uCOS-II的⼤部分源代码是⽤C语⾔写成的,仍需要⽤C语⾔和汇编语⾔完成⼀些与处理器相关的代码。

⽐如:uCOS-II在读写处理器、寄存器时只能通过汇编语⾔来实现。

因为uCOS-II 在设计的时候就已经充分考虑了可移植性,所以,uCOS-II的移植还是⽐较容易的。

要使uCOS-II可以正常⼯作,处理器必须满⾜以下要求:(1)处理器的C编译器能产⽣可重⼊代码可重⼊的代码指的是⼀段代码(如⼀个函数)可以被多个任务同时调⽤,⽽不必担⼼会破坏数据。

也就是说,可重⼊型函数在任何时候都可以被中断执⾏,过⼀段时间以后⼜可以继续运⾏,⽽不会因为在函数中断的时候被其他的任务重新调⽤,影响函数中的数据。

(2)在程序中可以打开或者关闭中断在uCOS-II中,可以通过OS_ENTER_CRITICAL()或者OS_EXIT_CRITICAL()宏来控制系统关闭或者打开中断。

这需要处理器的⽀持,在ARM920T的处理器上,可以设置相应的寄存器来关闭或者打开系统的所有中断。

嵌入式系统基础实验报告

嵌入式系统基础实验报告

本科实验报告课程名称:嵌入式系统基础实验项目:实验一双字节加法实验二数据排序程序实验三定时/计数器实验四外部中断实验地点:跨越机房专业班级:通信0903 学号:2009001385 学生姓名:指导教师:武娟萍2012年 5 月18 日实验一双字节加法一实验目的(1)熟悉MCS-51指令系统,掌握程序设计方法。

(2)掌握双字节加法的程序算法。

二实验设备计算机一台。

操作系统:Windows 98/2000/XP应用软件:WAVE 6000或其他。

三实验内容编写并调试一个双字节加法程序,设9930H存在R1R0中,6083H存在R2R3中,计算R1R0+R3R2,结果存在R5R4中。

四实验原理两数的低位相加后保留进位位,高位数相加时,将低位的进位加上。

五WAVE6000操作过程一、新建文件:选择菜单【文件/新建文件】功能,出现一个文件名为NONAME1的源程序窗口,在此窗口中输入编好的程序。

二、保存文件:输完程序后,选择菜单【文件/保存文件】或【文件/另存为】功能,给出文件要保存的位置保存文件,保存文件为MY.ASM。

三、新建项目选择菜单【文件/新建项目】功能,1)加入模块文件,选择刚才保存的文件,按打开键,可以打开多个文件2) 加入包含文件,选择所要加入的包含文件,如果没有包含文件,按取消键3)保存项目为MY,无需后缀。

将用户项目存盘,用户在编译项目时,自动存盘。

注意:当用项目仿真时,系统要求,项目文件,模块文件包含文件在同一个目录(文件夹)下五、项目复制复制项目,用户可以将项目中的所有模块(用户程序)备份到另一个地方。

在多模块项目中,用复制项目功能,可以避免用户因少复制某些模块,而造成编译不能通过,方便用户对程序进行管理六、项目设置选择菜单【设置/仿真器设置】,在仿真器设置栏中1)点击语言栏选择伟福汇编器。

2)仿真器选择栏选择80313)通信设置选择使用伟福软件模拟器七、编译程序:选择菜单【项目/编译】功能编译项目。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

实验一:基于ADS的C语言程序实验一、实验环境PC机一台ADS 1.2集成开发环境一套二、实验目的通过实验了解使用ADS 1.2编写C语言程序,并进行调试。

三、实验内容在C语言的环境内开发应用程序,一般需要一个汇编的启动程序,从汇编的启动程序,跳到C语言下的主程序,然后,执行C程序,具体的编程规则同标准C语言。

编写一个汇编程序文件Startup.s和一个C程序文件Test.c。

汇编程序的功能是初始化堆栈指针和初始化C程序的运行环境,然后调跳转到C程序运行,这就是一个简单的启动程序。

C程序使用加法运算来计算1+2+3+...+(N-1)+N的值(N>0)。

四、实验预习要求(1)仔细阅读《ARM嵌入式系统》中第3和4章ARM指令系统的内容。

(2)仔细阅读文档《ADS集成开发环境及仿真器应用》或其他相关资料,了解ADS工程编辑和AXD调试的内容。

(本实验使用软件仿真)五、实验步骤(1)启动ADS 1.2,使用ARM Executable Image工程模板建立一个工程ProgramC。

(2)建立源文件Startup.s和Test.c,编写实验程序,然后添加到工程中。

(3)设置工程链接地址RO Base为0x40003f00,RW Base为0x40300000。

设置调试入口地址Image entry point为Ox40003f00。

(4)设置位于开始位置的起始代码段,如图1-1,1-2所示。

在Layout栏中,如图1-1,在Place at beginning of image框内,需要填写项目的入口程序的目标文件名,如,整个工程项目的入口程序是Startup.s,那么应在Object/Symbol处填写其目标文件名Startup.o,在Section处填写程序入口的起始段标号Start。

它的作用是通知编译器,整个项目的开始运行,是从该段开始的。

图1-1设置位于开始位置的起始代码段(1)图1-2 设置位于开始位置的起始代码段(2)(5)编译链接工程,选择Project—Debug,启动AXD进行软件仿真调试。

(6)在Startup.s的“B Main”处设置断点,然后全速动行程序。

(7)程序在断点处停止。

单步运行程序,判断程序是否跳转到C程序中运行。

(8)诜择Processor views—variables打开变量观察窗口,观察全局变量的值,然后单步/全速运行程序,判断程序的运算结果是否正确。

如图1-3所示。

图1-3 ARM实验3的运行观察结果六、思考题(1)在实验参考程序中,Startup.s文件的作用是什么?如果没有Startup.s文件,C程序运行会出错吗?(2)实验程序中的Main()函数名是否可以更改为其他名字?(提示:Main只是一个标号。

)七、参考程序;startup fileIMPORT |Image$$RO$$Limit|IMPORT |Image$$RW$$Base|IMPORT |Image$$ZI$$Base|IMPORT |Image$$ZI$$Limit|IMPORT MAIN ;declare the main() in the C ProgAREA Start,CODE,READONLYENTRYCODE32ResetLDR SP,=0x50003f00;initial the C caseLDR R0,=|Image$$RO$$Limit|LDR R1,=|Image$$RW$$Base|LDR R3,=|Image$$ZI$$Base|CMP R0,R1BEQ LOOP1LOOP0CMP R1,R3LDRCC R2,[R0],#4STRCC R2,[R1],#4BCC LOOP0LOOP1LDR R1,=|Image$$ZI$$Limit|MOV R2,#0LOOP2CMP R3,R1STRCC R2,[R3],#4BCC LOOP2B MAINEND// main file#define uint8 unsigned char#define uint32 unsigned int#define N 100uint32 sum;void MAIN(void){uint32 i;sum = 0;for(i = 0;i <= 100;i++)sum += i;while(1);}实验二:C语言调用汇编程序实验一、实验环境PC机一台ADS 1.2集成开发环境一套二、实验目的掌握在C语言程序中调用汇编程序,了解ATPCS的基本规则。

三、实验内容在C程序调用汇编子程序,实现两个整数的加法运算。

汇编子程序的原型为:uint32 Add(uint32 x, uint32 y)其中uint32已定义为unsigned int。

四、实验预习要求(1)仔细阅读ARM公司的ATPCS的相关文档。

例如ATPCS.PDF。

(2)仔细阅读产品配套光盘附带文档《ADS集成开发环境及仿真器应用》或其他相关资料,了解ADS工程编辑和AXD调试的内容。

(本实验使用软件仿真。

)五、实验步骤(1)启动ADS 1.2,使用ARM Executable Image工程模板建立一个工程ProgramCl。

(2)建立源文件Startup.s、Add.s和Test.c,编写实验程序,然后添加到工程中。

(3)设置工程链接地址RO Base为0x40003f00,RW Base为0x40300000。

设置调试入口地址Image entry point为Ox40003f00。

(4)设置工程链接选项,位于开始位置的起始代码段设置为Startup.o的Start段。

图2-1 设置开始位置的起始代码段(5)编译链接工程,选择Projec t→Debug,启动AXD进行软件仿真调试。

(6)在Test.c文件中调用Add()的代码处设置断点,然后全速运行程序。

(7)程序在断点处停止。

使用Setp In单步运行程序,观察程序是否转到汇编程序Add.s。

(8)选择Processor Views→Variables打开变量观察窗口.观察全局变量的值,然后单步/全速运行程序,判断程序的运算结果是否正确。

如图2-2所示。

图2-2 ARM实验4的运行观察结果六、思考题在实验参考程序中,如何以指针形式传递参数?(即设计“uint32 Add(uint32 *x,uint32 *y)”函数。

);Add.sEXPORT AddAREA Addc,CODE,READONLYENTRYCODE32AddLDR R5,[R0]LDR R6,[R1]ADD R0,R5,R6MOV PC,LREND//Test.c#define uint8 unsigned char#define uint32 unsigned intextern uint32 Add(uint32 *x,uint32 *y);uint32 sum;void MAIN(void){uint32 a=5,b=6;sum = Add(&a,&b);while(1);}七、参考程序startup.s 文件程序见实验3//Test.c#define uint8 unsigned char#define uint32 unsigned intextern uint32 Add(uint32 x,uint32 y);uint32 sum;void Main(void){sum = Add(5,4);while(1);};Add.sEXPORT AddAREA Addc,CODE,READONL YENTRYCODE32AddADD R0,R0,R1MOV PC,LREND源代码组织见图源代码组织图八.回答问题下面是一个由源程序strtest.c和scopy.s组成的混合程序项目,通过调用strcopy完成字符串复制,程序代码如下。

要求阅读程序,在程序中的注释符后,说明该句程序的作用,并说明extern和EXPORT伪指令的在程序中的作用。

(8分)strtest.c#include <stdio.h>extern void strcopy(char *d, const char *s);int main(){ const char *srcstr = "First string - source";char dststr[] = "Second string - destination";printf("Before copying:\n");printf(" '%s'\n '%s'\n",srcstr,dststr); //输出源串和目标串 strcopy(dststr,srcstr); //调用strcopy函数printf("After copying:\n");printf(" '%s'\n '%s'\n",srcstr,dststr);//输出复制后的源串和目标串return 0;}scopy.sAREA SCopy, CODE, READONLYEXPORT strcopystrcopyLDRB r2, [r1],#1 ; r1指向源串,从源串载入一个字节的字符到r2,并更新r1=r1+1STRB r2, [r0],#1 ;r0指向目标串,从r2保存一个字节的字符到目标串,并更新r0=r0+1CMP r2, #0 ;测试串尾标志\0BNE strcopy ;非零转标号strcopyMOV pc,lr ;返回END。

相关文档
最新文档