山东大学嵌入式实验报告汇编

山东大学嵌入式实验报告汇编
山东大学嵌入式实验报告汇编

嵌入式实验报告

班级:电信工X班姓名:XXX 学号:20120012XXXX

实验一、ARM汇编指令实验-简单数据搬移实验

实验目的:

熟悉实验开发环境,掌握简单ARM汇编的使用方法

实验内容

熟悉开发环境并使用LDR/STR,MOV等指令访问寄存器或存储单元;

使用ADS/SUB/LSL/LSR/AND/ORR等指令完成基本数学/逻辑运算。

实验要求

(1)按照前面叙述介绍的方法,在ADS下创建一个工程asmlabl,定义两个变量x,y和堆栈地址0x1000,将变量x的内容存到堆栈顶,然后计算x+y,并将和存到堆栈的下一个单元。通过AXD查看寄存器和memory和寄存器中数据的变化。

(2)在指令后面加上适当注释,说明指令功能。

(3)指出程序执行后各相关寄存器及存储器单元的具体内容。

程序代码截图如下:

程序运行结果截图:

由实验结果可知堆栈的第二个单元中存放了x+y的值6D

练习题

编写程序实现对一段数据的最大值和最小值搜索,最大值存在于max变量之中,最小值存在于min变量之中。提示:数据的定义采用伪指令:DCD来实现。

基本思路:利用R0做基地址,将R1,R2分别放入第一单元的内容,利用R3做循环计数,利用R4遍历读取第2至最后一个数据,如果R1的数据小于新读入的R4数据则将R4的内容存入R1,如果R2的内容大于R4的内容则将R4的内容存入R2,。遍历完成之后,R1将存放最大数据,R2将存放最小数据。

程序代码截图如下:

程序运行结果截图:

实验二 ARM 汇编指令实验2-字符串拷贝实验

实验目的

通过实验掌握使用LDB/STB ,b 等指令完成较为复杂的存储区访问和程序分支,学会使用条件码。 实验内容

熟悉开发环境的使用并完成一块存储区的拷贝。

完成分支程序设计,要求判断参数,根据不同参数,调用不同的子程序。

实验要求

(1)按照2.3节介绍的方法,在ADS下创建一个工程asmab2,定义两个数据存储区Src 和Dst,Src用于存放原字符串,Dst用于存放目的字符串。堆栈地址0x400,将变量原字符串的内容拷贝到目的字符串中,要能判断原字符串的结束符(0),并统计字符串的个数。通过AXD查看寄存器和memory和寄存器中数据的变化。

(2)在指令后面加上适当注释,说明指令功能。

(3)指出程序执行完后各相关寄存器及存储器单元的具体内容。

程序代码截图如下:

程序运行结果

源字符串

字符串复制后两个数据存储区Src:0x8040和Dst:0x8047中的数据情况

实验三ARM汇编指令实验3-ARM处理器工作模式实验

实验目的

(1)通过实验掌握学会使用msr/mrs指令实现ARM处理器工作模式的切换,观察不同模式下的寄存器,加深对CPU结构的理解;

(2)通过实验掌握ld中如何使用命令指定代码段起始地址。

实验内容

通过ARM汇编指令,在各种处理器模式下切换并观察各种模式下寄存器的区别;掌握ARM 不同模式的进入与退出。

实验要求

(1)按照2.3节介绍的方法,在ADS下创建一个工程asmmodelab,完成各个模式下的堆栈初始化工作,并将R1-R12的内容存入当前模式下堆栈。通过AXD运用单步执行

方式调用程序,验证工作的模式,使用寄存器观察切换到不同的工作模式下观察SP (R13)的变化情况。

(2)实验过程中请记录并思考以下内容:

1)程序复位之后系统处于什么模式?

2)记录每种模式下的厨师堆栈指针,以及执行R1-R12内容压栈后本模式堆栈相关内存单元的数值。并分析快速中断FIQ模式与其他模式存入的R1-R12有什么不同。

3)切换成用户模式之后还能否从用户模式切换到其他模式?

4)用户模式下能否执行堆栈压栈操作?如果能的话,观察用户模式下压栈之前和之后其堆栈区域的变化情况。

5)观察本程序模式切换过程中SPSR有无变化,并解释其原因。

程序运行结果截图:

6)程序复位之后系统处于什么模式?

答:程序复位之后系统处于管理模式。

7)记录每种模式下的初始堆栈指针,以及执行R1-R12内容压栈后本模式堆栈相关内存单元的数值。并分析快速中断FIQ模式与其他模式存入的R1-R12有什么不同。

即管理模式的栈顶指针为0x8240

满递减模式,r1-r12压栈后,管理模式栈顶指针为0x8210相距0x30,压入12个字(中断模式)

观察r13,中断模式的堆栈地址为0x8340

满递减模式,r1-r12压栈后,中断模式栈顶指针为0x8310,相距0x30,压入12个字

观察r13,快速中断模式的堆栈地址为0x8380

满递减模式,观察运行结果发现,快速中断模式中只有R1-R7压栈了,这是因为在快速中断模式中,可访问的寄存器只有R1-R7,不能访问R8-R12,快速中断模式下有自己的R8-R12。(中止模式)

观察r13,中止模式的堆栈地址为0x83C0

满递减模式,r1-r12压栈后,中止模式栈顶指针为0x8310,相距0x30,压入12个字

观察r13,未定义模式的堆栈地址为0x8400

满递减模式,r1-r12压栈后,未定义模式栈顶指针为0x83d0,相距0x30,压入12个字(系统模式)

观察r13,系统模式的堆栈地址为0x81C0

满递减模式,r1-r12压栈后,系统模式栈顶指针为0x8190,相距0x30,压入12个字

分析快速中断FIQ模式与其他模式存入的R1-R12有什么不同:

快速中断FIQ模式中:R8~R13都是0。这是因为在快速中断模式中,可访问的寄存器只有R1-R7,不能访问R8-R12,快速中断模式下有自己的R8-R12。

8)切换成用户模式之后还能否从用户模式切换到其他模式(如系统模式)?

答:在该例程中,由用户模式不可以切换到系统模式。当处理器工作在用户模式时,正在执行的程序不能访问某些被保护的系统资源,也不能改变模式,除非异常发生。

9)用户模式下能否执行堆栈压栈操作?如果能的话,观察用户模式下压栈之前和之后其堆栈区域的变化情况。

答:用户模式下能执行堆栈压栈操作。

未压栈时:用户模式堆栈指针初始值为0X8190

压栈之后,堆栈指针减小0x30,这是因为堆栈设置为满递减模式,所以堆栈指针减小0x30,存放12个字。

10)观察本程序模式切换过程中SPSR有无变化,并解释其原因。

答:模式切换过程中SPSR无变化,因为在整个切换过程中没有异常发生,所以SPSR无变化。

实验四ARM汇编与C混合编程实验----ARM启动过程控制实验实验目的

(1)掌握建立基本完整的ARM 工程,包含启动代码,C语言程序等;

(2)了解ARM 启动过程,学会编写简单的C 语言程序和汇编程序启动代码并进行调试;

(3)掌握如何指定代码入口地址与入口点;

(4)掌握通过memory/register/watch/variable 窗口分析判断错误。

实验内容

使用汇编语言编写初始化程序,并引导至C语言main函数,用汇编语言编写延时函数实现毫秒级的延时,在C语言中调用延时函数,实现1s钟定时。

实验要求

(1)按照2.3节介绍的方法,在ADS下创建一个工程armasmc,编写3个文件,通过AXD 运用单步执行方式进行调试程序,观察程序执行过程中的寄存器及存储器的变化情况。(2)实验过程中请记录并思考以下内容:

1)如何建立异常矢量入口表?

2)如何在汇编语言中切换至C语言的main函数?

3)如何在C语言中调用汇编语言函数,并完成参数传递?

4)汇编语言函数中用到的寄存器如何保护与恢复,为什么要保护参考程序中的R11?

5将delay.s中的R11改成R4,并将两条R11的保护与恢复语句stmfd sp!,{r12}和ldmfd sp!{r11}删掉,在C语言程序中的语句i----处设置端点,观察运行过程中变量i的变化情况,并解释其中的原因。

程序原代码截图:

Init完成异常矢量表的建立,模式堆栈初始化,并将程序引导至C语言的main函数

C语言程序,调用汇编语言文件delay.s

汇编delay.s延时程序

思考题:

思考题

1)如何建立异常矢量入口表?

要设置中断类型号,设置中断服务子程序段地址

2)如何在汇编语言中切换至C语言的main函数?

为了保证程序调用时参数的正确传递,汇编程序设计要遵守ATPCS。在C程序中不需要任何关键字来声明将被汇编语言调用的C程序,但需要在汇编语言程序之前使用IMPORT伪操作来声明该C程序。在汇编程序中通过BL指令来调用子程序。

3)如何在C语言中调用汇编语言函数,并完成参数传递?

为了保证程序调用时参数的正确传递,汇编程序设计要遵守ATPCS。

在汇编程序中需要使用EXPORT伪操作来声明,同时,在C程序中调用该汇编程序之前需

要在C语言程序中使用extern关键词来声明该汇编程序。

4)汇编语言函数中用到的寄存器如何保护与恢复,为什么要保护参考程序中的R11?

根据ATPCS标准,R11对应ARM 状态局部变量寄存器8。因为R11中可能含有其他重要的数据,所以要保护程序中R11。汇编语言函数中用到的寄存器的保护与恢复需要用到压栈与出栈。

5)将delay.s中的R11改成R4,并将两条R11的保护与恢复语句stmfd sp!,{r12}和ldmfd sp!{r11}删掉,在C语言程序中的语句i----处设置端点,观察运行过程中变量i的变化情况,并解释其中的原因。

修改后程序如图

由于根据ATPCS标准,R4对应局部变量寄存器1,即i,所以在delay.s中,R4的值减为1,若不进行保护,则返回C程序后经i--,i值变为-1,永远不为0,无法执行if语句。导致i 值一直递减下去

实验五ARM硬件接口实验1----基本IO实验

实验目的

(1)GPIO的功能配置方法;

(2)通过寄存器访问引脚的方法;

(3)实现GPIO输入输出功能的基本编程方法。

实验内容

编写S3C2440X处理器的端口控制程序,实现利用按键控制的跑马灯程序。GPC5,GPC6,GPC7三个引脚连接发光二极管,按钮开关连接在GPF5引脚。上电后,GPC5,GPC6,GPC7三个引脚连接发光二极管,轮流显示,当按钮开关按下去,方向反向。

PS:实验过程中要注意按键去抖动和每个发光二极管显示一定的时间(至少100ms).

实验要求

(1)运行AXD加载生成的image文件,运行程序,观察程序执行的效率。并观察按键按下和松开跑马灯轮换方向。

(2)实验过程中请记录并思考以下内容:

1)如何访问寄存器并修改其中的1位或者多位数据?

2)如何配置S3C2440的PIO端口?

3)在C语言中如何实现按键处理程序?

4)如何初始化DRAM,从而实现程序下载并在线调试?

5)尝试实现利用按键切换控制跑马灯的顺序轮换?

程序代码截图如下:

思考题:

(1)运行AXD加载生成的image文件,运行程序,观察程序执行的效率。并观察按键按

生物化学实验六——酵母RNA的提取与含量测定 山东大学实验报告

实验六——酵母RNA的提取与含量测定 13生物基地 201300140059 刘洋 2015-05-10 同组者:张奕 一、实验目的 1.掌握稀碱法提取酵母RNA的原理和方法。 2.掌握紫外分光光度计的使用。 3.了解和掌握紫外吸收法测定RNA浓度的原理。 二、实验原理 酵母核酸中RNA含量较多,DNA则少于2%。RNA可溶于碱性溶液,当碱被中和后,可加乙醇使其沉淀,由此即可得到RNA制品。但是用碱液提取的RNA有不同的降解。 核酸及其衍生物,核苷酸、核苷、嘌呤和嘧啶有吸收紫外光的性质,其吸收高峰在260nm 左右,且一定浓度范围内其浓度与吸光度成正比(浓度为5μg/ml—45μg/ml吸光度与浓度成正比),利用此性质,可用RNA标准液绘制RNA吸光标准曲线(标准曲线的斜率为0.022-0.024左右),测定样品RNA浓度。由于蛋白质在280nm的光吸收,对核酸测定有一定的干扰作用,最大吸收峰在280nm处,原因是蛋白质组成中常含有酪氨酸和色氨酸等芳香族氨基酸。所以如果有蛋白质的干扰必须得先测260nm处的吸光度,再测280nm处的吸光度,通过计算消除其对核酸的影响。 三、实验器材 干酵母粉 电子天平 量筒 容量瓶100ml 磁力搅拌器 试管 100℃水浴锅pH试纸(pH1-14)烧杯 离心机 722型分光光度计锥形瓶 离心管 四、实验试剂 0.2%氢氧化钠溶液95%乙醇 无水乙醚酸性乙醇(5ml浓Hcl加入到500ml95%乙醇中混匀)RNA标准蛋白溶液(200μg/ml)

1.RNA的提取 (1)称取4g干酵母粉,放入200ml锥形瓶中,加入40ml0.2%的氢氧化钠溶液混匀,在沸水浴中煮沸30min中并冷却; (2)冷却后,把液体倒入离心管中,在4000r/min的条件下离心15min; (3)离心后留上清液加入95%的酸性乙醇40ml,边加边搅拌,静置5min左右,再4000r/min的条件下离心5min; (4)离心后保留沉淀,用20ml 95%乙醇分两次洗涤沉淀,每次洗后在3000r/min的条件下离心5min; (5)离心后的沉淀再用无水乙醇10ml洗涤两次,每次用3000r/min离心5min; (6)离心结束后,收集沉淀与滤纸上,称重备用。 2.RNA样液的配制 (1)取粗RNA0.2-0.25g与烧杯中,加入5mlNaOH溶液,搅拌,溶解,调成糊状。 (2)再加入蒸馏水40ml,搅拌混匀,调PH至7.0后,放入100ml容量瓶中定容。 (3)再分3-4次分别取2ml定容后溶液于100ml容量瓶中继续定容待测,并且把容量瓶依次编号为A、B、C。 3.RNA标准曲线的绘制 (1)取洁净的试管,依次标号为1-10、A、B、C后,按照下表分别往各试管中加所需液体,并用磁力搅拌器混匀。 (2)混匀后以0号试管为参比液,在260nm下测各试管的吸光度A,并根据0-9试管的吸光值绘制出RNA标准曲线,并最终得出样品的浓度。 六、注意事项 1.离心机的使用,使用前一定要将两离心液(包括外壳)在天平上调平,对称放置在离 心机上,防止力臂不对称而损坏离心机。 2.紫外分光光度计的使用,要先预热10分钟,往比色皿中到液体只需到三分之二即可, 防止液体溢出腐蚀仪器,爱护仪器。

山东大学数据库实验答案2—8

山东大学数据库实验答案2—8 CREATE TABLE test2_01 AS SELECT SID, NAME FROM pub.STUDENT WHERE sid NOT IN ( SELECT sid FROM pub.STUDENT_COURSE ) CREATE TABLE test2_02 AS SELECT SID, NAME FROM PUB.STUDENT WHERE SID IN ( SELECT DISTINCT SID FROM PUB.STUDENT_COURSE WHERE CID IN ( SELECT CID FROM PUB.STUDENT_COURSE WHERE SID='200900130417' ) ) CREATE TABLE test2_03 AS

select SID,NAME from PUB.STUDENT where SID in ( select distinct SID from PUB.STUDENT_COURSE where CID in (select CID from PUB.COURSE where FCID='300002') ) CREATE TABLE test2_04 AS select SID,NAME from PUB.STUDENT where SID in ( select distinct SID from PUB.STUDENT_COURSE where CID in (select CID from PUB.COURSE where NAME='操作系统') intersect select distinct SID from PUB.STUDENT_COURSE where CID in (select CID from PUB.COURSE where NAME='数据结构') ) create table test2_05 as with valid_stu(sid,name) as ( select SID,NAME from PUB.STUDENT where AGE=20 and SID in (select SID from PUB.STUDENT_COURSE) ) select sid,name as name,ROUND(avg(score)) as avg_score,sum(score) as sum_score from PUB.STUDENT_COURSE natural join valid_stu where SID in (select SID from valid_stu) group by SID,NAME create table test2_06 as

嵌入式实验报告

课题:按键控制流水灯 专业:物联网工程 班级:01 学号:14154951 姓名:李政 指导教师:何建军 设计日期:2016.12.21—2016.12.30 成绩: 重庆大学城市科技学院电气学院

嵌入式设计报告 一、设计目的作用 通过编程实现对LED灯项目的改变,加深对stm32芯片的理解,对keil软件的熟悉掌握,工程的搭建以及头文件的使用。掌握外部设备的接入以及外部中断的实现。 二、设计要求 用四个按键控制8个流水灯的流水显示 (1).按键A按下时候流水灯按从左往右的流水显示。 (2).按键B按下时候流水灯按从右往左的流水显示。 (3).按键C按下时候流水灯按中心开花的方式流水显示:从中间向两边流水显示 (4).按键D按下时候流水灯按从两边到中心移动的方式流水显示。(5).(选做)引入时针中断: 默认的流水方式: (1)对时钟中断的次数进行计数 (2)当时钟中断的次数除以4的余数为0时:按从左到右的顺序流水显示(3)当时钟中断的次数除以4的余数为1时:按从右到左的顺序流水显示(4)当时钟中断的次数除以4的余数为2时:按中心开花的方式流水显示(5)当时钟中断的次数除以4的余数为3时:从两边到中心移动的方式流水显示。 系统启动时按默认的流水方式显示,当按下A、B、C、D四个按键时,按指定的方式流水显示,当按下按键E时恢复按默认的流水方式。 三、设计的具体实现 1、设计原理 这次使用的是stm32f103系列芯片,芯片引脚如下图

Stm32内部资源

GPIO原理及应用: 有7个16位并行I/O口:PA、PB、PC、PD、 PE、PF、PG 都是复用的,最少有2种 功能,最多有6种功能

山东大学操作系统实验报告4进程同步实验

山东大学操作系统实验报告4进程同步实验

计算机科学与技术学院实验报告 实验题目:实验四、进程同步实验学号: 日期:20120409 班级:计基地12 姓名: 实验目的: 加深对并发协作进程同步与互斥概念的理解,观察和体验并发进程同步与互斥 操作的效果,分析与研究经典进程同步与互斥问题的实际解决方案。了解 Linux 系统中 IPC 进程同步工具的用法,练习并发协作进程的同步与互斥操作的编程与调试技术。 实验内容: 抽烟者问题。假设一个系统中有三个抽烟者进程,每个抽烟者不断地卷烟并抽烟。抽烟者卷起并抽掉一颗烟需要有三种材料:烟草、纸和胶水。一个抽烟者有烟草,一个有纸,另一个有胶水。系统中还有两个供应者进程,它们无限地供应所有三种材料,但每次仅轮流提供三种材料中的两种。得到缺失的两种材料的抽烟者在卷起并抽掉一颗烟后会发信号通知供应者,让它继续提供另外的两种材料。这一过程重复进行。请用以上介绍的 IPC 同步机制编程,实现该问题要求的功能。 硬件环境: 处理器:Intel? Core?i3-2350M CPU @ 2.30GHz ×4 图形:Intel? Sandybridge Mobile x86/MMX/SSE2 内存:4G 操作系统:32位 磁盘:20.1 GB 软件环境: ubuntu13.04 实验步骤: (1)新建定义了producer和consumer共用的IPC函数原型和变量的ipc.h文件。

(2)新建ipc.c文件,编写producer和consumer 共用的IPC的具体相应函数。 (3)新建Producer文件,首先定义producer 的一些行为,利用系统调用,建立共享内存区域,设定其长度并获取共享内存的首地址。然后设定生产者互斥与同步的信号灯,并为他们设置相应的初值。当有生产者进程在运行而其他生产者请求时,相应的信号灯就会阻止他,当共享内存区域已满时,信号等也会提示生产者不能再往共享内存中放入内容。 (4)新建Consumer文件,定义consumer的一些行为,利用系统调用来创建共享内存区域,并设定他的长度并获取共享内存的首地址。然后设定消费者互斥与同步的信号灯,并为他们设置相应的初值。当有消费进程在运行而其他消费者请求时,相应的信号灯就会阻止它,当共享内存区域已空时,信号等也会提示生产者不能再从共享内存中取出相应的内容。 运行的消费者应该与相应的生产者对应起来,只有这样运行结果才会正确。

山东大学《数据库系统》上机实验答案 详细整理 2013最新版

数据库实验(一) 熟悉环境、建立/删除表、插入数据 Drop table 表名 update dbtest set test=1 select * from dbscore 1.教师信息(教师编号、姓名、性别、年龄、院系名称) test1_teacher:tid char 6 not null、name varchar 10 not null、sex char 2、age int、dname varchar 10。 根据教师名称建立一个索引。 1、create table test1_teacher( tid char(6) primary key, name varchar(10) not null, sex char(2), age int, dname varchar(10) ) 2.学生信息(学生编号、姓名、性别、年龄、出生日期、院系名称、班级)test1_student:sid char 12 not null、name varchar 10 not null、sex char 2、age int、birthday date(oracle的date类型是包含时间信息的,时间信息全部为零)、dname varchar 10、class varchar(10)。 根据姓名建立一个索引。 2、create table test1_student(

sid char(12) primary key, name varchar(10) not null, sex char(2), age int, birthday date, dname varchar(10), class varchar(10) ) 3.课程信息(课程编号、课程名称、先行课编号、学分) test1_course:cid char 6 not null、name varchar 10 not null、fcid char 6、credit numeric 2,1(其中2代表总长度,1代表小数点后面长度)。 根据课程名建立一个索引。 3、create table test1_course( cid char(6) primary key, name varchar(10) not null, fcid char(6), credit numeric(2,1) ) 4.学生选课信息(学号、课程号、成绩、教师编号) test1_student_course:sid char 12 not null、cid char 6 not null、 score numeric 5,1(其中5代表总长度,1代表小数点后面长度)、tid char 6。 4、 create table test1_student_course( sid char(12) , cid char(6) , score numeric(5,1), tid char(6), primary key(sid,cid),

嵌入式实验报告

嵌入式技术 实验报告 系别:计算机与科学技术系 班级:计12-1班 姓名:刘杰 学号:12101020128 总成绩: 评语: 日期:

2.在弹出的对话框中依次选择“cedevice emulator emulator kdstub”。 3.选择“Build OS”菜单的“sysgen”开始构建平台。 1.1.4连接,下载和运行平台 1.选择“Target”菜单下的“Connection option”菜单项。 2.在新的对话框中,配置连接关系 3.选择“Target”菜单下的“attach”菜单项,开始下载。 ?实验结果 操作系统定制成功,能正常运行。 ?结果截图 ?问题总结 由于对实验平台了解不够,致使操作过程中添加和删除组件时不知道该如何下手,影响整个实验进度。 实验1.2: 1.打开Platform Builder,并且打开实验1的工程,在实验1的工程基础上做本实验。

进程显示 IE信息查看

报文监测 实验1.3使用Platform Builder开发应用程序 简单实验步骤 1.打开Platform Builder。 2.选择“File”菜单下的“Open Workspace…”,然后打开实验1中创建的平台,本实验要基于 上面的实验的基础上做。 3.选择“File”菜单下的“New Project or File…”,打开“New Project or File”对话框。 4.在“Projects”选项页中选择“WCE Application”;在“Project Name”中输入项目的名字,例 如“MyApp”。 5.在“New Project Wizard – step 1 of 1”中选择“A typical Hello World Application”,点击“Finish” 按钮。 6.选择“Build”菜单中的“Build MyApp.exe”来编译应用程序。

山东大学数据库习题及答案

山东大学数据库系统课程试卷 A卷参考答案 一、简答(每小题5分,共25分) 1、如何理解空值(NULL),空值在参与运算时有哪些特点? 答:空值null表示“不知道”或者“不存在”的含义。不是指“0”,也不是“false”,也不是’’。 Null参与的关系运算和算术运算结果均为null。 评分细则:Null的含义3分,Null参与的运算特点2分 2、简述事务的概念及其相关特性。 答:事物是访问并可能更新各种数据项的一个程序执行单元。事物具有ACID四种特性。 A指原子性:事物的所有操作在数据库中要么全部正确反映出来,要么全部不反映。 C指一致性:事物的隔离执行保持数据库的一致性。 I指隔离性:尽管多个事物可以并发执行,但系统必须保证每一个事物都感觉不到系统中有其他事物在并发地执行。 D指持久性:一个事物成功完成后,它对数据库的改变必须是永久的。 评分细则:事物概念2分,事物的性质3分。 3、关系中的元组有先后顺序吗?为什么? 答:没有。关系是元组的集合,而集合中的元素是没有顺序的,因此关系中的元组也就没有先后顺序。 评分细则:第一问回答“有”,零分;第一问回答“没有”,2分,说明原因3分 4、设关系模式R(A,B,C)上有一个多值依赖A B。如果已知R的当前关系中存 在着三个元组(a,b1,c1)、(a,b2,c2)、(a,b3,c3),那么这个关系中至少还应该存在哪些 元组? 答:(a b1 c2),(a b2 c1),(a b1 c3),(a b3 c1),(a b2 c3),(a b3 c2) 评分细则:每一个元组1分。 5、简述时间戳排序协议。 答:时间戳:对于系统中的每一个事务Ti,我们把一个唯一的固定的时间戳和它联系起来,记为TS(Ti)。每个数据项Q需要与两个时间戳相关联:W-timestamp(Q)表示成功执行write(Q)的所有失去的最大时间戳;R-timestamp(Q)表示成功执行read(Q)的所有事务的最大的时间戳。

山东大学信息安全实验报告

山东大学软件学院 信息安全导论课程实验报告 学号:201300301385 姓名:周强班级: 2013级八班 实验题目:缓冲区溢出实验 实验学时:日期: 实验目的: (1)了解缓冲区溢出的原理 (2)利用缓冲区溢出现象构造攻击场景 (3)进一步思考如何防范基于缓冲区溢出的攻击 硬件环境: 软件环境: WindowsXP操作系统 VS2008 实验步骤与内容: (1)了解缓冲区溢出的原理 缓冲区溢出简单来说就是计算机对接收的输入数据没有进行有效的检测(理情况下是程序检测数据长度并不允许输入超过缓冲区长度的字符),向缓冲区内填充数据时超过了缓冲区本身的容量,而导致数据溢出到被分配空间之外的内存空间,使得溢出的数据覆盖了其他内存空间的数据。 看一个代码实例,程序如下: void function(char *str) { char buffer[16]; strcpy(buffer,str); } 上面的strcpy()将直接把str中的内容copy到buffer中。这样只要str的长度大于16,就会造成buffer的溢出,使程序运行出错。

(2)利用缓冲区溢出现象构造攻击场景 首先打开Microsoft Visual C++,新建工程和cpp文件,复制实验指导书的代码进行编译连接: 单击运行按钮,然后第1次输入“zhouqianga”,第2次输入2个“ga”,即可看到输出“correct”。

按F10开始进行逐步调试: 当第一次执行gets()函数之前,内存情况如下图所示

在最新的版本中gets被认为是不安全的,gets从标准输入设备读字符串函数。可以无限读取,不会判断上限,以回车结束读取,所以程序员应该确保buffer的空间足够大,以便在执行读操作时不发生溢出。现在都被要求改为get_s。来防止溢出。 如下图所示。 (3)学习例子程序2:数据被执行 在xp系统下,直接运行Exploit-1.1.exe,如下图所示:

嵌入式系统实验报告

实验报告 课程名称:嵌入式系统 学院:信息工程 专业:电子信息工程 班级: 学生姓名: 学号: 指导教师: 开课时间:学年第一学期

实验名称: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 的初始化。 (4)新建一个led.h文件,保存在 LED 文件夹下,在led.h中输入相应的代码。 3.下载验证 使用 flymcu 下载(也可以通过JLINK等仿真器下载),如图 1.2所示: 图1.2 运行结果如图1.3所示:

金属再结晶组织模拟及实验对比研究

第29卷第3期重庆交通大学学报(自然科学版) V o.l 29 No .3 2010年6月 J OURNAL OF C HONGQ I NG JI AOTONG UN I VER SITY (NATURAL SC IE N CE)Jun .2010 金属再结晶组织模拟及实验对比研究 收稿日期:2010-02-05;修订日期:2010-3-20 基金项目:重庆市自然科学基金计划项目(C STC,2007BB4436);重庆市教育委员会科学技术研究项目(K J 080407)作者简介:张继祥(1971-),男,山东单县人,副教授,博士后,主要从事汽车新材料成形技术研究。Ema i :l ji x i angz h ang @163.co m 。 张继祥1 ,文 辉1 ,刘运腾 2 (1.重庆交通大学机电与汽车工程学院,重庆400074;2.山东省科学院新材料研究所,山东济南250014)摘要:金属再结晶过程计算机组织模拟,可以仿真实验中观测不到的组织演变细节,得到定量的特征参数,预报退 火后的材料性能,指导热处理工艺设计。构建一个新的静态再结晶M C Potts 模拟模型,并以1060铝合金为研究对象,进行再结晶模拟与实验对比研究。结果表明,1060铝合金表现出明显的再结晶特征,得到了近似等轴晶组织;新模型模拟的再结晶形核位置、组织形貌与实验结果一致,组织演变过程也与实验结果基本一致,但模拟的再结晶等轴晶与实验近似等轴晶不完全一致,模拟的再结晶速度也低于实验结果。关 键 词:再结晶;模拟;M onte Car l o 中图分类号:TG111O189 文献标志码:A 文章编号:1674-0696(2010)03-0493-04 Co m parative St udy ofM etal Re crystallization M icrostructure by Si m ulation and Experi m ent Z HANG Ji x iang 1 ,W EN H u i 1 ,L I U Yun teng 2 (1.Schoo l ofM echa tron i cs &A uto m otive Eng i neer i ng ,Chongqi ng J i aotong U n i versity ,Chongq i ng 400074,Ch i na ; 2.N e w M aterial R esearch Institute o f Shandong Sc i ences A cade m y ,Ji nan 250014,Shandong ,China) Abstrac t :T he si m ulati on o fm eta l re crystalliza ti on by co m puter cou l d s i m u l a te t he deta ils of m icro structure evo luti on wh i ch can t be observed i n exper i m ent .M ean w hil e ,the quan tita ti ve character i stic para m eters are obta i ned ,and t he properties o f m ater i a l after annea li ng are also f o recasted ,wh ich can gu i de the hea t treat ment process desi gn .A new M C Po tts si m u l a ti on m ode l is constructed ,and i s used to si m ulate the sta tic re cry sta llizati on behav i ours of 1060a l um i nu m all oy .W ith the si m u l ation ,an expe ri m en tal study i s also ca rried out fo r comparison .T he resu lts show that 1060al um inu m a lloy presents si g n ifican t re cry sta llizati on character istics ,and an approx i m ate l y i som etr i c c rysta l o rganization is obta i ned i n the re crysta lli zati on exper i m ent .The s i m u l ation resu lts o f re cry sta llizati on nuc l eation l o ca ti on and m icrostructure mo rpho l ogy got by th i s m ode l are consi stent w ith exper i m enta l res u lts ,and the evo luti on process o f crystal structure i s also consistent w ith exper i m enta l results genera lly ;how eve r ,t he si m ulated iso m etric crystal organ i zati on is not exactl y cons i sten tw i th approx i m ate l y i so m etric crysta l organ izati on by experi m ent ,and the ve l oc ity o f re cry sta llizati on by si m u lati on is a l so lo w er than tha t by ex peri m ent .K ey word s :re crystalliza ti on ;si m ulati on ;M onte C arlo 金属再结晶过程计算机组织模拟,可以仿真实验中观测不到的组织演变细节,得到定量的特征参数,预报退火后的材料性能,指导热处理工艺设计,因此,再结晶计算机组织模拟具有重要的理论和应用价值。目前组织模拟模型主要有M onte Carl o Po tts 模型[1-3]、Cellular Auto m ata 模型[4-5] 、几何模型[6]、网格模型[7]等,其中,M on te C arl o Po tts 模型(以下简称M C Potts 模型)是一种离散的、以概率统计为基础的图像模拟模型,可以模拟再结晶形核、动态再结晶、静态再结晶等所有特征,可以数值计算再 结晶所有参数,可以通过计算机图形技术,方便地仿 真再结晶组织及其演变过程,因此,MC Potts 模型逐渐成为再结晶组织模拟的首选模型。近10a 来,该模型得到充分地重视,美国橡树岭国家实验室、森地亚国家实验室、德国Raabe 研究组等都对该模型的建立和发展做了大量工作,国内山东大学、重庆交通大学、中科院金属所等也对该模型进行了深入的研究,并应用于高纯铝、纯铜、I F 钢的再结晶组织模拟[8-11]。本文以冷加工1060铝合金为研究对象,采用改进的MC Potts 模型,进行静态再结晶模拟和

山东大学-中间件实验报告

山东大学软件学院 中间件技术课程实验报告

onResize(); }, error : function(e) { alert('初始化数据错误!'); } }); }); 并从bootstrap上找一些已经写好的布局,作为参考。加入到网页的界面中。 一、数据库操作的封装 1、AutoCreateDB——自动创建数据库 (1)可以根据下列query的结果判断数据库是否存在: Object obj = dao.QueryOnly("SELECT COUNT(*) FROM INFORMATION_SCHEMA.SCHEMATA WHERE SCHEMA_NAME=?",new Object[] { DATABASE }); 不存在则创建数据库,则执行executeCreate方法。 (2)AutoCreateDB自动创建数据库的表 遍历表,对于数据库中的每一个表,都执行“检测、若不存在则创建”操作,可以根据该query的结果判断数据库的表是否存在,不存在则创建数据库表,则执行executeCreate方法。 2、JdbcDao数据库相关操作 (1)在JdbcDao 中定义应用与数据库建立连接,其相关参数从 config.properties中获取: /**获取Connection连接*/ public Connection getConnection(){ Connection conn = null; System.out.println(JDBC_URL); System.out.println(USER_NAME); System.out.println(USER_PWD); try { conn = DriverManager.getConnection(JDBC_URL,USER_NAME,USER_PWD);

山大网络教育《数据结构》(-C-卷)

山大网络教育《数据结构》(-C-卷)

《数据结构》模拟卷 一、单项选择题 1.数据结构是()。 A.一种数据类型 B.数据的存储结构 C.一组性质相同的数据元素的集合 D.相互之间存在一种或多种特定关系的数据元素的集合 2.算法分析的目的是( B )。 A.辨别数据结构的合理性 B.评价算法的效率 C.研究算法中输入与输出的关系 D.鉴别算法的可读性 3.在线性表的下列运算中,不.改变数据元素之间结构关系的运算是( D )。 A.插入B.删除 C.排序D.定位 4.若进栈序列为1,2,3,4,5,6,且进栈和出栈可以穿插进行,则可能出现的出栈序列为( B )。 A.3,2,6,1,4,5 B.3,4,2,1,6,5

C.1,2,5,3,4,6 D.5,6,4,2,3,1 5.设串sl=″Data Structures with Java″,s2=″it″,则子串定位函数index(s1,s2)的值为( D )。 A.15 B.16 C.17 D.18 6.二维数组A[8][9]按行优先顺序存储,若数组元素A[2][3]的存储地址为1087,A[4][7]的存储地址为1153,则数组元素A[6][7]的存储地址为( A )。 A.1207 B.1209 C.1211 D.1213 7.在按层次遍历二叉树的算法中,需要借助的辅助数据结构是( A )。 A.队列B.栈 C.线性表D.有序表 8.在任意一棵二叉树的前序序列和后序序列中,各叶子之间的相对次序关系( B )。A.不一定相同B.都相同 C.都不相同D.互为逆序 9.若采用孩子兄弟链表作为树的存储结构,则树的后序遍历应采用二叉树的( C )。

嵌入式实验报告

目录 实验一跑马灯实验 (1) 实验二按键输入实验 (3) 实验三串口实验 (5) 实验四外部中断实验 (8) 实验五独立看门狗实验 (11) 实验七定时器中断实验 (13) 实验十三ADC实验 (15) 实验十五DMA实验 (17) 实验十六I2C实验 (21) 实验十七SPI实验 (24) 实验二十一红外遥控实验 (27) 实验二十二DS18B20实验 (30)

实验一跑马灯实验 一.实验简介 我的第一个实验,跑马灯实验。 二.实验目的 掌握STM32开发环境,掌握从无到有的构建工程。 三.实验内容 熟悉MDK KEIL开发环境,构建基于固件库的工程,编写代码实现跑马灯工程。通过ISP 下载代码到实验板,查看运行结果。使用JLINK下载代码到目标板,查看运行结果,使用JLINK在线调试。 四.实验设备 硬件部分:PC计算机(宿主机)、亮点STM32实验板、JLINK。 软件部分:PC机WINDOWS系统、MDK KEIL软件、ISP软件。 五.实验步骤 1.熟悉MDK KEIL开发环境 2.熟悉串口编程软件ISP 3.查看固件库结构和文件 4.建立工程目录,复制库文件 5.建立和配置工程

6.编写代码 7.编译代码 8.使用ISP下载到实验板 9.测试运行结果 10.使用JLINK下载到实验板 11.单步调试 12.记录实验过程,撰写实验报告 六.实验结果及测试 源代码: 两个灯LED0与LED1实现交替闪烁的类跑马灯效果,每300ms闪烁一次。七.实验总结 通过本次次实验我了解了STM32开发板的基本使用,初次接触这个开发板和MDK KEILC 软件,对软件操作不太了解,通过这次实验了解并熟练地使用MDK KEIL软件,用这个软件来编程和完成一些功能的实现。作为STM32 的入门第一个例子,详细介绍了STM32 的IO口操作,同时巩固了前面的学习,并进一步介绍了MDK的软件仿真功能。

第06章_MATLAB数值计算_例题源程序汇总

第6章 MATLAB 数值计算 例6.1 求矩阵A 的每行及每列的最大和最小元素,并求整个矩阵的最大和最小元素。 1356 78256323578255631 01-???? -? ?=???? -??A A=[13,-56,78;25,63,-235;78,25,563;1,0,-1]; max(A,[],2) %求每行最大元素 min(A,[],2) %求每行最小元素 max(A) %求每列最大元素 min(A) %求每列最小元素 max(max(A)) %求整个矩阵的最大元素。也可使用命令:max(A(:)) min(min(A)) %求整个矩阵的最小元素。也可使用命令:min(A(:)) 例6.2 求矩阵A 的每行元素的乘积和全部元素的乘积。 A=[1,2,3,4;5,6,7,8;9,10,11,12]; S=prod(A,2) prod(S) %求A 的全部元素的乘积。也可以使用命令prod(A(:)) 例6.3 求向量X =(1!,2!,3!,…,10!)。 X=cumprod(1:10) 例6.4 对二维矩阵x ,从不同维方向求出其标准方差。 x=[4,5,6;1,4,8] %产生一个二维矩阵x y1=std(x,0,1) y2=std(x,1,1) y3=std(x,0,2) y4=std(x,1,2) 例6.5 生成满足正态分布的10000×5随机矩阵,然后求各列元素的均值和标准方差,再求这5列随机数据的相关系数矩阵。 X=randn(10000,5); M=mean(X) D=std(X) R=corrcoef(X)

例6.6 对下列矩阵做各种排序。 185412613713-?? ??=?? ??-?? A A=[1,-8,5;4,12,6;13,7,-13]; sort(A) %对A 的每列按升序排序 -sort(-A,2) %对A 的每行按降序排序 [X,I]=sort(A) %对A 按列排序,并将每个元素所在行号送矩阵I 例6.7 给出概率积分 2 (d x x f x x -? e 的数据表如表6.1所示,用不同的插值方法计算f (0.472)。 x=0.46:0.01:0.49; %给出x ,f(x) f=[0.4846555,0.4937542,0.5027498,0.5116683]; format long interp1(x,f,0.472) %用默认方法,即线性插值方法计算f(x) interp1(x,f,0.472,'nearest') %用最近点插值方法计算f(x) interp1(x,f,0.472,'spline') %用3次样条插值方法计算f(x) interp1(x,f,0.472,'cubic') %用3次多项式插值方法计算f(x) format short 例6.8 某检测参数f 随时间t 的采样结果如表6.2,用数据插值法计算t =2,7,12,17,22,17,32,37,42,47,52,57时的f 值。 T=0:5:65; X=2:5:57;

山东大学软件测试实验报告

实验一。黑盒测试 一、等价类划分 电话号码问题某城市电话号码由三部分组成。它们的名称和内容分别是: (1)地区码:空白或三位数字; (2)前缀:非'0'或'1'的三位数字; (3)后缀:4 位数字。 假定被测程序能接受一切符合上述规定的电话号码,拒绝所有不符合规定的电话号码。根据该程序的规格说明,作等价类的划分,并设计测试方案。 根据题目,分别将地区码、前缀、后缀进行分类,分析结果如下: 输入有效等价类编号无效等价类编号 地区码空白 1 包含其他字符 3 三位数字 2 少于三位 4 多于三位 5 前缀非0或 非1的三位数6 包含其他字符8 包含0的三位数9 包含1的三位数10 少于三位数11 多于三位数12 后缀四位数字7 包含其他字符13 少于四位数14 多于四位数15 根据上图的分析,可的测试用例 测试数据预期结果覆盖类地区码前缀后缀 空白555 4344 接受(有效)1、6、7 232545 4343 接受(有效)2、6、7 A23 322 4343 拒绝(无效) 3 21322 4343 拒绝(无效) 4 2323322 4343 拒绝(无效) 5 232 32A4343 拒绝(无效)8 232 208 4343 拒绝(无效)9 232 1114343 拒绝(无效)10

232 32 4343 拒绝(无效)11 232 322224343 拒绝(无效)12 232 322 4AS2 拒绝(无效)13 232 322 434拒绝(无效)14 232 322 434311拒绝(无效)15 三角形问题根据下面给出的规格说明,利用等价类划分的方法,给出足够的测试用例。一个程序读入三个整数。把此三个数值看成是一个三角形的三个边。这个程序要打印出信息,说明不是三角形、三角形是三边不等的、是等腰的、还是等边的。 分析题目中给出和隐含的对输入条件的要求: (1)整数(2)三个数(3)非零数(4)正数 (5)两边之和大于第三边(6)等腰(7)等边 如果 a 、 b 、 c 满足条件( 1 ) ~ ( 4 ),则输出下列四种情况之一: 1)如果不满足条件(5),则程序输出为 " 非三角形 " 。 2)如果三条边相等即满足条件(7),则程序输出为 " 等边三角形 " 。 3)如果只有两条边相等、即满足条件(6),则程序输出为 " 等腰三角形 " 。 4)如果三条边都不相等,则程序输出为 " 一般三角形 " 。 列出等价类表并编号

山东大学操作系统实验二

软件学院操作系统实验报告 实验题目: 实验二、线程和进程/线程管道通信实验 学号:201100300124 日期:2013年04月19日 班级:5班姓名:韩俊晓 Email:hanjunxiao188@https://www.360docs.net/doc/d614190849.html, 实验目的: 通过Linux 系统中线程和管道通信机制的实验,加深对于线程控制和管道通信概念的理解,观察和体验并发进/线程间的通信和协作的效果,练习利用无名管道进行进/线程间通信的编程和调试技术。 实验要求: 设有二元函数f(x,y) = f(x) + f(y) 其中:f(x) = f(x-1) * x(x >1) f(x)=1(x=1) f(y) = f(y-1) + f(y-2)(y> 2) f(y)=1(y=1,2) 请编程建立3个并发协作进程(或线程),它们分别完成f(x,y)、f(x)、f(y) 其中由父进程(或主线程)完成:f(x,y) = f(x) + f(y) 由子进程1(或线程1)完成:f(x) = f(x-1) * x(x >1) f(x)=1(x=1)

由子进程2(或线程2)完成:f(y) = f(y-1) + f(y-2)(y> 2) f(y)=1(y=1,2) 硬件环境: 实验室计算机 软件环境: Ubuntu08.4-Linux操作系统 BASH_VERSION='3.2.33(1)-release gcc version 4.1.2 gedit 2.18.2 OpenOffice 2.3 实验步骤: 1.实验说明: 1)与线程创建、执行有关的系统调用说明 线程是在共享内存中并发执行的多道执行路径,它们共享一个进程的资源,如进程程序段、文件描述符和信号等,但有各自的执行路径和堆栈。线程的创建无需像进程那样重新申请系统资源,线程在上下文切换时也无需像进程那样更换内存映像。多线程的并发执行即避免了多进程并发的上下文切换的开销又可以提高并发处理的效率。 Linux 利用了特有的内核函数__clone 实现了一个叫phread 的线程库,__clone是fork 函数的替代函数,通过更多的控制父子进程共享哪些资源而实现了线程。Pthread 是一个标准化模型,用它可把一个程序分成一组能够并发执行的多个任务。phread 线程库是POSIX 线程标

嵌入式综合实验报告

《嵌入式系统综合实验》报告 学号: 姓名: 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 二、产品方案设计(产品设计方案) 1 2 1 )处理器选择 本系统选用基于ARMCortex-M3内核的STM32F103RB嵌入式微控制器作为处理器。 ①选用原因 A 技术因素 工作频率: 最高72MHz。 内部和外部存储器: 128K字节的闪存程序存储器,用于存放程序及数据;多达20K字节的内置SRAM,CPU能以0等待周期访问(读/写)。

相关文档
最新文档