嵌入式Linux应用开发(中断实验指导)(通用5篇)
篇1:嵌入式Linux应用开发(中断实验指导)
嵌入式Linux应用开发
——中断按键点亮LED实验
一、中断控制设计流程
<1>由中断控制器汇集各类外设发出的中断信号,然后向CPU发出处理请求。
<2>CPU保存当前程序的运行环境,调用中断服务程序(ISR,Interrupt Service Rout)处理这些中断。
<3>在ISR中通过读取中断控制器、外设相关寄存器来识别当前中断是哪个中断,并进行相应处理。
<4>清除中断:通过读写中断控制器和外设的相关寄存器来实现。
<5>最后恢复被中断程序的运行环境(即前面保存的各个寄存器等),继续执行。
二、程序设计组成框架
程序由head.s、init.c、interrupt.c、makefile四个程序模块组成head.s:初始化,设置中断模式、系统模式的栈,设置中断处理函数,设置
各类异常的向量地址。
init.c: 关看门狗(WATCHDOG),否则CPU会不断重启。初始化LED、初始化外部中断、使能外部中断、设置外设中断的触发方式。interrupt.c:设计代码根据识别出来的中断(即按键)点亮LED,然后清除
中断。写上主函数,主函数只是个不做任何工作的无限循环。Makefile: Linux中使用make命令编译程序以提高编译效率,makefile既是
make所要执行的命令。
三、程序设计结果
将所编写程序通过H-JTAG烧写到实验箱中观察结果,按下按键,LED亮;再次按下按键,LED灭,循环往复。
篇2:嵌入式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地址,开发目录共享,挂载等。
四实验结果
实验二嵌入式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数据采集模块电路设计。
篇3:嵌入式Linux应用开发(中断实验指导)
关键词:实验平台,嵌入式系统,内核裁剪,文件系统,系统引导
嵌入式系统一般被定义为以应用为中心, 以计算机技术为基础、软硬件可裁剪, 功能、可靠性、成本、体积、功耗严格要求的专用计算机系统。最早期嵌入式系统主要被应用于工业、航空航天等专业领域上。如今嵌入式系统被广泛应用到各个行业以及我们生活的各个方面。而且我们可以预见, 随着后PC时代来临, 嵌入式系统必将发挥更加重要的作用。
针对嵌入式系统应用趋势, 本科院校的IT类专业基本上都开设嵌入式系统方向的课程。高职院校与本科院校相比, 在教学时间和学生能力上都有的劣势。因此, 如在高职院校计算机类专业进行嵌入式系统教学, 必须要选择一条适合高职特点的技术路线。
一、技术路线选择
从嵌入式系统的定义可见嵌入式系统不是一个独立的学科, 而是一个综合学科, 尤其是涉及软件与硬件的结合。一个完整的嵌入式系统主要由嵌入式微处理器为核心的硬件平台、嵌入式操作系统、嵌入式应用软件系统等三部分组成。嵌入式微处理器典型代表主要有ARM、X86、MIPS等系列产品。ARM系列在消费电子、无线设备等领域得到了广泛应用。X86系列兼容Intel通用计算机处理器指令系统, 在工业控制和通信领域得到了大量应用。MIPS则广泛应用于机顶盒、游戏机等领域。嵌入式操作系统主要有Linux (或基于Linux内核) 、Windows CE、u C/OS II、VxWorks、Nucleus等系列, 其中毫无疑问Linux系列占据了嵌入式操作系统最大的份额。
在嵌入式系统教学中, 由于嵌入式硬件系统的专用性和复杂性, 主要通过购买教学设备厂商提供的教学硬件平台。而这些教学平台基本都是基于ARM系列的微处理器。基于ARM处理器的嵌入式实验平台的学习, 涉及的知识面还比较多, 比如ARM体系结构、ARM指令系统、汇编语言、交叉编译和C/汇编语言的混合编译等。对于高职计算机类专业, 如果不是专门的嵌入式方向, 选择ARM系列硬件系统进行教学, 无论是教学时间还是知识结构上都不太合适。而基于X86的微处理器与现有PC通用的CPU相兼容。所以, 我们在进行技术路线选择时没有选择ARM系列, 而是选择了X86系列的微处理器。对于嵌入式应用软件系统, 可以通过嵌入式软件开发或者应用集成两种方式实现。也是基于选择X86系列微处理器相同因素的考虑, 我们在嵌入式应用软件系统的技术路线上选择了应用集成这种方式。
综上所述, 我们确定用于高职计算机类专业进行嵌入式系统教学的基于X86平台的嵌入式Linux实验平台的技术路线为:采用基于X86平台的嵌入式瘦终端, 依据这个终端设备对通用的Linux系统进行内核裁剪并定制相应的文件系统, 从而构建一个以U盘为载体, 能在嵌入式瘦终端上引导运行的嵌入式Linux系统;最后再在这个平台上集成相应的应用。具体过程如图1所示。
二、Linux系统内核裁剪
正如嵌入式系统的定义所言, 系统的可裁剪是它一个重要特点。Linux系统的裁剪通常可以通过两种方式完成。一种途径是从零开始, 根据需求逐步搭建Linux系统。另一种途径是从一台开发主机上完整的Linux系统拷贝复制内核和必要的文件构建一个小系统。本实验平台采用后一种方式实现。源Linux系统采用Cent OS 5.8版本进行安装。安装过程中通过软件包定制, 没有选择图形界面, 选择了系统的基本、开发库、开发工具集、编辑器、系统工具集、网络服务功能等6个软件包组进行安装。
完成目标主机的源Linux系统安装后, 进入实验平台搭建的第一阶段:Linux内核裁剪。操作系统内核提供了操作系统的基本功能, 如进程调度、内存管理、设备驱动、文件系统、网络功能等。通常情况下, 通过Linux发行版本安装的Linux系统, 其内核都是通用内核。通用内核要考虑设备的普适性, 所以都比较大并且功能比较全。如本实验安装的源Linux系统, 其内核版本为2.6.18-308.e15, 压缩后的大小约为190M。但嵌入式系统都是专用系统, 一般都需要经过内核裁剪, 把不需要的功能移除。内核裁剪后可以带来非常多好处, 比如系统更简单、效率更高、更加稳定等。Linux内核裁剪主要经过以下几个步骤:
STEP 1:下载源代码。下载Linux内核源代码, 并在开发主机的中解压。在实验平台中, 我们选择了跟源Linux系统相近的内核版本2.6.18。
STEP 2:配置内核。配置内核通过命令“make config”, 然后再选择内核需要的功能模块。以版本2.6.18为例, Linux内核共有24大类功能模块。在搭建实验平台的教学中, 内核裁剪主要集中在处理器类型和特性、硬件驱动、设备驱动、文件系统、网络等模块中。具体裁剪可以根据目标终端的硬件决定。通过Linux内核裁剪, 可以让学生对嵌入式系统的可裁剪性有了更具体的认识。
STEP 3:内核编译。内核编译主要通过命令“make;make moduels_install”实现。编译成功的内核保存在arch/i386/boot中。
STEP 4:内核安装。内核安装通过命令“make install”完成。命令成功执行完成后, 将在/boot目录下生成新的内核、initrd和System.map等文件。
三、文件系统定制
完成内核裁剪和编译后, 我们进入搭建实验平台的第二阶段:文件系统定制。如果对新系统的空间大小有严格限制, 通常需要利用Busybox来构建新系统的文件系统。实验平台对存储空间大小没有严格限制, 所以我们通过拷贝的方式, 直接构建一个与源Linux系统类似的文件系统。只是它是需要运行的应用程序、库、配置文件的较小的集合, 并且保存在独立的U盘中。步骤如下:
STEP 1:分区。在源Linux主机上挂载U盘, 把U盘分成两个区, 都用Ext3文件系统进行格式化。其中一个分区大小约为50M, 用作新Linux系统的引导分区;另一个分区作为新Linux系统根分区。最后把这个两个分区挂载到源Linux系统中。
STEP 2:创建引导目录。拷贝源Linux系统/boot目录编译后的内核、initrd、System.map、menu.lst、stage1、stage2等文件到U盘上用作引导分区目录中。
STEP 3:创建应用程序目录。在U盘用作根分区的目录中创建bin、sbin、usr/bin、usr/sbin等目录, 并拷贝源Linux系统中/bin、/sbin、/usr/bin、/usr/sbin中文件到U盘对应目录中。可以根据自己的实际需要选择必要的命令文件。
STEP 4:创建设备目录。在U盘用作根分区的目录中建立dev目录, 并拷贝源Linux系统/dev目录文件。源Linux系统中设备文件较多, 尤其是同种类型的设备文件有多个, 可以根据实际需要减少同种类型的设备文件, 例如硬盘、tty等。
STEP 5:配置目录。在U盘用作根分区的目录中建立etc目录, 并拷贝源Linux系统/etc目录文件。可以根据实际需要, 只拷贝必要的配置文件。
STEP 6:创建库文件目录。在U盘用作根分区的目录中创建lib、usr/lib、usr/share等目录, 并拷贝源Linux系统中/lib、/usr/lib、/usr/share中文件到U盘对应目录中。系统正常运行必须有相应的库文件, 可以使用ldd命令检查支持之前拷贝的命令所需要的库文件。
STEP 7:创建其他必要的目录。在U盘用作根分区的目录中创建home、media、proc、root、var、var/log、var/run等目录。
四、系统引导及应用集成
以完成文件系统定制的U盘作为载体的新Linux系统还不能引导, 因为U盘还不是一个引导盘。基于X86平台的瘦终端与普通PC机类似, 系统引导加载由BIOS和位于硬盘主引导记录 (MBR) 的OS Bootloader组成, BIOS负责硬件上电后的自检和初始化等工作, 然后再读取MBR中的Bootloader程序并将其装入内存, 由Bootloader程序装载操作系统内核, 再把控制权移交给操作系统内核, 从而完成 (下转第39页) 了操作系统的引导。在实验平台中, 我们采用的Bootloader程序为GRUB。通过在U盘上安装GRUB, 从而使得这个U盘成为引导盘, 完成新Linux系统的引导。主要的步骤如下:
STEP 1:卸载源Linux系统的/boot, 把U盘用作引导的分区挂载目录/boot上。
STEP 2:安装GRUP到U盘中。通过命令“grupinstall/dev/sda”完成此操作。
STEP 3:生成GRUP的配置文件。通过命令“grub-mkconfig-o/boot/grub/grub.cfg”完成此操作。
STEP 4:产生U盘上的MBR。通过命令“grubsetup/dev/sda”完成此操作。
STEP 5:更新U盘上作为根分区的文件etc/fstab。把根“/”对应的分区更新为“/dev/sda2”;再把“/boot”对应的分区更新为“/dev/sda1”。
通过上述步骤, 我们已经可以把U盘上Linux系统正常引导运行, 成功搭建了实验平台。利用实验平台, 我们可以搭建专门的应用。比如, 在源Linux系统上完成iptables软件的安装和配置, 把源Linux系统上的iptables拷贝到U盘上, 让iptables把这台瘦终端成为小型的专用路由器设备。
五、小结
通过这个嵌入式Linux实验平台的搭建, 首先可以让高职计算机类学生对嵌入式系统组成有了一个形象、具体的认识;同时, 在实验平台搭建过程中, 也让学生嵌入式系统软件尤其是嵌入式操作系统有了更深刻的了解。实验平台的搭建为高职计算机类学生进入嵌入式系统领域进一步深入实践和学习打下了一定的基础。利用这个实验平台, 也可以自己集成相应的应用, 构建一个可用的嵌入式专用系统, 提高学生的学习兴趣和热情。
参考文献
[1]腾春桃等.嵌入式Linux文件系统的研究与应用[J].微计算机信息, 2008 (11-2) .
[2]马学文等.嵌入式系统中Bootloader的设计与实现[J].计算机工程, 2005 (4) .
[3]高松.Linux剪切方法研究[J].软件导刊, 2006 (1) .
[4]杨学俊等.基于X86平台的嵌入式Linux系统[J].电脑编程技巧与维护, 2011, (14) .
篇4:浅析Linux嵌入式系统的应用
1、嵌入式系统是一种应用系统,它至少包含一个可编程的计算机[通常是某种形式的控制器、微处理器或数字信号处理芯片(DSP)]且使用该系统的人一般并未意识到该系统是基于计算机的。
操作系统是一种在计算机上运行的软件,它的主要任务是管理计算机上的系统资源。为用户提供使用计算机及其外部设备的接口。它存在的目的是为了管理所有硬件资源,并且提供应用软件一个合适的操作环境。嵌入式系统由于硬件的先天限制,经常只具有极稀少的硬件资源。如时脉较少的CPU、较少的内存、常不具有磁盘而用小容量的DiskOnChip或DiskOnModule。而在使用电池的系统中,它还要实现节省电池消耗,延长电池使用时间的功能。
2、最初的嵌入式设备是单一用途的,它们拥有各自独特的显示方式和用户界面;而今天它们变成了我称之为“等同PC”的系统。它们必须运行很多相同的应用程序,它们需要采用相同的方式实现互连或是在某些情况下增强互连性。因此你可以看到在传统的实时操作系统(RTOS)之上建立应用程序的必要性。作为内部开发(in-house developed)操作系统的替代方式,RTOS的出现使得建立嵌入式应用变得更加容易。Liuux还具有很好的可靠性。传统的RTOS通常不具备强大的内存保护功能,这使应用程序很容易被破坏。
二、嵌入式linux在工业控制领域中的应用
基于嵌入式linux的工控系统以嵌入式微处理器为核心来运行嵌入式Linux操作系统。应用程序可通过网络进行更新,并可通过键盘进行人机对话,数据可通过LCD现场显示,重要数据可用文件形式保存在Flash等闪存存储器中;数据和报警信息可通过串口向上位机传输,也以通过以太网向工业以太网或Inernet发布,用户还可通过网络实现远程监控和远程维护。更为关键的是,可充分利用Interact上已有的软件和协议(如:ftp,http以及Apache,PHP,MySQL等应用程序)迅速搭建前台数据采集系统,以实现测控系统和后台管理系统的通讯。
这种方式的优点有:
(1)不需专用的通信线路即可用现成的INTER-NET网络将数据传送到任何地方。
(2)不仅能够传递数据信号,也可以传递音频和图像信号。
(3)由于目前的INTERNET协议是现成和公开的,因此,利用大到几十兆的Microsoft IE浏览器,或小到只有600kB的Mosaic浏览器都可以对网络数据进行读取。
三、Linux操作系统在移动设备领域的优势
首先,Linux属于开放的操作系统,它自身的技术文档甚至源代码都是开放的,因而在学术领域受到格外青睐,使得它对新技术,新协议有良好的适应性,
其次,由于Linux和Unix之间的相似性,使得许多对Unix熟悉的开发人员能够很快在相似的基于嵌入式Linux开发环境中进行开发工作。另外,由于Linux源码的开放性使得代码移植和重用变得相当普遍,基于嵌入式Linux平台的开发产品往往只花费较低的成本就能有很好的质量。这对于注重开发成本的公司无疑具有极大的诱惑力。
四、结束语
在嵌入式应用的领域里,从因特网设备到专用的控制系统,Lin-ux操作系统的前景都很光明。所有新造的微型计算机芯片中大约有95%都是用于嵌入式应用的。由于Linux功能强大、可靠、灵活而且具有伸缩性。再加上它支持大量的微处理器体系结构、硬件设备、图形支持和通信协议,这些都使它作为许多方案和产品的软件平台越来越流行。
参考文献:
[1]邹思轶,Linux嵌入式设计与应用[M],北京:清华大学出版社,2002
篇5:嵌入式Linux网络通信实验
Linux操作系统及嵌入式应用
实验报告
系(院): 计算机工程学院 专
业:计算机科学与技术(物联网工程)班
级: 物联网1111
姓
名: 蒋振 学
号:1111307116 指导教师:
孙成富
学年学期:
2014 ~ 2015 学年 第 学期
实验1 Socket全双工通信实验 实验目的
1)了解网络套接字编程
2)掌握网络通信服务器和客户端的工作过程 3)利用多线程实现全双工通信 4)下载并运行网络应用程序
2实验环境
1)宿主机:Fedora 10 2)嵌入式Linux软硬件系统:TQ2440(基于S3C2440A)开发板
3实验准备
3.1Linux下的多线程编程
进程是程序执行时的一个实例,即它是程序已经执行到何种程度的数据结构的汇集。从内核的观点看,进程的目的就是担当分配系统资源(CPU时间、内存等)的基本单位。
线程是进程的一个执行流,是CPU调度和分派的基本单位,它是比进程更小的能独立运行的基本单位。一个进程由几个线程组成(拥有很多相对独立的执行流的用户程序共享应用程序的大部分数据结构),线程与同属一个进程的其他的线程共享进程所拥有的全部资源。
本实验使用多线程解决了并行通信的难题。关于多线程的函数主要是使用pthread.h头文件中定义的多线程操作函数,如pthread_create、pthread_cancel等。
3.2TCP/IP概述
3.2.1TCP/IP的分层模型
OSI协议参考模型,是基于国际标准化组织(ISO)的建议发展起来的,它分为7个层次:应用层、表示层、会话层、传输层、网络层、数据链路层及物理层。这个7层的协议模型虽然规定得非常细致和完善,但在实际中却得不到广泛 的应用,其重要的原因之一就在于它过于复杂。但它仍是此后很多协议模型的基础。与此相区别的TCP/IP协议模型将OSI的7层协议模型简化为4层,从而更有利于实现和使用。
TCP/IP的协议参考模型和OSI协议参考模型的对应关系如下图 1所示:
SYN J SYN K,ACK J+1 ACK K+1 图1 TCP/IP协议与OSI协议参考模型对比图
3.2.2TCP的三次握手
TCP是面向连接的,所谓面向连接,就是当计算机双方通信时必需先建立连接,然后进行数据通信,最后拆除连接三个过程。TCP在建立连接时又分三步走:
第一步(A->B):主机A向主机B发送一个包含SYN即同步(Synchronize)标志的TCP报文,SYN同步报文会指明客户端使用的端口以及TCP连接的初始序号;
第二步(B->A):主机B在收到客户端的SYN报文后,将返回一个SYN+ACK的报文,表示主机B的请求被接受,同时TCP序号被加一,ACK即确认(Acknowledgment)。
第三步(A->B):主机A也返回一个确认报文ACK给服务器端,同样TCP序列号被加一,到此一个TCP连接完成。
3.3套接字(socket)概述
3.3.1套接字类型
1)流式套接字(SOCK_STREAM)
流式套接字提供可靠的、面向连接的通信流;它使用TCP协议,从而保证了数据传输的可靠性和顺序性。2)数据报套接字(SOCK_DGRAM)
数据报套接字定义了一种无可靠、面向无连接的服务,数据通过相互独立的报文进行传输,是无序的,并且不保证是可靠、无差错的。它使用数据报协议UDP
3)原始套接字(SOCK_RAW)
原始套接字允许对底层协议如IP或ICMP进行直接访问,它功能强大但使用较为不便,主要用于一些协议的开发。3.3.2
套接字编程
使用TCP时Socket编程流程图如图2所示。
服务器端 socket bind bind listen accept recv/recvfrom send/sendto close connect send/sendto recv/recvfrom close客户端 socket
图2 TCP时Socket编程流程图
使用UDP时Socket编程如图3所示。
socket listen accept recvfrom sendto或 socket connect send recv close或 recv send closesendto recvfrom或或 图3 TCP时Socket编程流程图
实验过程
4.1
简单的Socket通信程序设计
在Fedora 10操作系统的/home目录下创建NetCommunicator目录,并新建client.c和server.c源文件,NetCommunicator目录如图4所示。
图4 NetCommunicator截图
分别编写Socket通信的客户端和服务器端源代码。编写完毕,使用gcc编译上述client.c和server.c源文件生成client和server可执行程序(x86平台),编译过程如图5所示。使用arm-linux-gcc编译上述client.c和server.c源文件生成a_client和a_server可执行程序(ARM平台)。编译过程如图6所示.图5 编译x86 Socket通信程序过程截图
图6 编译ARM平台的可执行程序
PC机测试,测试结果如下图所示:
图7 执行服务器端程序
图8 执行客户端程序
图9 服务器端接收到客户端发来的消息截图
使用gcc-linux-gcc生成ARM平台下的可执行程序a_client和a_server,编译结果如图10所示。
图10 编译ARM平台可执行程序
4.2
全双工Socket通信程序设计
为了实现全双工通信,服务端进程和客户端进程均使用了两个线程,一个负责收,另一个负责发。
在NetCommunicator目录,并新建clientV2.c和serverV2.c源文件,如图11所示,编写完毕,编译通过生成clientV2和serverV2可执行程序。
图11 NetCommunicator工作目录
PC机测试,测试结果如下图所示:
图12 客户端进程
图13 服务器端进程
实验总结
相关文章:
村妇联就业培训材料01-20
大学语文课程开发01-20
情商开发与大学生创新能力研究01-20
大学生旅游客源市场开发论文01-20
词典中词语成语汇总01-20
辞职信格式简单(三篇)01-20
最新简单辞职信格式(模板14篇)01-20
成语词典大全及解释01-20