什么是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
  • 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分钟

 

 

 

主页