版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第1章 认识嵌入式系统嵌入式Linux开发基础1.什么是嵌入式系统提纲2.嵌入式系统的发展史3.嵌入式系统的应用4.常见的嵌入式系统5.嵌入式Linux的优点1.什么是嵌入式系统IEEE(电气和电子工程师协会)对嵌入式系统的定义是这样的:“嵌入式系统是控制、监视或辅助机器和设备运行的装置。”国内大多数资料都这样描述嵌入式系统:嵌入式系统是“以应用为中心,以计算机技术为基础,软硬件可裁剪,适应应用系统对功能、可靠性、成本、体积、功耗等严格要求的专用计算机系统。”1.什么是嵌入式系统嵌入式系统的例子:汽车电喷系统2.嵌入式系统的发展史60年代阿波罗导航计算机民兵I导弹D-17自动导航控制计算机70
2、年代基于单片机发展。Intel4004,8080,.。80年代简单操作系统的支持90年代高效率、多任务,文件系统、GUI21世纪网络连接,智能化3.嵌入式系统的应用生活方面3.嵌入式系统的应用生产方面3.嵌入式系统的应用管理方面4.常见的嵌入式系统Windows CEvxWorkseCosuC/OS-2嵌入式Linux5.嵌入式Linux的优点完全的开源广泛的硬件支持高可定制性占用较少的硬件资源具备强大的网络功能其它优点 第3章 搭建C语言开发环境1.IDE和分步开发提纲2.安装C语言开发工具集3.优化gedit编码环境1.IDE和分步开发要产生一个独立运行的应用程序,需要经过编码(编写源代码
3、)、编译、链接等步骤。如果在测试过程中出现逻辑错误,还可能需要通过调试等手段发现错误,再回头改正错误,重新编译、链接。有些开发工具,集成了开发的所有步骤,称为IDE。2.安装C语言开发工具集在CentOS里,安装软件大致有三种方法:1、通过源代码编译安装。2、RPM方式安装。3、YUM方式安装。其中,YUM最简单易用。2.安装C语言开发工具集1、挂载光盘 以系统光盘为安装源的YUM安装方式:2、配置安装源 3、安装软件2.安装C语言开发工具集1、挂载光盘 以系统光盘为安装源的YUM安装方式:2.安装C语言开发工具集以系统光盘为安装源的YUM安装方式:2、配置安装源 rootlocalhost
4、#cd /etc/yum.repos.d/rootlocalhost yum.repos.d#vim CentOS-DVD.repoDVDname = CentOS 6.7 dvdbaseurl = file:/media/CentOS_6.7_Final/enabled = 1gpgcheck = 02.安装C语言开发工具集以系统光盘为安装源的YUM安装方式:3、安装软件3.优化gedit编码环境1、可以自动缩进。自动缩进对编写程序代码特别有用,能够使得代码错落有致、层次清晰,方便阅读、理解和调试。2、可以设置tab键的格式。可以根据个人爱好设置tab键宽度,还可以设置使用空格代替tab键。
5、3、能够显示行号、列号。行号列号对程序设计特别重要,如果编译出错,编译器会显示出错的行号、列号和错误信息,根据行号和列号,可以在快速定位出错代码。4、能突出显示当前行。5、能够突出显示匹配的(大、中、小)括号。这个功能对于多层嵌套的代码特别有用,可以清楚地看到每一层嵌套的开始位置和结束位置。6、对于超长单行文本能够自动换行,还能智能识别英语单词,自动换行时避免把一个单词拆成两行。7、可以随意改变字体大小、颜色、风格。8、支持UTF-8和ASCII等多种编码,对中文的支持很好,支持包括gb2312、gbk在内的多种中文字符编码。9、可以识别包括C语言在内的多种程序设计语言,根据不同的语言实现语法
6、高亮,以不同的颜色突出显示关键字和标识符。gedit的功能和特点3.优化gedit编码环境设置gedit3.优化gedit编码环境以文件扩展名.c识别为C语言源文件3.优化gedit编码环境安装系统光盘上的gedit插件yum install gedit-plugins3.优化gedit编码环境安装独立的插件csmartindent以智能缩进使用tar命令解压解包csmartindent插件。cd tar -zxvf csmartindent.tar.gzcsmartindent解压解包出两个文件:csmartindent.gedit-plugincsmartindent.py把解压出来的文件
7、复制到/.gnome2/gedit/plugins目录下。(/.gnome2/gedit/plugins是gedit专门放置当前用户插件的目录,为了方便描述,以下简称插件目录。在插件目录表达式中,“”表示当前用户的home目录,也就是说,不同用户的插件目录不一样。)cd /.gnome2mkdir -p gedit/plugins3.优化gedit编码环境安装独立的插件csmartindent以智能缩进cd gedit/pluginscp / csmartindent.gedit-plugin .cp / csmartindent.py .csmartindent插件安装完毕,重启gedit。
8、感谢聆听第4章 简单的Linux C程序1.准备工作提纲2.编写代码3.编译运行4.Linux下C语言的输入1.准备工作源程序(源文件):代码所在文件。源代码、代码:可指代源文件,亦可指代代码片段。需结合上下文理解。程序:指编译后可运行的机器指令代码文件。在日常生活中,程序有时会指代源程序。1.准备工作为了方便管理,建立源程序(程序)专用目录:cd mkdir linux-C(大写)2.编写代码#include #include int main()printf(“hello world!n”);return EXIT_SUCCESS;gedit的语法高亮是针对具体的程序设计语言的,想在ged
9、it内实现C语言程序的语法高亮和智能缩进,首先得让gedit知道所编辑的文件是C语言源程序。gedit根据文档的文件名判断文件类型。C语言程序的标准文件名为*.c。所以,需要先把文档保存成.c文件“/root/Linux-Chelloworld.c”。2.编写代码常用转义字符字符意义n换行t制表符(tab)单引号。在C语言里,单引号用来括起字符,如果单引号直接出现在字符串里会出现混乱,所以字符串中的单引号字符必须使用转义字符来表达。比如字符串Toms age在C语言里写成:”Toms age”。单引号。在C语言里,双引号用来括起字符串,如果双引号直接出现在字符串里会出现混乱,所以字符串中的双引
10、号字符必须使用转义字符来表达。比如the “good” man在C语言里写成:”the ”good” man”。反斜杠。反斜杠已经被用来表达转义字符,所以,如果反斜杠本身作为字符需要写成连续的两个反斜杠。?问号第5章 使用自定义函数1.函数和自定义函数的概念提纲2.定义函数3.范例1.函数和自定义函数的概念所谓函数,是指可以供其它代码调用,帮助其它代码完成某一功能的独立的代码块。代码块并不编写在被调用处,而是在另外一个单独的地方。为了调用方便,代码块一般都会有一个名字,这个名字就是函数名。函数能接受调用代码传来的数据,这些数据被称为参数;也可以把处理结果返回给调用代码,这个处理结果被称为返回值
11、。前面的Hello world!源程序中的main()和printf()就是函数,它们是C语言定义的标准函数。除此之外,程序员还可以在源程序中定义自己的函数,称为自定义函数。2.定义函数C语言严格遵循常量、变量、函数等一切标识符先定义后使用的原则。但是,这种写法明显不符合人们的阅读习惯,不方便人们去阅读和理解程序。因为人要理解一个复杂的事物,一般都是先看这个事物整体实现什么功能,再了解事物由哪些部件构成,根据需要再了解某些部件的具体实现。也就是说,阅读代码一般都是先从main()函数开始,再根据需要阅读子函数的代码。这是一种先全局后局部,自顶向下的思维方式,这种思维方式对于理解、把握复杂的事物
12、很有帮助。2.定义函数C语言对函数的定义作了改进,允许把函数的定义分成两部分:声明和实现。声明部分不包含函数的具体代码,只是函数的返回值类型、函数名和参数的说明。实现部分则是完成函数功能的具体代码。函数的声明格式:2.定义函数如果程序包含多个函数,则各子函数应该在main()主函数之前一一声明。函数的声明顺序并不重要,即使函数之间存在互相调用的情况,而且,函数的声明顺序和实现顺序没有关联。有了函数声明,函数可以按任意顺序实现。2.定义函数如果程序包含多个函数,则各子函数应该在main()主函数之前一一声明。函数的声明顺序并不重要,即使函数之间存在互相调用的情况,而且,函数的声明顺序和实现顺序没
13、有关联。有了函数声明,函数可以按任意顺序实现。3.范例程序5.1程序5.2详见教材3.范例从键盘输入某个年份,判断该年份是否为闰年。判断闰年条件:非整百年数除以4,无余为闰,有余为平;整百年数除以400,无余为闰有余平。从键盘输入一个成绩(0-100,整数),使用switch判断该成绩的等级。等级划分:90-100:优秀;80-89:良好;70-79:中等;60-69:及格;0-59:不及格。3.范例判断闰年整百年被400整除闰年不被400整数平年非整百年被4整除闰年不被4整除平年感谢聆听3.编译、运行编译gcc helloworld.c默认产生的程序名为a.out运行./a.out自定义程序
14、名编译gcc helloworld.c -o helloworld产生的程序名为helloworld运行./helloworld3.编译、运行常用的编译选项选项选项描述-x language指定源代码使用的语言。gcc除可编译C语言源程序外,还可以编译C+和汇编源程序。在默认情况下,gcc根据源程序的扩展名识别源程序使用的语言。-x用于人工指定源程序使用的语言。-c只对源程序进行编译和汇编,生成.o目标文件,但不进行链接-S把源程序编译成汇编语言源程序,生成.s汇编程序文件,但不进行汇编和链接。-E只对源程序进行预处理,不编译和链接。使用了此选项,如果源程序不需要预处理,则gcc自动忽略此源程
15、序。-o file指定生成的文件名。-o选项可以和其它选项合用,不管最终生成什么类型的文件,都可以用该选项指定文件名,比如gcc c o file file1.c,把file1.c源程序编译成名为file的目标文件。-v显示gcc的版本信息和编译过程中的一些信息。-version显示gcc的版本信息和版权信息-fsyntax-only只对源程序进行语法检查,不进行编译-w禁止所有警告信息-Wall显示附加的警告信息-g给程序添加本地操作系统格式的调试信息-ggdb给程序添加各种调试信息,包括gdb扩展的调试信息-O0、-O(-O1)、-O2、-O3使用不同的级别对程序进行优化,其中,-O0指不
16、对程序进行优化,是gcc的默认项,-O和-O1同义,O后面跟的数字越大,表示优化的级别越高。除此之外,还有-Os选项,对程序的体积进行优化。-I directory指定头文件的搜索目录,指定的搜索目录将优先于系统缺省的头文件搜索目录。-l library指定链接时使用的库文件4.Linux下C语言的输入scanf()缓冲区问题10nnc输入缓冲区办法1:利用%*c丢弃整数后面的回车符。在使用scanf()时,如果在格式化点位符前面加上星号*,则表示把相应的数据丢弃而不赋给任何变量。%*c表示丢弃一个字符,%*s表示丢弃一个字符串。办法2:调用函数清空输入缓冲区。Linux C有一个名为_fpu
17、rge()的函数,它的作用是清空指定的缓冲区。原型如下:#include Int _fpurge(FILE *stream);感谢聆听第6章 使用多个源文件编程1.多源文件编程的概念提纲2.多源文件的编写3.多源文件项目的编译1.多源文件编程的概念对于大规模的系统,把所有代码写在单个源文件里的做法有着显而易见的缺点:1、即使代码使用了自定义函数,大量的代码堆积在单个文件里仍然会导致阅读、理解、调试和维护上的困难。2、大体积的文件会降低编辑器的运行效率。每次打开、查找、保存都需要花费大量的时间。3、编译大体积的源文件会花费大量的时间,影响系统的开发效率。4、不利于团队协作。所以,在大规模的系统开
18、发中,源代码一般分成多个源文件来实现。2.多源文件的编写2.定义函数每个非主源文件配置一个对应的头文件:2.多源文件的编写在需要调用函数的源文件里包含头文件:2.多源文件项目的编译多个源文件的项目仍然使用gcc编译链接。在编译链接时需要在命令行中枚举项目使用的所有源文件。头文件因为已经包含在源文件中,所以不需要枚举头文件。第6章 使用多个源文件编程1.多源文件项目的编写规则提纲2.多源文件项目的分步编译3.案例练习1.多源文件项目的编写规则原则:主函数main()和自定义函数分开存放在不同的源文件。自由:使用多少个源文件根据需要而定。多个自定义函数可以放在一个源文件。也可以分开存放。多个源文件
19、可以对应一个头文件,也可以分别对应一个头文件。一个源文件可以有多个头文件。2.多源文件项目的分步编译编译:生成.o目标文件gcc -c x.c x1.c x2.c x3.c 链接:生成最终程序gcc -o x x.o x1.o x2.o x3.o x.c-x.ox1.c-x1.ox2.c-x2.ox3.c-x3.o链接x比较费时间(按需编译)比较不费时间3.案例练习编写成绩分析程序,main()函数负责接口部分,每个成绩分析功能独立成一个源文件。程序要求如下:在教学过程中,老师要对每次的考试成绩进行分析,分析内容包含显示成绩、排序(从高到低排序、从低到高排序)、查看最高分、查看最低分等。假设班
20、上有10位同学。编写一个程序,根据老师的选择实行成绩分析。为了简单起见,假设10位同学的姓名保存在一个全局数组中,成绩按姓名的顺序保存在另外一个全局数组中。对成绩进行排序时,只需要把排序结果输出到屏幕上,不需要写入数组中。姓名和成绩自拟。第7章 使用和认识make1.make概念提纲2.Makefile的编写3.改进版Makefile4.Makefile进阶用法1.make概念make是一个智能化的系统开发项目管理工具。在编译时,make可以自动识别自上次编译以来哪些源文件被修改过,哪些源文件没被修改过,从而自动忽略没被修改过的源文件,只重新编译被修改过的源文件。如果某个头文件被修改了,则重新
21、编译所有包含该头文件的源文件。利用make可以避免不必要的重新编译,大大提高开发效率。2.Makefile的编写make并不能在没有任何提示的情况下猜测人的意图。也就是说,需要人工下达指令指示make工作。我们把指令写在一个名为makefile或Makefile的文本文件里。对于make而言,makefile和Makefile是等效的,但由于大写的M在一大堆文件中更加显眼,所以,在实际应用中更习惯使用Makefile。2.Makefile的编写Makefile是一个按规定的语法规则编写的文本文件,用来指示make工作。Makefile的规则很简单,表述起来只有两行:其中,目标指的是命令最终生成
22、什么文件,可以是.o目标文件,也可以是可执行文件;依赖文件是指要生成目标需要哪些文件;命令是指生成目标需要执行的命令。3.改进版Makefile一个大型系统一般分成多个源文件进行开发。要生成最终的可执行文件,需要两个步骤:编译和链接。对于大量的代码,从源文件到.o目标文件的编译最耗费时间。在后期的调试阶段,往往只修改其中某个或几个源文件,其它源文件保持原状。如果能够有选择地重新编译修改过的源文件,忽略未修改过的源文件,将会大大提高开发效率。为达到此目标,Makefile文件应该做出相应的改变,把编译和链接分开进行。3.改进版Makefile在上面的例子中,make运行时,发现依赖文件是经过编译
23、后的目标文件,并不是最原始的源文件。所以,如果发现目标文件不存在,则以目标文件名作为目标往后查找相应的内容。比如说,发现test7.1.o不存在,则往后查找到3、4行。在执行1、2行之前,先执行3、4行。同样的道理,如果发现目标文件accumulator.o不存在,则查找并执行5、6行。就这样,make一层一层地往下追溯,再回溯,最后生成最终的目标test7.1。4.Makefile进阶用法一、伪目标在系统的调试过程中,我们经常需要象上面的第一步那样做一些额外的工作,比如删除一些文件,有时候这些额外的工作所用的命令比较复杂或者比较多,每次手工处理显得比较麻烦。针对这种情况,make提供了一种称
24、为伪目标的方法。所谓的伪目标,也就是说,目标只是一个标识符,并不最终产生相应的文件,只是使用这个标识符标记一些命令。4.Makefile进阶用法上面的Makefile文件多次出现了同一长字符串:test7.1.o accumulator.o factorial.o square_sum.o有经验的程序员都知道,直接在多个地方书写同样的内容,容易引起输入错误,而且会给后期的修改、维护带来麻烦。用简单的变量代替它们是最好的做法。为了解决这一问题,make引入了变量的概念。变量在Makefile中用来代表一串字符。4.Makefile进阶用法为了方便编写和简化Makefile,除了自定义变量,mak
25、e还预定义了一批变量。Makefile中常见的预定义变量变量含义CCC编译器的名字,默认值为ccCPPC预编译器的名字,默认值为$(CC) -ECXXC+编译器的名字,默认值为g+AR库文件维护程序的名字,默认值为arAS汇编程序的名字,默认值为asCFLAGSC编译器的选项,无默认值CPPFLAGSC预编译器的选项,无默认值CXXFLAGSC+编译器的选项,无默认值ARFLAGS库文件维护程序的选项,无默认值ASFLAGS汇编程序的选项,无默认值4.Makefile进阶用法Makefile还可以使用自动变量和环境变量。变量含义$*不包含扩展名的目标文件名称$目标文件的完整名称$+以空格分开的
26、所有的依赖文件,并以原来定义的先后顺序为序。有可能包含重复项。$以空格分开的所有不重复的依赖文件$2-3-4-1的顺序滚动。同一时刻,只亮其中一盏LED。所以,控制字节的低4位中,同一时刻,只有1位是1,其余位为0,并且,1的位置从低位向高位顺序移动,移到第4位后回到第1位。代码略第13章 控制板载LED1.按键介绍提纲2.读取按键3.按键控制LED1.按键介绍网关的开发板上提供了9个物理按键,可以用于模拟实际应用中的用户输入。按键编号从0开始,分别命名为k0k9。k0和系统lock共用一个按键,电路板上没有打印“k0”字样。物理按键被分成了3组,第1组只有1个k0;第2组包含4个按键,从左到
27、右分别是k1、k2、k3、k4;第3组同样包含4个按键,从左到右分别是k5、k6、k7、k8。1.按键介绍要在我们的程序中使用按键,需要先停止hotkey服务。#service hotkey stop每次按键被分解成两个动作:按下和松开。某个键被按下时,驱动程序返回该键的“序号值+1”的字符形式给应用程序;举例来说,按下k0,得到的键值是字符1;按下k5,得到的键值是字符6。松开任何按键时,驱动程序都会返回0字符。应用程序通过读取设备文件获得按键值。2.读取按键代码详见课本,此处略3.按键控制LED控制系统最基本的任务是根据输入信号控制设备工作。控制系统的一般模型如图。3.按键控制LED在本例子中,我们模拟一个简单的控制系统,开发板上的物理按键作为输入设备,板载LED作为受控设备。根据物理按键的状态控制LED的亮灭。具体的业务逻辑是:1、按照图13-11的按键物理分组,把按键的逻辑功能分为3组。2、第1组只有k0一个按键,作为控制系统的退出按键。用户按下k0,控制系统结束工作。3、第2组按键为k1k4,按下其中一个键,亮对应编号的LED,其余LED熄灭。比如按下k2,LED2亮起,LED1、LED3、LED4熄灭;按下k4,LED4亮起,LED1、LED2、LED3熄灭。4、第3组按键为k5k8,其功能为对应k1k4的反相
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 量子点显示材料制备技师考试试卷及答案
- 2025年南京市江宁区首批区属国有企业公开招聘人员32人笔试历年参考题库附带答案详解
- 2025年下半年山东高速集团有限公司社会招聘162人笔试历年参考题库附带答案详解
- 2025山东青岛恒丰理财有限责任公司社会招聘13人笔试历年参考题库附带答案详解
- 2025山东枣庄滕州市属国有企业招聘125人(第二批次)笔试历年参考题库附带答案详解
- 2025安徽芜湖弋江区社区工作者及区属国企工作人员招聘30人笔试历年参考题库附带答案详解
- 2025天津金浩物业公司招聘3人笔试历年参考题库附带答案详解
- 2025四川蜀道养护集团有限公司招聘15人笔试历年参考题库附带答案详解
- 2025四川泸州市龙驰控股有限责任公司下属子公司招聘15人笔试历年参考题库附带答案详解
- 2025包头市年第一季度高层次和急需紧缺人才需求576人目录笔试历年参考题库附带答案详解
- 2026AHA-ASA急性缺血性卒中早期管理指南解读课件
- 2026年北京市高校毕业生到农村从事支农工作招聘467人农业笔试参考题库及答案解析
- 放射科床旁照相工作制度
- 辽水集团笔试试题题库
- 2026新疆文旅投集团所属产业公司选聘50人笔试模拟试题及答案解析
- 2025-2026学年安徽省马鞍山市高三第一次教学质量监测物理试卷(含解析)
- 工程伦理道德案例分析
- 辽宁省抚顺市(2025年)招聘警务辅助人员考试真题及答案
- 2026年网络安全攻防电子数据取证关键技术题库
- 《中药提取物质量控制研究技术指导原则(征求意见稿)》
- 2026年人工智能在桥梁结构优化中的应用
评论
0/150
提交评论