当前位置:文档之家› 嵌入式Linux应用程序开发

嵌入式Linux应用程序开发

嵌入式Linux应用程序开发
嵌入式Linux应用程序开发

湖南工业大学

课程设计

资料袋

计算机与通信学院学院(系、部)2015~ 2016 学年第一学期课程名称嵌入式Linux应用程序开发指导教师叶伟琼职称副教授

学生姓名皓月叶舞专业班级通信工程12XX 学号124082004XX 题目AD驱动

成绩起止日期2015 年12 月14 日~2015年12月20 日

目录清单

湖南工业大学

课程设计任务书

2015 —2016学年第1 学期

计算机与通信学院通信工程专业12XX 班

课程名称:嵌入式Linux应用程序开发

设计题目: AD驱动

完成期限:自2015 年12 月14 日至2015 年12 月20 日共 1 周

指导教师(签字):年月日系(教研室)主任(签字):年月日

湖南工业大学

嵌入式Linux应用程序设计

课程设计说明书

AD驱动

起止日期: 2015年 12月14日至 2015年 12月 20 日

学生姓名皓月叶舞

班级通信1204班

学号124082004XX

成绩

指导教师(签字)

计算机与通信学院

2015年 12月20日

目录

一、预备知识: (1)

1、了解A/D 采样的原理 (1)

2、了解采样频率的设置 (1)

二、设计设备 (1)

三、设计目的: (1)

四、设计内容: (1)

五、设计原理及说明: (1)

1、A/D 转换的基本原理: (1)

1)采样和量化 (1)

2)分类 (2)

3)工作原理 (2)

2、 UCB1X00 的A/D 转换有关的寄存器 (3)

六、设计步骤: (4)

1、硬件连接 (4)

2、在PXA270-RP 目标板运行8 位AD 的测试程序 (4)

3、在PXA270-RP 目标板运行16 位AD 的测试程序 (5)

七、设计注意事项 (7)

八、心得体会 (7)

AD驱动实验

一、预备知识:

1、了解A/D 采样的原理

2、了解采样频率的设置

二、设计设备:

1、一套PXA270RP 嵌入式实验箱

2、安装Redhat9 的宿主PC 机,并且配置好ARM Linux 的开发环境

三、设计目的:

1、了解模数转换的基本原理

2、掌握模数转换的编程方法

四、设计内容:

1、编程对模拟量输入进行采集和转换,并将结果显示在超级终端上

2、通过改变模拟量输入,观察显示结果

五、设计原理及说明:

1、A/D 转换的基本原理:

1)采样和量化

作用:我们经常遇到的物理参数,如电流、电压、温度、压力、速度……电量和非电量都是模拟量。模拟量的大小是连续分布的,且经常也是时间上的连续函数。因此要将模拟量转换成数字信号需经采样——量化——编码三个基本过程(数字化过程)

★采样

按采样定理对模拟信号进行等时间间隔采样,将得到的一系列时域上的样值去代替u=f(t),即用u0、u1、……un 代替u=f (t) .这些样值在时间上是离散的值,但在幅度上仍然是连续模拟量

★量化

1

在幅值上采用离散值来表示。方法是用一个量化因子Q 去度量:u1,u2,…,得到取整后的数字量.

u0=2.4Q =>2Q 010

u1=4.0Q =>4Q 100

u2=5.2Q =>5Q 101

u3=5.8Q =>5Q 101

★编码

将整量化后的数字量进行编码,以便读入和识别:

编码仅是对数字量的一种处理方法。

例如:Q=0.5V/格,设用三位(二进制编码)

u0=2.4Q-------→2Q--------→(010)u0=(0×22+1×21+0×20)×0.5V=1V

2)分类

按被转换的模拟量类型可分为时间/数字、电压/数字、机械变量/数字等。应用最多的是电压/数字转换器。电压/数字转换器又可分为多种类型:

按转换方式可分为:直接转换、间接转换

按输出方式可分为:并行、串行、串并行

按转换原理可分为:计数式、比较式

按转换速度可分为:低速、中速、高速

按转换精度和分辨率可分为:3 位、4 位、8 位、10 位、12 位、14 位、16 位等。3)工作原理

类似于用天平称物体重量,设有一待测物为4.42g;满度测量量程RNFS=5.12g,砝码种类有四种:0.5RNFS,0.25 RNFS,0.125 RNFS,0.0625RNFS

测量方法:先大砝码,后小砝码,依次比较(累计比较),要的记“1”,不要的记“0”实测物重G:1*0.5 RNFS+1*0.25 RNFS+0*0.125 RNFS+1*0.0625 RNFS

一次为:2.56g<4.42g 留

二次为:2.56+1.28=3.84g<4.42g 留

三次为:3.84+0.64=4.44g>4.42g 去

2

四次为:3.84+0.32=4.16g <4.42g 留

误差= |4.16-4.42| = | -0.26 g | <0.32 g

误差<最小砝码(最小分辩砝码)

以上过程:通过4 次比较后,得出结果;误差<最小砝码值

2、UCB1X00 的A/D 转换有关的寄存器,如图1,图2,图3:

图1

3

4

2

图3

六、设计步骤:

1、 硬件连接:

按照实验一的步骤,连接宿主PC 机和一台PXA270-RP 目标板。用跳线帽连接好AD-16位和AD-8 位的连接端口。

2、在PXA270-RP 目标板运行8 位AD 的测试程序:

在宿主PC 机端,再打开一个终端窗口(Terminal ),点击【红帽→System Tools →Terminal 】启动终端窗口,输入下列6 条命令:

① minicom /*给PXA270-RP 目标板上电,并进入其操作界面*/

② root /*以root 身份登陆PXA270-RP 目标板*/

③ mount -o soft,timeo=100,rsize=1024 192.168.0.100:/ /mnt

/*将宿主PC 机的根目录挂载到PXA270-RP 目标板的mnt 目录下*/

④ cd /mnt/pxa270_linux/Experiment_Key/AD-8-bit

⑤ ls

⑥./test /*运行测试程序的目标程序,如图4*/

运行测试程序test,然后转动电位器的旋钮,可以看到数值的变化

图 4

3、在PXA270-RP 目标板运行16 位AD 的测试程序:

5

在宿主PC 机端,再打开一个终端窗口(Terminal),点击【红帽→System Tools→Terminal】启动终端窗口,输入下列6 条命令:

① minicom /*给PXA270-RP 目标板上电,并进入其操作界面*/

② root /*以root 身份登陆PXA270-RP 目标板*/

③ mount -o soft,timeo=100,rsize=1024 192.168.0.100:/ /mnt

/*将宿主PC 机的根目录挂载到PXA270-RP 目标板的mnt 目录下*/

④ cd /mnt/pxa270_linux/Experiment_Key/ AD-16-bit

⑤ ls

⑥./test /*运行测试程序的目标程序,如图5*/

运行测试程序test,然后转动电位器的旋钮,可以看到数值的变化

图 5

6

七、设计注意事项:

在编写本实验的驱动程序过程中,您可以直接调用内核提供的 AD 转换器控制函数对其进行操作。分别是:

void ucb1x00_adc_enable(struct ucb1x00 *ucb);

void ucb1x00_adc_read(struct ucb1x00 *ucb , int adc_channel, int sync);

unsigned int ucb1x00_adc_disable(struct ucb1x00 *ucb)

八、心得体会

时间过的真快,课程设计这就结束了。在这次的课程设计中不仅检验了我

所学习的知识,也培养了我如何去把握一件事情,如何去做一件事情,又如何

完成一件事情。在课程设计过程中,与同学分工设计,和同学们相互探讨,相

互学习,相互监督。

在这次嵌入式Linux应用程序开发的课程设计中,我不仅仅是学会了合作,也学会了理解。我了解到了A/D转换的基本原理,PXA270RP 嵌入式实验箱以及相关寄存器的使用,收货颇多。我在设计过程中也出现了一些错误,课程设计虽然结束了,但是我还要加强这方面的学习,最后感谢xx老师严谨和一丝不苟的教学作风,为我们营造了一个非常好的课程设计氛围。

7

嵌入式Linux应用程序设计试题

嵌入式Linux应用程序设计(试题) 1、嵌入式linux操作系统的特点(多选) ABCDE A、低廉性 B、广泛性 C、可移植性好 D、良好的网络支持 E、实时性好 2、Linux的基本思想有两点:A、一切都是文件;B、每个软件都有确定的用途。 3、嵌入式Linux系统构成:嵌入式微处理器,外围硬件设备,嵌入式操作系统,用户应用程序。 4、硬盘分区一般分为:主分区,扩展分区,逻辑分区,交换分区 5、主分区和扩展分区的最大的区别:C A、大小不一样 B、挂载点不一样 C、主分区的作用就是用来进行启动操作系统的,因此引导程序都应该存放在主分区上。 D、主分区在硬盘物理位置的最前面 6、Linux分区类型默认的是:C A. vfat B. ext2/ext3 C. swap D. dos 7、如何从当前系统中卸载一个已装载的文件系统 A A. umount [挂载点目录] B. dismount C. mount –u [挂载点目录] D. 从 /etc/fstab 中删除这个文件系统项 8、用户切换指令是: A A、su B、sudo C、useradd D、userdel 9、查看当前系统中的进程指令 A A、ps B、kill C、cat D、man 10、下面杀死一个ID号为9号的进程的操作正确的是 C A、ps -ef B、kill 9 C、kill -9 9 D、rm 9 11、使用重定向来把ls输出保存到文件test.txt中:A A、ls > test.txt B、ls < test.txt C、ls | test.txt D、ls | grep test.txt 12、使用重定向来把test.txt文件中内容输出:B A、more > test.txt B、more < test.txt C、more | test.txt D、more | grep test.txt 13、解压文件tar.tar.gz:C A、tar -zxvf tar.tar.gz B、tar -jxvf tar.tar.gz C、tar -cxvf tar.tar.gz D、tar -jvf tar.tar.gz 14、把目录/aaa内文件及目录的压缩到文件tar.tar.gz:D A、tar -zxvf tar.tar.gz /aaa B、tar -jxvf tar.tar.gz /aaa C、tar -cxvf tar.tar.gz /aaa D、tar -cvf tar.tar.gz /aaa 15、vi 有几种模式:三种模式 16、vi中的操作指令: :w 保存 :q 退出 :q! 强行退出 :wq 保存退出 :w [filename] 保存到filename文件中 :set nu 显示行号,设定之后,会在每一行的前面显示对应行号

嵌入式Linux应用程序开发报告

湖南工业大学 课程设计 资料袋 计算机与通信学院学院(系、部)2015~ 2016 学年第一学期 课程名称嵌入式Linux应用程序开发指导教师叶伟琼职称副教授 学生姓名皓月叶舞专业班级通信工程12XX 学号124082004XX 题目AD驱动 成绩起止日期2015 年12 月14 日~2015年12月20 日 目录清单 序号材料名称资料数量备注 1 课程设计任务书 1 2 课程设计说明书 1 3 课程设计图纸10 张4 5 6

湖南工业大学 课程设计任务书 2015 —2016学年第1 学期 计算机与通信学院通信工程专业12XX 班 课程名称:嵌入式Linux应用程序开发 设计题目: AD驱动 完成期限:自2015 年12 月14 日至2015 年12 月20 日共 1 周 内容及任务一、设计的主要技术参数 数模转换、数模编程 二、设计任务(内容) 1、完成相关编程模拟量输入采集和转换 2、将结果显示 3、测试并运行,改变模拟量输入 4、验证 5、完成课程设计说明书 三、设计工作量 1周完成 进度安排 起止日期工作内容 12月14日分组、任务分配、课题理解 12月15日-12月17日功能分析、程序设计 12月18日-12月19日实验验证和测试 12月20 日总结、书写实验报告 参考资料[1] 王实甫. 嵌入式Linux系统设计与实例开发. 吉林大学出版社,2004年 [2] 田丰兴. 嵌入式控制系统. 北京航空航天大学出版社,2002年 指导教师(签字):年月日系(教研室)主任(签字):年月日

湖南工业大学 嵌入式Linux应用程序设计 课程设计说明书 AD驱动 起止日期: 2015年 12月14日至 2015年 12月 20 日 学生姓名皓月叶舞 班级通信1204班 学号124082004XX 成绩 指导教师(签字) 计算机与通信学院 2015年 12月20日

嵌入式linux简单程序

1、demo demo.c #ifndef __KERNEL__ #define __KERNEL__ #endif #ifndef MODULE #define MODULE #endif #include #include //模块相关 #include //内核相关 #include //file_operations #include //ssize_t定义文件 #include //__init和__exit相关 #include #include #include //copy_to_user()和copy_from_user()在此定义 #include /*相关宏定义*/ #define DEVICE_NAME "demo"//设备名称 #define demo_MAJOR 88//主设备号 #define demo_MINOR 0//次设备号 #define ERROR -1 static int MAX_BUF_LEN=1024;//数值的最大值 static int WRI_LENGTH=0; /*结构体的定义*/ static int demo_major=demo_MAJOR; struct demo_dev { struct cdev cdev; char drv_buf[1024]; }; struct demo_dev * demo_devp; /****************************************************************************** *******/ /*demo设备文件打开*/ int demo_open(struct inode * inode,struct file *filp) { filp->private_data=demo_devp;

ARM的嵌入式Linux应用程序开发设计

ARM的嵌入式Linux应用程序开发设计 嵌入式系统已经渗透到人们工作、生活中的各个领域,嵌入式处理器已占分散处理器市场份额的94%。而嵌入式Linux系统也蓬勃发展,不仅继承了Linux 源码开放、内核稳定高效、软件丰富等优势,还具备支持广泛处理器结构和硬件平台、占有空间小、成本低廉、结构紧凑等特点。1ARM处理器及开发板在嵌入式领域,ARM已取得了极大的成功,造就了IP核商业化、市场化的神话。据统计,全球有103家巨型IT公司在采用ARM技术,20家最大的半导体,一 嵌入式系统已经渗透到人们工作、生活中的各个领域,嵌入式处理器已占分散处理器市场份额的94%。而嵌入式Linux系统也蓬勃发展,不仅继承了Linux源码开放、内核稳定高效、软件丰富等优势,还具备支持广泛处理器结构和硬件平台、占有空间小、成本低廉、结构紧凑等特点。 1 ARM处理器及开发板 在嵌入式领域,ARM已取得了极大的成功,造就了IP核商业化、市场化的神话。据统计,全球有103家巨型IT公司在采用ARM技术,20家最大的半导体,一商中有19家是ARM的用户。ARM系列芯片已经被广泛的应用于移动电活、手持式计算机以及各种各样的嵌入式应用领域,成为世界上销量最大的32位微处理器。ARM已成为业界实际的RISC芯片标准。 ARM系列处理器根据各自特点应用于不同领域。从应用的角度上ARM芯片选择的一般原则:MMU;处理器速度;内置存储器容量;USB接口;GPIO数量;中断控制器;IIS(integrate interface ofsound)音频接口;nWAIT信号; RTC(real timeclock);LCD控制器;PWM输出等各项指标。 本文使用的是ARM9,其性能远远高过ARM7。开发板使用的是广州斯道信息技术有限公司的开发板,中央处理器是三星公司的S3C2410。ARM9具有以下特点:5级流水线;采用哈佛结构;高速缓存和写缓存的引入;支持MMU。 2 嵌入式Linux系统 嵌入式操作系统是嵌入式应用软件的基础和开发平台,它的出现解决了嵌入式软件开发标准化的难题。嵌入式系统具有操作系统的最基本的功能。目前主流的嵌入式系统有以下儿种:Linux、VxWorks、QNX、Windows CE、Palm OS。 嵌入式Linux操作系统具有一些独特的优势:层次结构及内核完全开放;强大的网络支持功能;具备一整套工具链;广泛的硬件支持特性。 嵌入式Linux系统有很多种。本文使用的是Red Hat9操作系统。 在安装有Windows和Linux双系统的PC上,系统会以Linux的GRUB作为引导装入器来选择启动二者。此时若直接删除Linux分区,会导致系统无法启动

嵌入式Linux系统开发标准教程

嵌入式Linux系统开发标准教程 目录 版权信息 内容简介 编辑推荐 目录 编辑本段版权信息 书名: 嵌入式Linux系统开发标准教程 作者:华清远见嵌入式培训中心 出版社:人民邮电出版社 出版时间: 2009 ISBN: 9787115194756 开本:16 定价: 45.00 元 编辑本段内容简介 《嵌入式Linux系统开发标准教程(第2版)》以嵌入式Linux系统开发流程为主线,剖析了嵌入式Linux系统构建的各个环节。《嵌入式Linux 系统开发标准教程(第2版)》从嵌入式系统基础知识和Linux编程技术讲起,接下来介绍了嵌入式Linux交叉开发环境的建立,然后分析了嵌入式Linux系统的引导程序、内核和文件系统三大组成部分,最后介绍了嵌入式Linux系统集成和部署的方法。 《嵌入式Linux系统开发标准教程(第2版)》先以ARM平台为例,对U-Boot和Linux内核启动过程做了详细分析,为学习嵌入式Linux系统开

发奠定基础,然后从概念上阐述了嵌入式Linux系统开发流程,实践上提供了具体的操作步骤,使读者能够深入理解嵌入式Linux系统的构建。 《嵌入式Linux系统开发标准教程(第2版)》可作为高等院校电子类、电气类、控制类等专业高年级本科生、研究生学习嵌入式Linux的教材,也可供希望进入嵌入式领域的科研和工程技术人员参考使用,还可作为嵌入式培训班的教材和教辅材料。 编辑本段编辑推荐 众多专家、厂商联合推荐,业界权威培训机构的经验总结。《嵌入式Linux系统开发标准教程(第2版)》配套PPT嵌入式专家讲座视频鞂式图书样章。嵌入式系统概述、ARM嵌入式处理器、Linux编程环境,嵌入式交叉开发环境、交叉杆塔工具链、Bootloader、配置编译Linux内核、Liux内核移植、内核高度技术、制作根文件系统、开源软件的应用、系统集成测试、部署Linux系统。 编辑本段目录 第1章嵌入式系统概述 1.1嵌入式系统的定义与特点 1.2常见的嵌入式操作系统 1.3嵌入式Linux的发展历史 1.4初步认识嵌入式Linux开发环境 1.5嵌入式Linux系统开发要点 第2章ARM嵌入式处理器 2.1初识ARM 2.1.1ARM公司简介 2.1.2ARM体系结构基础 2.1.3Linux与ARM处理器 2.2ARM指令集 2.2.1ARM处理器的指令集概述 2.2.2ARM指令寻址方式 2.2.3Thumb指令概述 2.3典型ARM处理器简介 2.3.1AtmelAT91RM9200 2.3.2SamsungS3C2410 2.3.3TIOMAP1510/1610系列 2.3.4Freescalei.Max21 2.4典型的嵌入式系统开发平台——三星S3C2410开发板

嵌入式Linux应用软件开发流程

从软件工程的角度来说,嵌入式应用软件也有一定的生命周期,如要进行需求分析、系统设计、代码编写、调试和维护等工作,软件工程的许多理论对它也是适用的。 但和其他通用软件相比,它的开发有许多独特之处: ·在需求分析时,必须考虑硬件性能的影响,具体功能必须考虑由何种硬件实现。 ·在系统设计阶段,重点考虑的是任务的划分及其接口,而不是模块的划分。模块划分则放在了任务的设计阶段。 ·在调试时采用交叉调试方式。 ·软件调试完毕固化到嵌入式系统中后,它的后期维护工作较少。 下面主要介绍分析和设计阶段的步骤与原则: 1、需求分析 对需求加以分析产生需求说明,需求说明过程给出系统功能需求,它包括:·系统所有实现的功能 ·系统的输入、输出 ·系统的外部接口需求(如用户界面) ·它的性能以及诸如文件/数据库安全等其他要求 在实时系统中,常用状态变迁图来描述系统。在设计状态图时,应对系统运行过程进行详细考虑,尽量在状态图中列出所有系统状态,包括许多用户无需知道的内部状态,对许多异常也应有相应处理。 此外,应清楚地说明人机接口,即操作员与系统间地相互作用。对于比较复杂地系统,形成一本操作手册是必要的,为用户提供使用该系统的操作步骤。为使系统说明更清楚,可以将状态变迁图与操作手册脚本结合起来。

在对需求进行分析,了解系统所要实现的功能的基础上,系统开发选用何种硬件、软件平台就可以确定了。 对于硬件平台,要考虑的是微处理器的处理速度、内存空间的大小、外部扩展设备是否满足功能要求等。如微处理器对外部事件的响应速度是否满足系统的实时性要求,它的稳定性如何,内存空间是否满足操作系统及应用软件的运行要求,对于要求网络功能的系统,是否扩展有以太网接口等。 对于软件平台而言,操作系统是否支持实时性及支持的程度、对多任务的管理能力是否支持前面选中的微处理器、网络功能是否满足系统要求以及开发环境是否完善等都是必须考虑的。 当然,不管选用何种软硬件平台,成本因素都是要考虑的,嵌入式Linux 正是在这方面具有突出的优势。 2、任务和模块划分 在进行需求分析和明确系统功能后,就可以对系统进行任务划分。任务是代码运行的一个映象,是无限循环的一段代码。从系统的角度来看,任务是嵌入式系统中竞争系统资源的最小运行单元,任务可以使用或等待CPU、I/O设备和内存空间等系统资源。 在设计一个较为复杂的多任务应用系统时,进行合理的任务划分对系统的运行效率、实时性和吞吐量影响都极大。任务分解过细会不断地在各任务之间切换,而任务之间的通信量也会很大,这样将会大大地增加系统的开销,影响系统的效率。而任务分解过粗、不够彻底又会造成原本可以并行的操作只能按顺序串行执行,从而影响系统的吞吐量。为了达到系统效率和吞吐量之间的平衡折中,在划分任务时应在数据流图的基础上,遵循下列步骤和原则:

linux系统及应用应用开发实验报告册

合肥师范学院 实验报告册 2013-2014第二学期 系别计算机科学与技术 实验课程 linux系统及应用 专业 11级计算机科学与技术 班级嵌入式应用技术 姓名 学号 指导教师何冀军

实验项目一览表 实验一Linux系统安装和简单配置 一、实验目的 (1)掌握Linux操作系统的安装步骤; (2)掌握Linux系统的简单配置方法; (3)掌握Linux系统的启动、关闭步骤。 二、实验内容 (1)安装Linux系统; (2)配置Linux系统运行环境; (3)正确地启动、关闭系统。

三、实验软件 VMWare Workstation 5.0; Red hat linux 9.0镜像文件; 四、实验主要步骤 (1)配置并安装操作系统; (2)vi创建程序并实用GCC编译; (3)运行程序; 五、实验结果 实验项目二Linux基本命令的使用 一、实验目的 (1)掌握Linux一般命令格式; (2)掌握有关文件和目录操作的常用命令; (3)掌握有关进程操作的常用命令; (4)熟练使用man命令。 二、实验内容 (1)正确地登陆和退出系统; (2)熟悉date,cal,who,echo,clear,passwd命令; (3)在用户主目录下对文件进行如下操作:复制一个文件、显示文件内容、查找指定内容、排序、文件比较、文件删除等; (4)对目录进行管理:创建和删除子目录、改变和显示工作目录、列出和更改文件权限、链接文件等; (5)利用man显示date,echo等命令的手册页; (6)显示系统中的进程信息。 三、实验软件 VMWare Workstation 5.0; Red hat linux 9.0; 四、实验主要步骤 1、登录进入系统,修改个人密码。 2、使用简单命令:date,cal,who,echo,clear等,了解linux命令格式; 3、浏览文件系统: (1)运行pwd命令,确定当前工作目录; (2)运行ls –l命令,理解各字段含义; (3)运行ls –ai命令,理解各字段含义。 (4)使用cd命令,将工作目录改到根目录(/)上。 (5)直接使用cd,用pwd命令验证回到的位置。 (6)用mkdir建立一个子目录subdir; (7) 将工作目录改到subdir. 4、文件操作 (1)验证当前工作目录在subdir; (2)运行date >file1,然后运行cat file1,看到什么信息? (3)运行cat subdir,会有什么结果,为什么?

嵌入式软件开发流程图

嵌入式软件开发流程 一、嵌入式软件开发流程 1.1 嵌入式系统开发概述 由嵌入式系统本身的特性所影响,嵌入式系统开发与通用系统的开发有很大的区别。嵌入式系统的开发主要分为系统总体开发、嵌入式硬件开发和嵌入式软件开发3大部分,其总体流程图如图1.1所示。 图1.1 嵌入式系统开发流程图 在系统总体开发中,由于嵌入式系统与硬件依赖非常紧密,往往某些需求只能通过特定的硬件才能实现,因此需要进行处理器选型,以更好地满足产品的需求。另外,对于有些硬件和软件都可以实现的功能,就需要在成本和性能上做出抉择。往往通过硬件实现会增加产品的成本,但能大大提高产品的性能和可靠性。 再次,开发环境的选择对于嵌入式系统的开发也有很大的影响。这里的开发环境包括嵌入式操作系统的选择以及开发工具的选择等。比如,对开发成本和进度限制较大的产品可以选择嵌入式Linux,对实时性要求非常高的产品可以选择Vxworks等。

1.2 嵌入式软件开发概述 嵌入式软件开发总体流程为图4.15中“软件设计实现”部分所示,它同通用计算机软件开发一样,分为需求分析、软件概要设计、软件详细设计、软件实现和软件测试。其中嵌入式软件需求分析与硬件的需求分析合二为一,故没有分开画出。 由于在嵌入式软件开发的工具非常多,为了更好地帮助读者选择开发工具,下面首先对嵌入式软件开发过程中所使用的工具做一简单归纳。 嵌入式软件的开发工具根据不同的开发过程而划分,比如在需求分析阶段,可以选择IBM的Rational Rose等软件,而在程序开发阶段可以采用CodeWarrior(下面要介绍的ADS 的一个工具)等,在调试阶段所用的Multi-ICE等。同时,不同的嵌入式操作系统往往会有配套的开发工具,比如Vxworks有集成开发环境Tornado,WindowsCE的集成开发环境WindowsCE Platform等。此外,不同的处理器可能还有对应的开发工具,比如ARM的常用集成开发工具ADS、IAR和RealView等。在这里,大多数软件都有比较高的使用费用,但也可以大大加快产品的开发进度,用户可以根据需求自行选择。图4.16是嵌入式开发的不同阶段的常用软件。 图1.2 嵌入式开发不同阶段的常用软件 嵌入式系统的软件开发与通常软件开发的区别主要在于软件实现部分,其中又可以分为编译和调试两部分,下面分别对这两部分进行讲解。 1.交叉编译 嵌入式软件开发所采用的编译为交叉编译。所谓交叉编译就是在一个平台上生成可以在另一个平台上执行的代码。在第3章中已经提到,编译的最主要的工作就在将程序转化成运行该程序的CPU所能识别的机器代码,由于不同的体系结构有不同的指令系统。因此,不同的CPU需要有相应的编译器,而交叉编译就如同翻译一样,把相同的程序代码翻译成不同CPU的对应可执行二进制文件。要注意的是,编译器本身也是程序,也要在与之对应的某一个CPU平台上运行。嵌入式系统交叉编译环境如图4.17所示。

嵌入式Linux应用完全开发手册

嵌入式Linux应用完全开发手册 终端概述 在Linux中,TTY(终端)是一类字符设备的统称,包括了3中类型:控制台、串口、伪终端。 控制台:供内核使用的终端为控制台。控制台在Linux启动时,通过命令console=…指定,如果没有指定控制台,系把第一个注册的终端作为控制台。控制台是一个虚拟的终端,它必须映射到真正的终端上。 控制台可以简单的理解为printk输出的地方。 控制台是个只输出的设备,功能很简单,只能在内核中访问。 进程四要素 █有段程序供其执行。这段 程序不一定是某个进程所专 有,可以与其它进程共用。 █有进程专用的内核空间 堆栈。 █在内核中有一个 task_struct数据结构,即通 常所说的“进程控制块”。有 了这个数据结构,进程才能 成为内核调度的一个基本单位接受内核的调度。 █有独立的用户空间。 进程调度 █调度概念:从就绪的进程中选出最合适的一个进程执行。 █调度策略 -SCHED_NORMAL(SCHED_OTHER):普通的分时进程。

- SCHED_FIFO:先进先出的实时调度 - SCHED_RR:时间片轮转实时进程 - SCHED_BATCH:批处理进程 - SCHED_IDLE:只有在系统空闲时,才能够被调度执行的进程。 进程管理 █特点:动态性、并发性、独 立性、异步性 编译说明 █编译选项: -c编译不链接。 -g 带有调试信息。 -I .h文件所在目录 -预处理:语法分析,例如:将宏定义展开。 -编译:*.c 文件编译成*.s文件。 -汇编:*.s 文件编译成*.o文件。 -链接:多个*.o 文件链接成执行文件。 █Linux系统调用和C库 Linux系统调用是依赖于系统的,而C库在任何操作系统下,调用都是相同的。

嵌入式Linux应用程序开发测试题

嵌入式Linux应用程序开发测试题(14级嵌入式方向专用) 一、选择题 1、下列哪一项不是嵌入式操作系统的特点D A、占有资源少 B、低成本 C、高可靠性 D、交互性 2、在Linux内核配置过程中,下面哪项命令采用的是基于图形窗口模式的配置 界面C A、make config B、make menuconfig C、make xconfig D、make oldconfig 3、在Linux内核配置过程中,下面哪项命令建立依赖关系C A、make config B、make menuconfig C、make dep D、make clean 4、交叉编译器中,下面哪项不是必需包含的D A、glibc B、gcc C、binutils D、tmake 5、内核的编译主要步骤不包括下面哪项D A、内核配置 B、建立依存关系 C、建立内核 D、加载内核 6、内核编译时选项前的尖括号中可以是空,*,M,其中*表示C A、选项将编译为模块 B、不包含选项 C、包含选项 7、Bootloader的stage1阶段主要完成的工作不包括下面哪项D A、基本的硬件初始化 B、为加载stage2准备RAM空间 C、拷贝stage2到RAM中 D、用汇编语言跳转到main入口函数 8、GCC的正确编译流程为A A、预处理-编译-汇编-链接 B、预处理-编译-链接-汇编

C、预处理-链接-编译-汇编 D、编译-预处理-汇编-链接 9、如需GCC提供编译过程中所有有用的报警信息,则在编译时应加入选项B A、-w B、-Wall C、-werror D、-error 10、下面哪些与GDB相关的说法是错误的B A、GDB能调试可执行文件 B、GDB能调试源代码 C、GDB对编译过程有要求D、GDB支持交叉调试 11、在GDB调试过程中,使用下面哪项命令设置断点,其中m代表行号A A、b m B、c m C、n m D、s m 12、open函数原型中的O_RDWR标志表示文件打开方式为C A、只读方式打开文件 B、可写方式打开文件 C、读写方式打开文件 D、以添加方式打开文件,在打开文件的同时,文件指针指向文件末尾 13、在Linux操作系统中,串口设备的设备名一般为C A、com1 B、port1 C、ttyS0 D、serl1 14、下面哪项对Linux操作系统下fork函数的描述是错误的D A、fork函数执行一次返回两个值 B、新进程称为子进程,而原进程称为父进程 C、父进程返回值为子进程的进程号 D、子进程返回值为父进程的进程号 15、编写守护进程的第一步为A A、创建子进程,父进程退出 B、在子进程中创建新会话 C、改变当前目录为根目录 D、关闭文件描述符 16、在关于TCP/UDP的描述中,下面哪项是错误的C A、TCP数据传输实现了从一个应用程序到另一个应用程序的数据传递

Linux应用程序开发

Linux应用程序开发 二、项目 说明:下列各个项目中的程序都要同时支持单字符选项和长选项 还需要支持一些事实上每一个GNU程序都会接受或应该接受的普通选项 具体要求每个程序都要增加以下两个选项: -h --help 列出所有可用选项用法信息,然后顺利退出程序。 -v --version 输出版本号,然后顺利退出程序。 4. 模式的含义。 4.1 创建库libpm.a,库中至少有以下函数。 // 判断模式是否整数代码 bool isIntcode (char *pattern); // 在作为模式的信号符号名前面加上SIG char *plussig (char *pattern); // 在作为模式的资源符号名前面加上RLIMIT_ char *plusrlimit (char *pattern); // 输出模式的含义,采用选项-o时,outf为1;否则为0 void printpm (int outf); 4.2 在调用库函数sqrt(x)时,如果x当前的值小于零,则会导致定义域错误。 如果你的程序还调用了strerror函数或perror函数,则有可能在标准输出看到如下错误消息: Math argument out of domain of func 这一错误消息在头文件/usr/include/asm-generic/errno-base.h中列出: #define EDOM 33 /* Math argument out of domain of func */ 其符号名和代码分别是EDOM和33,错误消息实际上是错误的含义。 errno-base.h共列出34个错误,而头文件errno.h中的错误代码为35-131。 类似地,头文件/usr/include/bits/signum.h中定义了信号的符号名和代码。 例如:只要从键盘按下Ctrl-C键,系统就把信号SIGINT发送给当前进程,提前结束运行。 此信号的定义如下: #define SIGINT 2 /* Interrupt (ANSI). */ 头文件/usr/include/asm-generic/resource.h也用同样的方式列出资源限制,例如:

嵌入式linux应用程序开发期末考试题库及答案

1下列哪一项不是嵌入式操作系统的特点D A、占有资源少 B、低成本 C、高可靠性 D、交互性 2下列哪一项不是嵌入式系统的基本要素C A、嵌入性 B、专用性 C、通用性 D、计算机系统 3现阶段嵌入式系统发展的主要标志为D A、以单芯片为核心的可编程控制器 B、以嵌入式CPU为基础、以简单操作系统为核心 C、嵌入式操作系统 D、Internet 4下面哪项不是嵌入式系统的特点D A、面向特定应用 B、软件一般都固化在存储器芯片或单片机本身中,而不存储于磁盘中 C、代码尤其要求高质量、高可靠性 D、具备二次开发能力 5下面哪项不是ARM处理器的特点D A、支持Thumb(16位)/ARM(32位)双指令集 B、兼容8位/16位器件 C、指令长度固定 D、大量使用RAM,指令执行速度更快 6下面哪项不是ARM处理器的特点B A、大多数数据操作都在寄存器中完成 B、采用CISC指令集 C、寻址方式灵活简单,执行效率高 D、体积小、低功耗、低成本、高性能 7下面哪项不属于ARM处理器模式A A、管理模式(root) B、用户模式(usr) C、快速中断模式(fiq) D、外部中断模式(irq) 8下面哪项为错误的说法A A、冯·诺依曼结构共用数据存储空间和程序存储空间,不共享存储器总线 B、哈佛结构有分离的数据和程序空间及分离的访问总线 C、哈佛结构在指令执行时,取址和取数可以进行并行操作 D、哈佛结构指令执行时效率更高 9采用下列哪项更有利于开发微型嵌入式应用系统B A、脚本程序语言 B、C语言或汇编语言 C、C++或SQL语言 D、HTML或XML语言 10下面哪项为一般嵌入式系统开发中不具备的环节B A、系统总体开发 B、数据库设计 C、嵌入式硬件开发 D、嵌入式软件开发 11在嵌入式系统开发过程中下面哪项为错误的说法B A、对于有些硬件和软件都可以实现的功能,需要在成本和性能上做出抉择 B、对实时性要求非常高的产品可以选择嵌入式Linux开发环境 C、嵌入式系统的软件开发与通常软件开发的区别主要在于软件实现部分 D、嵌入式系统的软件开发可分为交叉编译和交叉调试两部分 12对于Linux操作系统,下面哪项说法是错误的D A、是一种开源的操作系统 B、提供了强大的应用程序开发环境 C、可以免费使用 D、不支持Sparc硬件平台 13使用命令chmod的数字设置,可以改变C A、文件的访问特权 B、目录的访问特权 C、文件/目录的访问特权 14修改文件a.txt的权限,使每个用户都可以读取和写入这个文件,相应命令为A A、chmod666a.txt B、chmod777a.txt C、chmod755a.txt D、chmod555a.txt 15某文件的组外成员的权限为只读;所有者有全部权限;组内的权限为读与写,则该文件的权限为D A、467 B、674 C、476 D、764

华清远见嵌入式Linux课程

课程名称:嵌入式学院—嵌入式LINUX工程师就业培训班 上课时间为:上午9:00—12:00 下午13:30—17:30 (每天7小时正式上课时间)晚自习18:00—21:00 第一阶段:嵌入式Linux软件工程师 ?职场定位:Linux Development Engineer for Software Engineering ?本期目标:嵌入式系统是现在最热门的计算机应用领域之一,嵌入式C语言在其中起着至关重要的作用。一个精通C语言程序设计的程序员,可以很容易地进入Linux、WinCE、Vxworks等嵌入式操作系统下的软件开发工作。本阶段学习目标是掌握C语言基本知识、C编程语法基础和Linux操作系统的使用,并熟练掌握嵌入式Linux的开发环境,为将来的编程工作打基础。

第二阶段:嵌入式Linux系统工程师 ?职场定位:Linux Development Engineer for Embedded Systems ?证书:微软嵌入式工程师认证证书(认证费500元),红帽公司《Linux应用开发工程师证书》(认证费500元) ?本期目标:参加本期培训的学员应该掌握嵌入式C语言编程技巧。嵌入式Linux应用开发和系统开发是嵌入式Linux中最重要的一部分,也是企业人才需求最广的一部分。本期学习的主要目标是精通嵌入式Linux下的程序设计,熟悉嵌入式Linux开发流程,强化学员对Linux应用开发的理解和编码调试的能力,同时掌握bootloader和kernel的移植技能,了解ARM体系结构和编程,具备ARM硬件接口的基础知识,并了解Linux内核开发相关内容,初步掌握Linux下的驱动程序开发方法。另外,本期课程还会让学员了解另外一个比较重要的嵌入式操作系统:Windows CE,使学员在掌握嵌入式Linux的同时,也了解Windows CE的开发方法,拓展学员的知识面,丰富学员的知识结构。最后通过几个典型的企业全真案例,进一步巩固本期课程内容,使学员真正学以致用。

嵌入式Linux应用程序开发详解-第1章

“黑色经典”系列之《嵌入式Linux应用程序开发详解》 能够熟练使用Linux系统的基本命令 能够独立在Linux系统中安装软件 能够独立定制Linux服务 华清远见<嵌入式Linux应用开发班>培训教材

1.1 嵌入式Linux基础 随着摩托罗拉手机A760、IBM智能型手表WatchPad、夏普PDA Zaurus等一款款高性能“智能数码产品”的出现,以及Motolola、三星、MontaVista、飞利浦、Nokia、IBM、SUN 等众多国际顶级巨头的加入,嵌入式Linux的队伍越来越庞大了。在通信、信息、数字家庭、工业控制等领域,随处都能见到嵌入式Linux的身影。根据美国VDC(V enture Development Co.)统计数据显示,嵌入式Linux的市场规模从2001年的5520万美元,到2006将会增长至3.46亿美元,在未来两年将占嵌入式操作系统市场份额的50%。 究竟是什么原因让嵌入式Linux发展如此迅速呢?又究竟是什么原因让它能与强劲的Vxworks、Window CE相抗衡呢?这一切还是要归根于它的父亲——Linux的功劳。可以说,嵌入式Linux正是继承和发展了Linux的诱人之处才走到今天的,而Linux也正是有了嵌入式Linux的广泛应用才使其更加引人瞩目。以下就从Linux开始,一层层揭开嵌入式Linux的面纱。 1.1.1 Linux发展概述 简单地说,Linux是指一套免费使用和自由传播的类UNIX操作系统。人们通常所说的Linux是指Linus Torvalds所写的Linux操作系统内核。 当时的Linus还是芬兰赫尔辛基大学的一名学生,他主修的课程中有一门课是操作系统,而且这门课是专门研究程序的设计和执行。最后这门课程提供了一种称为Minix的初期UNIX 系统。Minix是一款仅为教学而设计的操作系统,而且功能有限。因此,和Minix的众多使用者一样,Linus也希望能给它添加一些功能。 在之后的几个月里,Linus根据实际的需要,编写了磁盘驱动程序以便下载访问新闻组的文件,又写了个文件系统以便能够阅读Minix文件系统中的文件。这样,“当你有了任务切换,有了文件系统和设备驱动程序后,这就是UNIX,或者至少是其内核。”于是,0.0.1版本的Linux就诞生了。 Linus从一开始就决定自由传播Linux,他把源代码发布在网上,于是,众多的爱好者和程序员也都通过互联网加入到Linux的内核开发工作中。这个思想与FSF(Free Software Foundation)资助发起的GNU(GNU’s Not UNIX)的自由软件精神不谋而合。 GNU是为了推广自由软件的精神以实现一个自由的操作系统,然后从应用程序开始,实现其内核。而当时Linux的优良性能备受GNU的赏识,于是GNU就决定采用Linus及其开发者的内核。在他们的共同努力下,Linux这个完整的操作系统诞生了。其中的程序开发共同遵守General Public License(GPL)协议,这是最开放也是最严格的许可协议方式,这个协议规定了源码必须可以无偿的获取并且修改。因此,从严格意义上说,Linux应该叫做GNU/Linux,其中许多重要的工具如gcc、gdb、make、Emacs等都是GNU贡献。 这个“婴儿版”的操作系统以平均两星期更新一次的速度迅速成长,如今的Linux已经有超过250种发行版本,且可以支持所有体系结构的处理器,如X86、PowerPC、ARM、XSCALE等,也可以支持带MMU或不带MMU的处理器。到目前为止,它的内核版本也已经从原先的0.0.1发展到现在的2.6.xx。 华清远见<嵌入式Linux应用开发班>培训教材

关于嵌入式系统软件的全过程质量保证精

关于嵌入式系统软件的全过程质量保证 质量是产品的生命 当今随着软、硬件技术的发展,嵌入式系统广泛应用于航空航天、国防军事、电子通信等行业,其中软件也越来越复杂。而这些领域应用特点,决定了嵌入式系统往往是高安全、任务关键的系统,软件的微小瑕疵就可能严重威胁到生命和国家的安全、天文数字的巨额财产损失。这就使得保证嵌入式软件的质量和可靠性,变得至关重要。而在这些领域,对产品质量从来就保持着高度的重视,有将“质量视为产品的生命”的传统。这样,相关行业的高层管理人员和开发人员对于软件的质量也逐渐提高了重视程度。近年来,在组织上,建立了完善的软件测试体系;在开发和测试方法上,建立了中国的软件过程成熟度的评价体系GJB5OO0在自动化工具方面,投入了大量的经费和人员在测试设备的开发、购置和建设方面。应该说,软件作为嵌入式产品主要的组成部分之一,对其质量的重视是目前相关行业的一个共识。 IBM Rational多年来在软件工程和质量保证方面积累了丰富的方法和经验。本文依据部分嵌入式开发机构对软件质量保证工作的一些理解,分析相应开发机构工作中可能的问题,并提出以RUP为核心的全过程质量管理的思想和具体的实现方式,提出不同单位的过程改进方法,以一种渐进的方式,从简单的工作开始,逐渐深入地改进组织的软件质量管理水平。 定义质量 对于任何一个组织,定义共同的对质量的理解是重要的第一步。软件开发组织经常按照一种不精确的、概括的质量观念来运转。 在IBM Rational统一过程中,质量定义如下: 满足或超出认定的一组需求; 使用经过认可的评测方法和标准来评估; 使用认定的流程来生产。 在这个定义中,我们首先看需求,IBM Rati onal的软件质量在用户需求方面的定义分为五个方面:易用性、可靠性、性能、可支持和功能。 质量保证,归根结底就是为客户提供更高品质的产品,更好地满足客户的需求。另一方面,这个质量定义中明确指出,质量更体现在软件开发的整个过程和一个标准的评价方式上。 软件开发过程质量就是指为了生成工件而对可接受流程的实施和遵守程度,体现在三个层次: 产品本身和用来生产、组装软件产品的零部件质量; 在软件开发过程的标准化、流程化、自动化程度和团队基本协作平台的效率,各个过程对质量的承诺; 软件产品验收的评测手段应该是被业界广泛认可和接受的方法,所构筑的质量评价标准。 一个软件生产企业的过程质量一般可以用它的软件过程成熟度等级来评估。 RUP全过程质量保证 Rational Unified Process (RUP是一个可以通过Web来使用的软件工程过程。作为软件工业事实上的标准,它回答了我们以下问题:在整个软件开发的各个过程中,谁(角色)应该在什么时候(详细工作流程)做什么(任务)和产生什

嵌入式Linux应用程序设计复习题Word版

.一、选择题 1.下面哪个命令是用来定义shell的全局变量( D ) A. exportfs B. alias C. exports D. export 2. 将当前目录下的文件shell.sh移动到目录/home/linux下的命令为 B 。 A. cp shell.sh /home/linux B. mv shell.sh /home/linux C. lls shell.sh / home/linux/shell.sh D. mv /root/shell.sh /home/linux/shell.sh 3.如果要列出一个目录下的所有文件需要使用命令行( C )。 A. ls –l B. ls -t C. ls –a D. ls –d 4.Linux 下Makefile文件中,表示第一个依赖目标的系统变量是(C ) A.$@ B.$* C.$< D.$# 5.32位系统下,定义一个指向字符类型的变量 short i,那么sizeof(i)的值是( b ) A.1 B.2 C.3 D.4 6.在用ls –l 查看文件属性时,字符设备文件类型的标志是( A ) A.c B.b C.s D.l 7. 在linux下进行shell编程时,注释符是 A 。 A. # B. // C. /* */ D. 以上都不对 8. 任何时候用户需要回到用户主目录时可以使用命令 A 。 A. cd B. pwd C. path D. cd . 9. 下列属于文件包含的命令是_____C____。 A. #define N 25 B. #endif C. #include "stdio.h" D. #else 10. 下列关于Linux安装的说法中,不正确的是 C 。 A.如果计算机的内存为128MB,则SWAP分区(交换分区)的大小通常设定为256M。 B.安装时Linux分区的文件系统类型一般为ext2或ext3。 C.安装时要进行磁盘分区,如果选择“自动分区”,系统会自动保留硬盘上原来的数据。 D.Linux除了可以从光盘安装外,还可以从网上下载Linux的iso映像文件,从硬盘安 装。 11. 下列说法中,不正确的是 A 。 A. Shell程序编写完后还需要用gcc编译器编译。 B.可以通过将shell程序作为sh命令的输入来执行shell程序。 C. shell程序中定义的函数不能有参数。 D. Linux是免费使用和自由传播的类UNIX操作系统,但它并不是没有版权。 12.下列的各类函数中,不是类的成员函数。(C) A)构造函数 B)析构函数C)友元函数 D) 拷贝初始化构造函数 13.作用域运算符“::”的功能是:(D )

《嵌入式LInux设计与开发》练习题

练习题(一) 一、填空题 1.嵌入式系统一般包括_____________、嵌入式操作系统和。 2.Arm7内核采用的是体系结构。 3.S3C2410X芯片包含通道PWM定时器和____________通道内部计时器。4.gcc的编译流程分为预处理、编译、和______________。 5.C语言中的预处理语句是以符号开头的。 6.多任务系统中有3个功能单位:任务、和____________。 二、选择题 1.下列操作系统中,具有Windows图形界面的是()A.VxWorks B.QNX C.Windows CE D.Linux 2.使vi编辑器处于可编辑状态的命令是()A.r B.p C.i D.b 3.下列选项中,能帮助用户生成makefile的工具是()A.gcc B.autotools C.gdb D.vi 4.可以使用TFTP通过网络下载文件的命令是()A.run B.tftpboot C.sleep D.mv 5.下列不属于Linux系统中线程的是()A.用户级现程B.网络级线程C.轻量级线程D.内核级线程 6.下列选项中,常用于网络中不同机器之间的进程间通信的是()A.套接字B.管道C.信号D.信号量 7.使用有关线程操作的函数时必须包含的头文件是()A.pthread.h B.stdio.h C.time.h D.string.h 8.TCP/IP参考模型包含几层()A.4 B.5 C.6 D.7 9.在TCP中,用于发送数据的函数是()A.bind()B.send()C.accept()D.recv() 10.下列选项中,不属于Linux系统的设备分类的是()

相关主题
文本预览
相关文档 最新文档