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。
嵌入式uClinux相关NFS开发嵌入式linux中文站部分站友近日询问关于在uClinux上搭建NFS的方法,先摘抄相关文档如下,希望大家能一起帮忙看看,是不是有用。
在目标机上可以运行uClinux了,接着就需要开发完成特定任务的应用程序了。
由于嵌入式uClinux的特殊开发环境(主机——目标机),其应用程序的开发模式也有多种。
一种是在主机上编写程序,然后编译、连接、调试,成功后将程序和内核一同编译并下载到目标板。
这种模式中不利于开发的问题有:主机和目标机的运行环境(如指令集,函数库等)不同。
另一种是通过网线或串口线将目标机和主机连起来,直接在目标机上开发调试。
这种模式使用NFS将主机的特定目录mount到目标机上,对主机的操作就是对目标机的操作。
采用 NFS 模式可以方便应用程序的开发,减少映像文件的下载次数和对flash的烧写次数。
这对于缩短开发周期,提高开发效率,加快产品的上市时间相当重要。
1 NFS的简要介绍NFS是Network File System(网络文件系统)的缩写,最初是由Sun公司开发出来的分布式文件系统。
提供NFS服务的一方是NFS Server (远程主机),使用NFS服务的一方是NFS Client(客户机)。
利用它,客户机可以将远程主机提供的共享目录挂载到自己的目录上,在本地的操作如同对远程主机的操作。
NFS有自己的协议与端口号(2049),它本身并没有提供传输资料的协议,但是NFS却能通过网络进行资料的共享。
这是因为在资料传送或者其它相关数据交互的时候,NFS用远程过程调用(Remote Procedure Call, RPC)的传输协议。
RPC服务portmap负责管理服务与相关端口映射的工作。
因此,使用NFS服务必须先激活RPC服务portmap,在主机和目标机上都要实现RPC服务,才可以使用NFS。
使用NFS Server还需要激活至少两个系统守护进程:rpc.nfsd用于管理Client使用主机共享目录的权限,包含对Client的IP的判别; rpc.mountd用于管理NFS的文件系统。
uCLinux开发介绍严永红Linux是当前一种非常受欢迎的操作系统,它与UNIX系统兼容,并开放源代码。
它包含所有现代操作系统所具有的一切特性,包括多任务,虚拟内存,代码共享,按需载入,内存管理,以及TCP/IP网络。
并且,它遵循POSIX标准,只要是遵循POSIX API的应用程序很容易被移植。
目前,随着嵌入式系统的蓬勃发展。
Linux也已对嵌入式系统的开发产生具大影响。
大多数流行的CPU都被移植上去,ARM, PowerPC , MIPS, 68K, SPARC, Alpha, SH 等等. 这些CPU都含有一种叫做内存管理单元(MMU)的硬件,来支持标准Linux所需要的虚拟内存。
但在嵌入式世界里,还有很多CPU是没有MMU的,象ARM7、68328等等。
uClinux 正是为了解决这种没有MMU的CPU而产生的。
在uCLinux这个英文单词中,u表示Micro,小的意思,C表示Control,控制的意思,连起来就是Micro-Control-Linux, ―运行在微控制器上的Linux.‖针对这种没有MMU的CPU架构,uCLinux采用了一种平板式(Flat)的内存模型来去除对MMU的依赖, 并且改变了用户程序的加载方式,开发了运用于uCLinux的C函数库--uCLibc. 由于这些变化,一般的Linux开发工具(例如GDB)在开发uCLinux时会碰到一些困难,包括内核的移植,驱动程序及应用程序的调试。
针对这样状况。
Hitool System公司开发了Hitool for uClinux开发套件,来帮助用户开发基于uClinux的系统。
Hitool for uClinux与其它的Linux开发工具相比,有几个优点:A.整个开发过程只在Windows环境下完成,包括内核的配臵、编译,应用程序的编译,文件系统的生成,内核的调试,用户程序的调试。
B.可以采用多种调试方式,既可以采用JTAG方式来调试,也可通过网口用Hitool自己的监控程序(MDB)来调试。
uCLinux嵌入式系统开发环境建立
1.Linux 是一种很受欢迎的操作系统
uClinux 这个英文单词u 中的表示小Micro. 小的意思,C 表示Control,控制的意思.所以uClinux 就是Micro-control-Linux,字面上的理解就是针对微控制领域而设计的Linux 系统.
uClinux 以其优异的性能、免费开放的代码等优点,博得众多嵌入式开
发者的青睐,和过去基于简单RTOS 甚至没有使用任何操作系统的嵌入式程序设计相比,基于Linux 这样的成熟的,高效的、健壮的、可靠的、模块化的、
易于配置的操作系统来开发自己的应用程序,无疑能进一提高效率,并具有很
好的可移植性。
基于UCLINUX 的嵌入式系统开发涉及到三个方面:开发环境
的建立,配置UCLINUX 内核和bootloader 以及应用程序的设计,本文将从这
几个方面来阐述的基于UCLINUX 的嵌入式系统的设计。
2.开发环境的建立
开发环境的建立也就是工具链,设置工具链在主机机器上创建一个用于
编译将在目标上运行的内核和应用程序的构建环境?这是因为目标硬件可能没
有与主机兼容的二进制执行级别。
包括Gcc:编译器,可以做成交驻编译的形式,即在宿主机上开发编译目标上可运行的二进制文件。
Binutils:一些畏助工具,
包括objdump(可以反编译二进制文件),as(汇编编译器),id(连接器)等等。
Gdb:调试器,可使用多种交叉方式,gdb-bdm(背景调试工具), gdbserver(使用以太网络调试)。
Glibc-所有用户应用程序都将链接到的C 库。
避免使用任何C 库函数的内核和其它应用程序可以没有该库的情况下进行编译。
从入门到精通Linux图形化界面开发进阶指南Linux作为一种强大的操作系统,一直以来都备受开发者的青睐。
它的图形化界面开发也逐渐成为了热门话题。
本文将为大家提供一个Linux图形化界面开发的进阶指南,帮助读者从入门到精通。
一、安装必要的工具要进行Linux图形界面开发,首先需要安装一些必要的工具。
最常用的开发工具是GTK(GIMP Toolkit)和Qt。
你可以根据自己的需求选择其中一个或者两个一起使用。
安装过程比较简单,只需按照相关文档进行步骤即可。
二、了解图形界面的基础知识在进入开发阶段之前,了解图形界面的基础知识是非常重要的。
掌握X Window System等基本概念,理解窗口、按钮、菜单等组件的原理,以及常见的布局方式,对于图形化界面开发至关重要。
三、学习编程语言图形化界面开发离不开编程语言的支持。
在Linux平台上,C和C++是最常用的编程语言,因此学习其中之一是必要的。
同时,Python也在Linux界面开发中得到广泛应用。
选择一门适合自己的编程语言,并深入学习。
四、掌握界面设计原则好的界面设计是用户体验的关键。
在进行Linux图形化界面开发时,掌握一些界面设计原则十分重要。
比如,界面应简洁、直观,颜色搭配要合理,按钮布局要合适等。
同时,了解一些UI设计工具,如GIMP和Inkscape,可以帮助你更好地进行界面设计。
五、学习图形界面库的使用要进行Linux图形界面开发,必须掌握相关的图形界面库。
如前所述,GTK和Qt是最常用的库。
学习这些库的使用方式、API接口以及常见功能的实现方法,对于开发图形化界面至关重要。
可以通过阅读相关文档和参考案例来加深理解。
六、进行实践项目理论知识固然重要,但只有通过实践才能真正提升技能。
选择一个合适的项目来进行实践,不仅可以巩固之前所学,还能够发现问题并解决。
可以根据自己的兴趣和需求,选择一个实际有用的项目,如音乐播放器、影像编辑工具等。
通过实践项目,不断提升自己的技能和经验。