What is Prex?

Prex is an open source, royalty-free, real-time operating systemfor embedded systems.It is designed and implemented for resource-constrained systemsthat require predictable timing behavior.The highly portable code of Prex is written in 100% ANSI C based on traditional microkernel architecture.

Prex DesignThe Prex microkernel provides only fundamental features for task, thread,memory, IPC, exception, and synchronization.The other basic OS functions - process, file system, applicationloading, and networking, are provided by the user mode servers.In addition, Prex provides a POSIX emulation layerin order to utilize existing *NIX applications.This design allows the systemto perform both of the native real-time task and the generic POSIX processsimultaneously without degrading real-time performance.It also helps platform designers to construct OSby choosing suitable system servers for their target requisition.

Project Goals

The project targets the following goals:
  • To provide a small, portable, real-time, secure, and robust operating system.
  • To provide simple and clean source codes for educationand an experimental test-bed.
  • To conform to open standards as much as possible.
  • To enjoy our life with kernel hacking. ;-)
Royalty Free


Prex is royalty-free software released under Revised BSD License.


Prex has the following features:
  • Task & Thread Control: preemptive priority scheduling with256 priority levels
  • Memory Management: memory protection, virtual address mapping,shared memory, MMU or MMU-less configuration
  • IPC: object name space, synchronous message passing between threads
  • Exception: fault trapping, framework for POSIX signal emulation
  • Synchronization: semaphores, condition variables, and mutexeswith priority inheritance
  • Timers: sleep timers, one-shot or periodic timers
  • Interrupt: nested interrupt serviceroutines, and prioritized interrupt service threads
  • Device I/O: minimum synchronous I/O interface, DPC (Deferred Procedure Call)
  • Security: task capability, pathname-based access control,I/O access permission.
  • Real-time: low interrupt latency, high resolution timersand scheduling priority control
  • Power Management: power policy, idle thread, DVS (Dynamic Voltage Scaling)
  • Debugging Facility: event logging, kernel dump, GDB remote debug
  • File Systems: multi-threaded, VFS framework, buffer cache, ramfs, fatfs, arfs, etc.
  • POSIX Emulation: pid, fork, exec, file I/O, signal, pipe, tty, pthread, etc.
  • Libc: C library fully optimized to generate a small executable file
  • CmdBox: a small binary that includes tiny versions of many UNIX utilities.
  • Networking: (plan) TCP/IP stack, BSD socket interface

Hardware Requirements

H/W imagePrex minimum hardware requirements are as follows:
  • Processor: 32-bit Processor (x86, ARM, PowerPC)
  • Memory: 256KB of RAM (Kernel < 25k bytes)
  • Timer: programmable interval timer

Note: RAM requirements may vary depending on the number ofsystem servers being supported.



RT-Thread 是一款开源的实时操作系统(许可证GPL)。RT-Thread不仅仅是一个单一的实时操作系统内核,它也是一个完整的应用系统,包含了实时、嵌入式系统相关的各个组件:TCP/IP协议栈,文件系统,libc接口,图形用户界面等。


RT-Thread 是一款 开源 实时操作系统。大多数源代码都基于 GNU GPL 许可协议下发布。详细许可信息请查看:RT-Thread 许可


  • 简洁的内核对象模型
  • 基于优先级的全抢占式调度:
    • 支持相同优先级线程
    • 相同优先级线程采用时间片轮转调度
  • 丰富的同步、任务间通信机制
    • 信号量、互斥锁
    • 邮箱
    • 消息队列
    • 事件
  • 灵活的内存管理方式
    • 满足实时性要求的静态内存分配
    • 小内存系统管理及大内存系统的slab内存分配算法
  • 可嵌套的中断支持
  • 一些其他功能特征...


FreeRTOS TM is a portable, open source, royalty free, mini Real Time Kernel - a free to download and free to deploy RTOS that can be used in commercial applications without any requirement to expose your proprietary source code. Downloaded more than 77,500 times during 2008, FreeRTOS is the cross platform de facto standard for embedded microcontrollers.

Each official port includes a pre-configured example application demonstrating the kernel features, expediting learning, and permitting 'out of the box' development. Support is provided by an active user community.

OpenRTOSTM is a commercially licensed and supported version of FreeRTOS that includes fully featured professional grade USB, file system and TCP/IP components.

SafeRTOSTM is a SIL3 RTOS version that has been certified for use in safety critical applications. It is a functionally similar product for which complete IEC 61508 compliant development/safety lifecycle documentation is available (conformance certified by TÜV SÜD, including compiler verification evidence).

Features Overview
[About FreeRTOS]

FreeRTOS.org Features:

FreeRTOS.org is a scaleable real time kernel designed specifically for small embedded systems. Highlights include:
  • Free RTOS kernel - preemptive, cooperative and hybrid configuration options.
  • The SafeRTOS derivative product provides a high level of confidence in the code integrity.
  • Official support for 23 architectures (counting ARM7 and ARM Cortex M3 as one architecture each).
  • FreeRTOS-MPU supports the Cortex M3 Memory Protection Unit (MPU).
  • Designed to be small, simple and easy to use.
  • Very portable code structure predominantly written in C.
  • Supports both tasks and co-routines.
  • Powerful execution trace functionality.
  • Stack overflow detection options.
  • No software restriction on the number of tasks that can be created.
  • No software restriction on the number of priorities that can be used.
  • No restrictions imposed on priority assignment - more than one task can be assigned the same priority.
  • Queues, binary semaphores, counting semaphores, recursive semaphores and mutexes for communication and synchronisation between tasks, or between tasks and interrupts.
  • Mutexes with priority inheritance.
  • Free development tools (Cortex-M3, ARM7, MSP430, H8/S, AMD, AVR, x86 and 8051 ports).
  • Free embedded software source code.
  • Royalty free.
  • Cross development from a standard Windows host.
  • Pre-configureddemo applications for selected single board computers allowing 'out ofthe box' operation and fast learning curve.
  • Compile time configuration allows a ROM footprint print as low as 4.3Kbytes on an ARM7 (Thumb mode) using GCC (third party figures, requires specific GCC command line options).

License Details
[About FreeRTOS]


FreeRTOS is licensed under a modified GPL and can beused in commercial applications under this license. An alternativecommercial license option is also available in cases that:
  • You cannot fulfill the requirements stated in the "Modified GPL license" column of the table below.
  • You wish to receive direct technical support.
  • You wish to have assistance with your development.
  • You require legal protection or other assurances.


Nut/OS is a modular, open source, real time operating system for embedded platforms. It is easily configurable and optimized to run on 8 and 32 bit microcontrollers.

Due to the modular architecture of the operating system only those components are included, which the application really needs. In general the adaption to the target system is done automatically. For fine tuning a graphical user interface is available under Linux, Windows and OS X.

Nut/OS multithreading is safe and easy to use. Its cooperative threading guarantees, that a thread yields control at well-defined points only. In most cases access to shared resources does not require any locking. This finally results in small and simple application code and significantly reduces the risk of race conditions and deadlocks.

Deterministic interrupt latencies provide hard real-time responses within strict deadlines, independent of currently available system resources. More...


Nut/OS is based on an intentionally simple RTOS kernel, which provides a minimum of services to run Nut/Net, the TCP/IP stack. It's features include:

  • Coperative multithreading
  • Deterministic interrupt response times
  • Priority based event handling
  • Periodic and one-shot timers
  • Dynamic memory management

Main features of the TCP/IP stack are:

  • Base protocols Ethernet, ARP, IP, ICMP, UDP, TCP and PPP
  • User protocols DHCP, DNS, SNTP, SMTP, FTP, SYSLOG, HTTP and others
  • Socket API
  • Host, net and default routing

Nut/OS is a modular operating system. Instead of providing a fixed kernel block, all code is packed in libraries. Only those parts are linked to the final binary image, which are directly or indirectly referenced by the application. This guarantees the lowest possible footprint. Ernst Stippl regularly publishes related figures on his web site at www.es-business.com/ethernut/.

Standard C libraries like newlib or avr-libc are supported and allow to write highly portable applications. While direct hardware access and native interrupts are possible in application code, the system offers ready-to-use drivers for a large number of devices, including:

  • Ethernet controllers
  • UART devices with RS-232 handshake and RS-485 mode
  • SPI, I2C and CAN busses
  • MultiMedia and SD cards
  • Hardware and software audio codecs
  • Analog-to-digital converters
  • Serial flash memory
  • Realtime clocks
  • Infrared remote controls
  • Watchdogs and reset controllers
  • Character displays
  • GPIO and interrupt control
  • Modem control

Note, that not all drivers may be available on all platforms. The following microcontrollers are actively supported:

  • ATmega103, ATmega128, ATmega2561, AT90CAN128
  • AT91SAM9260, AT91SAM9XE
  • Gameboy Advance

The system is highly configurable and may work on other hardware too. Support for AVR32 is currently under development and a version for the Freescale Coldfire may become available as well. In addition it is possible to run Nut/OS applications on Linux.

In order to hide hardware specific details from application code, an almost complete C stdio API is available, which provides:

  • C99 integer types and optional floating point I/O
  • File system support, including FAT
  • Low level functions and streams on devices, TCP sockets and files

Nut/OS is perrmanently enhanced by an active community. The following features are currently not available, but planned for future releases or currently under development:

  • Graphical user interface
  • USB stack
  • IPv6
  • Encryption
  • Wireless LAN


The application developer can use a comprehensive C library, which complements the runtime library of the compiler. While almost compatible with the Posix standard, the need for learning a large number of new special calls is avoided. Amongst other features, access to files, TCP sockets and some important hardware interfaces is available via stdio streams. More...

Many basic and a few advanced examples are available in the NutWiki...


WhatisuSmartX ?

uSmartXis anon-preemptive,multitasking,priority based RTOS. It features necessary mechanisms for inter-taskcommunication and basic task and time control functions.uSmartX is targeted for small foot-print embedded designs. Being anon-preemptive kernel it consumes little memory and it is very simpleto use. It is already being used in many designs, proving that ahuge,full-preeemptive kernel is not always the best solution.

Main features

uSmartXprovidesmechanisms for inter-task communication, synchronization and timecontrol over system resources.
    • task control
    • time control
    • mailboxes
    • sempahores
    • cyclic buffermanagement with trigger functions
    • memory management
    • atomic variables
    • platform indipendant

Available ports

uSmartX isdesigned to be platform independant as much as possible, thus requiring minimal portingefforts. Only functions dealing with the global interrupt mask have tobe ported.

Actual avaible ports:
  •  Atmel's AVR
  •  Renesas Technology - H8-300H family(contributed by LucaBassanello)

FAT File System Module


FatFs is a generic FAT file system module for small embeddedsystems. The FatFs is written in compliance with ANSI C and completelyseparated from the disk I/O layer. Therefore it is independent ofhardware architecture. It can be incorporated into low costmicrocontrollers, such as AVR, 8051, PIC, ARM, Z80 and etc..., withoutany change. Petit FatFs module is also available here.


  • Windows compatible FAT12/16/32 file system.
  • Platform independent. Easy to port.
  • Very small footprint for code and work area.
  • Various configuration options:
    • Multiple volumes (physical drives and partitions).
    • Multiple OEM code pages including DBCS.
    • Long file name (LFN) support in OEM code or Unicode.
    • RTOS support.
    • Multiple sector size support.
    • Read-only, minimized API, I/O buffer and etc...

Project aims

The EFSL project aims to create a library for filesystems, to be usedon various embedded systems. Currently we support the Microsoft FATfilesystem family. It is our intention to create pure ANSI C code thatcompiles on anything that bears the name 'C compiler'. We don't makeassumptions about endianness or how the memory alignement is arrangedon your architecture.

Adding code for your specific hardware is straightforward, just addcode that fetches or writes a 512 byte sector, and the library will dothe rest. Existing code can offcourse be used, own code is onlyrequired when you have hardware for which no target exists. Forexample, we support secure digital cards in SPI mode.

Project status

We have support for FAT12, FAT16 and FAT32. Read and write has beentested and is stable. Our code runs on PC (GNU/Linux, developmentenviroment), TMS C6000 DSP's from Texas instruments, and ATMega's fromAtmel.
You can use this code with as little as 1.5 kilobyte RAM, however ifyou have more at your disposal, an infinite amount can be used as cachememory. The more memory you commit, the better the performance will be.

In order to minimise IO to the hardware 2 caching mechanism are inplace on different layers. The first layer is the IO Manager which does"dumb" caching of sectors. This will offcourse work better if you haveRAM to spare. The second level is higherup in the library, where sometricks are in place to minimise redundant reading of the FAT table(which is the primary bottleneck of the FAT filesystem, especially withhardware which has seek times).


This project is released under the Lesser General Public license,which, in short, means that you may use the library and it's sourcecodefor any purpose that you want, that you may link with it and use itcommercially, but that ANY change to the code must be released underthe same license.
That means, if you add hardware suport, you share it, so that thecommunity may benefit from access to all kinds of hardware.


lwIP is a light-weight implementation of the TCP/IP protocol suite that was originally written by Adam Dunkels of the Swedish Institute of Computer Science but now is being actively developed by a team of developers distributed world-wide headed by Leon Woestenberg. The developement homepage has the latest news and releases:


Since it's release,lwIP has spurred a lot of interest and is today being used in manycommercial products. lwIP has been ported to several platforms andoperating systems and can be run either with or without an underlyingOS.

The focus of the lwIP TCP/IP implementation is to reduce the RAM usagewhile still having a full scale TCP. This makes lwIP suitable for usein embedded systems with tens of kilobytes of free RAM and room foraround 40 kilobytes of code ROM.

lwIP features:

  • IP (Internet Protocol) including packet forwarding over multiple network interfaces
  • ICMP (Internet Control Message Protocol) for network maintenanceand debugging
  • UDP (User Datagram Protocol) for datagram data
  • TCP (Transmission Control Protocol) with congestion control, RTTestimation and fast recovery/fast retransmit
  • Specialized no-copy API for enhanced performance
  • Optional Berkeley socket API

lwIP is freely available (under a BSD-style license) in C source codeformat and can be downloaded from the developmenthomepage.


The open-source uIP TCP/IP stack provides TCP/IP connectivity totiny embedded 8-bit microcontrollers, with maintained interoperabilityand RFC standards compliance. uIP was developed by Adam Dunkels of the Networked Embedded Systems group at the Swedish Institute of Computer Science but is further developed by a world-wide team of developers.


uIP has the following features:

  • Well documented and well commented source code - nearly every other code line is a comment.
  • Very small code size.
  • Very low RAM usage, configurable at compile time.
  • ARP, SLIP, IP, UDP, ICMP (ping) and TCP protocols.
  • Includes a set of example applications: web server, webclient, e-mail sender (SMTP client), Telnet server, DNS hostnameresolver.
  • Any number of concurrently active TCP connections, maxium amount configurable at compile time.
  • Any number of passively listening (server) TCP connections, maximum amount configurable at compile time.
  • Free for both commercial and non-commercial use.
  • RFC compliant TCP and IP protocol implementations, includingflow control, fragment reassembly and retransmission time-outestimation.

uC/IP (pronounced mew-kip) is a project to develop a TCP/IP protocol stack for microcontrollers. The code is based on BSD code and therefore carries the BSD licence. We do not require that you contribute changes back to us but we would sure appreciate it.

Project Plan

  1. Portability: Compile for Linux and DOS targets
  2. Demo: Create sample applications (Web server?)
  3. Flexibility: Improve the intertask synchronization
  4. Portability: To common microcontroller OS's
  5. Size: Reduce, reduce, reduce

Current Status

The code was extracted from a working application which means that it works. It's too big but it's light on CPU load. The task synchronization needs to be more flexible. Documentation has been started. Bugs are getting fixed.





    GoAhead WebServer采用开放源代码方式,任何人都可以下载、评估并修改代码,目的是为了使GoAhead WebServer成为市场上最领先的嵌入式Web服务器。

Windows NT/98/95ChorusOS
Windows CEpSOS
Embedd LinuxuCOS


  • 支持虚拟服务器

  • 可使用SNMP代理

  • 支持SSL v3

  • 具有搜索引擎

  • 支持ASP、JavaScript、CGI、DHTML

  • 容易移植和系统集成

  • 可不使用文件系统


Having a Web server in every device, is a prerequisite for device development

GoAheadis committed to improving user experiences through the development anddistribution of 'smart' devices. In our view, smart starts withWeb-enabled and builds from there. Our goal in releasing GoAheadWebServer under an “open source license” and “non branded License”is to help put a Web server in every device, harness the pool oftalented developers, and enhance the reliability of GoAhead WebServerby leveraging the test and debugging efforts of thousands of companies.

To foster this initiative, we are providing accessto our GoAhead WebServer source code through two license models. The“open source license” is provided at no charge. For customers who arenot able to comply with the GoAhead promotional and license-backrequirements of the “open source license”, we also offer a fee-basedlicense referred to as the “non-branded license”e. Our goal inreleasing the GoAhead WebServer source code is to initiate and fosteran environment enabling the development of the most widely usedembedded Web server on the planet.

The GoAhead WebServer development community hascontributed greatly to the evolution of the source code of thisembedded Web server. Developers from all over the world havedownloaded, evaluated, and made improvements that have made GoAheadWebServer one of the top embedded Web servers on the market.

Based on open standards, industry standards,GoAhead WebServer has no proprietary lock-ins. Many other embedded Webservers define proprietary tags to permit dynamic data to be insertedinto Web pages. These usually require proprietary tools to create thelinkage between the pages and the C code which supplies the data. TheGoAhead WebServer offers an open standards solution for creatingdynamic Web content with very efficient packaging. The memory footprintof the web server is approximately 60k.


About SQLite

See Also...

SQLite is a in-process library that implements aself-contained, serverless,zero-configuration,transactionalSQL database engine.The code for SQLite is in thepublic domain and is thus free foruse for any purpose, commercial or private.SQLite is currently found in more applications than we cancount, including several high-profile projects.

SQLite is an embedded SQL database engine.Unlike most other SQL databases, SQLite does not have a separateserver process. SQLite reads and writes directly to ordinary diskfiles. A complete SQL database with multiple tables, indices,triggers, and views, is contained in a single disk file.The database file format is cross-platform - you can freely copy a databasebetween 32-bit and 64-bit systems or between big-endian andlittle-endianarchitectures. These features make SQLite a popular choice asan Application File Format.Think of SQLite not as a replacement for Oracle butas a replacement for fopen()

SQLite is a compact library.With all features enabled, the library size can be less than 300KiB,depending on compiler optimization settings. (Some compiler optimizationssuch as aggressive function inlining and loop unrolling can cause theobject code to be much larger.) If optional features are omitted, thesize of the SQLite library can be reduced below 180KiB. SQLite can alsobe made to run in minimal stack space (16KiB) andvery little heap (100KiB), making SQLite a popular database engine choice on memory constrained gadgets such as cellphones, PDAs, and MP3 players.There is a tradeoff between memory usage and speed. SQLite generally runs faster the more memoryyou give it. Nevertheless, performance is usually quite good evenin low-memory environments.

SQLite is very carefully tested prior to everyrelease and has a reputation for being very reliable.Most of the SQLite source code is devoted purely to testing andverification. An automated test suite runs millions oftests involving hundreds of millions of individual SQL statements and achievesover 99% statement coverage. SQLite responds gracefully to memoryallocation failures and disk I/O errors. Transactions areACIDeven if interrupted by system crashes or power failures. All of this is verified bythe automated tests using special test harnesses which simulate system failures.Of course, even with all this testing, there are still bugs.But unlike some similar projects (especially commercial competitors)SQLite is open and honest about all bugs and providesbugs listsincluding lists ofcritical bugs andminute-by-minute chronologies of bug reports and code changes.

The SQLite code base is supported by aninternational team of developers who work onSQLite full-time.The developers continue to expand the capabilities of SQLiteand enhance its reliability and performance while maintainingbackwards compatibility with the published interface spec,SQL syntax, and database file format.The source code is absolutely free to anybody who wants it,but professional support services are also available.

We the developers hope that you find SQLite useful and wecharge you to use it well: to make good and beautiful products thatare fast, reliable, and simple to use. Seek forgiveness for yourselfas you forgive others. And just as you have received SQLite for free,so also freely give, paying the debt forward.


一)Artistic Style


Artistic Style is a source code indenter, formatter, and beautifier for the C, C++, C# and Java programming languages.

When indenting source code, we as programmers have a tendency to use both spaces and tab characters to create the wanted indentation. Moreover, some editors by default insert spaces instead of tabs when pressing the tab key, and other editors (Emacs for example) have the ability to "pretty up" lines by automatically setting up the white space before the code on the line, possibly inserting spaces in a code that up to now used only tabs for indentation.

Since the NUMBER of space characters showed on screen for each tab character in the source code changes between editors (unless the user sets up the number to his liking...), one of the standard problems programmers are facing when moving from one editor to another is that code containing both spaces and tabs that was up to now perfectly indented, suddenly becomes a mess to look at when changing to another editor. Even if you as a programmer take care to ONLY use spaces or tabs, looking at other people's source code can still be problematic.

To address this problem, Artistic Style was created - a filter written in C++ that automatically re-indents and re-formats C / C++ / C# / Java source files. It can be used from a command line, or it can be incorporated as classes in another C++ program.


Artistic Style may be used and distributed under version 3 the GNU Lesser General Public License (LGPL). The LGPL is a set of additional permissions added to version 3 of the GNU General Public License. You can use Artistic Style in free or commercial software without charge. Projects that use Artistic Style do not have to make the source code available. If Artistic Style itself is modified, however, the modified Artistic Style source code must be made available.

  • 0
  • 0
  • 0
  • 一键三连
  • 扫一扫,分享海报

©️2021 CSDN 皮肤主题: 编程工作室 设计师:CSDN官方博客 返回首页
钱包余额 0