旅游文化学院 ARM嵌入式技术 期中考查方案.docx
- 文档编号:11775546
- 上传时间:2023-06-02
- 格式:DOCX
- 页数:8
- 大小:1.02MB
旅游文化学院 ARM嵌入式技术 期中考查方案.docx
《旅游文化学院 ARM嵌入式技术 期中考查方案.docx》由会员分享,可在线阅读,更多相关《旅游文化学院 ARM嵌入式技术 期中考查方案.docx(8页珍藏版)》请在冰点文库上搜索。
旅游文化学院ARM嵌入式技术期中考查方案
云南大学旅游文化学院《ARM嵌入式技术》期中考查方案
2012级2015—2016学年第一学期
一、ARM嵌入式开发环境的搭建
下载Ubuntu10.04,并安装在虚拟机中,为linux开发搭建可用的开发环境。
二、Ubuntu10.04操作系统下的C程序开发
在Ubuntu10.04的命令窗口,输入gedit和hello.c,创建C文件,并在里面写入相应的C程序,写完保存关闭。
然后输入命令arm-liunx-gcc-o和hello.C交叉编译,生成可在开发板上运行的文件。
三、qtopia文件系统的移植
打开DNW程序,插上USB。
连接开发板
1、Linux
进入DNW选择连接点击X,然后再点击F。
择功能号[v]开始下载superviv,选择superviv128M。
然后选择K,选择文件zImage_x35
再点击y,选择rootfs_qtopia_qt4。
等待安装即可。
2、Wince
进入DNW选择连接点击X,然后再点击F。
择功能号[n]开始下载Nboot.bin,选择功能号[l],开始下载bmp图片作为BootLogo
选择功能号[w],开始下载WINCE内核NK_X35.bin。
等待安装即可
四、Linux启动文件的修改和vi的使用
打开SecureCRTPortable软件,连接上开发板,输入ls,查看文件夹,cd打开主目录下的etc/init.d/rcs,输入命令:
“vircS”,打开编译器。
点击i,开始修改,修改完之后按Esc退出,然后“shift+:
”,输入:
“wq!
”保存并退出。
五、裁剪自己的开发板操作系统,内核使用Linux2.6.3,并开发一个测试程序,实现按键控制4个LED灯和蜂鸣器
(1)进入Ubuntu10.04的命令输入框并进入主目录,输入命令:
“cdopt/FriendlyARM/mini2440/linux-2.6.32.2”,进入到linux-2.6.32.2目录后输入:
“cpconfig_mini2440_x35config_mini2440_x35.config”,复制生成“.config”文件,然后输入:
“makemenuconfig”,打开如上图所示的窗口,裁剪修改liunx内核。
完成后退出保存。
烧写裁剪过后的系统到开发板即可。
(2)以下为按键控制4个LED灯和蜂鸣器的C程序。
其中按键k1k2k3k4按下分别控制1~4的LED灯点亮。
按键k5为蜂鸣器。
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#definePWM_IOCTL_SET_FREQ1
#definePWM_IOCTL_STOP0
#defineESC_KEY0x1b
staticintgetch(void)
{structtermiosoldt,newt;
intch;
if(!
isatty(STDIN_FILENO)){
fprintf(stderr,"thisproblemshouldberunataterminal\n");
exit
(1);
}
//saveterminalsetting
buzzer
atexit(close_buzzer);}
staticvoidclose_buzzer(void)
{if(fd>=0){
ioctl(fd,PWM_IOCTL_STOP);
close(fd);
fd=-1;}
}
staticvoidset_buzzer_freq(intfreq)
{
//thisIOCTLcommandisthekeytosetfrequency
intret=ioctl(fd,PWM_IOCTL_SET_FREQ,freq);
if(ret<0){perror("setthefrequencyofthebuzzer");
exit
(1);}
}
staticvoidstop_buzzer(void)
{intret=ioctl(fd,PWM_IOCTL_STOP);
if(ret<0){perror("stopthebuzzer");exit
(1);}}
intpwd()
{intfreq=1000;open_buzzer();printf("\nBUZZERTEST(PWMControl)\n");
printf("Press+/-toincrease/reducethefrequencyoftheBUZZER\n");
intled(intledo,intledn)
{
inton;intled_no;intfd;led_no=ledo;on=ledn;
/*if(argc!
=3||sscanf(argv[1],"%d",&led_no)!
=1||sscanf(argv[2],"%d",&on)!
=1||
on<0||on>1||led_no<0||led_no>3){
fprintf(stderr,"Usage:
ledsled_no0|1\n");
exit
(1);}*/
fd=open("/dev/leds0",0);
if(fd<0){fd=open("/dev/leds",0);}
if(fd<0){
perror("opendeviceleds");
exit
(1);}
ioctl(fd,on,led_no);
close(fd);
return0;}
intmain(void)
{
intbuttons_fd;
charbuttons[6]={'0','0','0','0','0','0'};
buttons_fd=open("/dev/buttons",0);
else
led(i,1);}
else
pwd();}
}
if(count_of_changed_key){printf("\n");
}
if(tcgetattr(STDIN_FILENO,&oldt)<0){
perror("savetheterminalsetting");exit
(1);
}
//setterminalasneed
newt=oldt;
newt.c_lflag&=~(ICANON|ECHO);
if(tcsetattr(STDIN_FILENO,TCSANOW,&newt)<0){
perror("setterminal");
exit
(1);}
ch=getchar();
//restoretermialsetting
if(tcsetattr(STDIN_FILENO,TCSANOW,&oldt)<0){
perror("restorethetermialsetting");exit
(1);}
returnch;}
staticintfd=-1;
staticvoidclose_buzzer(void);
staticvoidopen_buzzer(void)
{fd=open("/dev/pwm",0);
if(fd<0){
perror("openpwm_buzzerdevice");
exit
(1);}
//anyfunctionexitcallwillstopthe
printf("Press'ESC'keytoExitthisprogram\n\n");
while
(1)
{intkey;
set_buzzer_freq(freq);
printf("\tFreq=%d\n",freq);
key=getch();
switch(key){
case'+':
if(freq<20000)
freq+=10;
break;
case'-':
if(freq>11)
freq-=10;
break;
caseESC_KEY:
caseEOF:
stop_buzzer();
exit(0);
default:
break;
}}}
if(buttons_fd<0){
perror("opendevicebuttons");
exit
(1);}
for(;;){
charcurrent_buttons[6];
intcount_of_changed_key;
inti;
if(read(buttons_fd,current_buttons,sizeofcurrent_buttons)!
=sizeofcurrent_buttons){
perror("readbuttons:
");
exit
(1);
}
for(i=0,count_of_changed_key=0;i if(buttons[i]! =current_buttons[i]){ buttons[i]=current_buttons[i]; printf("%skey%dis%s",count_of_changed_key? ",": "",i+1,buttons[i] } close(buttons_fd); return0; } =='0'? "up": "down"); count_of_changed_key++; if(i<4) { if(buttons[i]=='0') led(i,0); 总结: 通过这久的学习,学会了Linux的安装和一些命令的书写,从Linux再到开发板的学习,深刻的了解了linux与开发板之间的应用。 根据以后五点的实践,学会了安装linux系统和wince系统;在开发板上进行实验,在SecureCRTPortable软件上进行修改参数。 基本学会了如何使用开发板,点亮开发板上的器件。 学ARM,从硬件上讲,一方面就是学习接口电路设计,另一方面就是学习汇编和C语言的板级编程。 如果从软件上讲,就是要学习基于ARM处理器的操作系统层面的驱动、移植了。 这些对于初学都来说必须明确,要么从硬件着手开始学,要么从操作系统的熟悉到应用开始学,但不管学什么,只要不是纯的操作系统级以上基于API的应用层的编程,硬件的寄存器类的东西还是要能看懂的,基于板级的汇编和C编程还是要会的。 因此针对于嵌入式系统的硬件层和驱动层的人,ARM的接口电路设计、ARM的C语言和汇编语言编程及调试开发环境还是需要掌握的。 因此对于初学者必然要把握住方向,自己的目标是什么,自己要在那一层面上走。 然后再着手学习较好,与ARM相关的嵌入式系统的较为实际的两个层面硬件层和驱动层,不管学好了那一层都会很有前途的。 如果想从嵌入式系统的应用层面的走的话,可能与ARM及其它体系相去较远,要着重研究基于嵌入式操作系统的环境应用与相应开发工具链。 随着微电子技术的发展和电子制造工艺的进步,嵌入式系统硬件的体积会不断缩小,系统稳定性也在不断增强,可以把更多功能集成到一个芯片上;同时功耗方面也不断降低。 随着网络的普及和IPv6技术的应用(注: IPv6技术主要解决了IPv4的IP地址数目紧缺的现状),越来越多的嵌入式设备也会加入到网络中。 嵌入式系统包括硬件和软件。 硬件包括了嵌入式微处理器和嵌入式微控制器以及一些外围元器件和外部设备;软件包括了嵌入式操作系统和应用软件。 嵌入式系统硬件种类繁多,有许多硬件和软件的解决方案,不同嵌入式系统软硬件很难兼容,软件必须修改而硬件必须重新设计才能使用。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 旅游文化学院 ARM嵌入式技术 期中考查方案 旅游 文化 学院 ARM 嵌入式 技术 期中 考查 方案