什么是nxtOSEK (2009/01 更新)
nxtOSEK 是一个 LEGO MINDSTORMS NXT 的开源固件. nxtOSEK 由 leJOS NXJ的设备驱动、C/汇编源代码, TOPPERS/ATK (汽车系统的内核, 先前叫做 TOPPERS/OSEK) 和 TOPPERS/JSP
实时操作系统源代码构成(包含 ARM7 (ATMEL AT91SAM7S256) 特定通信部分, 并且粘合代码使他们协同工作)。 nxtOSEK 可提供:
- 使用GCC系列工具的ANSI C/C++语言开发环境
- NXT 电机,传感器和许多第三方传感器C++语言的API
- TOPPERS/ATK 提供了实时多任务功能,这些功能已经在汽车工业内得到考验。
- TOPPERS/JSP 提供了实时多任务功能,遵循日本原版开放RTOS 标准 μITRON 4.0
- 程序的高速执行和低内存耗用
(NXT的一些其他编程语言是通过一个虚拟机解释执行的,而nxtOSEK的应用程序是于本地运行的。并且NXTOSEK固件消耗的ROM存储器空间共仅占约10 kb。
- 上传nxtOSEK应用程序到NXT的三种方法
1. 使用John Hansen的扩展标准固件
(多个nxtOSEK可同时上传到一个NXT中。但是,这样的话,一个nxtOSEK应用程序最大只能有64Kb)
2. 使用NXT BIOS 的 Flash应用程序上传(单个程序最大占用224Kb)
3. 直接使用RAM的NXT OSEK上传并启动 (单个程序最大占用64Kb、不写入Flash)
- 丰富的示例程序(包含 NXTway-GS 和 NXT GT
等车辆控制方面的应用)
注意:移植 TOPPERS/ATK 到 NXT 是由美国堪萨斯州立大学计算与信息科学系的教授 水野匡章教授完成的。
注意: 移植 TOPPERS/JSP 到 NXT 是由 日本Monami软件有限公司完成的。
注意:
nxtOSEK的C++实现是由美国扬斯敦州立大学计算机科学与信息系统系教授 Robert Kramer 完成的。
nxtOSEK - 新项目名称 (2008/05)
项目名称的改变并不是由一些法律事件导致的。先前的名称LEJOS(leJOS) 似乎使很多人将LEJOSOSEK误解为“一种定制版本的Java虚拟机”或者是“leJOSNXJ的扩展插件”。因此,我们已经决定更改名称,但这个改变将不会影响到后续的API函数兼容性和现有的用户应用程序。 |
注意:
依据 LEGO MINDSTORMS NXT硬件开发套件,
“重要提示:当NXT被拆解或当第三方的固件被应用在NXT上时 ,所有的产品担保均无效。“
换而言之,如果你上传NXT程序(或者其他第三方固件)到你的NXT,你的NXT将无法得到LEGO所提供的所有担保。因此,请确认nxtOSEK的作者不对使用、下载nxtOSEK或者其他相关的第三方工具所导致的任何损失负责。 |
nxtOSEK 概览
紧随 Steve Hassenplug 的 NXT 程序软件表格, , 让我们清点一下 nxtOSEK的最新特性。
项目 |
说明 |
|
nxtOSEK: ANSI C/C++ 使用 GCC (GNU ARM)
Embedded Coder Robot NXT: 基于nxtOSEK和MathWorks MATLAB & Simulink产品的图形模型/模拟/代码自动生成环境。 |
固件 |
John Hansen 的 扩展 NXT 标准固件
或者
nxtOSEK NXT BIOS |
IDE(包含了?) |
Eclipse CDT |
Windows |
Windows XP SP2
Windows Vista (含有扩展 NXT 标准固件 和 NXT BIOS) |
MAC OSX |
无 |
GNU/Linux |
非官方支持 (仍有挑战性) |
事件 |
有 (比如 OSEK 支持事件同步) |
多线程 |
有 (比如 OSEK 支持有优先权的和没有优先权的多任务, 互 斥 访问) |
Bluetooth (NXT与PC) |
有 (NXT 使用无线控制和数据记录) |
Bluetooth通信 (NXT对NXT) |
有 (但是只能是一对一的NXT通信) |
Bluetooth通信 (NXT和其他设备) |
未知 |
USB |
有。 nxtOSEK v2.05 在PC端使用 LEGO Famtom 驱动。 |
I2C通信 |
有 ( 比如,超声波传感器, HiTechnic的公司加速度/颜色传感器, LATTEBOX 的 nxte… …) |
RCX传感器 |
有 |
文件系统 |
有
扩展NXT标准固件 或者 NXT BIOS(单文件系统)
注意,也支持BMP图形文件在LCD显示和WAV文件的发声。
|
浮点数 |
有 |
动态内存操作 |
有,但并不是对线程安全的并且它将比静态内存操作消耗更多内存空间。
C: malloc/free 支持
C++: new/delete 和 智能指针 支持 |
数据记录 |
有 (由NXT GamePad保存为CSV文件) |
必要的语言学习 |
C/C++语言基础(网络上有无数的资料) |
学习使用NXT写程序 |
最好学习嵌入式C/C++软件编程 |
程序的高速执行 |
有 (本地执行) |
易学性 |
依赖于您的技能 (C/C++) |
学习高级编程理念 |
要 (嵌入式C / C + +编程,实时操作系统,控制等方面的应用) |
适用对象 |
嵌入式软件程序员,C/C++程序员 |
测试程序执行速度 (循环数/分) |
76K (在LCD上打印出变量更新值), 1864K (变量更新,但不打印在LCD上) |
测试程序内存消耗 (字节) |
18.7K (含nxtOSEK平台) |
测试程序使用的时间 |
约30分钟 |
主页 |