uC-OS和uClinux的比较

uC-OS和uClinux的比较
uC-OS和uClinux的比较

uC/OS和uClinux的比较2008年02月29日 21:19 uC/OS和uClinux操作系统是两种性能优良、源码公开且被广泛应用的免费嵌入式操作系统,可以作为研究实时操作系统和非实时操作系统的典范。本文通过对uC/OS和uClinux的对比,分析和总结嵌入式操作系统应用中的若干重要问题,归纳嵌入式系统开发中操作系统的选型依据。

1 两种开源嵌入式操作系统介绍

uC/OS和uClinux操作系统,是当前得到广泛应用的两种免费且公开源码的嵌入式操作系统。uC/OS适合小型控制系统,具有执行效率高、占用空间小、实时性能优良和可扩展性强等特点,最小内核可编译至2KB。uClinux则是继承标准Linux的优良特性,针对嵌入式处理器的特点设计的一种操作系统,具有内嵌网络协议、支持多种文件系统,开发者可利用标准Linux先验知识等优势。其编译后目标文件可控制在几百KB量级。

uC/OS是一种免费公开源代码、结构小巧、具有可剥夺实时内核的实时操作系统。其内核提供任务调度与管理、时间管理、任务间同步与通信、内存管理和中断服务等功能。

uClinux是一种优秀的嵌入式Linux版本。uClinux是Micro-Conrol-Linux的缩写。同标准Linux相比,它集成了标准Linux操作系统的稳定性、强大网络功能和出色的文件系统等主要优点。但是由于没有MMU(内存管理单元),其多任务的实现需要一定技巧。

2 两种嵌入式操作系统主要性能比较

嵌入式操作系统是嵌入式系统软硬件资源的控制中心,它以尽量合理的有效方法组织多个用户共享嵌入式系统的各种资源。其中用户指的是系统程序之上的所有软件。所谓合理有效的方法,指的就是操作系统如何协调并充分利用硬件资源来实现多任务。复杂的操作系统都支持文件系统,方便组织文件并易于对其规范化操作。

嵌入式操作系统还有一个特点是,针对不同的平台,系统不是直接可用的,一般需要经过针对专门平台的移植操作系统才能正常工作。

进程调度、文件系统支持和系统移植是在嵌入式操作系统实际应用中最常见的问题。下文就从这几个角度入手对uC/OS和uClinux进行分析比较。

2.1 进程调度

任务调度主要是协调任务对计算机系统资源(如内存、I/O设备、CPU)的争夺使用。进程调度又称为CPU调度,其根本任务是按照某种原则为处于就绪状态的进程分配CPU。由于嵌入式系统中内存和I/O设备一般都和CPU同时归属于某进程,所以任务调度和进程调度概念相近,很多场合不加区分。

进程调度可分为“剥夺型调度”和“非剥夺型调度”两种基本方

式。所谓“非剥夺型调度”是指:一旦某个进程被调度执行,则该进程一直执行下去直至该进程结束,或由于某种原因自行放弃CPU进入等待状态,才将CPU重新分配给其它进程。所谓“剥夺型调度”是指:一旦就绪状态中出现优先权更高的进程,或者运行的进程已用满了规定的时间片时,便立即剥夺当前进程的运行(将其放回就绪状态),把CPU分配给其它进程。 作为实时操作系统,uC/OS采用的是可剥夺型实时多任务内核。可剥夺型的实时内核在任何时候都运行就绪了的最高优先级的任务。uC/OS 中最多可以支持64个任务,分别对应优先级0~63,其中0为最高优先级。调度工作的内容可以分为两部分:最高优先级任务的寻找和任务切换。

其最高优先级任务的寻找是通过建立就绪任务表来实现的。uC/OS 中的每一个任务都有独立的堆栈空间,并有一个称为任务控制块TCB(Task Control Block)的数据结构,其中第一个成员变量就是保存的任务堆栈指针。任务调度模块首先用变量OSTCBHighRdy记录当前最高级就绪任务的TCB地址,然后调用OS_TASK_SW()函数来进行任务切换。

uClinux的进程调度沿用了Linux的传统。系统每隔一定时间挂起进程,同时产生快速和周期性的时钟计时中断,并通过调度函数(定时器处理函数)决定进程什么时候拥有它的时间片,然后进行相关进程切换。这是通过父进程调用fork函数生成子进程来实现的。

uClinux系统fork调用完成后,要么子进程代替父进程执行(此时父进程已经休眠),直到子进程调用exit退出;要么调用exec执行一个新的进程,这时产生可执行文件的加载,即使这个进程只是父进程的拷贝,这个过程也不可避免。当子进程执行exit或exec后,子进程使用wakeup把父进程唤醒,使父进程继续往下执行。

uClinux由于没有MMU管理存储器,其对内存的访问是直接的,所有程序中访问的地址都是实际的物理地址。操作系统对内存空间没有保护,各个进程实际上共享一个运行空间。这就需要实现多进程时进行数据保护,也导致了用户程序使用的空间可能占用到系统内核空间。这些问题在编程时都需要多加注意,否则容易导致系统崩溃。

由上述分析可以得知,uC/OS内核是针对实时系统的要求设计实现的,相对简单,可以满足较高的实时性要求;而uClinux则在结构上继承了标准Linux的多任务实现方式,仅针对嵌入式处理器特点进行改良。其要实现实时性效果则需要使系统在实时内核的控制下运行。RT-Linux就是可以实现这一功能的一种实时内核。

2.2 文件系统

所谓文件系统是指负责存取和管理文件信息的机构,也可以说是负责文件的建立、撤销、组织、读写、修改、复制及对文件管理所需要的资源(如目录表、存储介质等)实施管理的软件部分。

uC/OS是面向中小型嵌入式系统的。如果包含全部功能(信号量、消息邮箱、消息队列及相关函数),编译后的uC/OS内核仅有6~10KB,所以系

统本身并没有对文件系统的支持。但是uC/OS具有良好的扩展性能,如果需要的话也可自行加入文件系统的内容。

uClinux则是继承了Linux完善的文件系统性能。其采用的是romfs文件系统。这种文件系统相对于一般的ext2文件系统要求更少的空间。空间的节约来自于两个方面:首先,内核支持romfs文件系统比支持ext2文件系统需要更少的代码;其次,romfs文件系统相对简单,在建立文件系统超级块(superblock)需要更少的存储空间。Romfs文件系统不支持动态擦写保存,对于系统需要动态保存的数据采用虚拟ram盘的方法进行处理(ram盘将采用ext2文件系统)。

uClinux还继承了Linux网络操作系统的优势,可以很方便地支持网络文件系统且内嵌TCP/IP协议。这为uClinux开发网络接入设备提供了便利。

由两种操作系统对文件系统的支持可知:在复杂的需要较多文件处理的嵌入式系统中,uClinux是一个不错的选择;而uC/OS则主要适合一些控制系统。

2.3 操作系统的移植

嵌入式操作系统移植的目的是指使操作系统能在某个微处理器或微控制器上运行。uC/OS和uClinux都是源码公开的操作系统,且其结构化设计便于把与处理器相关的部分分离出来,所以被移植到新的处理器上是可能的。 以下对两种系统的移植分别予以说明。

(1) uC/OS的移植

要移植uC/OS,目标处理器必须满足以下要求:

◇ 处理器的C编译器能产生可重入代码,且用C语言就可以打开和关闭中断;

◇ 处理器支持中断,并能产生定时中断;

◇ 处理器支持足够的RAM(几KB),作为多任务环境下的任务堆栈;

◇ 处理器有将堆栈指针和其它CPU寄存器读出和存储到堆栈或内存中的指令。

在理解了处理器和C编译器的技术细节后,uC/OS的移植只需要修改与处理器相关的代码就可以了。具体有如下内容:

◇ OS_CPU.H中需要设置一个常量来标识堆栈增长方向;

◇ OS_CPU.H中需要声明几个用于开关中断和任务切换的宏;

◇ OS_CPU.H中需要针对具体处理器的字长重新定义一系列数据类型; ◇ OS_CPU_A.ASM需要改写4个汇编语言的函数;

◇ OS_CPU_C.C需要用C语言编写6个简单函数;

◇ 修改主头文件INCLUDE.H,将上面的三个文件和其它的头文件加入。

(2) uClinux的移植

其实,uClinux是Linux针对嵌入式系统的一种改良,其结构比较复杂;相对uC/OS,uClinux的移植也复杂得多。一般而言,要移植uClinux,目标处理器除了应满足上述uC/OS应满足的条件外,还需要具有足够容量(几百KB 以上)外部ROM和RAM。

uClinux的移植大致可以分为3个层次:

◆ 结构层次的移植。如果待移植处理器的结构不同于任何已经支持的处理器结构,则需要修改linux/arch目录下相关处理器结构的文件。虽然uClinux内核代码的大部分是独立于处理器和其体系结构的,但是其最低级的代码也是特定于各个系统的。这主要表现在它们的中断处理上下文、内存映射的维护、任务上下文和初始化过程都是独特的。这些例行程序位于linux/arch/目录下。由于Linux所支持体系结构的种类繁多,所以对一个新型的体系,其低级例程可以模仿与其相似的体系例程编写。

◆ 平台层次的移植。如果待移植处理器是某种uClinux已支持体系的处理器,则需要在相关体系结构目录下建立相应目录并编写相应代码。如MC68EZ328就是基于无MMU的m68k内核的。此时的移植需要创建linux/ arch/m68knommu/platform/ MC68EZ328目录,并在其下编写跟踪程序(实现用户程序到内核函数的接口等功能)、中断控制调度程序和向量初始化程序等。

◆ 板级移植。如果所用处理器已被uClinux支持,就只需要板级移植了。板级移植需要在linux/arch/?platform/中建立一个相应板的目录,再在其中建立相应的启动代码crt0_rom.s或crt0_ram.s和链接描述文档rom.ld或ram.ld 就可以了。板级移植还包括驱动程序的编写和环境变量设置等内容。

结语

通过对uC/OS和uClinux的比较可以看出,这两种操作系统在应用方面各有优劣。uC/OS占用空间少、执行效率高、实时性能优良,且针对新处理器的移植相对简单。uClinux则占用空间相对较大,实时性能一般,针对新处理器的移植相对复杂。但是,uCLinux具有对多种文件系统的支持能力、内嵌了TCP/IP协议,可以借鉴Linux丰富的资源,对一些复杂的应用,uClinux 具有相当优势。例如,CISCO公司的 2500/3000/4000 路由器就是基于uClinux操作系统开发的。总之,操作系统的选择是由嵌入式系统的需求决定的。简单地说就是,小型控制系统可充分利用uC/OS小巧且实时性强的优势;如果开发PDA和互联网连接终端等较为复杂的系统,则uClinux是不错的选择。

uclinux移植教程

学习开发套件V3.0中嵌入Uclinux的步骤和方法 在学习开发套件V3.0中嵌入Uclinux的步骤和方法,硬件系统为EP1C6,2Mflash,8Msdram. 开发环境:SOPC学习开发套件V3.0,型号EP1C6。QII5.1+SP2,NiosII IDE5.1+SP1。 一 .安装nios2linux开发包nios2linux-1.4 二 .建立硬件系统 1. QII中建一工程linux_nios,并添加NIOSII CPU,QII工程和平常的建立并没有什么区别,只要得加上flash和sdram,因为这里只是对linux的简单调试,所以SOPC中只添加LED和UART等几个简单外设。如下图: 注意为防止不必要的麻烦,这里尽量使用默认名字。 如果想用USB连接电脑,在QII中把串口连接到USB线的IO管脚上即可。 我们的工程中是两个口都接了,使用串口或者USB口都行。 三.建立软件环境 打开NIOSII IDE 3.1 建立linux内核 file-> new-> project 后如下图:

注意:在安装Microtronix_uclinux_nios2开发包后在IDE中分增加出如上图的Microtronix NiosII选项如果没有可以按下面方法解决: 1)、打开cmd,在 开始->运行 那里输入cmd 2)、cd到你的NiosII的工作目录下面,我的NiosII安装在D盘,如下: 3)、在这里输入命令nios2-ide.exe –clean,进入NiosII IDE的clean模式,选择workspace:

这是在New->Other那里你就可以看到那个linux的目录项了。关了IDE窗口和cmd窗口,这样就可以正常看到Microtronix_linux了。 3.2 输入内核名字 按next: finish完成 四. 构建内核: 4.1 右键内核名,在弹出菜单中选择Configure Kernel如下:

UCOS和uClinux的比较

UC/OS和uClinux的比较 出处:单片机商城发布日期:2005-9-1011:14:28 浏览次数:356 UC/OS和uClinux的比较 摘要:嵌入式操作系统是嵌入式系统应用的核心软件。本文通过对两种典型的开源嵌入式操作系统的对比,分析和总结嵌入式操作系统应用中的若干问题,归纳嵌入式操作系统的选型依据。 关键词:嵌入式系统操作系统uC/OS uClinux 引言 随着现代计算机技术的飞速发展和互联网技术的广泛应用,从PC时代过渡到了以个人数字助理、手持个人电脑和信息家电为代表的3C(计算机、通信、消费电子)一体的后PC时代。后PC时代里,嵌入式系统扮演了越来越重要的角色,被广泛应用于信息电器、移动设备、网络设备和工控仿真等领域。嵌入式系统是以嵌入式计算机为核心,面向用户、面向产品、面向应用,软硬件可裁减的,适用于对功能、可靠性、体积、成本、功耗等综合性能有严格要求的计算机系统。随着嵌入式系统的广泛应用,传统的前/后台程序开发机制已经不能满足日益复杂和荷记得的实现要求,因而现场常常采用嵌入式产时操作系统PROS(Real TimeOperation System)开发实时多任务系统。嵌入式实时操作系统一般可以提供多任务的任务调度、时间管理、任务间通信和同步以及内存管理MMU(Memory ManagerUnit)等重要服务,使得嵌入式应用程序易于设计和扩展。采用RTOS

可以使嵌入式产品更可靠、开发周期更短。在嵌入式应用中使用RTOS已经成为当前嵌入式应用的一个热点。 完成简单功能的嵌入式系统一般不需要操作系统。如,以前许多MCS51系列单片机组成的小系统就只是利用软件实现简单的控制环路;但是随着所谓后PC时代的来临,嵌入式系统设计日趋复杂,嵌入式操作系统就必不可少了。 嵌入式RTOS在系统实时高效性、硬件的相关依赖性、软件固化以及应用的专业性等方面具有较为突出的优势。一般而言,嵌入式操作系统不同于一般意义的计算机操作系统,它有占用空间小、执行效率高、方便进行个性化定制和软件要求固化存储等特点。 从20世纪80年代起,国际上就有一些IT组织、公司,开始进行商用嵌入式操作系统和专用操作系统的研发。这其中涌现了一些著名的嵌入式操作系统,如Microsoft公司的WinCE和WindRiver System公司的VxWo rks就分别是非实时和实时嵌入式操作系统的代表。但是商用产品的造价都十分昂贵,用于一般用途会提高产品成本从而失去竞争力。 UC/OS和uClinux操作系统是用两种性能优良、源码公开且被广泛应用的免费嵌入式操作系统,可以作为研究实时操作系统和非实时操作系统的典范。本文通过uC/OS和uClinux的对比,分析和总结嵌入式操作系统应用中的若干重要问题,归纳嵌入式系统开发中操作系统的选型依据。 1两种开源嵌入式操作系统介绍 uC/OS和uClinux操作系统,是当前得到广泛应用的两种免费且公开源

STM32_uClinux应用文档

AN3012 Application note Getting started with uClinux? for STM32F10x high-density devices Introduction uClinux, pronounced “you-see-Linux”, literally means “microcontroller (μC) Linux?”. uClinux is a Linux kernel fork for microcontrollers (MCUs, embedded systems). It does not have a memory management unit (MMU). Originally derived from version 2.0 (1996) of the Linux kernel, it now has ports based on Linux 2.6. Since version 2.6, the major parts of uC linux have been integrated with the mainline kernel for a number of processor architectures. The project continues to develop patches and supporting tools to use Linux on microcontrollers. uClinux supports many architectures, and this new version supports the STM3210E-EVAL evaluation board. The purpose of this application note is to explain you how to: 1.Install the uClinux operating system, the toolchain, and configure the kernel for the STM3210E-EVAL board 2. Build a uClinux image and download it to the STM3210E-EVAL board 3. Add applications to the kernel September 2009Doc ID 16051 Rev 11/36 https://www.360docs.net/doc/541977496.html,

uCLinux开发介绍

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)来调试。通过JTAG方式, 调试可以调试内核和驱动程序, 也 同时可以调应用程序. 一般的开发工具做不到这一点。对于那些只要调试应用程 序的客户, 就可以采用MDB的方式.采用这种方式,你不但不需要仿真器,而且 在调试一个应用时,不会影响别的应用的运行。 C.提供了一个内核的追踪工具(Trace)来帮助用户分析整个系统。 在本章中,我们将结合这个工具来对uClinux做一些介绍。(在现在Hitool for uClinux 套件中,提供对两种ARM-7评估板的支持,一个是Micetek的EV4.0,采用Atmel40800 CPU).另一种是Micetek的EV4510b,采用Samsung的4510b CPU。 一uClinux 简介 目前,uClinux往往基于两个linux内核版本,2.0.38 是一个比较成熟的版本,2.4.x 是最新的版本. Hitool 套件同时提供了对他们的支持.一般uClinux的内核大小在500k左右,如果加上一些基本的应用,也就在900k左右.非常适合于嵌入式系统.

第7章 嵌入式uClinux及应用开发

せ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? ?? ? ??????? MMU?CPUП??? ?? ? ? ? ???? ? ? ? ? ???? ? ????? ?? ?? ? ?? ???? ??? ? ?? ? ? ? ????? ? ?? ??? ? ??? ????? ??????? ????CPU П?? ? ?? ? ?????uClinux?????? ? ?? uClinux?Linux 2.0/2.4 ?⌒?? ??????Linux?? ? ? ? ??? ? MMU?CPU? ?? ?? ?? ? ?????? ? ?? ?MMU?? ? ?? ARM7TDMI? ? ?? Flash ? ???uClinux ?? ? MMU? ? ? Linux? ? ?? ?? ???? ? ???? ??? ?? ?? ?? GNU?? ? ??GNU GPL?? ?????uClinux ????? ??? Т ?Linux API ??? ?? MMU? ???uClinux ?Linux ?????? ?

proteus自带uclinux的改造与扩展源代码

proteus自带uclinux的改造与扩展源代码自己写的源代码供大家学习:这里要感谢bqtanterry网友提供的proteus实例https://www.360docs.net/doc/541977496.html,/forum.php?mod=viewthread&tid=2455 #include #define com 0u #define dat 1u #define rs (1u<<0) #define rw (1u<<1) #define e (1u<<2) #define addr 0x80000020u unsigned char tab[]="I love ARM!"; unsigned char tbl[]="Fuck! I do!"; void delay(int z)

{ int x,y; for(x=z;x>0;x--) for(y=110;y>0;y--); } void write(unsigned char f,unsigned char input) { unsigned int tmp=addr; *((volatile unsigned *)(tmp+=f))=input;delay(5); *((volatile unsigned *)(tmp&=~(rw)))=input;delay(5); *((volatile unsigned *)tmp)=input;delay(5); *((volatile unsigned *)(tmp|=e))=input;delay(5); *((volatile unsigned *)(tmp&=~e))=input;delay(5); *((volatile unsigned *)(tmp|=rw))=input; } void init() { write(com,0x38); write(com,0x0f); write(com,0x06); write(com,0x01); }

基于armuClinux的嵌入式系统开发.

基于arm+uClinux的嵌入式系统开发 首页 | 电子新闻| 网站调查 | 电子基础 | 单片机 | 电子设计 | 电子制作| 电子课件 | 资源共享 | 资源下载 | 访客留言 | 自选风格 基于arm+uClinux的嵌入式系统开发 作者:未知来源:BBS浏览次数:179添加时间:2006-7-15 10:20:20 前些日子基于arm+uClinux开发了一个网络监控系统,眼看项目马上要做完了,终于松了 一口气,于是整理了一些笔记和心得想和大家针对这种开发模式进行一些探讨,希望对各 位有所帮助。 按照我的开发过程想分以下几部分逐一介绍。 1.开发平台的选择和论证 2.开发环境的建立 3.一般程序的开发 4.Linux程序向ARM+uClinux平台的移植 5.剩下的问题 希望诸位多多补充自己的想法,以利于大家共同提高。 1.开发平台的选择和论证 一个项目拿到手,如何选择开发平台(主要是指CPU和操作系统以及开发环境和工具)应该 说至关重要,有时这不光影响进度,产品质量,可维护性等一般问题,甚至涉及到方案的 可实现性。本人结合自己的网络监控系统简单归纳了一些对平台的考虑,还请各位补充。 从系统功能实现考虑: (1) 是否有片上外设,专用指令或配套的软件模块直接实现系统功能要求。感觉这一条 对很多人的决策影响很大 (2) 价格 这一点应通过CPU提供的资源综合考虑,它提供了多少有用的资源,多少没用的资源(那可 都是银子呀!),还是那三个字,性价比,另一方面,是要抓主要矛盾,是不是

有些特性 是必须的,什么特性是用户需求里的亮点(就靠这些亮点往上抬价),这时该花的就得花 了。 (3) 功耗 本系统对CPU功耗要求不高,但对移动设备,这一点可是致命,而且这一点不是仅针对CPU ,所有几乎器件都要勒紧裤腰带运行。 (4) 处理速度 这项不用多说,大家都明白重要性,但具体算起来可是一门学问,一方面是自己需要多快 的速度,如果加上非实时操作系统这事就不好控制,余量还是大点稳妥,另一方面,CPU指 令周期多少,有没有流水,有没有并行,什么体系结构,有没有专用指令(看人家DSP多牛 ,干这事一绝),对外部存储器和外设的存取速度等等,哪一个慢了都叫瓶颈。 (5) 需要的硬件支持(如外部存储器,双电源等) 这算是杂项,但会增加额外的价格,系统体积等,不容忽视。 从开发者的角度考虑: (1) 是否有足够的技术支持包括demo版及原理图,demo程序,操作系统和BSP,测试开发工 具等。 (2) 自身条件;包括对项目开发周期的要求,开发人员对器件和开发模式的熟悉程度以及掌 握的难易程度。 (3) 可用资源是否丰富(书籍,网络等) 以上三点主要考虑迅速开发出稳定的系统。 (4) 系统的可继承性,可移植性和可扩展性。 (5) 是否有现货。 (6) 方案提供商的素质。(包括技术水平和服务意识)。 根据以上考虑选择了s3c4510b(ARM7TDMI)+uClinux开发模式 (1) 以下是该平台对我的系统的满足情况:(和上面几点对应) 本监控系统硬件部分主要要求以下部分: a.以太网接口(s3c4510b自带网络控制器) b.串口(自带) c.与数据采集芯片的接口(8位数据线,小于8位地址总线)。(自带)本系统软件部分主要要求以下部分: a.硬件接口驱动程序(uClinux提供串口和网络控制器驱动) b.网络协议栈支持(uClinux提供TCPIP,UDP等的协议栈) c.应用层程序(如果算上可以从linux移植的程序来看,那就太多了,我就用到了一个现

基于uCLinux的USB设备驱动程序

基于uCLinux的USB设备驱动程序 马力,陈英革,王小英 (常熟理工学院计算机科学与工程学院,江苏常熟 215500) 摘要:本文介绍了嵌入式操作系统uCLinux设备驱动的相关概念以及USB(通用串行总线)子系统框架,并通过分析该框架下的源代码结构,在uCLinux下实现了一个USB设备驱动程序,为同仁开发基于USB的设备驱动程序提供一些参考。 关键词:uCLinux;设备驱动;USB 中图分类号:TP316文献标识码:A文章编号: 通用串行总线USB(Universal Serial Bus)以其支持热插拔、支持多种工作设备、设备携带方便、标准统一等优点,被广泛应用于PC机及嵌入式系统上。而在嵌入式系统领域,Linux发展也很迅猛,已经占据了嵌入式操作系统的半壁江山。但是,Linux对于USB设备的支持并不是很到位,众多USB设备至今还未能完全在Linux上实现即插即用,所以开发USB设备驱动程序就有了非常现实的意义。本文在现有的S3C2410+uCLinux平台和Linux USB子系统基础上,分析了USB设备驱动框架,并实现了USB设备驱动程序的框架。 本文基于博创ARM2410-S嵌入式开发平台,硬件结构为S3C2410 ARM CPU,64MB SDRAM,64MB NAND FLASH,4 HOST USB接口+1 DEVICE USB接口。 1 相关介绍 1.1 uCLinux设备驱动概述 uCLinux是专门为微机控制领域而设计的精简的Linux操作系统,它比Linux要小得多,最大的区别是其不包含MMU(内存管理单元)。uCLinux把设备驱动程序主要分为两种类型:字符设备和块设备。字符设备可以像文件一样访问,字符设备驱动程序负责实现这些行为。大多数字符设备仅仅是数据通道,只能顺序读写。而USB设备就被uCLinux作为字符设备来让用户进行访问。 块设备是文件系统的宿主,该种设备以块为基本单位进行数据访问,一个块通常是1KB。uCLinux也允许像字符设备那样读取块设备,所以,这就导致块设备和字符设备只在内核内部的管理上有所区别,它们之间的不同对用户来说是透明的。 uCLinux为设备驱动提供了一个统一访问的核心数据结构,该数据结构file_operations 是一个函数指针数组,定义在linux/fs.h中,一般通过GNU的标签化格式来初始化各个域。对于uCLinux下的USB设备来说,一般仅需初始化read、write、ioctl、open、release这些域即可。当用户对该设备进行read或write诸如此类的系统调用时,Linux会将这些系统调用映射到该函数数组中,取得对应的函数指针,并执行该函数。 收稿日期:2007-09-23 基金项目:苏州市科技发展计划(工业攻关)项目(SG0704),江苏省高校“青蓝工程” 作者简介:马力(1985-),男,江苏省苏州人,04网络班学生。主要研究方向为嵌入式操作系统。陈英 革(1968-),男,浙江苍南人,工程师。工作单位:常熟理工学院计算机科学与工程学院。主要研究方向 为图形图像处理,传感器网络、工业控制及应用。王小英(1975-),女,江西波阳人,工学博士,常熟理 工学院计算机科学与工程学院,副教授,IEEE计算机协会会员。主要研究方向为嵌入式实时系统、计算 机网络等。Email: xiaoying_wang@cslg. https://www.360docs.net/doc/541977496.html,

uclinux的移植、内核文件系统的生成与烧写

uclinux的移植、内核文件系统的生成与烧写 一、实验目的 1. 了解uclinux移植的基本过程,掌握内核和文件系统的下载方法 二、实验内容 1. 学习uclinux移植的基本过程 2. 学习内核和文件系统的下载方法 三、实验设备 1. PentiumII以上的PC机 四、uclinux的移植说明 本实验系统的这个uClinux版本以前是针对S3C4510的,板的型号叫SNDS100,但经 过移植后在S3C44B0X上也能稳定的运行。 EL-ARM-830实验系统提供的Bootloader支持两种uClinux启动运行方式:直接从SDRAM中运行,以及把压缩的内核映像从flash中搬移到SDRAM中,再从SDRAM运行。前者需要利用Bootloader提供的网络下载功能,直接把未压缩的映像文件下载到SDRAM中运行,后者则首先要利用Bootloader提供的flash烧录工具进行烧录,使用时,再用move 命令搬到SDRAM中,然后再运行。压缩格式的uClinux内核映像文件都是由开头的一段自解压代码和后面的压缩数据部分组成。自解压类型的uClinux 内核映像文件存放在flash Memory中,由Bootloader加载到SDRAM中的0x0c000000地址处,然后运行它。同样,内核映像文件也可以直接下载到SDRAM运行。uC编译后在IMAGES目录中生成三个文件,其中一个是image.rom,这是带自启动的压缩版,可烧入FLASH,运行时,使用move命令,把它搬移到SDRAM的0x0c000000处运行,一个是image.ram,这是没压缩的,通过下载到SDRAM的0x0c008000处后直接运行。 下面是uClinux移植的基本过程。光盘中的uclinux-S3C44B0X.tar.gz是已经移植好的压缩版本。这里只是阐述基本改动部分的出处。 1. 改动硬件配置 修改文件: uClinux-S3C44B0X/linux-2.4.x/include/asm-armnommu/arch-snds100/hardware.h 修改为适合S3C44B0X的硬件配置。 2. 改动压缩内核代码起始地址 修改文件:uClinux-S3C44B0X/linux-2.4.x/arch/armnommu/boot/Makefile 修改内容:

相关主题
相关文档
最新文档