ARM与嵌入式linux的入门建议(六步曲)

2024-10-10

ARM与嵌入式linux的入门建议(六步曲)(通用3篇)

ARM与嵌入式linux的入门建议(六步曲) 篇1

基于ARM-Linux的嵌入式HTTPS服务器与实现

随着计算机技术和微电子技术的发展,嵌入式系统在工业控制、信息家电、通信设备、智能仪器等领域得到了越来越广泛的应用。在这些领域,网络化、信息化的要求也随着Internet的迅猛发展而逐渐突出,越来越多的嵌入式设备有接入网络实现远程控制的需求,其基本的方法是在嵌入式设备上实现HTTP服务器,通过万维网在客户端用浏览器对设备进行访问。同时,这种方法不可避免地带来互联网上的安全问题,而HTTPS(安全超文本传输协议)是由Netscape公司提出的以SSL(安全套接层)为基础的安全HTTP方法,因此构建嵌入式HTTPS服务器,将有效地为嵌入式设备的网络化提供安全保障。本文对HTTP传输协议和SSL安全协议以及基于ARM的嵌入式技术等关键技术进行了深入的研究。首先分析了HTTPS这个安全传输设施的实现方法,即在标准的TCP/IP参考模型中在HTTP标准协议层和下面的TCP/IP传输协议层之间额外附加一层SSL安全层,紧接着对基于请求/响应模式的HTTP协议的信息交换的基本过程和SSL握手协议的安全加密的详细过程进行了分析与研究。然后,设计了系统的整体架构,硬件采用了应用广泛的32位ARM920T处理器S3C2410,操作系统采用了开源的嵌入式Linux操作系统,应用层的实现以Linux系统调用和OpenSSL开源库为基础。其次,建立了HTTPS服务器的支撑环境,在宿主机上通过Vmware虚拟机技术建立了Linux操作系统并通过一系列的服务配置建立起交叉编译环境;在硬件平台上烧写了系统引导程序bootloader,并以此为基础进行了嵌入式Linux和根文件系统的配置、编译和移植。最后,在深入研究了相关理论后,设计了服务器的基本结构和功能模块,在利用Linux的系统调用和OpenSSL API的基础上,使用C语言实现了基于ARM-Linux的嵌入式HTTPS服务器。实验结果表明,该服务器实现了与客户端浏览器的HTTPS的交互过程,能正确解析浏览器发出的HTTP请求,并根据请求资源和请求方法的不同做出不同的响应,返回给浏览器静态资源或者CGI程序的处理结果。同主题文章

【关键词相关文档搜索】: 信号与信息处理;ARM;Linux;HTTP;SSL 【作者相关信息搜索】: 武汉理工大学;信号与信息处理;王虹;戴帅;

ARM与嵌入式linux的入门建议(六步曲) 篇2

Linux内核,是Linux操作系统的核心。它负责管理系统的进程、内存、设备驱动程序、文件和网络系统,决定着系统的性能和稳定性。

嵌入式linux内核指的是针对具体的嵌入式设备硬件平台,裁减掉一些不必要的功能后,针对该具体的硬件平台编译产生的一个Linux内核。嵌入式Linux通常都需要裁减,主要目的是节省系统资源,提高系统运行效率。同时嵌入式Linux作为一种嵌入式操作系统有其得天独厚的优势,主要表现在:

首先,Linux是开放源代码的,所有的内核源程序都可以在/usr/src/linux下找到,大部分应用软件也都是遵循GPL而设计,遍布全球的众多Linux爱好者又是Linux开发者的强大技术支持;

其次,Linux的内核小、效率高,内核的更新速度很快;

再次,Linux是免费的操作系统,在价格上极具竞争力。

2 Linux内核移植准备

所谓Linux移植就是把Linux操作系统针对具体的目标平台做必要改写之后,安装到该目标平台使其正确的运行起来。这个概念目前在嵌入式开发领域讲的比较多。其基本内容是:获取某一版本的Linux内核源码,根据我们的具体目标平台对这源码进行必要的改写(主要是修改体系结构相关部分),然后添加一些外设的驱动,打造一款适合于我们目标平台(可以是嵌入式便携设备也可以是其它体系结构的PC机)的新操作系统,对该系统进行针对我们目标平台的交叉编译,生成一个内核映象文件,最后通过一些手段把该映象文件烧写(安装)到我们目标平台中。而通常对Linux源码的改写工作难度较大,它要求你不仅对Linux内核结构要非常熟悉,还要求你对目标平台的硬件结构要非常熟悉。所以这部分工作一般由目标平台提供商来完成。我们所要做的就是从其网站上下载相关版本Linux内核的补丁(Patch),把它打到我们的Linux内核上,再进行交叉编译就可以。

其基本过程如下(以Linux2.6.24为例):

到ftp://ftp.arm.linux.org.uk/pub/linux/linux-2.6/上下载Linux2.6.24内核及其关于ARM平台的补丁(如:Patch-2.6.24.gz)。给Linux2.6.24打补丁:使用命令zcat../patch-2.6.24.gz|patch–p1(前面../表示补丁文件放在内核文件上一层目录),

然后准备交叉编译环境:交叉编译环境工具链一般包括binutils(含AS汇编器,LD链接器等),arm-gcc,glibc等。

接下来修改内核目录下的makefile文件,主要是以下几行:

注释掉ARCH:=$(shell uname–m|sed–e s/i.86/i386/-e s/sun4u/sparc64/-e s/arm.*/arm/-e s/sa110/arm/)这一行。

将ARCH:=改为ARCH:=arm

将CROSS_COMPILE:=改为CROSS_COMPILE:=交叉编译工具中arm-linux所在目录/arm-linux-(如:CROSS_COMPILE:=/usr/local/arm/2.95.3/bin/arm-linux-)此后就可以进行编译。

3 关于交叉编译环境

交叉编译环境的建立最重要的就是要有一个交叉编译器。所谓的交叉编译就是:利用运行在某机器上的编译器编译某个源程序生成在另一台机器上运行的目标代码的过程。这里我们主要用到的编译器是arm-linux-gcc,它是gcc的arm改版。无论编译器的功能有多么强大,但它的实质都是一样的,都是把某种以数字和符号为内容的高级编程语言转换成机器语言指令的集合。具体安装和配置工作我们一般不需要自己动手了,只要直接从网上下载相关工具包安装即可。

4 Linux内核裁减

Linux内核移植过程中最重要的一步就是内核裁减。由于目标板硬件平台的不同以及内核版本的不同,所以涉及的内容往往也有很大不同。下面我们以已改造好的ARM-linux,针对ARM2410平台来看看内核的裁减主要涉及的地方。

4.1 Linux内核裁减的配置菜单命令

Linux内核裁减的配置菜单命令有好几个版本,运行:

(1)make config:基于文本的最为传统的配置界面,进入命令行,可以一行一行的配置,这不好使用,并且很烦琐;

(2)make menuconfig:基于文本菜单的配置界面,是字符终端下常用的方式;

(3)make xconfig:基于图形窗口模式的配置界面,Xwindow下推荐使用。

这三个命令中,make xconfig的界面最为友好,如果机器可以使用Xwindow,那么就推荐你使用这个命令,如果不能使用Xwindow,那么就可以使用make menuconfig。界面虽然比上面一个差点,总比make config的要好多了。所有内核配置菜单都是通过Config.in经由不同脚本解释器产生.config,在内核配置完成后就就会在当前目录下产生一个.config的配置文件,当然我们也可以直接修改此文件来配置内核。

选择相应的配置时,有三种选择,它们分别代表的含义如下:

*-----将该功能编译进内核

空-----不将该功能编译进内核

M-----将该功能编译成可以在需要时动态插入到内核中的模块

4.2 Linux内核裁减的配置选项

在内核移植的过程中,最烦杂的事情就是配置内核选项了,但实际配置时大部分选项可以使用其缺省值,只有小部分需要根据用户不同的需要选择。选择的原则是将与内核其它部分关系较远且不经常使用的部分功能代码编译成为可加载模块,有利于减小内核的长度,减小内核消耗的内存,简化该功能相应的环境改变时对内核的影响;不需要的功能就不要选;与内核关心紧密而且经常使用的部分功能代码直接编译到内核中。

针对ARM2410平台要配置的内核选项主要有:

(1)配置MTD,要使用Cramfs和YAFFS文件系统,首先需要配置MTD;

(2)配置文件系统;

(3)配置系统类型,主要是CPU类型;

5 内核的编译

在完成内核的裁减之后,内核的编译就是一个非常简单的过程。你只要执行以下几条命令就行:

(1)make clean

这条命令是在正式编译你的内核之前先把环境给清理干净。有时你也可以用make realclean或make mrproper来彻底清除相关依赖,保证没有不正确的.o文件存在。

(2)make dep

这条命令是编译相关依赖文件。

(3)make z Image

这条命令就是最终的编译命令。有时你可以直接用make(2.6.X版本上用)或make bz Image(给PC机编译大内核时用)完成后,就会编译出一个压缩内核映像文件,压缩内核映像所在路径为:arch/arm/boot/z Image

(4)make install

这条命令可以把相关文件拷贝到默认的目录,当然在给嵌入式设备编译时这步可以不要,因为具体的内核安装还需要你手工进行。

(5)make modules

这条命令是编译在配置时选择为模块的,即选项前为[M]的。如果你的内核配置选项中有选择编译为模块的,就需要此命令。

(6)make modules_install

这条命令将make modules生成的模块文件复制到相应的目录。在给嵌入式设备编译时这步也可以不需要。

6 结束语

最后我们就可以将上面第三步产生的压缩内核映像文件烧写到嵌入式系统中去,最终完成嵌入式系统内核的移植。

摘要:本文主要介绍了嵌入式Linux内核以及在ARM平台下的编译与移植过程。

关键词:Linux内核,移植,编译

参考文献

[1]孙纪坤,张小全.嵌入式LINUX系统开发技术祥解—基于ARM.北京:人民邮电出版社2006.

[2]魏洪兴,胡亮,曲学楼.嵌入式系统设计与实例开发实验教材—基于ARM9微处理器与Linux操作系统.北京:清华大学出版社,2005.

嵌入式Linux学前建议 篇3

目前,Linux作为嵌入式系统的主力军,广泛应用于消费类电子、工业控制、军工电子、电信/网络/通讯、航空航天、汽车电子、医疗设备、仪器仪表等相关行业。随着嵌入式行业的迅猛发展,嵌入式Linux凭借其系统发展的成熟度、市场应用的高份额也受到更多工程师朋友的青睐,越来越多的企业和研发机构都转向嵌入式Linux的开发和研究,这使得嵌入式Linux在新兴的嵌入式操作系统领域内也获得了飞速发展和广泛应用。而对于那些希望尽快进入嵌入式行业从事产品研发的朋友们,选择嵌入式Linux方向作为切入点无疑是最好的途径之一。

近期,有许多面临毕业、找工作的大学生来到华清远见嵌入式培训中心咨询了解有关嵌入式Linux方向的学习安排。在与他们交流沟通的过程中,被问到最多的几个问题就是“如何做好嵌入式Linux学习前的准备?”,“学习嵌入式Linux需要补习哪些基础课程?”,“嵌入式Linux开发跟普通软件开发在学习方法上有什么不同?”,“项目实战环节多吗?”,“有专业人员带领吗?”,相信这些也是很多准备入行的初学者都会关心的问题,为了帮助大家做好嵌入式Linux的学前准备,我们对这些常见的问题逐一进行解答,提供给大家参考,希望能够有所帮助。

1、如何做好嵌入式Linux学习前的准备?

要成为一名合格的嵌入式Linux工程师,就需要系统的学习软、硬件相关领域内的知识,需要在最开始就掌握开发的规范和原则,养成良好的工作习惯。为了确保学习的效果,华清远见安排的整个课程体系是非常集中、高效的,这就要求准备参加嵌入式Linux就业课程学习的同学要调整好自己的时间,务必要确保在4个多月的学习时间内能够高度集中精力。在整个集中学习过程中,既要保证课上认真听讲、实战演练的时间,也要保证课下继续实战演练、查阅资料的时间。只有经过这种高强度的、实战为主的训练,才能够在比较短的时间内掌握规范的嵌入式开发工作流程,让自己符合嵌入式企业对应岗位的需求。

除了在学习时间上要做好充分的准备之外,在学习的心态和方法的调整上也要做好准备。许多朋友只了解嵌入式Linux方向美好的发展前景,只关注高收入、就业机会多等热点,却忽略了学习过程本身。为了能够让集中培训的效果发挥到最佳,建议大家在学习开始前更多地去了解嵌入式产品研发的特点、所需要掌握的技术规范和工作要点,关注需具备基础的补充和学习,从而为后续的强化学习过程做好心态上的准备,毕竟态度往往决定了最后做事的结果。

2、学习嵌入式Linux需要补习哪些基础课程?

嵌入式Linux工程师的学习需要具备一定的C语言基础,因此面对许多朋友只是在大一或者大二学习过C(还不一定认真学了,呵呵!),之后基本就不再用过的情况,建议大家在来华清远见学习之前先复习一下C语言基础这块。要提醒大家的是,复习时不能只关注基本语法,对于常用的数据存储及处理方式,例如:数组、结构体等也要关注,有条件的话一定在机器上亲自敲敲代码、分析理解一下具体案例代码编写的思路,让自己慢慢进入一名嵌入式开发人员的状态。

此外,在时间允许的情况下,建议大家看一下有关计算机操作系统工作原理以及计算机组成原理等方面的专业书籍。对于进程、线程、任务调度、总线、I/O等基本概念及工作原理有一个初步的了解和掌握,这部分知识的准备对于后续更好地学习嵌入式Linux系统开发将会起到很好的帮助作用。

3、嵌入式Linux开发跟普通软件开发在学习方法上有什么不同?

要成为一名成功的嵌入式软件开发人员,程序的设计能力是首要技能,这一点与普通的软件开发人员的要求是一样的。但是作为“软硬兼施”的嵌入式开发,则要求大家不仅要了解较底层软件的工作过程和工作原理(例如操作系统级、驱动程序级软件),在软件开发的专业水平上也需要充分考虑软件设计的时间和空间效率,这样才能设计出高性能嵌入式程序。因此面对相对复杂的嵌入式系统的研发过程,在学习的过程中需要更多关注完整的知识体系结构的建立。特别是对于原理性知识的掌握程度则相对普通的软件开发人员提出了更高的要求。因此在学习的过程中,“要知其然,更要知其所以然”。

同时由于一直以来嵌入式行业中专业人才的紧缺,许多经验性的东西都有待交流和分享,因此充分关注与每一位讲师的实际经验交流就显得至关重要。华清远见的每一位专业讲师都拥有多年的嵌入式Linux开发经验,他们在各自擅长的领域内都有很多值得分享和交流的体会,因此通过他们课堂的讲解、示范,通过充分的交流沟通,无疑可以大大缩短在行业中摸索的时间,记住不要以为原理性的东西通过看书就能解决,借助这些行业高手的透彻分析,才能让你的学习过程更有价值、更加实用。

4、华清远见的课程体系中项目实战环节多吗?有专业人员带领吗?

由于大多数人对嵌入式开发过程的陌生,因此实战环节的训练就显得格外重要。在嵌入式Linux课程学习的每个阶段,都需要在专业人员的引导下,通过全真的案例设计与实现来巩固所学的知识点。同时我们要求大家尽可能在课堂上多出问题、多暴露问题,只有这样,才能通过专业人员的及时帮助和指导,最高效地掌握解决实际问题的方式和方法,积累足够的技术经验和项目经验。

同时也只有通过最终综合项目实战环节的密集训练,才能够逐步建立起嵌入式产品开发的工程化概念。在这个过程中,除了可以达到所学知识综合、实际应用的目的,还可以让大家更真实地体验到如何编写工程化程序?如何在设计中与团队协作开发?如何为后续有效地升级与维护做好准备?如何编写规范的文档等?而这些体验都将为后续真正从事企业内工程化的软件设计做好充分的准备。

上一篇:中华人民共和国航道法试题下一篇:描写穿旗袍的好句子