嵌入式实验报告二
嵌入式实验报告二
嵌入式实验报告二实验时间2013/6/9 报告人一、实验目的:1.学习cygwin;2.通过上机实验,使学生验证、巩固和充实所学理论知识,加深对相关内容的理解,了解嵌入式Linux的工具链,掌握基于Linux的C程序设计。
二、实验要求:1.安装cygwin;2.学习GCC的使用和Makefile的编写。
3.编程实现文件拷贝功能。
三、问题:1.简述Gcc的常用选项并举例说明。
Gcc基本使用格式:$ gcc [ 选项] <文件名>命令行中gcc表示我们是用gcc来编译我们的源程序,[选项]表示我们要求编译器给我们输出的文件为何种类型,相当于一种约束。
常见选项:-o :将源文件经过gcc处理过的结果输出,这个结果文件可能是预处理文件、汇编文件、目标文件或者最终的可执行文件。
比如:gcc hello.c –o hello 把源文件hello.c 经gcc编译后生成可执行的文件输出为hello-E :只激活源程序的预处理,这个不生成文件,你需要把它重新定向到一个输出文件里面。
比如:gcc –E hello.c –o hello.i 把源文件hello.c经gcc预处理后的文件输出为hello. i。
-c :只激活源程序的预处理,编译,和汇编,也就是他只把程序生成obj文件。
比如:gcc –c hello.c –o hello.o 把源文件hello.c经gcc 预处理,编译,和汇编后的文件输出为hello.o。
-S :只激活源程序的预处理和编译,就是指把文件编译成为汇编代码。
比如:gcc –S hello.c –o hello.s把源文件hello.c经gcc 预处理,编译后的文件输出为hello.s。
-g :表示我们要求编译器在编译的时候提供我们以后对程序进行调试的信息。
2.简述Makefile编写规则,举例说明。
makefile 编写规则:(1)以“#”开始的行为注释(2)文件依赖关系为:target: components //表示的是依赖关系TAB rule //编写规则,TAB表示那是一个TAB键例如有如下:/* main.c */#include "mytool1.h"#include "mytool2.h"int main(int argc,char **argv){mytool1_print("hello");mytool2_print("hello");}/* mytool1.c */#include "mytool1.h"void mytool1_print(char *print_str){printf("This is mytool1 print %s\n",print_str);}/* mytool2.c */#include "mytool2.h"void mytool2_print(char *print_str){printf("This is mytool2 print %s\n",print_str);}/* mytool1.h */#ifndef _MYTOOL_1_H#define _MYTOOL_1_Hvoid mytool1_print(char *print_str);#endif/* mytool2.h */#ifndef _MYTOOL_2_H#define _MYTOOL_2_Hvoid mytool2_print(char *print_str);#endif可以这样来编译gcc -c main.cgcc -c mytool1.cgcc -c mytool2.cgcc -o main main.o mytool1.o mytool2.o这样的话我们也可以产生main程序,而且也不时很麻烦在我们执行make之前,我们要先编写一个非常重要的文件——Makefile。
嵌入式实验报告2
嵌入式系统设计实验报告1 问题描述在Linux操作系统和ARM嵌入式实验系统环境下,分析linux下的键盘、数码管驱动程序,编写一个应用程序,实现以下功能:在ARM开发板上按下数字键1、2、3、4时,对应启动模拟量开发板上的模拟量输入端AIN0、AIN1、AIN2、AIN3采样,并把模数转换的结果从终端输出和数码管显示。
数码管显示格式:通道号转换的电压值;例如:2灭灭3.251.1设计目标在ARM开发板上按下数字键1、2、3、4时,对应启动模拟量AIN0、AIN1、AIN2、AIN3采样,并把A/D转换的结果从终端输出和LED显示。
显示格式:通道号转换的电压值。
1.2设计思路根据设计目标,该问题可分为六个模块进行设计,分别为驱动程序加载、打开设备、键盘扫描、A/D转换、数码管显示,总体设计方案如图1所示。
图1 总体设计方案(1)驱动程序加载用户的应用程序以设备文件方式访问驱动程序,即Linux把设备当文件,通过文件系统对设备进行访问。
针对这个实验,需要用到ADC0809芯片,LED显示数码管,小键盘。
为此,用lsmod命令加载这三个对应的驱动程序adc0809.c、led.c和keybd.c,再以insmod的方式加入内核。
驱动程序主要是设置一些寄存器的内容来确定端口的引脚输入输出方式以及键盘的扫描部分代码,LED控制显示函数等。
(2)打开各个设备在Linux系统下,各个设备都是通过文件来进行描述的,因此用open函数打开需要用到的LED、键盘、ADC0809芯片。
并且要有对应的出错处理。
(3)键盘扫描驱动程序加载进去以后,运行可执行文件,代码就进入到了按键按下等待的代码中了。
对于用户而言,只是在键盘中按下了某个键,在计算机里,通过驱动得到按下的键值并通过read(fd_kb,&result_kb,1)函数把值赋给变量result_kb中(其中fd_kb为键盘的文件描述符)。
(4)A/D转换启动ADC0809芯片对应的通道进行数据转换,这里主要通过iotcl和read 这两个函数实现,并把转化后的结果赋给result_ad这个变量。
嵌入式报告实验报告
嵌入式报告实验报告1. 引言嵌入式系统作为一种特殊的计算机系统,应用广泛且日益重要。
嵌入式报告实验是对嵌入式系统进行实际操作和测试的过程,旨在验证嵌入式系统的功能和性能,以评估其是否满足设计要求。
本报告将详细介绍嵌入式报告实验的设计与实施,并对实验结果进行分析与总结。
2. 实验设计2.1 实验目的嵌入式报告实验的目的是通过设计和实施一系列测试来评估嵌入式系统的性能和功能。
具体目标包括但不限于:验证系统的实时性、稳定性和可靠性;测试系统的各种输入输出功能;评估系统对异常情况的处理能力。
2.2 实验环境实验使用的嵌入式系统硬件为XX处理器,集成了XX模块和XX接口。
软件方面,使用XX嵌入式操作系统和XX开发工具进行系统开发和测试。
2.3 实验步骤1) 配置硬件环境:将嵌入式系统与外部设备连接,确保硬件环境正常。
2) 编写测试程序:根据实验目标,编写相应的测试程序,包括输入输出测试、性能测试和异常情况测试等。
3) 软件调试:通过软件调试工具对测试程序进行调试,确保程序逻辑正确。
4) 硬件调试:通过硬件调试工具对嵌入式系统进行调试,确保硬件模块正常工作。
5) 实验运行:将测试程序下载到嵌入式系统中,运行测试程序并记录实验数据。
6) 数据分析与总结:对实验数据进行分析和总结,评估嵌入式系统的性能和功能是否满足设计要求。
3. 实验结果与分析3.1 输入输出测试通过设计一系列输入输出测试用例,测试嵌入式系统的输入输出功能。
测试包括但不限于:按键输入、传感器数据采集、外部设备通信等。
实验结果表明,嵌入式系统的输入输出功能正常,能够准确获取和处理各种输入信号,并成功输出相应的结果。
3.2 性能测试通过设计一系列性能测试用例,测试嵌入式系统的处理能力和实时性。
测试包括但不限于:任务切换速度、响应时间、系统负载等。
实验结果表明,嵌入式系统具有较高的处理能力和实时性,能够快速响应各种任务并保持系统的稳定性。
3.3 异常情况测试通过设计一系列异常情况测试用例,测试嵌入式系统对异常情况的处理能力。
嵌入式实训报告2篇
嵌入式实训报告嵌入式实训报告精选2篇(一)嵌入式实训报告一、实训目的和背景嵌入式系统在现代社会中应用广泛,具有重要的实际意义。
为了进步学生的实际应用才能,我们组织了一次嵌入式实训。
通过实际操作与理论,培养学生的嵌入式系统开发才能和解决实际问题的才能。
二、实训内容1. 嵌入式系统开发环境的搭建:学生首先学习如何搭建嵌入式系统的开发环境,包括安装集成开发环境、配置编译工具链等。
2. 嵌入式系统根底知识的学习:学生学习嵌入式系统的根本概念、原理和架构,理解嵌入式系统的工作原理和开发流程。
3. 嵌入式系统软件开发:学生通过实际编程理论,掌握嵌入式系统的软件开发技术,包括编写驱动程序、应用程序等。
4. 嵌入式系统硬件开发:学生通过实际操作,学习嵌入式系统的硬件开发技术,包括电路设计、硬件接口设计等。
5. 嵌入式系统应用理论:学生完成一个实际工程,将所学的嵌入式系统开发技术应用到实际问题的解决中,加深对嵌入式系统的理解和应用才能。
三、实训过程1. 搭建嵌入式系统开发环境:学生按照实训指导书的要求,完成嵌入式系统开发环境的搭建。
2. 学习嵌入式系统根底知识:学生通过听课和自学,理解嵌入式系统的根本原理和架构。
3. 软件开发理论:学生根据实训指导书中的实例,编写嵌入式系统的软件程序。
4. 硬件开发理论:学生根据实训指导书中的实例,完成嵌入式系统的硬件设计和接口设计。
5. 应用理论:学生根据自己的兴趣和实际需求,选择一个实际工程,并使用嵌入式系统开发技术,完成工程的开发和施行。
四、实训效果通过嵌入式实训,学生深化学习了嵌入式系统的开发技术和实际应用,掌握了嵌入式系统的开发流程和方法。
同时,学生通过理论操作,进步了自己的动手才能和解决问题的才能。
实训过程中,学生不断考虑和探究,解决了许多实际问题,获得了良好的效果。
五、总结与展望嵌入式实训是一次富有意义的理论活动,通过实际操作与理论,加深了学生对嵌入式系统的理解和应用才能。
嵌入式实训报告范文2篇2
嵌入式实训报告范文 (2)嵌入式实训报告范文 (2)精选2篇(一)嵌入式实训报告一、实训背景嵌入式系统是一种以具体任务为中心,集成了硬件与软件的计算机系统。
由于其体积小、功耗低、功能强大等特点,嵌入式系统被广泛应用于各个领域,如家电、汽车、医疗等。
通过参与嵌入式实训,我希望能够掌握嵌入式开发的基本原理和方法,提高自己的实践能力。
二、实训目标1.掌握嵌入式系统的基本知识和开发工具的使用;2.了解嵌入式系统的硬件架构和软件设计流程;3.能够根据需求设计并实现简单的嵌入式系统。
三、实训内容1.学习嵌入式系统基础知识:通过课堂教学和自主学习,了解了嵌入式系统的概念、特点及应用领域。
深入学习了ARM架构和C语言的基本知识,并进行了相应的实践操作。
2.学习嵌入式开发工具的使用:学习了Keil MDK和IAR Embedded Workbench等常用的嵌入式开发工具的安装和配置方法。
通过实操操作,掌握了调试、编译、下载等基本功能的使用。
3.学习嵌入式系统设计流程:了解了嵌入式软件开发的常用流程,包括需求分析、系统设计、编码实现、调试测试、系统验证等。
通过案例分析和实践操作,对嵌入式系统设计流程有了更深入的了解。
4.设计并实现简单的嵌入式系统:根据实训要求,我选择了一个简单的嵌入式系统项目,通过分析需求、设计系统架构、编写软件代码、调试测试等环节,最终成功完成了项目。
四、实训总结及收获通过参与嵌入式实训,我不仅掌握了嵌入式系统的基本知识和开发工具的使用,还锻炼了自己的实践能力。
我深刻认识到嵌入式系统开发需要全面的知识储备和较高的技术水平,同时也需要良好的分析、设计和沟通能力。
通过实训,我对嵌入式系统开发流程有了更深入的理解,对嵌入式系统的设计和开发也有了更高的认识和要求。
在未来的学习和工作中,我会继续深入学习嵌入式系统开发相关知识,并不断提高自己的实践能力。
嵌入式系统是未来的发展方向,通过不断探索和实践,我相信我能够在这个领域取得更好的成果。
嵌入式实训报告范文2篇
嵌入式实训报告范文嵌入式实训报告范文精选2篇(一)嵌入式实训报告一、实训目的和背景嵌入式实训的目的是通过设计和实现一个嵌入式系统,培养学生的嵌入式系统开发才能和团队协作才能。
本次实训的背景是为了满足社会对嵌入式系统开发人才的需求,进步学生的实际动手才能。
二、实训内容1. 硬件平台的选择和搭建:选择了一款ARM开发板作为硬件平台,并搭建了相应的开发环境。
2. 系统设计和分析:根据实训要求,我们团队设计了一个智能门锁系统,包括用户认证、门锁控制和远程监控功能。
3. 软件开发:使用C语言和嵌入式开发工具进展软件开发,实现了用户认证、门锁控制和远程监控等功能。
4. 硬件连接和调试:将开发板和相关传感器、执行器等硬件设备进展连接和调试,确保系统可以正常运行。
5. 功能测试和调优:对系统进展全面测试,发现并修复了一些问题,并对系统进展了性能优化。
三、实训心得和体会通过本次实训,我深入认识到嵌入式系统开发的复杂性和挑战性。
在实训过程中,我们团队遇到了许多问题,比方硬件和软件的兼容性、性能优化等方面。
但是通过团队的努力和合作,我们成功解决了这些问题,并完成了一个功能完善的嵌入式系统。
此外,我还学到了许多软件开发和硬件调试的技巧,进步了自己的实际动手才能。
在团队协作方面,我们团队成员之间互相配合,共同解决问题,形成了良好的协作机制。
总结起来,本次嵌入式实训让我受益匪浅,学会了许多实际应用的技能和知识,并进步了自身的综合才能。
四、实训成果展示在实训完毕后,我们团队成功完成了一个智能门锁系统,具备用户认证、门锁控制和远程监控等功能。
系统的稳定性和可靠性得到了验证,并且在实际使用中得到了积极的反应。
附图:〔展示系统界面、硬件设备连接示意图等〕五、实训改良意见尽管本次实训获得了良好的成果,但仍有一些方面需要改良。
首先,实训的时间安排可以更合理一些,以便更充分地利用时间进展理论操作。
其次,可以增加一些真实场景的案例分析和解决方案的设计,以提升学生的实际应用才能。
嵌入式实验报告二work2.
实验报告课程名称嵌入式系统编程实践实验仪器清华同方辰源嵌入式系统实验箱实验名称实验二:利用中断实现OLED动态显示实验系另寸计算机学院专业______________班级/学号__学生姓名__________________实验日期2013年9月22日成绩_________________________指导教师朱敏玲_______实验二:利用中断实现OLED动态显示实验一、实验问题回答(1)ISR是什么?简述一下中断的作用和使用方法答:ISR是中断服务程序。
作用是通过处理器执行事先编好的某个特定的程序。
使用方法就是在main中写一个中断程序,然后在startup.s中进行注册。
(2)嵌入式系统中有哪些应用有定时性循环处理的要求?举几个例子答:在各种网络的应用中,设计的一些部件,如计数器,时钟等。
(3)定时时间间隔如何修改?答:通过改变SysTickPeriodSet(SysCtlClockGet()/100后面的100 这个参数。
(4)选作内容5-8的编程思路是什么?若做的话应该怎样实现?答:编程思路:先画直线和竖线,组成一个正方形,将各个参数填写到函数RIT128x96x4lmageDraw(buf ,,,,);第6个选作:判断画的原点x,原点y,和画原点x+的长,画原点y+画宽的值要在0-128和0-96。
第7个选作:把RIT128x96x4StringDraw("hello",,,);就是把画的灰度定义为一个变量x。
最后就会出现由不同的亮度而形成的波浪。
第8个就是利用随机函数产生画的原点,随机的在屏幕上进行显示。
(5)拖影现象如何解决?计数值显示为什么没有拖影?答:在程序结束后执行清屏语句:计数显示是每次重新赋值,所以不会出现拖影。
二、实验目的和效果(效果即是否达到实验目的,达到的程度如何)(1)深入学习、理解、掌握OLED字符显示方法(2)深入学习、理解、掌握OLED图形显示方法(3)学习、理解、掌握中断使用方法实验效果图:、实验内容和步骤(重点阐述自己的思路及遇到的问题)(一) Keil 开发环境中对项目Project 配置(1)建立项目1、新建一个project;2、选择CPU 中的Luminary LM3S 8962 ;3、加载库文件;4、项目相关配置项修改。
嵌入式系统实验报告
嵌入式系统实验报告文件排版存档编号:[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.然后就这样周而复始的循环下去。
嵌入式实验报告
实验一 ARM汇编语言程序设计一、实验目的1.了解IAR Embedded Workbench 集成开发环境2.掌握ARM汇编指令程序的设计及调试二、实验设备1.PC操作系统WIN98或WIN2000或WINXP,ADSI.2集成开发环境,仿真驱动程序三、实验内容1.熟悉IAR Embedded Workbench 集成开发环境2.理解下列程序,新建工程,加入下面的程序,并观察实验结果,解释程序实现的功能分析:该程序实现的功能是程序功能:Y = A*B+C*D+E*F程序代码:AREA Examl, CODE,READONLY ;定义一个代码段ENTRY ;程序入口MOV R0,#0;设置R0寄存器的值为0MOV R8,#0;设置R8寄存器的值为0ADR R2,N;将R2寄存器的值设为数据域N的地址LDR R1,[R2];将以R2的值为地址的数据读入R1MOV R2,#0;设置R2的值为0ADR R3,C; 将R3寄存器的值设为数据域C的地址ADR R5,X; 将R5寄存器的值设为数据域X的地址LOOPLDR R4,[R3,R8];将R3+R8的数据读入R4LDR R6,[R5,R8];将R5+R8的数据读入R6MUL R9,R4,R6;R9 = R4*R6ADD R2,R2,R9;R2 = R2+R9ADD R8,R8,#4;R8 = R8+4ADD R0,R0,#1;R0 = R0+1CMP R0,R1;比较R0和R1的值BLT LOOP;R0<R1的话执行循环N DCD 0X03;C DCD 0X01,0X02,0X03,0X04,0X05,0X06;X DCD 0X01,0X02,0X03,0X04,0X05,0X06;END程序结果:各个寄存器的结果执行结果如下:3.实现1+2+3+4+····+100,求的值,并保存在地址0x90018的地址里面程序代码:MOV R0,#100;设置R0寄存器的值为100LDR R2,=0X90018;设置R2寄存器指向地址0x90018MOV R1,#0;设置R1的值为0MOV R3,#0;设置R3的值为0LOOPADD R3,R3,R0;R3 = R3+R0SUB R0,R0,#1;R0 = R0-1CMP R0,R1;将R0和R1的值比较BNE LOOP;不相等的话继续执行循环STR R3,[R2];将R3的值装入到R2指向的地址块中。
嵌入式实习报告
嵌入式实习报告嵌入式实习报告(精选5篇)在生活中,报告的用途越来越大,我们在写报告的时候要注意逻辑的合理性。
相信许多人会觉得报告很难写吧,以下是店铺精心整理的嵌入式实习报告(精选5篇),希望对大家有所帮助。
嵌入式实习报告篇1一、实习时间20xx年4月12日-20xx年4月26日二、指导教师姓名陈xx三、实习地点长沙市牛耳服务外包实训基地四、实习目的与内容对于嵌入式项目进行学习培训,掌握嵌入式的主要项目及相关技术五、实习收获与体会一转眼半个月的实习生活过去了,现在我已经回到学校,回想起半个月的实习生活,自己学到了很多,懂得了很多。
真的说不出是什么感觉,伴着时间,就像是在和自己的影子赛跑,不可能从真实的两面去看清它,只是经意不经意的感受着有种东西在过去,也许更适合的只有那句话:时不待我,怎可驻足。
原以为实习对于我来说会是很长,但实际却不同。
想象收获的东西,真的很多,看看我的工作笔记,一篇又一篇,记别人的事情比自己的还多,也许实习,并不像我想象中的那样轻松惬意,而是充满了挑战和艰辛。
我给自己敲响了警钟:“不要半途而废,做事情切忌三分热度。
”我信心十足的回答到:“我一定会坚持到底!”天下英雄皆我辈,一入江湖立马催。
” 从学校到社会的大环境的转变,身边接触的人也完全换了角色,老师变成老板,同学变成同事,相处之道完全不同。
在这巨大的转变中,我们可能彷徨,迷茫,无法马上适应新的环境,但在同学、同事的帮助和自己摸索的情况下,我还是完成了这次实习。
但我发现,以我们的经验,不学到一定的深度和广度是难以在实际工作中应付自如的。
因此反映出学习的还不够,缺点疏漏。
需在加以刻苦钻研及学习,不断开拓视野,增强自己的实践操作技能,我们也许看不惯企业之间残酷的竞争,无法忍受同事之间漠不关心的眼神和言语。
很多时候觉得自己没有受到领导重用,所干的只是一些无关重要的杂活,自己的提议或工作不能得到老板的肯定。
做不出成绩时,会有来自各方面的压力,老板的眼色同事的嘲讽。
嵌入式实验报告二
嵌入式实验报告二一、实验目的:1.学习cygwin;2.通过上机实验,使学生验证、巩固和充实所学理论知识,加深对相关内容的理解,了解嵌入式Linux的工具链,掌握基于Linux的C程序设计。
二、实验要求:1.安装cygwin;2.学习GCC的使用和Makefile的编写。
3.编程实现文件拷贝功能。
三、问题:1.简述Gcc的常用选项并举例说明。
Linux中gcc常用编译选项-x language filename设定文件所使用的语言,使后缀名无效,对以后的多个有效.也就是根据约定,C语言的后缀名称是.c的,而C++的后缀名是.C或者.cpp,如果你很个性,决定你的C代码文件的后缀名是. pig 哈哈,那你就要用这个参数,这个参数对他后面的文件名都起作用,除非到了下一个参数的使用。
可以使用的参数有下面的这些:`c', `objective-c', `c-header', `c++', `cpp-output', `assembler', and `assembler-with-cpp'.看到英文,应该可以理解的。
例子用法: cd..gcc -x c hello.pig-x none filename关掉上一个选项,也就是让gcc根据文件名后缀,自动识别文件类型例子用法:gcc -x c hello.pig -x none hello2.c-c只激活预处理,编译,和汇编,也就是他只把程序做成obj文件例子用法:gcc -c hello.c他将生成.o的obj文件-S只激活预处理和编译,就是指把文件编译成为汇编代码。
例子用法gcc -S hello.c他将生成.s的汇编代码,你可以用文本编辑器察看-E只激活预处理,这个不生成文件,你需要把它重定向到一个输出文件里面.例子用法:gcc -E hello.c > pianoapan.txtgcc -E hello.c | more慢慢看吧,一个hello word 也要预处理成800行的代码-o制定目标名称,缺省的时候,gcc 编译出来的文件是a.out,很难听,如果你和我有同感,改掉它,哈哈例子用法gcc -o hello.exe hello.c (哦,windows用习惯了)gcc -o hello.asm -S hello.c-pipe使用管道代替编译中临时文件,在使用非gnu汇编工具的时候,可能有些问题gcc -pipe -o hello.exe hello.c-ansi关闭gnu c中与ansi c不兼容的特性,激活ansi c的专有特性(包括禁止一些asm inline typeof 关键字,以及UNIX,vax等预处理宏/* 注释中的不常用****************************************************-fno-asm此选项实现ansi选项的功能的一部分,它禁止将asm,inline和typeof用作关键字。
嵌入式实验报告
实验一二进制数相加AREA BcdAdd, CODE, READONL YENTRYstart ldr r0, =0x19345678 ;程序开始ldr r1, =0x49678901 ;将两个十六进制数分别送到r0,r1bl bcda ;程序跳转到bcdastop b stop ;程序结束bcda mov r8,r0 ;将r0中的数值送到r8中mov r9,r1 ;将r1中的数值送到r9中mov r0,#0 ;将r0置为0mov r4,#0 ;将r4置为0mov r7,#8 ;r7置为8,作为循环次数loop and r2,r8,#0xf ;取r8中的最低位存放到r2中and r3,r9,#0xf ;取r9中的最低位存放到r3中add r4,r4,r2add r4,r4,r3 ;将最低位相加之后的结果存到r4cmp r4,#0xa ;将结果与10进行比较addcs r4,r4,#6 ;若结果不小于10,则将结果加6mov r8,r8,lsr #4mov r9,r9,lsr #4 ;将r8,r9中的数右移4位mov r0,r0,lsr #4 ;将r0中的数右移四位orr r0,r0,r4,lsl #28 ;将r4中的数左移28位后存入r0mov r4,r4,lsr #4 ;将r4中的数右移4位,留下进位subs r7,r7,#1 ;循环次数减一bne loop ;跳出循环mov pc,lr实验结果:先取出最低位,做加法,结果若不小于10,则将结果修改位十进制(加6),并将进位存入r4的最低位。
一次循环结束后,循环计数r7减1。
下一次循环中,将做加法的两个数的次低位相加,并与低位的进位进行运算,依次循环下去,最终相加所得的结果存在r0中。
实验二数据块的复制AREA Block, CODE, READONLYnum EQU 17 ;定义num为17ENTRYstart LDR r0, =src ;将源地址存到r0LDR r1, =dst ;将目的地址存到r1MOV r2, #num ;将17存到r2blockc MOVS r3,r2, LSR #3 ;将r2中的17除以8后存入r3 BEQ cpw ;少于8个字节程序跳转到cpwSTMFD sp!, {r4-r11} ;保存工作寄存器Octcopy LDMIA r0!, {r4-r11} ;从r0保存的源地址取出8个字节放到r4-r11中STMIA r1!, {r4-r11} ;将r4-r11中的数据设置到目的地址SUBS r3, r3, #1 ;计数r3减1BNE octcopy ;r3不为0,继续拷贝LDMFD sp!, {r4-r11} ;恢复工作寄存器cpw ANDS r2, r2, #7 ;最多拷贝7个字BEQ stop ;拷贝完,跳转到stop wordcopy LDR r3, [r0], #4 ;从不到8个字的数据块中取出1个字存入r3中STR r3, [r1], #4 ;将r3中数据设置到目的地址SUBS r2, r2, #1 ;判断剩余的字是否拷贝完成BNE wordcopy ;r2不为0,继续拷贝stop B stop ;死循环,程序停止AREA BlockData, DA TA, READWRITE ;定义源地址数据和目标地址src DCD 1,2,3,4,5,6,7,8,1,2,3,4,5,6,7,8,1,2,3,4dst DCD 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0将源数据块中的数据除以8后,将整字个数存入r3中,通过Octcopy将整字拷贝到目的地址中。
嵌入式教学实践报告(3篇)
第1篇一、引言随着信息技术的飞速发展,嵌入式系统在各个领域得到了广泛的应用。
为了培养适应社会需求的高素质人才,我国高校纷纷开展嵌入式教学。
本文以某高校嵌入式教学实践为例,分析嵌入式教学的现状、方法及成效,以期为我国嵌入式教学提供参考。
二、嵌入式教学现状1. 课程设置目前,我国高校嵌入式课程设置主要包括嵌入式系统原理、嵌入式系统设计、嵌入式Linux、嵌入式编程等。
这些课程旨在使学生掌握嵌入式系统的基本原理、设计方法、编程技巧和开发工具。
2. 教学方法(1)理论教学:通过课堂讲授、案例分析等方式,使学生掌握嵌入式系统的基本概念、原理和设计方法。
(2)实践教学:通过实验、项目实践等环节,提高学生的动手能力和工程实践能力。
(3)线上教学:利用网络平台,为学生提供在线课程、在线实验、在线讨论等资源。
3. 教学资源(1)教材:高校普遍采用国内外优秀的嵌入式教材,如《嵌入式系统原理与应用》、《嵌入式Linux编程》等。
(2)实验设备:高校普遍配备嵌入式实验箱、开发板等实验设备,为学生提供实践平台。
(3)在线资源:高校积极建设在线教学资源,为学生提供丰富的学习资料。
三、嵌入式教学方法探讨1. 案例教学法案例教学法通过分析实际嵌入式系统项目,引导学生掌握嵌入式系统设计、开发和应用方法。
具体步骤如下:(1)选择典型案例:根据教学目标,选择具有代表性的嵌入式系统项目。
(2)分析案例:引导学生分析案例中嵌入式系统的设计思路、关键技术、开发过程等。
(3)讨论与总结:组织学生进行讨论,总结案例中的经验和教训。
2. 项目驱动教学法项目驱动教学法以项目为导向,让学生在完成项目的过程中,掌握嵌入式系统设计、开发和应用技能。
具体步骤如下:(1)确定项目:根据学生的兴趣和市场需求,确定嵌入式系统项目。
(2)项目分解:将项目分解为若干个子任务,明确每个子任务的技术要求和完成时间。
(3)分工与合作:学生分组,明确每个组员的责任,共同完成项目。
嵌入式系统实验报告
嵌入式系统实验报告一、实验目的本次嵌入式系统实验的主要目的是深入了解嵌入式系统的基本原理和开发流程,通过实际操作和项目实践,提高对嵌入式系统的设计、编程和调试能力。
二、实验设备与环境1、硬件设备嵌入式开发板:_____计算机:_____调试工具:_____2、软件环境操作系统:_____开发工具:_____编译环境:_____三、实验内容1、基础实验熟悉开发板的硬件结构和接口,包括处理器、存储器、输入输出端口等。
学习使用开发工具进行程序编写、编译和下载。
2、中断实验了解中断的概念和工作原理。
编写中断处理程序,实现对外部中断的响应和处理。
3、定时器实验掌握定时器的配置和使用方法。
利用定时器实现定时功能,如周期性闪烁 LED 灯。
4、串口通信实验学习串口通信的协议和编程方法。
实现开发板与计算机之间的串口数据传输。
5、 ADC 转换实验了解 ADC 转换的原理和过程。
编写程序读取 ADC 转换结果,并进行数据处理和显示。
四、实验步骤1、基础实验连接开发板与计算机,打开开发工具。
创建新的项目,选择合适的芯片型号和编译选项。
编写简单的程序,如控制 LED 灯的亮灭,编译并下载到开发板上进行运行和调试。
2、中断实验配置中断相关的寄存器,设置中断触发方式和优先级。
编写中断服务函数,在函数中实现相应的处理逻辑。
连接外部中断源,观察中断的触发和响应情况。
3、定时器实验初始化定时器相关的寄存器,设置定时器的工作模式和定时周期。
在主程序中启动定时器,并通过中断或查询方式获取定时时间到达的标志。
根据定时标志控制 LED 灯的闪烁频率。
4、串口通信实验配置串口相关的寄存器,设置波特率、数据位、停止位等参数。
编写发送和接收数据的程序,实现开发板与计算机之间的双向通信。
使用串口调试助手在计算机上进行数据收发测试。
5、 ADC 转换实验配置 ADC 模块的相关寄存器,选择输入通道和转换精度。
启动 ADC 转换,并通过查询或中断方式获取转换结果。
嵌入式实验报告
嵌⼊式实验报告实验⼀流⽔灯实验1实验⽬的1、掌握如何利⽤STM32F407IGTb芯⽚的I/O⼝控制LED。
2、了解掌握STM32F407GPIO的使⽤。
3、点亮⼀个led,使4个LED灯循环流动,达到流⽔效果。
2实验环境FS-STM32F407开发平台ST-Link仿真器RealView MDK5.10集成开发软件STM32CUBEMX图形开发软件PC机Xp3实验内容熟悉开发环境,构建基于固件库的⼯程,编写实验代码实现流⽔灯⼯程,实现FS-STM32F407开发平台上的LED循环闪烁。
调试编译好固件程序后,将程序下载到开发板,按复位键观察实验结果。
4实验步骤1.new project-stm32f4-stm32f407/417-LQFP176-STM32F407IGTX然后点⿏标⽣成。
2.将4个引脚设置为GPIO_Output。
3.如图所⽰设置RCC。
4.将下图时钟频率改为168。
5.点击⽣成按钮--选择⼯程路径Project Location-⼯程名字Project Name-⼯具/开发集成⼯具(Toolchain/IDE)(MDK-ARM V5)。
6.在Code Generator当中,在Generated Files当中,将Generate peripheral。
勾上然后OK。
5实验结果编译完程序后,下载到实验箱,按RESET键,按键数码管附近D4,D3,D2,D1附近四个灯循环亮灭,⽽且每次只有⼀个灯亮,达到流⽔效果。
实验⼆串⼝实验1实验⽬的1、了解TM32F407GPIO的配置过程及使⽤⽅法。
2、查找到串⼝对应的引脚,达到串⾏的效果。
3、了解实验箱底板图等。
2实验环境FS-STM32F407开发平台ST-Link仿真器RealView MDK5.10集成开发软件PC机XP、Window7/8(32/64bit)串⼝调试⼯具串⼝交叉线3实验内容1、了解keil的使⽤2、STM32CUBEMX软件的使⽤3、查找到串⼝对应的引脚,达到串⾏的效果。
嵌入式实验报告二
嵌入式实验报告二在当今科技飞速发展的时代,嵌入式系统已经成为了众多领域中不可或缺的一部分。
从智能家居到工业自动化,从医疗设备到汽车电子,嵌入式系统的应用无处不在。
本次嵌入式实验,让我对嵌入式系统有了更深入的理解和认识。
本次实验的目的是通过实际操作,进一步掌握嵌入式系统的开发流程和相关技术。
实验所使用的硬件平台是_____开发板,其搭载了_____处理器,具有丰富的接口和资源。
软件方面,我们使用了_____集成开发环境(IDE)进行程序的编写、编译和调试。
实验的第一个任务是实现一个简单的 LED 闪烁程序。
通过配置开发板的引脚,控制连接在引脚上的 LED 灯按照一定的频率闪烁。
这个看似简单的任务,却让我对嵌入式系统的底层硬件操作有了初步的了解。
在编写代码的过程中,需要熟悉开发板的引脚定义、时钟配置以及中断处理等知识。
经过多次调试和修改,终于成功地让 LED 灯闪烁起来,那一刻的成就感难以言表。
接下来的实验是实现一个温度传感器的数据采集和显示。
我们使用了_____型号的温度传感器,通过 SPI 接口与开发板进行通信。
在这个过程中,不仅要掌握传感器的通信协议,还要学会如何处理采集到的数据,并将其在数码管或者液晶显示屏上进行显示。
在遇到数据读取不稳定、显示错误等问题时,通过仔细检查代码和硬件连接,最终解决了问题。
在实验过程中,也遇到了不少的困难和挑战。
例如,在配置开发板的时钟时,由于对时钟源和分频系数的理解不够深入,导致系统运行不稳定。
还有在编写中断服务程序时,出现了中断响应不及时的情况,经过查阅资料和反复测试,发现是中断优先级设置不正确。
这些问题的解决,让我深刻体会到了嵌入式系统开发的复杂性和严谨性。
通过这次实验,我不仅掌握了嵌入式系统开发的基本技能,还培养了自己解决问题的能力和团队协作精神。
在实验中,与小组成员共同探讨问题、分享经验,使得实验进展更加顺利。
同时,也让我认识到了自己在知识储备和实践能力方面的不足之处,为今后的学习和研究指明了方向。
嵌入式系统基础实验报告二
实验 2. Linux 常用命令及工具实验1、实验目的掌握 linux 下各种常用命令和工具的使用。
2、实验设备PC 机上安装 VMWARE 虚拟机,运行 Ubuntu Linux 系统。
3、实验内容当前的各种 Linux 发行版,在图形界面下已可以完成大部分工作,但要对Linux系统做进一步了解,进行相关配置,必须掌握一些常见的命令。
以下为Linux 下的常见命令及其参数,进入 Linux 系统后,打开终端,可以运行各命令,查看运行结果。
3.1 注销,关机,重启logout 注销是登陆的相对操作,登陆系统后,若要离开系统,用户只要直接下达logout 命令即可:[root@localhostroot]#logoutLogin:←回到登陆的画面3.2 关机或重新启动的 shutdown 命令shutdown 命令可以关闭所有程序,依照用户的需要,重新启动或关机。
参数说明如下:立即关机:-h 参数让系统立即关机。
范例如下:[root@localhostroot]#shutdown–h now←要求系统立即关机指定关机时间:time 参数可指定关机的时间;或设置多久时间后运行 shutdown 命令,范例如下:[root@localhostroot]#shutdown now←立刻关机[root@localhostroot]#shutdown +5←5 分钟后关机[root@localhostroot]#shutdown 10:30←在 10:30 时关机关机后自动重启:-r 参数设置关机后重新启动。
范例如下:[root@localhostroot]#shutdown-rnow←立刻关闭系统并重启[root@localhostroot]#shutdown –r 23:59←指定在 23:59 时重启动3.3 重新启动计算机的 reboot 命令顾名思义,reboot 命令是用来重新启动系统的。
常用的参数如下:-f 参数:不依正常的程序运行关机,直接关闭系统并重新启动计算机。
北理工嵌入式系统实验报告
嵌入式系统实验报告目录实验二 (1)实验三 (4)实验四 (7)实验六 (17)填充三角形实验 (24)实验二基于ARM的汇编语言程序设计简介一、实验目的1. 了解ARM 汇编语言的基本框架,学会使用ARM 的汇编语言编程二、实验内容1. 用汇编语言编写一个简单的应用程序三、实验设备1. EL-ARM-830 教学实验箱,PentiumII 以上的PC 机,仿真调试电缆,串口电缆。
2. PC 操作系统WIN98 或WIN2000 或WINXP,ADS1.2 集成开发环境,仿真调试驱动程序四、汇编语言简介1. ARM汇编的一些简要的书写规范ARM 汇编中,所有标号必须在一行的顶格书写,其后面不要添加“:”,而所有指令均不能顶格书写。
ARM 汇编对标识符的大小写敏感,书写标号及指令时字母大小写要一致。
在ARM 汇编中,ARM 指令、伪指令、寄存器名等可以全部大写或者全部小写,但不要大小写混合使用。
注释使用“;”号,注释的内容由“;”号起到此行结束,注释可以在一行的顶格书写。
详细的汇编语句及规范请参照ARM汇编的相关书籍、文档,也可参照我们提供的文档。
2. ARM汇编语言程序的基本结构在ARM 汇编语言程序中,是以程序段为单位来组织代码。
段是相对独立的指令或数据序列,具有特定的名称。
段可以分为代码段的和数据段,代码段的内容为执行代码,数据段存放代码运行时所需的数据。
一个汇编程序至少应该有一个代码段,当程序较长时,可以分割为多个代码段和数据段,多个段在程序编译链接时最终形成一个可执行文件。
可执行映像文件通常由以下几部分构成:◆一个或多个代码段,代码段为只读属性。
◆零个或多个包含初始化数据的数据段,数据段的属性为可读写。
◆零个或多个不包含初始化数据的数据段,数据段的属性为可读写。
链接器根据系统默认或用户设定的规则,将各个段安排在存储器中的相应位EL - ARM - 830 实验指导书39置。
源程序中段之间的相邻关系与执行的映象文件中的段之间的相邻关系不一定相同。
嵌入式实验报告 3 4 部分
嵌入式控制系统及应用实验报告学期:2015-2016-1[第组] 嵌入式控制系统及应用实验报告基于ARM Cortex-M3 LPC1788目录实验一熟悉实验环境 (1)实验二嵌入式系统软件设计 (2)实验三矩阵键盘实验 (4)实验四RS-232串行通信实验 (8)实验四RS-232串行通信实验 (13)实验五A/D 转换实验 (16)实验六D/A 转换实验 (19)分数:实验一熟悉实验环境一、实验目的熟悉并掌握Keil μVersion 4开发环境,学会构建ARM Cortex-M3 LPC1788工程,学会使用JLINKv8下载器,编译与调试嵌入式系统软件。
二、实验内容1.熟悉Keil μVersion 4开发环境。
2. 阅读LPC1788芯片数据手册与用户手册,了解LPC1788的GPIO相关寄存器及其功能。
3.编程实现一个LED闪烁实验,使用JLINK下载灯闪烁代码到目标板。
三、实验设备硬件部分:PC计算机(宿主机)、LPC1788实验系统、JLINK仿真器。
软件部分:PC机WINDOWS系统、KEIL MDK μVersion 4软件、JLINK仿真调试驱动程序。
四、实验步骤1.启动PC机,进入keil环境。
2. 创建和打开项目。
3. 源程序编辑4 运行程序,观察并记录实验结果。
分数:实验二嵌入式系统软件设计一、实验目的1.了解实验系统的128*64液晶显示接口电路。
2.掌握LPC1788 GPIO口的使用方法。
3.掌握LPC1788的软件基本框架及设计技术。
二、实验内容1. 阅读128*64液晶显示模块的文档,掌握128*64液晶显示模块的工作原理。
2. 阅读SN74LVC4245A芯片文档,掌握SN74LVC4245A芯片的工作原理。
3. 完成128*64液晶显示模块程序的设计与调试。
三、实验设备硬件部分:PC机(宿主机)、LPC1788实验系统(目标板)、JLINK仿真器。
软件部分:PC机WINDOWS系统、MDK KEIL软件、JLINK仿真调试驱动程序。
嵌入式实验报告书
嵌入式linux实验报告学号:实验一:熟悉嵌入式系统开发环境一实验目的: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地址,开发目录共享,挂载等。
四实验结果分析配置windows的超级终端输入终端名称选择COM1接口设置COM1属性打开虚拟机,启动linux。
新建终端,输入minicom启动实验箱设置ip并且在minicom下ping通主机设置网络服务取消防火墙选中NFS设置共享文件夹在主机编译运行程序hello wordHello.c 源代码如下:在target上挂载主机开发目录上嵌入式程序到实验箱,运行Mount –t nfs 主机IP:/开发目录/hostcd /host运行程序交叉编译完成实验心得:实验中应注意需要将编译的程序文件挂载到开发板,才能在ARM里找到我们需要运行的文件。
还要注意区分gcc和armv4l-unknown-linux-gcc编译器的区别。
只有用armv4l-unknown-linux-gcc编译的才能在开发板上运行。
实验二嵌入式Linux程序设计一实验目的:1.掌握嵌入式Linux软件设计方法原理2.掌握Makefile文件设计方法。
3. 熟悉Linux下静态库和共享库的设计二实验设备及工具:硬件:UP-NETARM2410-S嵌入式实验仪、PC机pentumn500以上、硬盘40G 以上、内存大于256M。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
嵌入式实验报告二
一、实验目的:
1.学习cygwin;
2.通过上机实验,使学生验证、巩固和充实所学理论知识,加深对相关内容的理解,了解嵌入式Linux的工具链,掌握基于Linux的C程序设计。
二、实验要求:
1.安装cygwin;
2.学习GCC的使用和Makefile的编写。
3.编程实现文件拷贝功能。
三、问题:
1.简述Gcc的常用选项并举例说明。
Linux中gcc常用编译选项
-x language filename
设定文件所使用的语言,使后缀名无效,对以后的多个有效.也就是根据约定,C语言的后缀名称是.c的,而C++的后缀名是.C或者.cpp,如果你很个性,决定你的C代码文件的后缀名是. pig 哈哈,那你就要用这个参数,这个参数对他后面的文件名都起作用,除非到了下一个参数的使用。
可以使用的参数有下面的这些:
`c', `objective-c', `c-header', `c++', `cpp-output', `assembler', and `a
ssembler-with-cpp'.
例子用法: cd..
gcc -x c hello.pig
-x none filename
关掉上一个选项,也就是让gcc根据文件名后缀,自动识别文件类型
例子用法:
gcc -x c hello.pig -x none hello2.c
-c
只激活预处理,编译,和汇编,也就是他只把程序做成obj文件
例子用法:
gcc -c hello.c
他将生成.o的obj文件
-S
只激活预处理和编译,就是指把文件编译成为汇编代码。
例子用法
gcc -S hello.c
他将生成.s的汇编代码,你可以用文本编辑器察看
-E
只激活预处理,这个不生成文件,你需要把它重定向到一个输出文件里面.
例子用法:
gcc -E hello.c > pianoapan.txt
gcc -E hello.c | more
慢慢看吧,一个hello word 也要预处理成800行的代码
-o
制定目标名称,缺省的时候,gcc 编译出来的文件是a.out,很难听,如果你和我有同感,改掉它,哈哈
例子用法
gcc -o hello.exe hello.c (哦,windows用习惯了)
gcc -o hello.asm -S hello.c
-pipe
使用管道代替编译中临时文件,在使用非gnu汇编工具的时候,可能有些问题
gcc -pipe -o hello.exe hello.c
-ansi
关闭gnu c中与ansi c不兼容的特性,激活ansi c的专有特性(包括禁止一些asm inline typeof 关键字,以及UNIX,vax等预处理宏
-fno-asm
此选项实现ansi选项的功能的一部分,它禁止将asm,inline和typeof用作关键字。
-fno-strict-prototype
只对g++起作用,使用这个选项,g++将对不带参数的函数,都认为是没有显式的对参数的个数和类型说明,而不是没有参数.
而gcc无论是否使用这个参数,都将对没有带参数的函数,认为没有显式说明的类型
-fthis-is-varialble
就是向传统c++看齐,可以使用this当一般变量使用.
-fcond-mismatch
允许条件表达式的第二和第三参数类型不匹配,表达式的值将为void类型
-funsigned-char
-fno-signed-char
-fsigned-char
-fno-unsigned-char
这四个参数是对char类型进行设置,决定将char类型设置成unsigned char(前两个参
数)或者signed char(后两个参数)
-include file
包含某个代码,简单来说,就是便于某个文件需要另一个文件的时候,就可以用它设
定,功能就相当于在代码中使用#include<filename>
例子用法:
gcc hello.c -include /root/pianopan.h
-imacros file
将file文件的宏,扩展到gcc/g++的输入文件,宏定义本身并不出现在输入文件中
-Dmacro
相当于C语言中的#define macro
-Dmacro=defn
相当于C语言中的#define macro=defn
-Umacro
相当于C语言中的#undef macro
-undef
取消对任何非标准宏的定义
-Idir
在你是用#i nclude"file"的时候,gcc/g++会先在当前目录查找你所制定的头文件,如果没有找到,他回到缺省的头文件目录找,如果使用-I制定了目录,他
回先在你所制定的目录查找,然后再按常规的顺序去找.
对于#i nclude<file>,gcc/g++会到-I制定的目录查找,查找不到,然后将到系统的缺
省的头文件目录查找
-I-
就是取消前一个参数的功能,所以一般在-Idir之后使用
-idirafter dir
在-I的目录里面查找失败,讲到这个目录里面查找.
-iprefix prefix
-iwithprefix dir
一般一起使用,当-I的目录查找失败,会到prefix+dir下查找
-nostdinc
使编译器不再系统缺省的头文件目录里面找头文件,一般和-I联合使用,明确限定头文件的位置
-nostdin C++
规定不在g++指定的标准路经中搜索,但仍在其他路径中搜索,.此选项在创libg++库使用
-C
在预处理的时候,不删除注释信息,一般和-E使用,有时候分析程序,用这个很方便的
-M
生成文件关联的信息。
包含目标文件所依赖的所有源代码你可以用gcc -M hello.c
来测试一下,很简单。
-MM
和上面的那个一样,但是它将忽略由#include<file>造成的依赖关系。
-MD
和-M相同,但是输出将导入到.d的文件里面
-MMD
和-MM相同,但是输出将导入到.d的文件里面
-Wa,option
此选项传递option给汇编程序;如果option中间有逗号,就将option分成多个选项,然后传递给会汇编程序
-Wl.option
此选项传递option给连接程序;如果option中间有逗号,就将option分成多个选项,然后传递给会连接程序.
-llibrary
制定编译的时候使用的库
例子用法
gcc -lcurses hello.c
使用ncurses库编译程序
-Ldir
制定编译的时候,搜索库的路径。
比如你自己的库,可以用它制定目录,不然
编译器将只在标准库的目录找。
这个dir就是目录的名称。
-O0
-O1
-O2
-O3
编译器的优化选项的4个级别,-O0表示没有优化,-O1为缺省值,-O3优化级别最高
-g
只是编译器,在编译的时候,产生调试信息。
-gstabs
此选项以stabs格式声称调试信息,但是不包括gdb调试信息.
-gstabs+
此选项以stabs格式声称调试信息,并且包含仅供gdb使用的额外调试信息.
-ggdb
此选项将尽可能的生成gdb的可以使用的调试信息.
-static
此选项将禁止使用动态库,所以,编译出来的东西,一般都很大,也不需要什么
动态连接库,就可以运行.
-share
此选项将尽量使用动态库,所以生成文件比较小,但是需要系统由动态库.
-traditional
试图让编译器支持传统的C语言特性
2.简述Makefile编写规则,举例说明。
makefile 编写规则:
(1)以“#”开始的行为注释
(2)文件依赖关系为:
target:components
rule
存盘为MyFirst,在终端输入:make MyFist ,程序出现了错误可是所有程序员共同的敌人,在编写程序时我们应该尽量的去避免错误的出现,不过编写的时候再怎么都不可避免的出现这样那样的错误,对程序进行必要的调试是一个好主意,那我们怎么来调试程序呢,看下gdb ./文件名////////////////在这里我修改下要想下面可以调试,在上面编译的时候必须加上参数g,gcc -g hello.cpp -o hello
以下为调试状态下的可以用到的命令(可以仅输入单词的输入,如break可简为b),尖括号中为说明
list <显示源代码>
break 行号<设置断点>
run <运行程序>
continue <继续从断点处执行>
print 变量<调试时查看变量的值>
del 行号<删除断点>
step <单步执行,可跟踪到函数内部>
next <单步执行,不可跟踪到函数内部>
quit <退出>
makefile 的编写不是件容易的事情,因为自己写的makefile可能不能在所有的unix/linux类操作系统下通用。
因此在很多项目中都用automake.autoconf或者是Cmake等工具。