uClinux平台开发入门
- 格式:pdf
- 大小:252.63 KB
- 文档页数:30
深入
Why
Why
嵌入式
Why ? 全球每
Why ?(cont.)
Embedded Linux/Microcontroller Project What is ?
uCLinux
已成功使用
内存管理
uClinux同标准Linux的最大区别就在于内存管理
标准
uCLinux
标准Linux系统系统数据段,代码段,堆和栈在虚存层面是连续的。
堆向上增长,栈向下增长,在堆底和栈顶之间有256MB的内存可供分配。
uClinux 采用了实内存模式,各个内存段在物理内存层面是连续的,栈段在同数据段在一起,堆有系统内存管理,所有进程共享,由于内存连续和保护的要求,栈段,数据段,代码段都是在程序加载是分配。
这种内存空间布局阻碍了动态连接库的运用。
栈段的大小固定(在生成应用时可以指定栈段大小),开发人员在开发时不得不使用一些方法估计判断栈段的大小,使其即能满足程序的需要,又不浪费内存。
标准
uClinux
的开发利
入研究应用LINUX技术的理想的软硬件平台!可用于掌上
参考文档。
uClinux 的编译和运行说明:这个编译过程是基于uClinux-dist-51EDA.tar.bz2这个文件可以在51EDA论坛的客服中心找到。
1.创建开发环境首先需要编译的环境。
我们最好使用Linux作为开发平台,因为Linux以及uClinux的开发者们基本都是在Linux下完成的开发。
为了能够编译uClinux,我们需要下载uClinux的编译器。
这个文件可以在uClinux的官方网站得到,也可以在论坛的客服中心下载。
官方的下载地址是:/pub/uClinux/arm-elf-tools/arm-elf-tools-20030314.sh但是这个网站的速度比较慢,因此您也可以在论坛的客服中心下载。
是一样的文件。
在这里需要注意的是,虽然同为gcc和binutils工具,但是必须使用uClinux发布的版本,因为这个gcc和binutils都是为了能够编译FLAT格式的文件而订制的,另外也加入了ARM对PIC(Position Independent Code,位置无关代码)的支持。
PIC的支持是用来编译动态库或者XIP模式的可执行文件。
关于XIP的介绍有一篇文章:/article.pl?sid=02/08/28/0434210大家可以了解一下XIP。
但是由于XIP并不是很稳定,所以在我们发布的uClinux版本中并没有使用这个技术。
然后,将下载得到的文件,是一个sh文件。
这是一个自解压的文件(就好比Windows 下面的自解压zip或者rar一样)。
为了能够运行,我们需要:./arm-elf-tools-20030314.sh这样如果不能运行的话,那应该使用下面的命令:chmod 755 arm-elf-tools-20030314.sh得到了编译环境,就可以编译源代码了。
当然,首先要把代码解压缩到你的目录下面:tar xjvf uClinux-dist-51EDA.tar.bz2它会把全部的文件解压缩到uClinux-dist的目录下。
嵌入式uClinux的内核结构和开发环境时间:2009-05-12 23:27来源:Linux Website 作者:admin 点击: 900次1 引言嵌入式操作系统是嵌入式系统的灵魂,而且在同一个硬件平台上可以嵌入不同的嵌入式操作系统。
比如ARM7TDMI内核,可以嵌入Nucleus、VxWorks、uClinux等操作系统。
在此主要对uClinux的1 引言嵌入式操作系统是嵌入式系统的灵魂,而且在同一个硬件平台上可以嵌入不同的嵌入式操作系统。
比如ARM7TDMI内核,可以嵌入Nucleus、VxWorks、uClinux 等操作系统。
在此主要对uClinux的进行介绍,嵌入式uClinux操作系统主要有三个基本部分组成:引导程序、uClinux内核(由内存管理、进程管理和中断处理等构成)和文件系统。
uClinux可以通过定制使内核小型化,还可以加上GUI(图形用户界面)和定制应用程序,并将其放在ROM、RAM、FLASH或Disk On Chip中启动。
由于嵌入式uClinux操作系统的内核定制高度灵活性,开发者可以很容易地对其进行按需配置,来满足实际应用需要。
又由于uClinux是源代码公开,因此开发人员只有了解内核原理就可以自己开发部分软件,例如增加各类驱动程序。
下面将详细分析嵌入式操作系统uClinux。
2 嵌入式uCinux内核结构uClinux内核结构如图1所示:图1代表了内核的功能结构,与Linux基本相同,不同的只是对内存管理和进程管理进行改写,以满足无MMU处理器的要求。
uClinux是Linux 操作系统的一种,是由Linux2.0内核发展来的,是专为没有MMU的微处理器(如ARM7TDMI、Coldfire 等)设计的嵌入式Linux操作系统。
另外,由于大多数内核源代码都被重写,uClinux的内核要比原Linux 2.0内核小的多, 但保留了Linux 操作系统的主要优点:稳定性,优异的网络能力以及优秀的文件系统支持。
第7章嵌入式uClinux及其应用开发本章从构建一个针对S3C4510B硬件平台的嵌入式uClinux操作系统和在其上进行应用程序的开发入手,逐步讲述如何在Linux环境下编写用户应用程序的方法和步骤,并为熟悉Windows操作系统的用户介绍在这种平台之上,使用何种工具编写和编译自己的应用。
通过本章的学习,读者可以对嵌入式uClinux有一定的了解,并且掌握在Linux和Windows 下嵌入式系统应用开发的基本方法。
本章主要内容有:-嵌入式uClinux系统概况-开发工具GNU的使用-建立uClinux开发环境-在uClinux下开发应用程序7.1 嵌入式uClinux系统概况在PC机上开发应用程序的用户都会有这样的感觉,PC机有完善的操作系统并提供应用程序接口(API),开发好的应用程序可以直接在操作系统上运行。
虽然嵌入式系统的应用程序完全可以在裸板上运行,但为了使系统具有任务管理、定时器管理、存储器管理、资源管理、事件管理、系统管理、消息管理、队列管理和中断处理的能力,提供多任务处理,更好的分配系统资源的功能,用户就需要针对自己的硬件平台和实际应用选择适当的嵌入式操作系统(Embedded Operating System,以下简称EOS)。
本节将结合本书所谈到的硬件平台S3C4510B,介绍一种针对不带MMU的ARM微处理器的嵌入式操作系统uClinux。
uClinux是一个完全符合GNU/GPL公约的操作系统,完全开放代码,现在由Lineo公司支持维护。
uClinux的发音是“you-see-linux”,它的名字来自于希腊字母“mu”和英文大写字母“C”的结合。
“mu”代表“微小”之意,字母“C”代表“控制器”,所以从字面上就可以看出它的含义,即“微控制领域中的Linux系统”。
为了降低硬件成本及运行功耗,有一类CPU在设计中取消了内存管理单元(Memory Management Unit,以下简称MMU)功能模块。
嵌入式OS-uClinux软件开发环境的建立及应用程序开发模式How-To Porting uClinux to ColdFire 5272 Microprocessor And Developing User’s Applications张东卫 毛玉良 刘伟平 潘淳Zhang,Dongwei Mao,Yuliang Liu,Weiping Pan,Chun摘要:本文介绍了在mcf5272嵌入式硬件开发板基础上如何移植uClinux操作系统以及开发用户应用程序的基本模式。
关键词:嵌入式系统;操作系统内核;uClinux ;mcf5272;dBug中图分类号 : TP316 . 81文献标识码 : BAbstract: This article introduces an approach of porting uClinux to ColdFire 5272 microprocessor and the basic mode of developing user’s applicationsKeywords: Embedded System; Kernel of OS; uClinux; mcf5272;dBug0 引言近年来,随着电子技术的不断进步,嵌入式系统开发已成为热点。
作为嵌入式操作系统之一的uClinux以其内核小,效率高,源代码开放,内含完整的TCP/IP网络协议等优点,正日益被人们看好。
uClinux很适合在32位嵌入式系统中使用,它的代码公开、免费两大特性更是深受广大嵌入式开发爱好者的喜爱。
1 嵌入式操作系统uClinux简介uClinux是Linux的一个嵌入式版本,它是源代码开放的嵌入是操作系统,其内核的二进制映像文件可以做到小于512K。
目前越来越多的应用于嵌入式设备。
uClinux针对无MMU(Memory Management Unit,内存管理单元)的处理器设计,支持多任务,具有完备的TCP/IP协议栈并支持多种网络协议。
LinUX LinUX控制寄存器,事必躬亲,从零开始实现想要的功能。
而在嵌入式LinUX的世界里,我们首先要抛弃这个思想,应把它作为最后没办法的办法。
就像我们想要在windows系统中编写一个程序,首先想到的不是操作CPU芯片的寄存器,而是学习WindOWSAPl一样。
我们在嵌入式IinUX编程时,首先想到的应该是使用现成的驱动或软件或LinUXAPI。
没有的话看看能不能修改一下现成的资源为己所用。
还是不行的话才考虑自己从头开始写。
嵌入式Linux大厦是由很多层组成的,当我们想找一个人时,首先要明确他在那一层楼。
同样的,我们遇到问题时,首先要知道是哪个方面的问题,然后才有可能知道到哪里寻找答案。
下面我们把这座大厦进行一下拆解。
我们平时使用Linux系统的话,最常用的工具就是SheH(或者用windows中常见的说法:命令行),初学者接触Linux的第一个东西往往也是Shello也许你已经知道,把shell命令组合起来写成一个文件,亦即Shen编程,也是一门大学问,它能做的事很多很强大,但仅限于对LinUX 系统的操作。
我们一定不会用Shen命令去编写一个显示屏程序,或者一个GPS导航程序。
而且作为嵌入式LinUX开发来说,Shell不可能作为最终产品工作的平台,因为我们不能要求用户在屏幕中输入代码来实现功能。
因此我认为对嵌入式开发来说,shell命令无需深究,掌握基本操作就够了。
shell基本操作主要包括:获取命令帮助,到达指定目录,查看目录内容,权限修改,文件的复制粘贴等基本操作,文件搜索,文件内容查看和编辑,系统关机重启……(这些只是最基本的,后面再慢慢学别的命令,比如学习进程编程时,再学习进程相关的命令;学习C语言编程时,再学各种编译和调试命令也不迟)学习嵌入式Linux,我们的最终目的是制作一套嵌入式系统来实现功能。
往往需要用C/C++或PylhOn等其他语言来编写程序,但是编程之前我们要先明确一些基本概念。
一、嵌入系操作系统uClinux的简述 (2)二、开发模式和交叉编译环境的建立 (4)1、主机和目标板的开发模式 (4)2、交叉编译环境 (4)三、uClinux的编译步骤 (5)1、下载uclinux (5)2、解压缩 (5)3、编译uClinux内核 (6)4、使用uClinux (11)四、用户应用程序的开发 (15)1、在uclinux中添加用户的应用程序 (15)2、在make menuconfig中加入用户应用程序的选项 (18)五、uclinux环境分析 (20)1、系统目录结构 (20)z目标板上的uclinux目录结构 (20)z主机上的uclinux-dist目录结构 (21)2、如何实现启动uclinux后自动运行某一程序(rc文件分析) (28)附录 (29)附录A vi使用方法简介 (29)附录B uClinux中断号 (32)一、嵌入系操作系统uClinux的简述操作系统是管理计算机上的资源,为用户使用计算机及其外部设备提供最基本接口的程序。
自从计算机诞生以来,随着计算机、网络技术的快速发展,操作系统一直处于不断发展和改进之中,人们将越来越多的功能加入到操作系统中,导致操作系统越来越大。
但是,随着应用领域的扩大,为了适应不同的应用场合,考虑到系统的灵活性、可伸缩性以及可裁减性,一种以应用为中心、以计算机技术为基础、软件硬件可裁剪、适应应用系统对功能、可靠性、成本、体积、功耗要求严格的专用计算机系统---嵌入式操作系统便随之延生。
uClinux是嵌入式Linux的一个分支,所以我们首先来了解一下嵌入式Linux 的特性。
嵌入式Linux是按照上面所说的嵌入式操作系统的要求设计的一种小型操作系统。
由一个kernel(内核)及一些根据需要进行定制的系统模块组成。
其Kernel很小,一般只有几百K左右,即使加上其它必要的模块和应用程序,所需的存储空间也很小,有些还有具有实时性,如Rtlinux。