嵌入式系统——实验1

合集下载

嵌入式系统实验报告

嵌入式系统实验报告

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

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

实验一: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引脚的电平信号来控制电机。

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

嵌入式系统实验报告一

嵌入式系统实验报告一

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,偏移量如下图:

嵌入式系统试验报告

嵌入式系统试验报告

嵌入式系统实验报告学院:计算机科学与工程姓名:___________学号:_______________专业:_______________指导老师:______________完成日期:______________实验一:流水灯案例、8位数码管动态扫描案例一、实验目的1.1 进一步熟悉Keil C51集成开发环境调试功能的使用;1.2 学会自己编写程序,进行编译和仿真测试;1.3 利用开发板下载hex 文件后验证功能。

二、实验原理2.1 :实验原理图030B 〜I ।卜RSI I ™Hi 」 口 UICDR Hr hJJK RR 18q U I. 海水灯电浒周LhE U_EEM^Li > > 第 X > k >n - » =白 L a £0EBS2.2:工作原理2.2.1:流水灯电路中有LO,1,L2,L3,4,L5,L6,L7共八个发光二极管,当引脚LED_ SEL输入为1,对于A、B、C、D、E、F、G、H引脚,只要输入为1,则点亮相连接的发光二极管。

A〜H引脚连接STM32F108VB芯片的PE8〜PE15,程序初始化时,对其进行初始设置。

引脚LED_SEL为1时,发光二极管才工作,否则右边的数码管工作。

注意,LED SEL 连接于PB3,该引脚具有复用功能,在默认状态下,该引脚的I0不可用,需对AFIO_ MAPR寄存器进行设置,设置其为10可用。

2.2.2: 8位数码管数码管中的A~G、DP段分别连接到电路图中的A~G、H线上,当某段上有一-定的电压差值时,便会点亮该段。

当£3输入为1,也就是LED_ 5£1输入为0时,根据SELO〜SEL2的值确定选中的数码管,即位选,再根据A~H引脚的高低电平,点亮对应段,即段选。

三、实验结果3.1:流水灯对于给出的流水灯案例,下载HEX文件后,在开发板上可观察到L0-L7从左至右依次点亮,间隔300ms。

嵌入式系统实验内容(全)

嵌入式系统实验内容(全)

实验一熟悉Linux开发环境一、实验目的1.熟悉Linux开发环境,学习Linux开发环境的配置和使用,掌握Minicom串口终端的使用。

2.学习使用Vi编辑器设计C程序,学习Makefile文件的编写和armv4l-unkonown-linux-gcc编译器的使用,以及NFS方式的下载调试方法。

3.了解UP-NETARM2410-S嵌入式实验平台的资源布局与使用方法。

4.初步掌握嵌入式Linux开发的基本过程。

二、实验内容本次实验使用Redhat Linux 9.0操作系统环境,安装ARM-Linux的开发库及编译器。

创建一个新目录,并在其中编写hello.c和Makefile文件。

学习在Linux 下的编程和编译过程,以及ARM开发板的使用和开发环境的设置。

下载已经编译好的文件到目标开发板上运行。

三、预备知识C语言的基础知识、程序调试的基础知识和方法,Linux的基本操作。

四、实验设备及工具(包括软件调试工具)硬件:UP-NETARM2410-S嵌入式实验平台、PC机Pentium 500以上, 硬盘10G以上。

软件:PC机操作系统REDHAT LINUX 9.0+MINICOM+ARM-LINUX开发环境五、实验步骤1、建立工作目录[root@zxt smile]# mkdir hello[root@zxt smile]# cd hello2、编写程序源代码在Linux下的文本编辑器有许多,常用的是vim和Xwindow界面下的gedit等,我们在开发过程中推荐使用vim,用户需要学习vim的操作方法,请参考相关书籍中的关于vim的操作指南。

Kdevelope、anjuta软件的界面与vc6.0 类似,使用它们对于熟悉windows环境下开发的用户更容易上手。

实际的hello.c源代码较简单,如下:#include <stdio.h>main(){printf(“hello world \n”);}我们可以是用下面的命令来编写hello.c的源代码,进入hello目录使用vi命令来编辑代码:[root@zxt hello]# vi hello.c按“i”或者“a”进入编辑模式,将上面的代码录入进去,完成后按Esc键进入命令状态,再用命令“:wq”保存并退出。

嵌入式系统实验报告(华中科技大学)

嵌入式系统实验报告(华中科技大学)

课程实验报告实验名称:嵌入式系统实验专业班级:计算机科学与技术x班学号:Ux姓名:x合作者:x实验时间:xxxx年xx月xx日计算机科学与技术学院试验一:bootloader (ads、引导)一、实验任务1、熟悉ADS 1.2开发工具创建、编译、下载、调试工程2、串口通讯串口控制器初始化、收/发数据3、配置主机端的nfs服务器配置主机端的nfs服务器,以连接linux核心4、下载并运行linux核心使用自己的串口程序下载并运行linux核心二、实验内容编写串口接收数据函数编写串口发送数据函数学习ads、jtag调试、flash烧写打印菜单,等待用户输入下载并运行linux核心配置主机的nfs服务器,与linux核心连接三、实验步骤1.编写串口接收数据函数编写串口发送数据函数修改bootloader:菜单、串口收发、命令行;接收串口数据并做相应处理:while(1){打印菜单并等待用户输入;switch(ch) //根据用户输入做相应处理{case '1':imgsize=xmodem_receive((char *)KERNEL_BASE, MAX_KERNEL_SIZE);if(imgsize==0) //下载出错;else //下载成功;break;case '3':nand_read((unsigned char *)KERNEL_BASE, 0x00030000, 4*1024*1024);case '2':BootKernel(); //这里是不会返回的,否则出错;break;default:break;}}Bootloader的main()函数打印菜单:int main(void){ARMTargetInit(); //目标板初始化;//接收用户命令,传递linux核心;Uart_puts("Menu:\n\r");Uart_puts("1.Load kernel via Xmodem;\n\r");Uart_puts("2.Boot linux; \n\r");Uart_puts("3.Load kernel from flash and boot; \n\r");Uart_puts("Make your choice.\n\r");do{ch=Uart_getc();}while(ch!='1' && ch!='2' && ch!='3');return 0;}串口读写:void Uart_putc(char c){while(!SERIAL_WRITE_READY());((UTXH0) = (c));}unsigned char Uart_getc( ){while(!SERIAL_CHAR_READY());return URXH0;}2.使用ads1.2编译bootloader;3.使用uarmjtag下载、调试bootloader;4.使用axd查看变量、内存,单步跟踪;5.配置超级终端,与bootloader通讯;6.配置nfs;编辑/etc/export文件:/home/arm_os/filesystem/rootfs 目标板ip(rw,sync)/home/arm_os/filesystem/rootfs 主机ip(rw,sync)启动nfs服务器:/etc/init.d/nfs restart测试nfs服务器是否正常运行:mount 主机ip:/home/arm_os/filesystem/rootfs /mnt7.以root用户启动cutecom,将cutecom配置改为115200 bps,8位,1位停止位,无校验,xmodem,no line end;8.使用bootloader重新下载Linux核心映像,启动核心运行后,察看是否成功加载nfs上的root文件系统;9.启动Linux核心运行,察看结果;10.linux核心能够运行到加载root步骤,说明bootloader正常运行;11.将bootloader烧写到flash中,重启目标板电源,察看bootloader是否烧写正常,下载核心测试;目标板linux系统正常运行到命令行模式下,能够正常输入linux命令,说明实验成功。

嵌入式系统设计(实验一)

嵌入式系统设计(实验一)

工业控制
嵌入式系统被广泛应用于工业 自动化领域,如生产线控制、 机器人控制等。
医疗设备
嵌入式系统可以实现医疗设备 的自动化控制和数据采集,如 医疗监护仪、输液泵等。
其他领域
嵌入式系统还可以应用于通信、 能源、环保等领域,发挥着越 来越重要的作用。
03
硬件平台搭建与配置
硬件平台选择
ARM开发板
传感器与执行器
汇编语言
针对特定硬件平台,使用汇编语言可 以实现更高效的代码执行和更精确的 硬件控制。
软件架构设计
分层架构
将系统划分为多个层次,每个层次负责特定的功能,降低系统复 杂性并提高可维护性。
事件驱动架构
通过事件触发相应的处理函数,实现模块间的解耦和异步通信。
微内核架构
将核心功能集中在微内核中,通过插件或模块扩展系统功能,提高 灵活性和可扩展性。
嵌入式系统设计(实验一)
• 实验目的与要求 • 嵌入式系统概述 • 硬件平台搭建与配置 • 软件设计与实现 • 系统测试与验证 • 实验总结与展望
01
实验目的与要求
实验目的
掌握嵌入式系统基本概念
01
通过实验了解嵌入式系统的定义、特点、应用领域等基本概念。
熟悉嵌入式开发环境
02
学习搭建嵌入式开发环境,包括硬件平台、操作系统、开发工
THANKS
感谢观看
提交实验报告
按时提交完整的实验报告,展示实验成果和 收获。
02
嵌入式系统概述
嵌入式系统定义
01
嵌入式系统是一种专用的计算机 系统,它被设计为控制、监视或 者辅助操作机器和设备的运行。
02
与通用计算机系统不同,嵌入式 系统通常被嵌入到特定的设备中 ,执行特定的任务,并且不需要 人工干预。

嵌入式系统基础实验报告

嵌入式系统基础实验报告

本科实验报告课程名称:嵌入式系统基础实验项目:实验一双字节加法实验二数据排序程序实验三定时/计数器实验四外部中断实验地点:跨越机房专业班级:通信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)通信设置选择使用伟福软件模拟器七、编译程序:选择菜单【项目/编译】功能编译项目。

嵌入式系统实验报告

嵌入式系统实验报告

嵌入式系统设计实验报告班级: 20110612学号: ***********名:***成绩:指导教师:武俊鹏、刘书勇1. 实验一1.1 实验名称博创UP-3000实验台基本结构使用方法1.2 实验目的1.熟悉嵌入式系统开发式流程概述。

2.熟悉UP-net3000实验平台的核心硬件电路和外设。

3.熟悉ARM JTAG的安装与使用。

1.3 实验环境硬件:ARM 嵌入式开发平台、用于ARM7TDMI的JTAG仿真器、PC 机Pentium100以上、串口线。

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

1.4 实验内容及要求1.熟悉嵌入式系统开发式流程概述。

2.熟悉UP-net3000实验平台的核心硬件电路和外设。

3.熟悉ARM JTAG的安装与使用。

1.5 实验设计与实验步骤1.新建超级终端2.选择ARM 开发实验台串口。

完成新建超级终端的设置以后,可以选择超级终端文件菜单中的保存,将当前设置3.保存为一个特定超级终端到桌面上,以备后用。

用串口线将PC机串口和平台UART0 正确连接后,就可以在超级终端上看到程序输出的信息了。

4.启动开发板,按住任意键,使开发板进入BIOS设置状态。

5.在超级终端的界面上,显示BIOS版本信息,以及相应的测试指令。

操作时,要在PC机上输入小写的字母快捷键,进入到相应的功能中去。

6.按照超级终端上的提示信息,进行功能的测试。

1.6 实验过程与分析本次实验操作起来并不困难,因为此次实验属于验证型实验,按照实验资料所给的提示信息,以上面的步骤,即可得到实验的结果。

进入到BIOS界面后,按照超级终端上的提示信息来进行功能1.7 实验结果总结在实验过程中,我们进行的很顺利,没有遇到什么问题,在超级终端界面,按提示的快捷键来测试对应的功能。

如e:测试由ZLG7289 驱动的LED 显示,共分3 步,请看超级终端提示按任意键继续,同时观察LED 的变化,最后返回主菜单。

嵌入式系统实验报告-1-外部中断

嵌入式系统实验报告-1-外部中断

《嵌入式系统技术》实训报告1、实验目的z了解S3C2440A 外部中断的工作原理。

z掌握S3C2440A 外部中断的使用方法。

2、实验设备z PC 机、Multi-ICE 仿真器、2440A 实验箱。

3、实验内容z通过外部K1、K2、K3、K4、K5、K7 按键触发外部中断E INT1、EINT2、EINT3、EINT4、EINT5、EINT74、实验原理4.1 ARM 的异常中断类型在嵌入式系统中外部设备的功能实现主要是靠中断机制来实现的。

中断功能可以解决CPU 内部运行速度远远快于外部总线速度而产生的等待延时问题。

ARM 提供的FIQ 和IRQ 异常中断用于外部设备向C PU 请求中断服务,一般情况下都是采用I RQ 中断。

七种异常中断中断过程框图4.2 异常中断响应过程和返回过程异常中断的响应过程:1).保存处理器当前状态寄存器C PSR 的值到备份程序状态寄存器S PSR 中。

2).设置但前程序状态寄存器CPSR 的值,其中包括:设置CPSR 响应位的值,使处理器进入特定的处理器模式;按要求屏蔽中断,通常应该屏蔽I RQ 中断。

在F IQ 中断时屏蔽F IQ 中断。

3).设置L r 寄存器。

将相应中断模式的L r 寄存器的值设为异常中断的返回地址。

4).处理程序计数器PC,将PC 值设为相应的中断向量的地址,从而实现跳转以执行中断服务程序。

异常中断的返回当处理器执行完以上流程之后,处理器已经从中断向量进入异常处理的状态。

异常中断处理完毕之后,在异常中断程序的末端,处理器进入异常中断的返回状态,其流程如下:1).恢复状态寄存器。

将保存的备份程序状态寄存器SPSR 值赋给当前程序状态寄存器CPSR。

2).将返回地址赋值到程序计数器(PC)。

这样程序将返回到异常中断产生的下一条指令或出现问题的指令处执行。

需要注意的是:对于不同的异常中断,其返回地址的计算方法也是不同的,IRQ 和F IQ 异常中断产生时,程序计数器PC 已经更新,而SWI 中断和未定义指令中断时由当前指令自身产生的,程序计数器P C 尚未更新,所以要计算出下一条指令的地址来执行返回操作;指令预取指中指异常中断和数据访问中断要求,返回到出现异常的执行现场,重新执行操作。

【精品】嵌入式系统实验报告-1-外部中断

【精品】嵌入式系统实验报告-1-外部中断

【精品】嵌入式系统实验报告-1-外部中断实验名称:外部中断
实验目的:了解外部中断的概念和原理,学习在Keil中配置和使用外部中断,掌握外部中断的应用。

实验器材:Keil软件,STC89C52RC单片机,LED灯,按键开关。

实验原理:
外部中断是指单片机外部设备(如按键开关、定时器等)产生的中断请求信号,使得单片机能够在执行程序的过程中,根据需要接受来自外部设备的中断请求,并立即处理中断请求所需的相关程序,在处理完中断请求后再返回到原来程序的执行。

在Keil中使用外部中断需要用到的库函数有:
void EX0_init(void); //外部中断0(P3.2)初始化函数
void EX1_init(void); //外部中断1(P3.3)初始化函数
void INT0_ISR(void) interrupt 0; //外部中断0的中断处理函数
void INT1_ISR(void) interrupt 2; //外部中断1的中断处理函数
其中,EX0_init()和EX1_init()函数用于初始化外部中断0和外部中断1,将相应的引脚设置为中断请求引脚,并设置相应的中断触发方式;INT0_ISR()和INT1_ISR()函数用于处理外部中断0和外部中断1的中断请求。

实验结果:
在Keil中编译程序后,烧录程序到单片机中,并将单片机连接到外部电路中。

当按下按键时,会模拟产生外部中断请求信号,LED灯会闪烁3次后停止闪烁。

当按键松开后,LED灯将停止闪烁,恢复到初始状态。

嵌入式系统实验报告

嵌入式系统实验报告

嵌入式系统实验报告一、实验目的本次嵌入式系统实验的主要目的是深入了解嵌入式系统的基本原理和开发流程,通过实际操作和项目实践,提高对嵌入式系统的设计、编程和调试能力。

二、实验设备与环境1、硬件设备嵌入式开发板:_____计算机:_____调试工具:_____2、软件环境操作系统:_____开发工具:_____编译环境:_____三、实验内容1、基础实验熟悉开发板的硬件结构和接口,包括处理器、存储器、输入输出端口等。

学习使用开发工具进行程序编写、编译和下载。

2、中断实验了解中断的概念和工作原理。

编写中断处理程序,实现对外部中断的响应和处理。

3、定时器实验掌握定时器的配置和使用方法。

利用定时器实现定时功能,如周期性闪烁 LED 灯。

4、串口通信实验学习串口通信的协议和编程方法。

实现开发板与计算机之间的串口数据传输。

5、 ADC 转换实验了解 ADC 转换的原理和过程。

编写程序读取 ADC 转换结果,并进行数据处理和显示。

四、实验步骤1、基础实验连接开发板与计算机,打开开发工具。

创建新的项目,选择合适的芯片型号和编译选项。

编写简单的程序,如控制 LED 灯的亮灭,编译并下载到开发板上进行运行和调试。

2、中断实验配置中断相关的寄存器,设置中断触发方式和优先级。

编写中断服务函数,在函数中实现相应的处理逻辑。

连接外部中断源,观察中断的触发和响应情况。

3、定时器实验初始化定时器相关的寄存器,设置定时器的工作模式和定时周期。

在主程序中启动定时器,并通过中断或查询方式获取定时时间到达的标志。

根据定时标志控制 LED 灯的闪烁频率。

4、串口通信实验配置串口相关的寄存器,设置波特率、数据位、停止位等参数。

编写发送和接收数据的程序,实现开发板与计算机之间的双向通信。

使用串口调试助手在计算机上进行数据收发测试。

5、 ADC 转换实验配置 ADC 模块的相关寄存器,选择输入通道和转换精度。

启动 ADC 转换,并通过查询或中断方式获取转换结果。

嵌入式系统实验报告

嵌入式系统实验报告

嵌入式系统实验报告实验题目:嵌入式系统设计与开发实验时间:2021年10月10日实验地点:实验室一号机房实验目的:通过完成嵌入式系统的设计与开发实验,掌握嵌入式系统的基本原理和开发方法。

实验设备:ARM开发板、电脑、网络连接器、编程软件、USB数据线等实验步骤:1. 配置开发环境将ARM开发板与电脑通过USB数据线连接,并安装相应的开发软件,包括编程软件和编译器。

2. 设计嵌入式系统根据实验要求和功能需求,设计嵌入式系统的硬件和软件部分。

确定所需的传感器、执行器和其他硬件模块,并设计系统的软件架构。

3. 开发嵌入式系统编写系统的底层驱动程序,包括对各个硬件模块的控制和通信。

使用C语言或汇编语言进行编程,并进行编译和调试。

4. 系统测试与调试将开发板与相应的传感器和执行器连接,并进行系统测试。

通过调试程序代码,确保系统的各个功能正常运行。

5. 性能优化与扩展根据实际的需求和性能要求,对系统进行优化和扩展。

可以优化程序的运行效率、增加系统的功能模块等。

实验结果:经过一段时间的设计、开发和调试,我成功地完成了嵌入式系统的设计与开发。

该系统具有以下功能:1. 实时监测温度和湿度,并将数据实时显示在LCD屏幕上。

2. 当温度或湿度超过设定阈值时,系统会自动发出警报并记录异常。

3. 根据用户的输入,可以手动控制执行器的开关状态。

实验总结:通过本次实验,我对嵌入式系统的设计和开发有了更深入的了解。

我学到了如何在嵌入式系统中进行硬件和软件的协同设计,以及如何使用相应的开发工具进行开发和调试。

通过不断实践和调试,我也提高了自己的问题解决能力和编程能力。

在以后的学习和工作中,我将继续学习和探索嵌入式系统的更多知识,并应用于实际项目中。

哈工大 嵌入式系统实验指导01

哈工大 嵌入式系统实验指导01

实验一:汇编指令实验1.实验目的z了解Keil uVision集成开发环境及软件仿真功能使用。

z掌握ARM7TDMI汇编指令的用法,并能编写简单的汇编程序。

z掌握指令的条件执行和使用LDR/STR指令完成存储器的访问。

z掌握基本的汇编程序调试。

2.实验设备z硬件:PC机一台z软件:WindowsXP系统,Keil uVision 4.0集成开发环境3.实验内容(1)使用LDR指令读取0x40000100地址上的数据,将数据加1。

若结果小于10,则使用STR指令把结果写回原地址;若结果大于等于10,则把0写回原地址。

(2)使用Keil uVision软件仿真,单步、全速运行程序,设置断点,打开寄存器窗口监视R0和R1的值,打开存储器观察窗口监视0x40000100地址上的值。

4.实验预习要求(1)学习ARM指令系统的内容,重点掌握LDR/STR指令和指令条件执行;(2)查阅Keil uVision 软件的介绍,了解软件的功能和操作方法。

5.实验步骤(1)启动Keil uVision,新建一个工程ex01。

见图1-1、图1-2、图1-3。

图1-1 建立工程图1-2 选择目标芯片图1-3 不需要系统提供的Startup文件(2)建立汇编源文件ex01.s,编写实验程序,然后添加到工程中。

见图1-4、图1-5、图1-6、图1-7。

图1-4 建立新文件图1-5 保存扩展名为.s的汇编程序文件图1-6 把文件添加到工程图1-7 添加文件到工程后(3)设置工程选项,存储器映射。

见图1-8、图1-9。

图1-8 设置工程选项图1-9 设置存储器映射(4)编译链接工程。

见图1-10。

(5)进行软件仿真调试。

见图1-11、图1-12、图1-13、图1-14。

图1-11 调试运行图1-12 调试界面图1-13 设置断点图1-14 运行程序6.实验参考程序汇编指令实验的参考程序见程序清单1.1。

程序清单1.1 汇编指令实验参考程序COUNT EQU 0X40000100 ;定义一个变量,地址为0x40000100 AREA RESET, CODE, READONLY ;声明代码段RESETENTRY ;表示程序入口CODE32 ;声明32位ARM指令START LDR R1,=COUNT ;R1 ← COUNTMOV R0,#0 ;R0 ← 0STR R0,[R1] ;[R1] ← R0,即设置COUNT为0LOOP LDR R1,=COUNTLDR R0,[R1] ;R0 ← [R1]ADD R0,R0,#1 ;R0 ← R0 + 1CMP R0,#10 ;R0与10比较,影响条件码标志MOVHS R0,#0 ;若R0 >= 10, 则此指令执行,即R0 ← 0STR R0,[R1] ;[R1] ← R0,即保存COUNTB LOOPEND7.思 考(1)若使用LDRB/STRB代替程序清单中的所有加载/存储指令(LDR/STR),程序会得到正确的执行吗?(2)LDR伪指令与LDR加载指令的功能和应用有何区别,举例说明?(提示:LDR伪指令的形式为“LDR Rn,=expr”。

嵌入式系统设计与应用实验1 输入输出实验

嵌入式系统设计与应用实验1 输入输出实验

昆明理工大学机电工程学院嵌入式系统设计与应用实验报告书实验名称:流水灯实验年级专业及班级:级机自班姓名:学号:指导教师:张文斌、高贯斌评定成绩:教师评语:实验时间: 2014 年 12 月 13 日实验一PORTA口输入、输出实验一、实验要求1.PORTA口做输出口,接八只发光二极管,编写程序,使发光二极管循环点亮。

2.PORTA0、PORTA1作输入口接两个拨动开关,PORTA2、PORTA3作输出口,接两个发光二极管,编写程序读取开关状态,将此状态,在发光二极管上显示出来。

注:行数不够时可加行三、实验程序流程图P1口循环点灯程序框图p1口输入输出程序框图四、实验程序1流水灯#include <hidef.h> /* common defines and macros */#include "derivative.h" /* derivative-specific definitions */ void delay (){unsigned int i,k,j;for (i=0;i<600;i++)for (k=0;k<600;k++)}void main(void) {/* put your own code here */DDRA=0FXXPORTA=0FXXEnableInterrupts;for(;;) {PORTE=0x00;PORTB=0x01;delay();PORTE=0x00;PORTB=0x02;delay();PORTE=0x00;PORTB=0x04;delay();PORTE=0x00;PORTB=0x08;delay();PORTE=0x00;PORTB=0x10;delay();PORTE=0x00;PORTB=0x20;delay();PORTE=0x00;PORTB=0x40;delay();PORTE=0x00;PORTB=0x80;delay();PORTE=0x00;PORTB=0xFF;delay();_FEED_COP(); /* feeds the dog */} /* loop forever *//* please make sure that you never leave main */}}2四个口做输入四个口做输出#include <hidef.h> /* common defines and macros */#include "derivative.h" /* derivative-specific definitions */ void main(void) {/* put your own code here */DDRA=0xFF;PORTA=0XFF;EnableInterrupts;for(;;) {If(PORTA_PA0==0)PORTA_PA5=0;else PORTA_PA5=01;If(PORTA_PA1==0)PORTA_PA6=0;else PORTA_PA6=01;If(PORTA_PA2==0)PORTA_PA4=0;else PORTA_PA4=01;If(PORTA_PA3==0)PORTA_PA7=0;else PORTA_PA7=01;_FEED_COP(); /* feeds the dog */} /* loop forever *//* please make sure that you never leave main */}}五、实验现象以及碰到什么问题?如何解决?实验现象:程序输入后,单片机上的LED灯流动交替闪烁问题:在做更改时间,获取设置值时,出现按得次数、间隔时间与得到的值不符。

嵌入式系统实验报告

嵌入式系统实验报告

中北大学计算机与控制工程学院实验报告《嵌入式系统实验报告》专业电气工程与智能控制班级学号姓名实验一 ARM 处理器指令系统实验一、实验目的熟悉ARM指令系统,熟悉ARM SDT编辑编译连接,ARM Project Manager和ARM Debugger 的设置和使用二、实验条件Windows平台的ARM SDT 2.51软件:ARM Project Manager和ARMDebugger。

三、实验内容学习使用ARM Project Manager建立项目文件,编辑汇编文件,并加入项目。

学习ARM编译器和汇编器的设置。

通过编程熟悉ARM指令,包括跳转指令,数据处理指令,状态寄存器传送指令,load/store指令,中断异常产生指令。

学习ARM调试起的使用方法,包括程序的导入,单步执行,断点设置等。

四、实验要点工程文件的建立,在ARM Project Manager中点击File->New,选择Project,点击确定。

链接器的设定,需要设置代码和数据段的起始地址。

点击图标,选择不进行远程调试,即可打开调试器。

五、实验结果熟悉ARM指令系统实验二p1口实验一、实验目的熟悉 ARM SDT 软件开发方法和技能;学习和巩固 ARM 指令集;学习和巩固汇编语言程序设计二、实验条件Windows 平台的 ARM SDT 2.51 软件:ARM Project Manager 和 ARM Debugger; DebugServer.exe ; EFLAG-ARM-S3C44B0 实验箱三、实验内容目录 ARM251\EXAMPLES\ASM 下的汇编程序,学习和调试代码,分析所得结果。

在调试器上仿真软件的执行。

在实验箱上,调试软件,并观察软件的执行结果四、实验要点在调试软件目录中启动 DebugServer.exe 调试器服务程序。

启动 SDT 调试软件 ARM Debugger。

五、实验结果实验三中断口实验一、实验目的熟悉 S3C44B0 中断控制器的结构。

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

《嵌入式系统设计(实验课)》内容安排《嵌入式系统设计(实验课)》是《嵌入式系统设计》课程的一个重要环节。

通过实验,学生可以对嵌入式系统的设计与开发过程有更深地体会。

实验课共八次,每次2学时,实验内容结合课程内容,介绍一般的实验开发流程和软件硬件开发环境,并辅之以典型的嵌入式程序设计实例,使学生掌握基本的嵌入式软件开发技能。

大量的具有实际应用背景的实验,更将理论与实践结合起来,使实验内容更加生动。

实验报告要求一、实验名称:说明:本次实验的名称二、实验目的:说明:本次实验的主要目的,参考每次的实验指导书三、实验环境:说明:实验用到的硬件软件环境。

四、实验内容与步骤:说明:实现实验目的而进行的实验内容,如果有步骤要求则简要列出步骤五、实验报告总结:说明:对本次实验的总结,1.画出主函数的程序流程图,2.重写主程序.或者:自拟一个新的应用,参照本次实验的主程序,重新设计主程序并给出详尽注释。

3.其他,本次实验得到了什么?收获是什么?有些什么别的想法?六、建议与意见:说明:对于此次实验内容或在实验过程中有任何问题或建议,以及对于改善实验效果有什么建议,均可提出。

在书写实验报告的过程中,主要是帮助自己回顾和总结实验。

重点放在第五部分,前四项可以十分简要地列写,第六项有则提出,无则不写。

实验一嵌入式微处理器系统的开发环境一、实验环境PC机一台软件: ADS 1.2集成开发环境一套二、实验目的1.了解嵌入式系统及其特点;2.熟悉嵌入式系统的开发环境和基本配置并能编写简单的汇编程序三、实验内容1.嵌入式系统的开发环境、基本配置2.使用汇编指令完成简单的加法实验四、实验步骤(1)在D:\新建一个目录,目录名为experiment。

(2)点击 WINDOWS 操作系统的“开始|程序|ARM Developer Suite v1.2 |Code Warrior for ARM Developer Suite”启动Metrowerks Code Warrior,或双击“ADS 1.2”快捷方式启动。

启动ADS 1.2 如图1-1所示:图1-1启动ADS1.2(3) 在CodeWarrior 中新建一个工程的方法有两种,可以在工具栏中单击“New”按钮,也可以在“File”菜单中选择“New…”菜单。

这样就会打开一个如图1-2 所示的对话框。

选择【File】->【New…】,使用ARM Executable Image工程模板建立一个工程,名称为ADS,目录为D:\experiment。

图1-2 新建文件在这个对话框中为用户提供了7 种可选择的工程类型:1)ARM Executabl Image:用于由ARM 指令的代码生成一个ELF 格式的可执行映像文件;2)ARM Object Library:用于由ARM 指令的代码生成一个armar 格式的目标文件库;3)Empty Project:用于创建一个不包含任何库或源文件的工程;4)Makefile Importer Wizard:用于将Visual C 的nmake 或GNU make 文件转入到CodeWarrior IDE 工程文件;5)Thumb ARM Executable Image:用于由ARM 指令和Thumb 指令的混和代码生成一个可执行的ELF 格式的映像文件;6)Thumb Executable image:用于由Thumb 指令创建一个可执行的ELF 格式的映像文件;7)Thumb Object Library:用于由Thumb 指令的代码生成一个armar 格式的目标文件库。

(4)选择【File】->【New…】建立一个新的文件TEST1.S,设置直接添加到项目中。

输入如程序代码,并保存,此时在工程窗口中可以看到TEST1.S文件。

图1-3 新建test1.s(5) 选择【Edit】->【Perferences…】,在Font选项设置字体是Fixedsys,Script是CHINESE_GB2312。

图1-4 设置字体(6) 选择【Edit】->【DebugRel Settings…】,在DebugRel Settings对话框的左边选择ARM Linker项,设置链接地址。

点击“DebugRel Settings…”图标按钮,即可进行工程的地址设置、输出文件设置、编译选项等,如图1-5所示。

在“ARM Linker”对话框设置连接地址,在“Language Settings”中设置各编译器的编译选项。

对于简单的软件调试,可以不进行连接地址的设置,直接点击工程窗口的“Make”图标按钮,即可完成编译连接。

若编译出错,会有相应的出错提示,双击出错提示行信息,编辑窗即会使用光标指出当前出错的源代码行,编译连接输出窗口如图1-6所示。

同样,您可以在【Project】菜单中找到相应的命令。

图1-5连接器选项设置图1-6 output选项卡OUTPUT 选项卡:该选项卡用来控制连接器进行连接操作的类型。

其中Linktype 选项组中的单选按钮确定使用的连接方式。

这里选择Simple,连接器将根据连接器选项中指定的地址映射方式,生成简单的ELF 格式的映像文件,所生成的映像文件中的地址映射关系比较简单.当选择Simple 连接类型时,需要设置下列的连接器选项,如图1-5所示。

RO Base 文本框中填入0x40000000。

地址0x40000000 是开发板上SDRAM 的真实地址,是由系统的硬件决定的;RW Base 文本框中填入0x40003000 指的是系统可读写内存的地址。

也就是说,在0x40000000-0x40003000 之间是只读区域,存放程序的代码段,从0x40003000 开始是程序的数据段。

Layout 选项卡:该选项卡在连接方式位Simple 时有效,它用来安排一些输入段在映像文件中的位置。

Place at beginning of image 选项组用于指定将某个输入段放置在它所在的运行时域的开头。

包含复位异常中断处理程序的输入段通常放置在运行时域的开头。

这里,在Object/Symbol 文本框中指定目标文件的名称init.o,在Section 文本框中指定输入段的名称init,从而确定了init.s 源文件中的init 输入段位指定的输入段。

如图1-7所示。

图 1-7 Layout 选项卡中连接器选项(6) 选择【Project】->【Make】,或者按下快捷键F7,将编译链接整个工程。

如图 1-8所示为工程窗口中的图标按钮,通过这些图标按钮,可以快速的进行工程设置,编译连接,启动调试等等.它们从左到右分别为图1-8 工程窗口中的图标按钮A)DebugRel Settings… 工程设置;B)Synchronize Modification Dates 同步修改日期;C)Make 编译连接;D)Debug 启动ADX 进行调试;E)Run 启动ADX 调试,并直接运行;F)Project Inspector 工程检查,查看和配置工程中源文件的信息;对于简单的软件调试,直接点击工程窗口的”Make”图标按钮,即可完成编译.编译连接输出窗口如图1-9所示。

图1-9编译连接输出窗口(7) 选择【Project】->【Debug】,或者按下快捷键F5。

IDE环境就会启动AXD调试软件,接着可以执行单步、全速运行调试。

图1-10 AXD调试窗口注意:本实验使用软件仿真,所以要在AXD中选择【Options】->【Configure Target…】菜单,然后在 Choose Target窗口中选用ARMUL软件仿真。

图1-11 目标环境选择五思考题1.工程模板有何作用?2.如何强行重新编译工程的所有文件?(提示:选择【Project】->【Remove Object Code…】删除工程中的*.obj文件)六参考程序AREA Example1,CODE,READONLY ; 声明代码段Example1ENTRY ; 标识程序入口CODE32 ; 声明32位ARM指令START MOV R0,#15 ; 设置参数MOV R1,#8ADDS R0,R0,R1 ; R0 = R0 + R1B STARTEND实验预作关键过程及结果图:七分析程序,回答问题:1、写一段 ARM汇编程序:循环累加队列myarray中的所有元素,直到碰上零值元素,结果放在r4中。

程序框架如下,补充代码完成上述功能。

(8分)AREA total, CODE READONLYENTRYstartMOV r4, #0ADR r0, myarray;在此补充代码实验二汇编指令实验一、实验环境PC机一台ADS 1.2集成开发环境一套二、实验目的1.了解ADS 1.2集成开发环境及ARMulator软件仿真方法;2. 掌握ARM7TDMI汇编指令的用法,并能编写简单的汇编程序;3.掌握指令的条件执行和使用LDR/STR指令完成存储器的访问。

三、实验内容1.使用LDR/STR指令完成存储器的访问。

2.使用数据处理指令实现数据传送和算术和逻辑运算。

3.使用ADS 1.2软件仿真,单步、全速运行程序,设置断点,打开寄存器窗口(ProcessorRegisters)监视寄存器的值,打开存储器观察窗口(Memory) 监视存储器的值。

根据以上要求完成该操作:使用LDR指令读取0x40003100上的数据,将数据加1,若结果小于10则使用STR指令把结果写回原地址,若结果大于等于10,则把0写回原地址……周而复此循环;使用ADS 1.2软件仿真,单步、全速运行程序,设置断点,打开寄存器窗口(Processor Registers)监视R0、R1的值,打开存储器观察窗口(Memory) 监视0x40003100上的值。

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

(2) 建立汇编源文件TEST2.S,编写实验程序,然后添加到工程中。

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

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

(4) 编译链接工程,选择【Project】->【Debug】,启动AXD进行软件仿真调试。

(5) 打开寄存器窗口(Processor Registers),选择Current 项监视R0,R1 的值。

打开存储器观察窗口(Memory),设置观察地址为0x40003100,显示方式Size 为32Bit,监视0x40003100 地址上的值。

相关文档
最新文档