嵌入式实验一实验报告(共11篇)
1.嵌入式实验一实验报告 篇一
西安邮电大学
嵌入式处理器及应用实验报告书
学院名称学生姓名专业名称班
级
: : : :
实验一
ADS 1.2 集成开发环境练习
一、实验目的:
了解ADS 1.2 集成开发环境的使用方法。
二、实验内容:
1.建立一个新的工程。
2.建立一个C源文件,并添加到工程中。3.设置文本编辑器支持中文。4.编译链接工程。5.调试工程。
三、实验步骤:
1.启动ADS 1.2 IDE集成开发环境,选择File—New,使用ARM Executable Image工程模板建立一个工程,工程名称为ADS。
2.选择File—New建立一个新的文件TEST1.S,设置直接添加到项目中,输入程序代码。3.由于ADS安装后默认字体是Courier New,对于中文支持不完善,因此建议修改字体。选择Edit—Perferences,在Font选项设置字体为Fixedsys,Script为CHINESE_GB2312。建议在Tab Inserts Spaces前打勾,使Tab键插入的是多个空格。
4.选择Edit—DebugRel Settings,在DebugRel Settings对话框的左边选择ARM Linker项,然后在Output页设置连接地址ROBase 为0x40000000,RW Base 为0x40003000,在Options页设置调试入口地址Image entry point 为 0x40000000。5.选择Project—Make,将编译链接整个工程。
6.选择Project—Debug,或单击快捷键F5,IDE环境就会启动AXD调试软件。
四、程序清单:
AREA
Example1,CODE,READONLY
;声明代码段Example1
ENTRY
;标识程序入口
CODE32
;声明32 位ARM 指令
START
MOV
R0,#15
;设置参数
MOV
R1,#8
ADDS
R0,R0,R1
;R0 = R0 + R1
B
START
END
五、心得体会:
通过本次实验,我熟悉了ADS 1.2 集成开发环境,学会了怎样建立工程,在工程里面建立文件和进行最基本的运行操作。我感触最深的是每次软件的开始使用是最关键的,想要掌握一个软件的使用必须进行多次的练习,多练几遍自然而然的会熟练的操作。
实验二
存储器访问指令练习实验
一、实验目的:
1.了解ADS 1.2 集成开发环境及ARMulator软件仿真。
2.掌握ARM7TDMI汇编指令的用法,并能编写简单的汇编程序。3.掌握指令的条件执行以及使用LDR/STR指令完成存储器的访问。
二、实验内容:
1.使用LDR指令读取0x40003100上的数据,将数据加1,若结果小于10,则使用STR指令把结果回写原地址;若结果大于或等于10,则把0写回原地址。
2.使用ADS 1.2软件仿真,单步、全速运行程序,设置断点,打开寄存器窗口(Processor Registers)监视R0和R1的值,打开存储器观察窗口(Memory)监视0x40003100上的值。
三、实验步骤:
1.启动ADS 1.2,使用ARM Executable Image工程模板建立一个工程Instruction2。2.建立汇编源文件TEST2.S,编写实验程序,然后添加到工程中。
3.设置工程链接地址ROBase 为0x40000000,RW Base 为0x40003000。设置调试入口地址Image entry point 为 0x40000000。
4.编译链接工程,选择Project —Debug,启动AXD进行软件仿真调试。
5.打开寄存器窗口(Processor Registers),选择Current 项监视R0和R1的值。打开存储器观察窗口(Memory)设置观察地址为0x40003100,显示方式Size为32Bit,监视0x40003100地址上的值。
四、程序清单:
COUNT
EQU
0x40003100
;定义一个变量,地址为0x40003100
AREA
Example2,CODE,READONLY;声明代码段Example2
ENTRY
;标识程序入口
CODE32
;声明32 位ARM 指令
START
LDR
R1,=COUNT
;R1 <= COUNT
MOV
R0,#0
;R0 <= 0
STR
R0,[R1]
;[R1] <= R0,即设置COUNT 为0
LOOP
LDR
R1,=COUNT
LDR
R0,[R1]
;R0 <= [R1]
ADD
R0,R0,#1
;R0 <= R0 + 1
CMP
R0,#10
;R0 与 10 比较,影响条件码标志
MOVHS
R0,#0
;若R0 大于等于 10,则此指令执行,R0 <= 0
STR
R0,[R1]
;[R1] <= R0,即保存COUNT
B
LOOP
END
五、心得体会:通过本次实验,让我更深一步的了解了ADS 1.2 集成开发环境及ARMulator软件仿真。通过对程序的解读,我掌握一些汇编指令的写法,同时也提高了我的读程序的能力。本次实验中我遇到了一个问题,在工程里加载文件的时候,没注意文件的后缀应为“。S”,结果造成文件加载失败。
实验三
数据处理指令练习实验
一、实验目的:
1.掌握ARM数据处理指令的使用方法。2.了解ARM指令灵活的第2个操作数。
二、实验内容:
1.使用MOV和MVN指令访问ARM通用寄存器。
2.使用ADD、SUB、AND、ORR、CMP和TST等指令完成数据加减运算及逻辑运算。
三、实验步骤:
1)启动ADS1.2,使用ARM Executable Image 工程模板建立一个工程Instruction3。2)建立汇编源文件TEST3.S ,编写实验程序,然后添加到工程中。
3)设置工程链接地址RO Base为0x40000000,RW Base为0x40003000。设置调试入口地址Image entry point 为 0x40000000。
4)编译链接工程,选择Project —Debug,启动AXD进行软件仿真调试。5)打开寄存器窗口(Processor Registers),选择Current 项监视各寄存器的值。6)单步运行程序,观察寄存器值的变化。
四、程序清单:
X
EQU
;定义X 的值为11
Y
EQU
;定义Y 的值为8
BIT23
EQU
(1<<23)
;定义BIT23 的值为0x00800000
AREA
Example3,CODE,READONLY
;声明代码段Example3
ENTRY
;标识程序入口
CODE32
;声明32 位ARM 指令
START
;使用MOV、ADD 指令实现:R8 = R3 = X + Y
MOV
R0,#X
;R0 <= X,X 的值必须是8 位图数据
MOV
R1,#Y
;R1 <= Y,Y 的值必须是8 位图数据
ADD
R3,R0,R1
;即是R3 = X + Y
MOV
R8,R3
;R8 <= R3
;使用MOV、MVN、SUB 指令实现:R5 = 0x5FFFFFF8y;
;
break;
;
case
7: x = key * y;
;
break;
;
default: x = 168;
SWITCH
CASE_0
CASE_2
CASE_3
CASE_5
CASE_7
;
break;;};设x 为R0,y 为R1,key 为R2(x、y、key 均为无符号整数)MOV
R1,#3
;初始化y 的值
MOV
R2,#2
;初始化key 的值
AND
R2,R2,#0x0F
;switch(key&0x0F)
CMP
R2,#0
;case 0:
CMPNE
R2,#2
;case 2:
MPNE
R2,#3
;case 3:
BNE
CASE_5
ADD
R0,R2,R1
;
x = key + y
B
SWITCH_END
;
break
CMP
R2,#5
;case 5:
BNE
CASE_7
SUB
R0,R2,R1
;
x = key1)*4 SvcStackSpace +(SVC_STACK_LEGTH1)*4 FiqStackSpace +(FIQ_STACK_LEGTH1)*4
UndtStackSpace +(UND_STACK_LEGTH-1)*4
;分配堆栈空间
AREA
MyStacks, DATA, NOINIT, ALIGN=2
UsrStackSpace
SPACE
USR_STACK_LEGTH * 4
;用户(系统)模式堆栈空间
SvcStackSpace
SPACE
SVC_STACK_LEGTH * 4
;管理模式堆栈空间
IrqStackSpace
SPACE
IRQ_STACK_LEGTH * 4
;中断模式堆栈空间
FiqStackSpace
SPACE
FIQ_STACK_LEGTH * 4
;快速中断模式堆栈空间
AbtStackSpace
SPACE
ABT_STACK_LEGTH * 4
;中止义模式堆栈空间
UndtStackSpace
SPACE
UND_STACK_LEGTH * 4
;未定义模式堆栈
END
五、心得体会:通过本次实验,我较好的掌握了如何使用MRS/MSR指令实现ARM微控制器工作模式的切换。较好的了解了在各个工作模式下的寄存器。
实验六
C语言程序实验
一、实验目的:
通过实验了解使用ADS 1.2编写C语言程序,并进行调试。
二、实验内容:
编写一个汇编程序文件和一个C程序文件。汇编程序的功能是初始化堆栈指针和初始化C程序的运行环境,然后跳转到C程序运行,这就是一个简单的启动程序。C程序使用加法运算来计算1+2+3+…+(N-1)+N的值(N为0时,结果为0;N为1时,结果为1)。
三、实验步骤:
1.启动ADS1.2,使用ARM Executable Image 工程模板建立一个工程ProgramC。2.建立汇编源文件Startup.s和Test.c,编写实验程序,然后添加到工程中。
3.设置工程链接地址RO Base为0x40000000,RW Base为0x40003000。设置调试入口地址Image entry point 为 0x40000000。
4.设置位于开始位置的起始代码段:选择Edit—DebugRel Settings,在DebugRel Settings对话框的左边选择ARM Linker项,然后在Layout页设置Object/Symbol为Startup.o,Section为Start。
5.编译链接工程,选择Project—Debug,启动AXD进行软件仿真调试。6.在Startup.s的“B Main”处设置断点,然后全速运行程序。
7.程序在断点处停止。单步运行程序,判断程序是否跳转到C程序中运行。
选择Processor Views—Variables打开变量观察窗口,观察全局变量的值,然后单步/全速运行程序,判断程序的运算结果是否正确。
四、程序清单:
#define uint8
unsigned char
#define uint32
unsigned int
#define N
uint32 sum;
// 使用加法运算来计算 1+2+3+...+(N-1)+N 的值。(N>0)
void Main(void)
{ uint32 i;
sum = 0;
for(i=0;i<=N;i++)
{ sum += i;
}
while(1);
}
程序清单3.9
简单的起动代码
;起动文件。初始化 C 程序的运行环境,然后进入C 程序代码。
IMPORT
|Image$$RO$$Limit|
IMPORT
|Image$$RW$$Base|
IMPORT
|Image$$ZI$$Base|
IMPORT
|Image$$ZI$$Limit|
IMPORT
Main
;声明C 程序中的Main()函数
AREA
Start,CODE,READONLY
;声明代码段Start
ENTRY
;标识程序入口
CODE32
;声明32 位ARM 指令
Reset
LDR
SP,=0x40003F00
;初始化C 程序的运行环境
LDR
R0,=|Image$$RO$$Limit|
LDR
R1,=|Image$$RW$$Base|
LDR
R3,=|Image$$ZI$$Base|
CMP
R0,R1
BEQ
LOOP1
LOOP0
CMP
R1,R3
LDRCC
R2,[R0],#4
STRCC
R2,[R1],#4
BCC
LOOP0
LOOP1
LDR
R1,=|Image$$ZI$$Limit|
MOV
R2,#0
LOOP2
CMP
R3,R1
STRCC
R2,[R3],#4
BCC
LOOP2
B
Main
;跳转到 C 程序代码Main()函数
END
五、心得体会:通过本次实验,我学会并掌握使用ADS 1.2编写C语言程序,并进行调试。这次实验不同于前几次,必须在一个工程里面同时加载两个文件,分别是“。c”和“.s”文件。
2.嵌入式实验一实验报告 篇二
Game Boy Advance游戏以其独特的魅力吸引了大量的游戏爱好者。相对Game Boy游戏的早期版本,如Game Boy、Game Boy Color游戏,Game Boy Advance游戏需要耗费庞大的系统资源,随着嵌入式处理器处理能力的迅猛发展,GBA游戏模拟器在嵌入式处理器的移植、运行成为了可能。模拟器的移植工作是本论文中最大的内容之一,移植工作显得非常重要,它决定着这个论文是否能顺利进行下去。但是移植过程中会出现许多不确定因素,因素是多样的,有被移植代码的因素,也有来自SDL本身接口函数处理的因素,因此被移植代码是否最终能够在系统中正常运行将遇到许多障碍。由于windows下的开发工具非常方便,因此我们的思路是先抛开SDL的移植,在去掉windows的API接口后先能够确保代码在windows上编译通过, 然后再将代码进行SDL移植,虽然看似多走了一段路,但这样将移植风险降到了最低。
Game Boy Advance模拟器能够正常在嵌入式系统下运行, 其移植过程是一个充满挑战的旅程,我们选择VC++6.0,通过VC++6.0 windows开发工具的调试修改,使得GBA游戏能够在windows下运行,最终能够移植到嵌入式系统下运行。
2 Game Boy Advance在SDL上的移植
由于Game Boy Advance模拟器是开源代码,所以在网上可以找到Game Boy Advance模拟器的部分代码,但这些代码都只能在系统上编译以及对GBA文件进行解码,但是调用windows的AIP函数会出错,所以没有游戏运行窗口、按键响应、音频播放等基本功能,也就是说,一般用网上的开源源代码编译出来的可执行程序不能直接运行GBA游戏。
SDL是一个用C语言编写的免费跨平台多媒体开发库,使用LGPL许可证,可用于游戏、游戏开发工具、模拟器、样本演示、多媒体应用等。[1]为了添加人机交互界面,我们直接将工程中的windows的API函数抛弃,与跨平台的SDL相结合起来, 调用SDL中的一些库函数,从而实现对Game Boy Advance模拟器的移植。
2.1 SDL库函数的添加
先将开源源代码工程中的main.cpp文件更名new Main.cpp,把Game Boy Advance整个工程文件和new Main.cpp文件添加到VC++6.0的工程中,当执行编译时会产生许多错误,部分错误如下:
可以看出,编译出错主要是因为源工程是直接调用win-dows下API函数,但我们在移植初将这些API函数的头文件删除了,部分删除内容如下:
所以,如果要进行SDL移植,就要加上SDL库和模拟器源代码的头文件,添加内容如下:
至此,Game Boy Advance模拟器开源源代码成功用SDL移植成无人机交互界面的模拟器。
3为Game Boy Advance模拟器增加人机交互界面
当Game Boy Advance在Windows上利用SDL实现了无人机交互界面移植成功后,模拟器还只是“又聋又哑”,还需要添加人机交互界面才是一个完整的模拟器。这个过程包括了3大部分的内容:游戏画面、键盘响应、声音播放。
3.1窗体设计
通过SDL建立窗口界面,在new Main.cpp的main函数里添加创建窗口语句,就可以建立在windows下的窗口,部分程序如下:
3.2加入键盘响应
为了能响应到按键事件,我们在new Main.cpp文件中利用SDL对按键事件响应的判断,自行编写按键事件响应函数,从而可以达到对按键进行响应,程序如下:
3.3加入声音播放引擎
到目前为止,我们还剩最后的声音处理了,怎样处理声音这一块呢?借助SDL库,将解码声音播放出来,我们最终解决了这个问题。在原本new Main.cpp中被注销掉的代码位置中填入SDL声音引擎。
首先在ZSC_system Sound Init填入内容下,其中是SDL库对声音驱动的初始化代码如下:
在结构中,定义了声音播放的回调函数ZSC_sound Callback,该函数将游戏中解码的音频数据sdl⁃Buffer不断拷贝到播放数据流中。部分程序如下:
经过分析,所播放的音频数据是通过Write Sample函数来实现解码程序和播放程序相互连接的,由Write Sample函数代码和Write Sample在sound.c中被调用可以看出来Write Sample函数是声音处理的关键函数,部分程序如下:
Write Sample中,当音频数据采集到AUDIOBUFFER的长度后,音频数据通过play_sample播放出去。我们将play_sample填入代码,将采集到的音频数据存储在final_wave中,由回调函数waveout播放出去。部分程序如下所示:void play_sample(signed char*data L,signed char*data R)
因为原代码中的close_audio用来关闭声音设备,而SDL的SDL_Close Audio()函数可以用来实现对声音设备的关闭,因此在close_audio中填入代码:
至此模拟器能够显示游戏画面、播放游戏音乐、响应用户指令,已经能够运行在凌动平台下了,有了上述基础下一步只需要做一些小小改动即可运行在嵌入式系统,如linux系统、 Win CE等等。移植Game Boy Advance模拟器运行游戏如图1所示:
4结束语
论文成功的将Game Boy Advance游戏模拟器成功移植到凌动平台上。通过测试,支持大部分网络下载的GBA文件格式的游戏。游戏画面清晰流畅,声音,按键操作可靠。论文虽然达到了预期目的,但仍有许多可以改善的地方,如在游戏运行中存在声音有轻微不流畅,画面有轻微卡、顿的现象,将在后续的研究过程中进行改进。
摘要:论文将GameBoyAdvance游戏模拟器移植到嵌入式系统中。借助开放源代码的跨平台多媒体开发库SDL,实现对现有基于PC的GameBoyAdvance模拟器源代码进行移植,包括对窗口的设计、按键事件的判断和音频播放等人机交互界面设计,最终实现了GameBoyAdvance游戏在凌动平台上的运行。
关键词:GameBoyAdvance游戏,SDL库,嵌入式系统
参考文献
[1]王园园,高明煜,曾毓.基于SDL库的嵌入式平台中文显示技术研究[J].计算机系统应用,2009(4).
[2]顾叶锋,付宇卓,鲁欣.基于ARM Linux的Game Boy模拟器移植和优化研究[J].计算机仿真,2005(9).
[3]赵成.嵌入式系统应用基础:基于S3C2410A的SKYEYE的仿真与实践[M].北京:国防工业出版社,2012.
3.嵌入式实验一实验报告 篇三
关键词:嵌入式系统;实验教学;教学改革;教学模式
中图分类号:G642 文献标识码:A 文章编号:1009-3044(2015)20-0134-01
伴随着计算机技术的飞速发展,嵌入式技术在通信、自动化控制、计算机硬件系统设计、仪器仪表开发等领域的应用越来越广泛[1]。面对嵌入式人才稀缺,就业形势看好的现状[2,3],高校在人才培养方面确远远跟不上嵌入式技术的发展水平,难以满足企业对实践型嵌入式人才的需求。嵌入式系统是高校以电子信息、计算机、自动化等专业本科高年级学生为授课对象,开设的以实践应用为核心的专业技能课程[4],涉及到电工电子技术、微机原理、接口技术、汇编语言等综合内容[5]。高校在嵌入式系统课程教学过程中面临如下困难:嵌入式系统基础知识多,涉及面广,内容更新快;教学中易产生过分偏软或偏硬的现象,软硬件结合不到位,且理论和实践结合较少;高校实验经费短缺导致嵌入式实验设备投入少等。这些原因直接导致高校在培养嵌入式人才时面临课程孤立、内容不全、实践创新能力有待加强、与实际应用脱节等问题[6]。本文以东北农业大学电气与信息学院计算机专业的嵌入式系统课程实验教学改革为背景,通过对传统嵌入式系统实验教学中存在的问题进行分析,提出了嵌入式系统课程实验教学内容改革的新思路,并基于亚科尔多媒体教学软件和BBS在线学习交流资源共享教学平台构建了课堂实验教学与网上课外教学相结合的教学新模式。
1 实验教学内容改革
基于企业对嵌入式复合型人才的需求,以计算机专业低年级开设的软硬件课程为基础,以嵌入式系统课程的硬件和软件单独实验为抓手,以培养学生软硬件交叉综合实验设计和开发能力为目标,确立嵌入式系统课程实验教学内容为基本接口实验、操作系统应用实验和综合设计实验三大类[7]。其中基本接口实验、操作系统应用实验为基础篇,偏重于大三学生学习,主要基于已有实验教学资料开展;而综合设计实验为提高篇,面向大四及研究生低年级学生开设,以创新项目和电子设计大赛为手段,提升学生的综合实践能力和创新能力。
2 实验教学模式改革
在嵌入式系统课程实验教学内容改革的基础上,利用计算机系服务器搭建BBS在线学习交流资源共享教学平台,结合亚科尔多媒体教学软件,形成网上课外教学与课堂实验教学相结合的教学模式,实现课上重点问题和共性问题集中解答、课下个别问题BBS在线辅导的新型实验教学模式。
2.1课堂实验教学
实验教学以实践训练为主,辅以适当的讲解,重点是对学生实验过程中遇到的共性问题进行集中讲解。基于东北农业大学电气与信息学院实验室购进的亚科尔多媒体教学软件的网络教室功能,实验教师能够高效地进行课堂实验教学,对学生进行课上教学内容的讲解、管理和共性问题的辅导。该多媒体教学软件具有易用性好、兼容性强、稳定性高等优点,通过教师端和学生端软件的安装快速地构建多媒体网络教室,实现教师和学生桌面的录制和快速切换演示、文件的分发和收集、快速关机和重启等。
2.2网上课外教学
通过BBS在线学习交流资源共享教学平台为学生进行网上课外教学辅导,实现相关学习资料的发布、学习内容的在线交流,个别问题的在线辅导,提高学生学习的主动性,增强实验教学效果。为了使学生尽早的了解实验内容,把握实验课的重点、难点及实验安排等信息,做好实验内容预习和实验结束后相关资料的整理,实验教师可通过BBS教学平台进行实验课程介绍、实验教学大纲、实验日历、实验规划、实验指导、实验教学视频等内容的发布[8];通过使用该BBS教学平台,教师还可以为学生布置综合实验作业,通过学生上传的作业了解学生的完成情况,把握学生对知识的掌握程度,为课堂实验教学提供指导;通过使用该BBS教学平台,教室还可以实时与学生交流实验中遇到的问题,并为学生提供有针对性的网上在线辅导,进一步提高学生对知识的掌握程度。
3 教学成效
为评测该实验教学内容和模式改革的效果,以计算机专业 的学生为对象,以嵌入式系统课程的实验教学为媒介,进行实验教学模式的探讨和实验教学内容的实施。通过问卷调查和课后访谈,学生普遍反映如下:通过实验教学内容的改革,学生在完成基础实验内容后,通过综合性实验项目的开展,综合实践能力得到了一定的提升;通过教学模式的改革,将教师课上实验原理讲授、实验演示与学生课下预习实验、设计实验、教师网上指导等相结合,调动了学生学习的主观能动性,有效提高了学习效果。通过教学实践对比发现,应用该实验教学内容和模式的班级与未应用班级相比,在课上实验完成情况、综合实验设计能力方面都有了一定的提高。
4 结束语
在深入了解嵌入式系统课程特点、现状和不足的基础上,笔者结合自身的实际实验教学经验和体会,对嵌入式系统课程开展了实验教学内容和模式方面的改革探索。在实验教学内容改革的基础上,将基于亚科尔多媒体教学软件的课堂实验教学与基于BBS教学平台的网上课外教学相结合,调动了学生的学习积极性,对学生理论知识和实践能力的提高起到了很好的作用。结合BBS教学平台和亚科尔多媒体教学软件进行网上课外教学与课堂实验教学相结合的教学模式对其他计算机类课程的理论和实验教学也具有一定的可借鉴性。
参考文献:
[1] 张益嘉,宋嘉琳,丁男. 多层次嵌入式课程实践教学体系的建设与探索[J].实验科学与技术, 2014, 12(4): 148-150.
[2] 胡威,郭宏,蒋旻等. 面向嵌入式系统的本科/研究生连续式课程建设研究[J].现代企业教育, 2014 (22): 461-462.
[3] 蒋书波,王晓荣.嵌入式系统平台课程体系教学方法探析[J].中国电力教育, 2013(2): 116-117.
[4] 张晓东,孙丽君,鲁可.高校嵌入式系统课程教学改革探索[J].中国电力教育, 2013(8): 35-36, 38.
[5] 叶玮琳,包能胜,张兴伟.嵌入式系统教学中学生能力提升探索[J].教育教学论坛, 2014 (15): 221-222.
[6] 劉泽平,羊四清.计算机专业嵌入式方向课程体系建设[J].计算机教育, 2013(6): 103-106.
[7] 沈承舒,杨波.嵌入式课程教学方法的改革与探索[J].计算机教育, 2015(13): 76-78.
4.嵌入式系统实验报告 篇四
学
号:
姓
名:
班
级:13电子信息工程
指导老师:
苏州大学 电子信息学院
2016年12月
实验一:一个灯的闪烁
1、实验要求
实现PF6-10端口所连接的任意一个LED灯点亮
2、电路原理图
图1 LED灯硬件连接图
3、软件分析
RCC_Configuration();/* 配置系统时钟 */
GPIO_Configuration();
/* 配置GPIO IO口初始化 */
for(;;)
{
GPIOF->ODR = 0xfcff;
/* PF8=0--> 点亮D3 */
Delay(1000000);
GPIOF->ODR = 0xffff;
/* PF8=1--> 熄灭D3 */
Delay(1000000);
4、实验现象
通过对GPIOF8的操作,可以使LED3闪烁
5、实验总结
这是第一次使用STM32开发板,主要内容是对IO端口进行配置,点亮与IO端口相连接的LED灯,闪烁周期为2S。通过本实验对STM32开发板的硬件原理有了初步了解。
实验二:流水灯
1、实验要求
实现PF6-10端口所连接的5个LED灯顺次亮灭
2、电路原理图
图1 流水灯硬件连接图
3、软件分析
int main(void){
RCC_Configuration();/* 配置系统时钟 */
GPIO_Configuration();/* 配置GPIO IO口初始化 */
for(;;)
{
GPIOF->ODR = 0xffbf;
/* PF6=0--> 点亮LED1 */ Delay(5000000);GPIOF->ODR = 0xff7f;
}
/* PF7=0--> 点亮LED2 */ Delay(5000000);
GPIOF->ODR = 0xfeff;
/* PF8=0--> 点亮LED3 */ Delay(5000000);
GPIOF->ODR = 0xfdff;
/* PF9=0--> 点亮LED4 */ Delay(5000000);
GPIOF->ODR = 0xfbff;
/* PF10=0--> 点亮LED5 */ }
4、实验现象
LED1~LED5依次点亮,亮灭的时间间隔都为1S。
5、实验总结
本次实验对STM32开发板的GPIO端口进行进一步学习,通过程序可以实现流水灯的闪烁。
实验三:单级外部中断
1、实验要求
按下某个按键,触发中断,中断服务程序改变LED灯状态
2、电路原理图
图3 SW1硬件原理图
3、软件分析
int main()
{
RCC_Configuration();
GPIO_Configuration();
GPIO_Write(GPIOF,0xffff);Delay(5000);
while(1)
{
}
/* 配置系统时钟 */
/* IO口初始化 */
/* 全灭 */
if(GPIO_ReadInputDataBit(GPIOA, GPIO_Pin_8)==0)/* 如果SW1 PA8=0 */ {
GPIO_SetBits(GPIOF, GPIO_Pin_6);
/* LED1点亮 */
Delay(0x1FFFFF);
GPIO_ResetBits(GPIOF, GPIO_Pin_6);
/* LED1 熄灭 */ Delay(0x1FFFFF);} }
4、实验现象
原来5个LED灯都处于熄灭状态,按下SW1,触发中断程序,LED1点亮。
5、实验总结
通过本次实验,可以对某一状态通过外部中断,改变其当前状态。
实验四:多中断嵌套
1、实验要求
按下某个按键,触发中断,中断服务程序改变LED灯状态
2、电路原理图
图4 SW1,SW2,SW3硬件原理图
3、软件分析
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);NVIC_InitStructure.NVIC_IRQChannel = EXTI0_IRQChannel;
//设定中断源为PA0 NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;//中断占优先级为0 NVIC_InitStructure.NVIC_IRQChannel = EXTI3_IRQChannel;
//设定中断源为PD3 NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 1;//中断占优先级为1 NVIC_InitStructure.NVIC_IRQChannel = EXTI9_5_IRQChannel;//设定中断源为PA8 NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 2;//中断占优先级为2 void EXTI0_IRQHandler(void){ int i=0;if(EXTI_GetITStatus(EXTI_Line0)!= RESET){ for(i=0;i<10;i++){
GPIO_Write(GPIOF,0xffff);
GPIO_SetBits(GPIOF, GPIO_Pin_6);/* LED1 点亮 */ Delay(0x5fFFFF);GPIO_ResetBits(GPIOF, GPIO_Pin_6);/* LED1 熄灭 */
Delay(0x5fFFFF);EXTI_ClearITPendingBit(EXTI_Line0);} } }
void EXTI3_IRQHandler(void)if(EXTI_GetITStatus(EXTI_Line3)!= RESET){ {
int i=0;for(i=0;i<10;i++){
GPIO_Write(GPIOF,0xffff);
GPIO_SetBits(GPIOF, GPIO_Pin_7);/* LED2 点亮 */ Delay(0x5fFFFF);GPIO_ResetBits(GPIOF, GPIO_Pin_7);/* LED2 熄灭 */ Delay(0x5fFFFF);EXTI_ClearITPendingBit(EXTI_Line3);} } } void EXTI9_5_IRQHandler(void){ int i=0;
if(EXTI_GetITStatus(EXTI_Line8)!= RESET){
for(i=0;i<10;i++){
GPIO_Write(GPIOF,0xffff);
GPIO_SetBits(GPIOF, GPIO_Pin_8);/* LED3 点亮 */
Delay(0x5fFFFF);
GPIO_ResetBits(GPIOF, GPIO_Pin_8);/* LED3 熄灭 */
Delay(0x5fFFFF);
EXTI_ClearITPendingBit(EXTI_Line8);} } }
4、实验现象
中断优先级从高到低依次为:SW3,SW2,SW1 原来5个LED灯都处于熄灭状态,按下SW1,LED3应该闪烁10次,当其闪烁5次后按下SW2,LED2也应该闪烁10次,当其闪烁4次后按下SW3,LED1也应该闪烁10次,则当LED1闪烁完10次后,LED2继续闪烁6次,之后LED1继续闪烁5次。
5、实验总结
通过本次实验,可以对LED状态实行中断嵌套,由以上实验现象,得出以下结论:高中断优先级可以打断低优先级,中断系统正在执行一个中断服务时,有另一个优先级更高的中断提出中断请求,这时会暂时终止当前正在执行的级别较低的中断源的服务程序,去处理级别更高的中断源,待处理完毕,再返回到被中断了的中断服务程序继续执行,反之,低中断优先级不可以打断高优先级。
实验五:TIM2的基本应用
1、实验要求
TIM2定时器将LED灯定时点亮和熄灭一定的时间
2、电路原理图
3、软件分析
TIM_Cmd(TIM2, ENABLE);
/* TIM2 enable counter */ TIM_TimeBaseStructure.TIM_Period = 1999;
TIM_TimeBaseStructure.TIM_Prescaler = 35999;
//定时时间为1s void TIM2_IRQHandler(void){ TIM_ClearITPendingBit(TIM2, TIM_IT_Update);
GPIO_WriteBit(GPIOF, GPIO_Pin_6,(BitAction)(1-GPIO_ReadOutputDataBit(GPIOF, GPIO_Pin_6)));}
4、实验现象
LED1灯按照1S的定时时间不断闪烁
5、实验总结
通过本次实验,可以实现对LED灯进行定时控制其闪烁,而不需要延时函数控制了,定时时间较为精准。实验六:TIM2,TIM3,TIM4多定时器的应用
1、实验要求
利用TIM2,TIM3,TIM4定时器使LED灯以不同的频率闪烁
2、电路原理图
3、软件分析
NVIC_InitStructure.NVIC_IRQChannel = TIM2_IRQChannel;NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;NVIC_InitStructure.NVIC_IRQChannel = TIM3_IRQChannel;NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 1;NVIC_InitStructure.NVIC_IRQChannel = TIM4_IRQChannel;NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 2;此处比上一个实验增加了2个定时器,同时又增加了一个优先级
4、实验现象
中断优先级从高到低依次为:TIM2,TIM3,TIM4 首先LED1以1S的定时时间闪烁5次,之后LED2以2S的定时时间闪烁5次,最后LED3以3S的定时时间闪烁5次
5、实验总结
利用定时器可以同时使LED灯按照不同的频率闪烁,但是为了现象明显,可以加一个优 先级,分别观察现象。
实验七:串口USART1读取CPU的ID号
1、实验要求
通过USART1读取 CPU 的 96 bit ID
2、电路原理图
图 开发板USART原理图
3、软件分析
void Get_ChipID(void)/* 获取芯片ID */ { ChipUniqueID[0] = *(u32 *)(0X1FFFF7F0);/* 高字节 */ ChipUniqueID[1] = *(u32 *)(0X1FFFF7EC);
ChipUniqueID[2] = *(u32 *)(0X1FFFF7E8);/* 低字节 */ } void USART_Configuration(void){
USART_InitTypeDef USART_InitStructure;
USART_InitStructure.USART_BaudRate = 115200;
USART_InitStructure.USART_WordLength = USART_WordLength_8b;
USART_InitStructure.USART_StopBits = USART_StopBits_1;
USART_InitStructure.USART_Parity = USART_Parity_No;
USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None;
USART_InitStructure.USART_Mode = USART_Mode_Rx | USART_Mode_Tx;
USART_Init(USART1, &USART_InitStructure);
USART_ITConfig(USART1, USART_IT_TXE, ENABLE);
USART_ITConfig(USART1, USART_IT_RXNE, ENABLE);
USART_ClearFlag(USART1, USART_FLAG_TC);
USART_Cmd(USART1, ENABLE);
/* Enable USART1 */ }
4、实验现象
PA9连接的是USART1 Tx,PA10连接的是USART1 Rx,再通过串口调试助手就可 以在电脑上面显示出CPU的ID以及flash容量大小。
5、实验总结
本次实验实现了串口和PC机的传输,可以通过USART1将CPU的ID在电脑上显示出来。
实验八:异步通信USART2的重映射
1、实验要求
实现异步通信USART2的重映射,将数据传送到PC机上
2、电路原理图
图 开发板USART原理图
3、软件分析
void GPIO_Configuration()
/* IO口初始化 */ {
GPIO_InitTypeDef GPIO_InitStructure;
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5;
/* USART2 Tx--> PD05 */
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;/* PD05--> JP7 WR */
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOD, &GPIO_InitStructure);
GPIO_PinRemapConfig(GPIO_Remap_USART2, ENABLE);GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6;
/* USART2 Rx--> PD06 */
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;
GPIO_Init(GPIOD, &GPIO_InitStructure);GPIO_PinRemapConfig(GPIO_Remap_USART2, ENABLE);} 该程序将USART2重映射到PD05,PD06引脚
4、实验现象
PD05连接的是USART2 Tx,PD06连接的是USART2 Rx,通过串口调试助手就可以在电脑上面显示Program Running!
5、实验总结
5.嵌入式实验一实验报告 篇五
组员:武易 金鹏飞 周长升
实验一 熟悉嵌入式系统开发环境
一实验目的
1.熟悉嵌入式系统硬件实验平台 2.掌握超级终端配置方法。
3.掌握嵌入式系统开发环境配置,ARM-Linux下NFS服务器的配置方法 4.掌握常用的 Linux下shell命令
二实验设备及工具
硬件:UP-NETARM2410-S嵌入式实验仪、PC机pentumn500以上、硬盘40G以上、内存大于256M。
软件:PC机操作系统REDHAT LINUX 9.0、MINICOM、AMRLINUX开发环境
三实验内容
(1)掌握嵌入式系统实验平台上的各类借接口的位置;
(2)配置windows的超级终端,熟悉vivi的命令行,bootload、kernel、root和用户程序的介绍;
(3)配置linux的终端,配置网络服、Ip地址,开发目录共享,挂载等。
四实验结果
实验二嵌入式Linux程序设计
一实验目的
1.掌握嵌入式Linux软件设计方法原理 2.掌握Makefile文件设计方法。
3.熟悉Linux下静态库和共享库的设计
二实验设备及工具
硬件:UP-NETARM2410-S嵌入式实验仪、PC机pentumn500以上、硬盘40G以上、内存大于256M。
软件:PC机操作系统REDHAT LINUX 9.0、MINICOM、AMRLINUX开发环境
三实验内容
(1)编写一个带输入、输出的由5个文件组成的嵌入式软件;(2)写好makefile文件,并上机调试;(3)用变量指明两种编译器。
四实验结果
实验三
kernel与root的设计和烧写
一实验目的
1.掌握Linux内核配置与裁剪的方法 2.理解根文件系统配置。
3.掌握嵌入式系统内核和根文件系统的烧写的过程
二实验设备及工具
硬件:UP-NETARM2410-S嵌入式实验仪、PC机pentumn500以上、硬盘40G以上、内存大于256M。
软件:PC机操作系统REDHAT LINUX 9.0、MINICOM、AMRLINUX开发环境
三实验内容
对嵌入式Linux系统进行裁剪、配置和编译,生成自己需要的操作系统映像文件,并将其烧写到flash中。
四实验结果
实验四搭建嵌入式系统开发环境
一实验目的
1.掌握嵌入式开发环境的配置 2.掌握开发工具链的安装与配置。
3.掌握嵌入式系统内核和根文件系统的烧写的过程
二实验设备及工具
硬件:UP-NETARM2410-S嵌入式实验仪、PC机pentumn500以上、硬盘40G以上、内存大于256M。
软件:PC机操作系统REDHAT LINUX 9.0、MINICOM、AMRLINUX开发环境
三实验内容
(1)安装配置嵌入式开发环境;(2)安装与配置工具链;(3)内核和根文件系统的烧写
四实验结果
实验五嵌入式驱动程序设计
一实验目的
1.学习在LINUX 下进行驱动设计的原理
2.掌握使用模块方式进行驱动开发调试的过程
二实验设备及工具
硬件:UP-NETARM2410-S嵌入式实验仪、PC机pentumn500以上、硬盘40G以上、内存大于256M。
软件:PC机操作系统REDHAT LINUX 9.0、MINICOM、AMRLINUX开发环境
三实验内容
在PC 机上编写简单的虚拟硬件驱动程序并进调试,实验驱动的各个接口函数的实现,分析并理解驱动与应用程序的交互过程。
四实验结果
实验六
S3C2410处理器硬件电路设计
一实验目的
1.熟悉硬件电路设计
2.掌握简单的S3c2410处理器的电路设计。3.掌握protel软件的使用
二实验设备及工具
硬件:UP-NETARM2410-S嵌入式实验仪、PC机pentumn500以上、硬盘40G以上、内存大于256M。
软件:PC机操作系统REDHAT LINUX 9.0、MINICOM、AMRLINUX开发环境
三实验内容
使用protel 99se 做s3c2410处理器最小系统电路设计,A/D数据采集模块电路设计。
6.嵌入式实验一实验报告 篇六
嵌入式产业现已成为中国IT产业中的一个重要的新兴产业和经济增长点,嵌入式技术正在越来越广泛地被应用在通信、电子、工业、交通等各个领域,大到石油提炼和相关的贮运设施、建筑设备、计算机辅助制造系统、能源控制系统、核电站硬件机器人系统,小到我们日常使用的智能手机、电话交换系统,以及数字电视、掌上电脑、DVD、MP4、数码相机、网络冰箱、网络空调、可视电话等,嵌入式技术正在我们的生活中占据着越来越重要的地位,如下图所示,但随着国内嵌入式系统的飞速发展,嵌入式软件人才的缺乏已经成为了国内嵌入式产业可持续发展的瓶颈之一,据统计,每年的嵌入式人才缺口约有50万人。
目前,我国嵌入式软件复合型人才基数小、队伍不稳定,缺口较大。一方面,是因为这一领域入门门槛较高,不仅要懂较底层软件,对软件专业水平要求较高,而且必须懂得硬件的工作原理,所以非专业IT人员很难切入这一领域;另一方面,是因为这一领域较新,目前发展太快,很多软硬件技术出现时间不长或正在出现,掌握这些新技术的人当然很找。嵌入式人才稀缺,身价自然就高,越有经验价格就越高。其实嵌入式人才稀少,根本原因可能是大多数人无条件接触,这需要相应的嵌入式开发板和软件,另外需要有经验的人进行指导开发流程。
因此,为了适应当前社会对嵌入式人才的需求,我们应该尽快建立起“嵌入式系统实验室”,为培养嵌入式人才搭建起坚实的软硬件平台。
二、嵌入式系统实验室的功能
由于要将该实验室建设为标准型实验室,因此要采用较高的配置标准,以适应10—技术发展和使用的要求,且具有开放性、灵活性和可扩展性。
该实验室建成之后,除了满足日常嵌入式学科教学之外,还要实现如下功能:
学生学期课题设计;
全国嵌入式大学生电子竞赛实训基地;
学生相关课题的毕业设计;
本校教师科研开发基地;
社会嵌入式系统工程师培训基地。
三、嵌入式系统实验室的建设
实验室的建设包括嵌入式实验室环境、嵌入式实验室硬件环境建设,软件环境的建几个方面内容。
3.1 嵌入式实验室环境
容纳40人左右的实验室机房,建议使用面积80m2以上;实验桌椅40套,每个学生实验桌面140×60(mm)以上,方便学生在桌面上放置实验箱等设备。
Windows客户机+Linux服务器的方式,对实验室而言,应该是最适合的方案了。只需多一台Linux服务器就可以了。
3.2 嵌入式实验室硬件环境配置清单
嵌入式实验室设备清单,如下表所示:(。。。。。)
2、嵌入式实验箱的技术参数指标要求
嵌入式实验箱是嵌入式系统实验室的关键组成部分,具体参数指标要求如下:
Intel Xscale PXA270嵌入式实验箱
硬件要求:PXA270实验箱由核心板+教学底板组成
核心板硬件参数
处理器: Intel XScale PXA270 520MHz
SDRAM:64Mbyte
FLASH: 32Mbyte
底板硬件参数
LCD接口: 配TFT 8” (640*480)屏。
VGA输出接口:可接模拟CRT显示器或液晶显示器
触摸屏: UCB1400BE,四线电阻式
以太网接口:10M/100M 自适应接口1个
Audio: AC97标准音频输入/输出
USB HOST:1个
USB CLIENT:1个
摄像头接口:1个
红外通信接口:1个
串口:5个RS232(其中3个为全功能)
485通信接口:1个
JTAG接口:20pin
PCMCIA接口:1个
IDE接口:可接笔记本硬盘
SD/MMC卡接口:可接SD卡或MMC卡
SMC卡:可扩展NAND FLASH
LED阵列:8×8发光二极管阵列
七段数码管: 4个7段数码管
AD:1个电位器电压输入,一个温度传感器输入
RTC:实时钟
键盘:4×5键盘矩阵
扩展接口:2×96pin欧式座,引出所有总线信号:可扩展以下模块:
DSP6713&USB2.0高速数据采集板
FPGA扩展板
GPS&GPRS扩展板
CAN&485通信扩展板
电机扩展模块
射频卡&IC卡扩展板
热敏滑动指纹传感模块
802.15.4扩展模块
3.3 嵌入式实验室软件资源清单
1、提供嵌入式Linux2.4以及Windows CE5.0操作系统。
⑴Windows CE.NET 5.0 BSP
BootLoader源代码;以太网驱动源代码;音频驱动:提供音频AC’97驱动程序源代码;LCD驱动源代码;触摸屏驱动源代码;USB Host驱动源代码;USB Slave驱动源代码;摄像头驱动源代码;IrDA红外接口驱动源代码;RS232串口驱动源代码;RS485驱动源代码;PCMCIA 接口驱动源代码;SD/MMC 接口驱动源代码;LED数码管驱动源代码;Keypad驱动源代码。
⑵Linux 2.4内核
BootLoader源代码;Linux内核源代码;文件系统,提供基于日志的文件系统Jffs2;支持图形用户界面:QT;以太网驱动源代码;音频驱动:提供音频AC’97驱动程序源代码;LCD驱动源代码;触摸屏驱动源代码;USB Host驱动源代码;摄像头驱动源代码; RS232串口驱动源代码;RS485驱动源代码; PCMCIA接口驱动源代码;SD/MMC接口驱动源代码; LED数码管驱动源代码;Keypad驱动源代码。
2、必须提供硬件测试程序,可以快速验证实验平台的硬件接口,方便产品验收和日常维护。
3、嵌入式教学开发平台的实验内容:
基础实验:Boot实验;7段数码管实验;串口传输实验;中断处理实验;触摸屏实验;LCD控制器实验。
7.嵌入式实验一实验报告 篇七
1 实验项目设计
设计的平台提供串口、USB接口、带电气隔离的CAN-bus接口、I2S音频接口、以太网接口等, 满足各种应用要求, 让学生全面深入学习μC/OS-II、WinCE和Linux操作系统, 同时根据装置所提供的大量源代码及详细的教学文档, 能加快学习进度。具体的实验项目包括μC/OS-II、WinCE和Linux嵌入式实时操作系统的移植, Linux开发环境建立及内核编译运行实验, Linux文件系统实验, Linux内核驱动程序开发实验, uC/OS-II任务管理和任务间通讯实验, Nand Flash读写实验, 行列扫描方式的矩阵键盘实验, L C D控制器实验, D M A读写实验, ADC实验;I2C串行EEPROM读写实验, I2S相关实验, LED跑马灯实验, 定时器中断实验, IDE硬盘读写实验, UART异步串行口通讯实验, W A T C H D O G实验, C A N总线通讯实验, 录音和放音实验, 以太网 ( (UDP、TCP/IP和WebServer) ) 相关实验, USB DEVICE通讯实验, LCD显示实验, USB图像采集传输实验等。
2 装置硬件设计
系统的硬件平台主要是由嵌入式处理器、USB摄像头模块、存储器、以太网接口、LCD接口、串行接口电路等组成。系统硬件结构框图如图1所示。
(1) CPU:Samsung的S3C2440A-40处理器, 其是一款由Samsung半导体公司为手持设备和各种多用途应用设计的, 低功耗、高集成度的微处理器, 采用289脚FBGA封装, 包含ARM920T内核, 工作频率达406MHz。
(2) 存储器设计。Nand Flash存储器:采用1片Nandflash同时作为启动ROM和系统程序保存R O M。S D R A M:用于设置程序堆栈和存放各种数据变量等。
(3) 以太网接口设计。10Mbps低功耗嵌入式专用以太网网络芯片CS8900A-CQ3, 接口为标准RJ45插座, 集成网络变压器, 安全可靠
(4) U S B接口。采用C y p r e s s公司的SL811HS芯片作为USB接口芯片, 它是一种USB主机控制器, 它能与全速或低速USB外围设备通信, SL811HS采用3.3V供电, 其端口驱动能力但是可以兼容5V的电平逻辑。
(5) 串口R S 2 3 2是应用最为广泛的UART接口, RS232接口采用的是最简单的三线连接 (TXD, RXD, GND) , 通讯波特率为9600b/s。
(6) 音频接口:采用IIS接口芯片UDA1341。
(7) 摄像头:采用OmniVision公司的O V 5 1 1。
(8) LCD接口:本文选用LTS350Q1-PD1LCD显示屏, 为3.5寸的TFT, 分辨率为320×240, 16位色彩。
3 装置软件设计
本实验装置的嵌入式操作系统有μC/OS-II、WinCE和Linux操作系统, 综合考虑后, 本文选用嵌入式Linux系统, 本文主要介绍嵌入式Linux操作系统的移植, 摄像头模块软件和LCD显示模块软件。
3.1 嵌入式Linux操作系统的移植
3.1.1 嵌入式Linux交叉环境建立
交叉编译环境是一个由编译器、链接器和解释器组成的综合开发环境, 交叉编译工具主要由binutils、gcc和glibe几个部分组成。建立针对ARM的交叉编译环境主要过程如下:
(1) 下载源文件、补丁和建立编译的目录; (2) 建立内核头文件; (3) 建立二进制工具; (4) 建立初始编译器; (5) 建立链接库; (6) 建立全套编译器。
3.1.2 嵌入式Linux内核移植
在Linux系统内核代码中有arch目录, 其中包括了不同平台的代码, 与体系结构相
关的代码都存放在arch下面相应的目录下面。本系统采用arm开发平台, 所以依赖ARM硬件平台的代码都在arch/arm下面。根目录下面只需要修改Makefile文件, 该文件主要任务是产生vmlinux文件和内核模块。
配置命令可以选用make config, make oldconfig, make menuconfig或make xconfig
其中一个。
编译内核需要创建内核依赖关系、创建内核镜像文件和创建内核模块。首先执行make dep命令, 读取配置过程生成的配置文件, 来创建对应于配置的依赖关系树;接着执行make clean命令删除前面步骤留下的文件, 以避免出现一些错误;然后便可以生成所需要的内核文件了, 用m a k e zlmage来实现得到可移植的内核, 内核文件传至开发板便可以通过BootLoader加载运行。
3.2 摄像头模块软件
3.2.1 OV511摄像头驱动程序加载
采用Linux系统采用模块化的设计, 在进行OV511摄像头的驱动研究时, 必须要在嵌入式Linux内核中加载Video4Linux模块和OV511设备的支持。本系统采用动态加载方式, 加载过程如下:
(1) 在嵌入式Linux的内核源码目录中, 执行命令make menuconfig;
(2) 选择Multimedia device-->下的video for linux, 加载video4linux模块。
(4) 保存刚才的配置, 退出;
(5) 执行“make dep”, “make zImage”, “make modules”, 然后就在/driver/usb目录下生成ov511.o, 同时生成的zImage自动放在/tftpboot目录下;
(6) 执行“insmod ov511.o”, 把USB摄像头的驱动加载进系统。
3.2.2 视频采集软件
在Linux内核中, 提供了视频类部分的标准是V4L, 这个标准可用于USB摄像头编程。
(1) 初始化视频设备。
在Linux系统中, 摄像头被当作一种特殊的文件, 即设备文件来处理, 在本文中是/dev/v4l/video0, 让摄像头工作首先要做的是调用系统函数open打开设备;打开设备以后, 还要获得视频图片的属性, 这里调用I/O通道控制函数ioctl () 来实现;
(2) 设定norm信息。
norm参数的定义在videodev.h头文件中有定义, 分别是:VIDEO_MODE_PAL、VIDEO_MODE_NTSC、VIDEO_MODE_SECAM、VIDEO_MODE_AUTO。
(3) 设定mmap信息。
视频采集有两种方式:内存映射和直接从设备文件读取。这里采用mmap方式。首先, 调用系统函数ioctl () 获得内存映射的buffer信息;然后用vd->map指针指向这部分内存;
(4) 采集视频帧。
主要通过三个函数来实现获取视频帧信息, 分别是:
device_next_frame () ;//等待直到获取下一幅
device_grab_sync () ;//得到一幅图片
image=device_get_address () ;//获得图片的指针
(5) 输出视频数据。
当利用device_get_address () 函数获得frame的存放位置以后, 就可以输出视频数据了。视频数据可以直接输出到framebuffer, 或者可以利用LCD显示, 本文是把数据写进文件。
3.3 LCD驱动程序开发
3.3.1 编写初始化函数
初始化的功能主要有初始化LCD控制器, 写相关寄存器设置显示模式和颜色数, 为LCD分配显示缓冲区, 用kmalloc () 函数分配一段连续的空间, 缓冲区分配在SDRAM中。
3.3.2 编写各成员函数
对显示设备/dev/fb主要有读/写操作、映射 (map) 操作和I/O控制操作。
(1) 读/写 (read/write) /dev/fb操作:相当于读/写屏幕缓冲区。
(2) 映射操作:在Linux中工作与保护模式, 每个应用程序都有自己的虚拟地址空间, 应用程序不能直接访问物理地址, 而是由file_operations结构中提供了mmap函数, 将文件的内容映射到用户空间。
(3) I/O控制:对于帧缓冲设备, 通过对文件ioctl的操作读取和设置显示设备的分辨率、显示颜色数和屏幕大小等屏幕参数。Ioctl的操作也是有底层的驱动程序来完成。
4 结语
本装置采用全部免跳线设计, 免去烦琐而且容易出错的硬件跳接, 简单易用, 不会出现硬件调试设定的故障, 降低了学生的使用难度, 非常方便学生实验使用, 同时, 提供丰富的外围模块和上机实验指导, 可以满足大部高分职嵌入式A R M教学实验的要求。
参考文献
[1]宋宝华.Linux设备驱动开发详解[M].人民邮电出版社, 2008, 2.
[2]周立功.ARM嵌入式系统基础教程[M].北京航空航天大学出版社, 2008, 9.
8.作为一种实验模式,不妨一试 篇八
复旦大学管理学院教授
孙大午担心搞股份制会出现分裂,这本身就不是站在现代公司治理制度上在考虑问题。产权所有人的意愿应在公司董事会体现,放在监事会,要么是意愿不能充分体现,要么是使权力膨胀,监事会凌驾于董事会之上,使原来的初衷变形。
大午农牧集团是创始人孙大午和妻子从承包荒地投资养殖业开始,经过20多年打拼发展起来,在公司发展到较大规模时,为了企业的永续发展,创始人刻意“私企立宪”,设计了一套三权分立、环环相扣、相互制约的公司治理模式和管理模式,并予以实践。
此举最起码反映了两点, 其一,这一模式很特别,它既不是英美式的公司治理模式,又不是德国式的公司治理模式,而是一种中国本土企业家别具特色设计的治理模式;其二,孙大午能跳出大多数家族企业创始人的思维定势和行为定势,不为财富和权力所累,退出公司领导岗位,进行制度设计,实行民主管理,普遍提高员工待遇,实属难能可贵。
只是,大午农牧集团的治理模式和管理模式有两点是令人疑惑的,其一,公司产权尽管是清晰的,但是不进行分割,以后整体继承,是有隐患的,也是难以操作的,他的弟弟,两个儿子,及其它亲属的利益在整体中如何体现,这是很难理清的。同时将来如果以股权激励高层管理者,如何施行?孙大午担心搞股份制,会出现分裂,这本身就不是站在现代公司治理制度上在考虑问题。其二,监事会由家族成员组成也有些奇怪,公司产权所有人的意愿应在公司董事会体现,放在监事会,要么是意愿不能充分体现,要么是使权力膨胀,监事会凌驾于董事会之上,使原来的初衷变形。
9.类与对象基础实验(一)实验报告 篇九
课程名称
面向对象程序设计
实验项目名称
类与对象基础实验
(一)学生姓名
专业班级
学号
一.实验目的和要求
1.掌握对象与类的关系 2.掌握类的域、方法、构造器的概念
3.掌握对象的创建与初始化 4.掌握方法和域(静态和非静态)的使用方式 5.掌握Math类,掌握静态成员的使用方式 6.理解方法和构造器重载现象
二.实验内容
1.程序阅读并回答问题 2.类的使用
3.编程实验:猜数字
4.编程实验:素数判断与统计
三.实验结果与分析(可将程序运行结果截屏,也可分析运行结果)
1..程序阅读并回答问题:阅读实验讲义的对应代码,回答以下问题。
(1)将上述代码编译运行,将运行结果截图。
答:
(2)上述源码中共定义了几个类?分别刻画了哪些数学图形?Triangle类有哪些域和方法?Triangle的这些域和方法是静态的还是非静态的?
答:
上述程序共定义四个类
分别刻画了三角形,梯形,圆形 域有:sideA,sideB,sideC,area,length, boo 方法有: Triangle//判断是否为三角形
getLength//给出三角形的周长 getArea//给出三角形的面积 setABC//判断是否为三角形
其中所有的域都为非静态的,所有方法都为非静态方法
(3)类和对象是什么关系?请从上述AreaAndLength.java中举例说明如何创建对象。
答:
类是对象的模板,也是对象的类型,描述一组具有相同属性和行为的对象
定义一个类。例如class Triangle。然后在main方法中定义域,然后给定义好的域调相应的类方法,赋予对象数据并构造。
(4)Triangle类中出现的Math.sqrt是什么?请举例说明Math类中还有哪些常用域和方法?
答:
Math.sqrt是math类中的求开根号的方法 Math.exp
(5)静态域和方法与非静态域和方法在使用时有什么区别?请从上述AreaAndLength.java中举例说明。
答:
静态域可被所有对象共享,并且在没有任何对象之前,就可以访问静态域,调用静态方法,并不需要创建这个类的对象;同一非静态域在不同对象之间相互独立,非静态方法的执行必须通过对象,所以需要事先创建该类的某个对象。
例如:public static void main(String args[])不需要创建对象,当程序运行时自动运行。而其他的类,例如class Triangle就需要main中创建好对象才能够调用
(6)什么是构造器?构造器与一般方法的区别是什么?构造器可以重载吗?请从上述AreaAndLength.java中举例说明。
答:
构造器用于创建对象,并初始化对象的状态 构造器与一般方法的区别: 构造器的名称必须和类名相同,而方法名不受限制。构造器没有返回类型,而方法名则不受限制。
一般通过new调用构造器来创建对象,而方法则没有这种调用格式。
构造器可以重载
非静态class Triangle public 和 Triangle(double a,double b,double c)静态Math.sqrt(p*(p-sideA)*(p-sideB)*(p-sideC))
2.已有Rectangle类(矩形类),它有两个浮点型属性length(长)和width(宽)。该类具有两个构造函数(无参和有参),perimeter()和area()方法分别返回矩形的周长和面积, 请编写相应的包含main方法的类和main方法来测试Rectangle类。(程序结构参考讲义)
(1)请将源码编写完整如下:
public class Test3 { public static void main(String args[]){
}
Rectangle r= new Rectangle();System.out.println(“无参周长是:” +r.perimeter());System.out.println(“
面积是:”+r.area());
r= new Rectangle(1,1);
System.out.println(“有参周长是:” +r.perimeter());
System.out.println(“
面积是:”+r.area());
}
class Rectangle{
double length,width;
Rectangle(){
double alength;
}
double awidth;alength = 1;awidth = 1;length=alength;width=awidth;Rectangle(double alength,double awidth){ length=alength;width=awidth;} public double perimeter(){ }
return(length+width)*2;
public double area(){ return length*width;} }(2)程序运行结果截图如下:
3.编程实验:猜数字。程序运行的界面截屏如下: 源程序: import java.util.*;import java.math.*;public class guessnum{ public static void main(String args[]){
}
} Scanner scanner = new Scanner(System.in);int num =(int)(Math.random()*100 + 1);System.out.println(“有一个1-100之间的随机整数,请您猜猜看”);System.out.println(“请输入您的猜测:”);int choice = 0;do{ if(scanner.hasNextInt())
choice = scanner.nextInt();if(num > choice)System.out.println(“您猜小了,请继续猜:”);if(num < choice)System.out.println(“您猜大了,请继续猜:”);if(num == choice)System.out.println(“恭喜您,答对了”);}while(choice!= num);
4.编程实验:素数判断与统计。程序运行的界面截屏如下: 源代码: import java.util.*;public class Hello{
static boolean isPrime(int n){
//如果参数n是素数,那么返回true;否则返回false
for(int i=2;i<=Math.sqrt(n)+1;i++){ if(n == 2)
return false;
if(n % 2!= 0)return true;else return false;} return true;
} public static void main(String args[]){ Scanner scanner =new Scanner(System.in);System.out.println(“请输入一个区间:(如:1 100)”);
int a = 0,b = 0;do{ if(scanner.hasNextInt()){ a = scanner.nextInt();
} if(scanner.hasNextInt()){ b = scanner.nextInt();} if(a<0 || b<0)System.out.println(“请输入两个正整数”);}while(a<=0 || b <=0);if(a > b){ int item = a;
} a = b;b = item;int count=0;for(int i=a;i <= b;i++){ if(isPrime(i)== true)count++;} System.out.println(a+“到”+b+“有”+count+“个素数”);}
10.实验报告一 篇十
企业资源规划(ERP)
课程实验报告
作
者:
刘瑶 学
号: 209080714 系
部: 经济管理学院 专
业: 信息系统与信息管理
指导者: 金卫健
2011年04月13日 南京
企业资源规划(ERP)课程实验报告
一、系统管理
1.实验一系统管理
(1)主要内容
增加操作员
建立核算单位账套 对操作员进行授权
其用供应链及其相关子系统 账套备份(2)本人工作
1、注册系统管理
2、增加用户
企业资源规划(ERP)课程实验报告
其中编号111为刘瑶,是账套主管;222为刘静
3、建立账套
企业资源规划(ERP)课程实验报告
这样帐套就建好了
进行存货、客户分类后创建账套,按所给资料修改分类编码
4、设置操作员权限
企业资源规划(ERP)课程实验报告
5、启用供应链及其子系统
企业资源规划(ERP)课程实验报告
6.帐套备份
企业资源规划(ERP)课程实验报告
2.实验二(业务基础设置)(1)主要内容
建立部门档案和职员档案 建立供应商分类和供应商档案 建立客户分类和客户档案 设置付款条件
建立存货分类、计量单位和存货档案 设置结算方式 设置开户银行 建立仓库档案(2)本人工作 1.建立部门档案
2、设置人员档案
企业资源规划(ERP)课程实验报告
3.各部门职员档案:
4、设置客户档案
5、设置供应商档案。
企业资源规划(ERP)课程实验报告
6、结算方式
7.建立仓库档案
8.收发类别
企业资源规划(ERP)课程实验报告
9.采购类型
10.销售类型
11.发运方式
3.实验三(财务基础设置)(1)主要内容
设置总账帐套系统 设置会计科目
企业资源规划(ERP)课程实验报告
录入期初余额 帐套备份(2)本人工作
1.设置总账帐套系统
2.设置会计科目
3.设置凭证类型
4.录入期初余额
企业资源规划(ERP)课程实验报告
三、系统管理的总结和体会
通过这次的实验,我大致了解系统管理在用友ERP—U872系统中的重要地位,也掌握了在系统管理中设置用户、建立企业账套和设置用户权限的方法以及在企业应用平台中设置系统启用、建立各项基础档案、进行数据权限设置及单据设置的方法。另外还学会了如何修改会计科目,计算期初余额……最重要的是我学会了在使用ERP—U872系统前必须先进行应用服务器配置以及如何帐套引入和输出。由于一切都是按照书上步骤一步步进行,所以很少遇到不会的地方。在试验过程中还是遇到不解的地方以及发现的问题:在录入期初余额时,最后试算结果不平衡,与书上不符合。后来才发现是书上的借贷关系与软件中的借贷关系不符合,所以会出现试算不平衡的结果。
11.影子的实验报告 篇十一
展览时间:2010年10月15日——10月30日
展览地点:坦克库·重庆当代艺术中心
“张晓刚:灵魂上的影子”作为“实验报告:关于中国当代艺术的视觉档案”的第三回展览,与在其之前举办的“罗中立:语言的轨迹”、“张大力:极端现实”,和在其之后举办的“方力钧:偶发的寓言”、“时间的穿行者——叶永青黄桷坪二十年”,以及即将举办的崔岫闻、周春芽、王广义、何多苓、高小华的个案展示计划一起,构成坦克库·重庆当代艺术中心的系列学术研究项目。借由 “实验报告”这一探索性的学术活动,为中国当代艺术的发展,提供一个具有参照和研究价值的系列“视觉档案”。
2006年起,张晓刚——这个少年时害羞、沉默、轻度自闭的画家的画作,便在拍卖会上屡创新高,《大家庭》系列中的一幅在苏富比拍到了78万美元。很快,这个纪录又被打破,他的《天安门》在经过一番激烈竞投后,被一位神秘买家以1800万港币的价格拿下,而当初这幅画从张晓刚手中被买走时,价格不过1000多美元。就这样,张晓刚的名字很快飚进了全球当最著名的代画家之列,并创下了在世亚洲画家的拍卖最高纪录。
1993年,张晓刚开始创作《大家庭》。翌年3月的圣保罗艺术展和1995年的威尼斯双年展上,张晓刚的作品一炮而红,引起了许多西方艺术策展人的注意,这个来自中国的年轻小伙子名不见经传,画风之中却始终有一种比利时超现实主义画家马格利特式的神秘和忧郁。
在张晓刚的画作中,你永远都别想看到阳光的一面,他的性格决定了他的作品永远是阴性和忧郁的。后来的《血缘》、《同志》以及《记忆与失忆》等系列,无一不是阴郁气质贯穿始终。那些似乎只出现在斑驳老照片里的人物,拥有同一种时代的外形、衣着,脸上永远没有表情,那些单眼皮的眼睛微微凸起,冷漠、空灵,甚至有一点阴森森的感觉。他是在用一种内心的体验寻找到生活的感觉,把这种感觉用绘画的方式表达出来。他习惯自言自语,是内心独白式的艺术家,不断地用自己的方式记忆、回忆和记录。
《大家庭》系列作品为张晓刚博得广泛关注,而他的《失忆与记忆》、《绿墙》等系列作品也日渐为大家所熟知。这次展览共收集了张晓刚自就读川美三十多年以来重要的“背后的故事”,其中包括重要作品草图、阶段作品手稿、通信手稿等近200件,时间上的跨度很大。这当中分为很多个系列,不同的系列创作于不同的时期,表现了张晓刚不同的状态或者艺术发展思路。本次展览更试图通过张晓刚的个人文献来展示他创作过程后面的动机。这一展示会使我们更深入地体会一个艺术家以及一件作品产生的情绪及变化。这就是我们常说的所谓创作的秘密。当然这个秘密并不是有意隐藏起来的,它是一个有趣的、有待发现的过程,更是一种几十年创作的轨迹。这个展览比较准确地把握了张晓刚作为一个艺术家的成长过程,包括怎样学习西方,怎样寻找自己,怎样去探索个人和当代中国文化背景的关系等等。
这个展览最本质的是,展示一个艺术家是怎样成长起来的,是什么注定的他要这样开始,然后又怎样走到了今天。选择这个线索是比较困难的,因为艺术家都是很感性的,是在来来回回、曲曲折折的反复中,才走到了今天。“就像一个影子一样,随着光线的移动这个影子在变,但始终是你的影子,这样一步一步地发展到今天。”这个线索牵引着观众的思路,使其跟随着艺术家变幻莫测的感性世界来领略他的作品和内心。
主题:天下第一楼
时间:1月21日至2月8日
地点:首都剧场
人艺经典大戏《天下第一楼》又登上首都剧场的舞台。这出当年在人艺风格面临低谷时横空出世的力作,被很多演员和导演认为是人艺中兴的标志。从1988年首演至今,四百余场演出几乎场场爆满。不仅在内地各大城市及香港、台湾等地巡演好评如潮,赴日本、韩国、新加坡、爱尔兰等国演出也广受欢迎。本次的导演是夏淳和顾威,主要演员有人艺的台柱子杨立新、王长立和当家花旦岳秀清。第一版中杨立新饰演只好票戏不懂生意的大少爷,如今担纲主演剧中福聚德烤鸭店掌柜卢孟实,昔日的大少爷真的成了精明强干却最终难敌世态炎凉的掌柜的。
主题:周立波海派清口专场相声
时间:2月5日至6日
地点:上海国际体操中心
立波海派清口专场日益走红,最近的票务网站,看到最多的大概就是周立波的海报了。这位被称作为上海的“小小滑稽”的演员,凭着自己创始的“周立波海派清口相声”一路走红。周立波没有出众的外表,不高的个头,长了张标准滑稽演员的脸,不过周立波身上就聚集了无数的调侃细胞,他逼真模仿各种人物,他自嘲、外讽,从领导人到明星,都是他的相声素材。周立波海派清口专场相声还有一个最大的特色,就是用上海话侃上海事,到位、贴切、淋漓尽致,有人遗憾语言不通,无法听懂,但是就是在这懂与不懂之间才体现了上海方言的魅力,才尽显上海话的味道。
主题:玫瑰与蝴蝶
陈歌辛、陈钢作品音乐会
时间:2月19日
地点:东方艺术中心
玫瑰与蝴蝶,这两个词代表了两个音乐时代。红遍大江南北的《玫瑰玫瑰我爱你》,创作于1941年,作曲者就是陈钢的父亲陈歌辛,同时期还有许多经典歌曲,像《夜上海》、《恭喜恭喜》,这些如雷贯耳的歌曲,都是无人不知、无人不晓。而传达了美丽爱情故事的《梁山伯与祝英台》,则称得上是新中国音乐的奇迹,其作曲者之一陈钢的其他独奏作品,同样广为传颂。陈钢、潘寅林,这对老朋友在相互诉说着彼此间多年情感的同时,也影响着中国的音乐界。一位是钢琴家、作曲家,他妙笔生花,创作的作品影响了几代中国人。另一位是小提琴家,是他用精湛的技巧和真切的情感,把这些小提琴曲从谱纸最先转化为琴声。两位先生,一个能写,一个擅奏,同台献技,合作无间。
Cool design
星巴克logo的演变历史
2
法拉利从今年1月1日就开始使用新的车队logo。旧logo中的一段条形码已经消失,这个条形码被认为是万宝路的隐形广告。但是车队领队多梅尼卡利强调,车队的官方名称不会改变,万宝路依旧包含其中。
1
1971年,在西雅图派克市场成立第一家店,开始经营咖啡豆业务。
1992年,logo中,海妖头像逐渐放大,不再是全身像。
星巴克新logo 海妖证件照?
1987年,颜色换成了绿色,海妖的双鱼尾变得抽象,更像个标志。
2011年,整个logo只剩下海妖的脸和她的双鱼尾。
微软办公软件套装Microsoft Office在苹果Mac OS X系统下的最新版本Office for Mac 2011的新logo发布了,最终采用了任职于美国设计工作室Frog Design(青蛙设计)的用户体验设计师滕磊(火山大陆)的设计。清爽色调、流畅线条、动感字母,新logo更具科技感。
2011年,新logo流行发布
3月,星巴克将在不惑之年穿上新衣。
西雅图总部已经宣布,在2011年3月公司40周岁之际启用新的logo。新logo将去除两个“STARBUCKS COFFEE”字样以及外圈,只留下由白、绿两种颜色而成的海妖(也称美人鱼),并将其放大。
星巴克公司主席、总裁兼首席执行长(CEO)霍华德·舒尔茨宣布的第二天,不同的声音纷纷而来。美国huffingtonpost网站做个一个简单的统计,40.85%的人认为星巴克标志的修改很成功,59.15%的人则认为新logo的设计很糟糕,甚至建议应该重新把乳房画上去。
“我认为新logo的视觉效果太复杂。我用了其他没有字母的logo与之做比较,比如麦当劳、NIKE等,这些品牌平均视觉元素只用了2〜3个;但海妖的艺术线条延伸到图像边缘时,看起来有27个视觉元素(每个流线末端为一个触点)。太多太繁琐,视觉效果很差。”
“该公司敏锐地关注着环境的可持续发展,现在要花费上千万元改变logo为的是什么?就算改变logo也无法改变一个现实——每个人都知道星巴克卖咖啡。就像百威啤酒logo的变化一样,早已深入人心。”
“这是有史以来最大的错误,他们一定会再次变更,修改这个错误。”
“作为品牌的标志,把名字从logo中删除是最大的错误。现在的logo更像是电影、电视节目的标志。”
这次举动是星巴克公司继1971年创建以来第4次修改公司标志(1978年只对海妖有略微改动),在星巴克标志的演变历史上,海妖的美越来越含蓄了,从最初的坦胸露乳,到抽象的双鱼尾,整个过程让星巴克的形象如其品牌一般经典。但这次的过于简洁,最受争议的是去掉logo中的两个单词,这让很多粉丝不解其意,为何要将“STARBUCKS COFFEE”这样的重要字符也抹去?此前,星巴克已经在美国地区推出了非咖啡类产品,比如茶类、冰激凌等,如果再用“COFFEE”显然不太合适,而且星巴克打算跳出零售店,延伸到超市等其他渠道。霍华德·舒尔这次大手笔的变动似乎可以验证一个说法:当初星巴克结束与百事可乐的合作,是为了独霸超市等零售渠道。但未来的星巴克仍将以咖啡类产品和门店为其业务核心和灵魂。霍华德·舒尔还表示,星巴克也一直会是一家咖啡公司和零售商,“我们不会把商标贴在削弱星巴克质量的东西上。”
据说2011年的logo设计趋势应该为动态、迷幻、炫彩,显然星巴克的新装与时下流行一点都不沾边:朴素的颜色、平面的图案,与旧logo相差不大,虽没有踏入主流行列,却保存了怀旧味道。但就是那简单的三处变动,让原有的经典变了味,更是招来了褒贬不一的评论。有评论总是好的,毕竟星巴克已经亲近得如同邻居一般,每一个动静都会有人关注,并掏心窝地诉说真心话,这样总比没人理会的强。
3
暴风影音在2009年启用的原logo基础上变成了亮蓝色。新的一年,暴风影音官网也全新改版,同样采用和新logo一致的亮蓝色风格。
4
【嵌入式实验一实验报告】推荐阅读:
嵌入式实验二实验报告07-26
嵌入式系统开发实验一09-07
嵌入式实验报告三11-13
嵌入式系统实验报告三06-16
嵌入式产业实习报告10-21
嵌入式系统10-18
嵌入式--实训总结07-31
我眼中的嵌入式11-07
嵌入式课程设计感想01-13
高级嵌入式面试题01-26