编译器
- WinARM, http://www.siwawi.arubi.uni-kl.de/avr_projects/arm_projects
- WinAVR,http://winavr.sourceforge.net
- OpenOCD,http://openocd.berlios.de/web
- H-JTAG,http://www.hjtag.com/
一)Prex
http://prex.sourceforge.net/
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.
The 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. ;-)
License
Prex is royalty-free software released under Revised BSD License.
Features
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
Prex 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
http://www.rt-thread.org/web/
RT-Thread 是一款开源的实时操作系统(许可证GPL)。RT-Thread不仅仅是一个单一的实时操作系统内核,它也是一个完整的应用系统,包含了实时、嵌入式系统相关的各个组件:TCP/IP协议栈,文件系统,libc接口,图形用户界面等。
许可协议
RT-Thread 是一款 开源 实时操作系统。大多数源代码都基于 GNU GPL 许可协议下发布。详细许可信息请查看:RT-Thread 许可。
RT-Thread主要特征
http://micrium.com/page/home
商业收费,注意哦;-)
四)FreeRTOS
http://www.freertos.org/
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]
Options
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.
http://www.ethernut.de/
Nut/OS
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...
Features
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
- AT91SAM7S,AT91SAM7SE,AT91SAM7X
- 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
Applications
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...
六)usmartx
http://usmartx.sourceforge.net/
WhatisuSmartX ?
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
Actual avaible ports:
- ARM7TDMI
- Atmel's AVR
- Renesas Technology - H8-300H family(contributed by LucaBassanello)
一)FATFS
http://elm-chan.org/fsw/ff/00index_e.html
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,Z80 and etc...,withoutany change. Petit FatFs module is also available here.
Features
- 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...
http://efsl.be/
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 only@R_301_103@ 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).
License
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
http://www.sics.se/~adam/lwip/index.html
http://savannah.nongnu.org/projects/lwip/
http://savannah.inetbridge.net/lwip/
http://www.koders.com/info.aspx?c=ProjectInfo&pid=UPLZTGX8MX2KYSV5A3PMZA6S4F
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:
http://savannah.nongnu.org/projects/lwip/
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.
二)uIPhttp://www.sics.se/~adam/uip/index.php/Main_Page
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.
- Contributing to uIP
- uIP documentation
- Download the uIP code
- Mailing list
- Open source licence
- Publications
- Porting uIP
- Ports
- Known bugs
Features
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,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.
http://ucip.sourceforge.net/
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
|
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.
嵌入式Web服务器一)goahead
http://www.goahead.com/products/webserver/
GoAhead WebServer采用开放源代码方式,任何人都可以下载、评估并修改代码,目的是为了使GoAhead WebServer成为市场上最领先的嵌入式Web服务器。
支持的平台 | 定制的平台 |
Windows NT/98/95 | ChorusOS |
Windows CE | pSOS |
Embedd Linux | uCOS |
Linux | IRIX |
VxWorks | HP-UX |
QNX | RTEMS |
Lynx |
重要特性:
Overview
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 “@L_404_74@” 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.
嵌入式数据库一)sqlite3
http://www.sqlite.org/
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
http://astyle.sourceforge.net/
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.
License
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.
原文链接:https://www.f2er.com/sqlite/201727.html