FAQ (2008/06 更新)

 

下面是nxtOSEK的常见问题集。

nxtOSEK一般问题

nxtOSEK软件问题

nxtOSEK硬件问题

nxtOSEK工程问题

 

nxtOSEK一般问题:

Q: nxtOSEK是leJOS NXJ的一部分或者是另外一种LEGO MINDSTORMS NXT的Java虚拟机吗?
A: nxtOSEK使用了leJOS NXJ的底层设备驱动程序(使用C/汇编编写),但它不是另外一种为NXT设计的Java虚拟机。
nxtOSEK是一个为LEGO MINDSTORMS NXT设计的RTOS(实时操作系统),用户可以使用ANSI C/C++(用GCC编译)写本地的应用程序
nxtOSEK的开发人员不是LeJOS NXJ开发团队中的一员,我们所做的只是站在巨人的肩膀上,继续创新和发展。

Q: nxtOSEK使用的是什么许可证?
A: nxtOSEK是leJOS NXJ和TOPPERS ATK的混血产物(这两个工程都是开源的)。
  - leJOS NXJ发布于Mozilla Public License Version 1.0 通用许可证之下。
  - TOPPERS ATK发布于TOPPERS License 许可证之下。

实际上,nxtOSEK原始部分应该和LeJOS NXJ一样被发布于MPL1.0之下的。

Q: 我应该如何为nxtOSEK作贡献?
A: 目前,nxtOSEK还没有使用sourceforge的代码仓库。遗憾的是,现在还没有办法检查到最新的开发源代码。如果您开发了一些与nxtOSEK相关联的一些不错的功能(例如 支持新的传感器),请联系我们或者在leJOS/nxtasy/lugnet论坛(项目组成员经常关注)上面发帖告知。

 

nxtOSEK软件问题:

Q: 如何在nxtOSEK程序的Makefile中指定绝对路径?
A: nxtOSEK的Makefile使用的是相对路径,不过,如果你需要使用绝对路径的话,请修改下列文件的相对路径。
  每一个样例程序的Makefile
  存在lejos_osek\ecrobot路径下的lejos_osek.tmf
GNU Make 3.81-1没有办法识别像DOS路径的表达式(比如 C:/Cygwin),因此应该指定为“/cygdrive/C/Cygwin”。但是,还有一个例外的,在lejos_osek.tmf这个文件中,有一个宏指定TOPPERS ATK的SG.exe的路径。
  TOPPERS_OSEK_ROOT_SG =$(ROOT)/toppers_osek
TOPPERS ATK的SG (System Generator)只能使用DOS式路径,所以只能写成 C:/Cygwin/... 这样的。

Q: 如何指定程序的编译器的宏?
A: USER_DEF是保留给用户定义程序指定编译器的宏。在每个程序的Makefile中,编译器宏可以被指定为下列的形式。

     # Target specific macros
     TARGET = HelloWorld
     TARGET_SOURCES := \
     helloworld.c
     TOPPERS_OSEK_OIL_SOURCE := ./helloworld.oil

     USER_DEF = FOO FOO1

Q: 如何指定程序的include路径?
A: USER_INC_PATH是保留给用户定义程序指定include路径的宏,可以被指定为下列形式。

     # Target specific macros
     TARGET = HelloWorld
     TARGET_SOURCES := \
     helloworld.c
     TOPPERS_OSEK_OIL_SOURCE := ./helloworld.oil

     USER_INC_PATH = ../FOO ../../FOO1

Q: 如何为我的程序指定自己的库?
A: USER_LIB是保留给用户定义程序指定程序特定库。在每个程序的Makefile中,用户库(例如 用户库的名字是libFOO.a)可以被定义为下列形式。
实际上,USER_INC_PATH也需要设置用户库的路径。

     # Target specific macros
     TARGET = HelloWorld
     TARGET_SOURCES := \
     helloworld.c
     TOPPERS_OSEK_OIL_SOURCE := ./helloworld.oil

     USER_LIB = FOO

     USER_INC_PATH = ../FOO_lib

Q: 如何在Linux中设置nxtOSEK?
A: 很抱歉,nxtOSEK是在Cygwin(Windows XP)下开发的,所以我们从来也没有在Linux的机器上测试过它。不过,一些Linux用户好像已经使得nxtOSEK 在Linux下工作了! Jonny 5的博客也许会对Linux用户有用吧 。如果有人完成了漂亮的安装和设置指示方法,请立刻告诉我们!

Q: 我在上传大于64Kbytes的程序的时候遇到了连接错误,怎么办?
A: 上传nxtOSEK程序到RAM时,程序大小限制是64Kbytes。在程序连接的过程中,会检查程序大小,如果超过了限制大小会报告错误。另一方面,上传nxtOSEK程序到Flash时,程序大小限制是224Kbytes。在Makefile中,用户可以修改BUILD_MODE宏来控制二进制文件的产生。

  BUILD_MODE在默认状况下没有被定义: 产生二进制可执行文件(为 NXT标准扩展固件,Flash,RAM)
  BUILD_MODE = ROM_ONLY: 为Flash产生二进制可执行文件。
  BUILD_MODE = RAM_ONLY: 为RAM产生二进制可执行文件。
  BUILD_MODE = RXE_ONLY: 为NXT扩展标准固件产生二进制可执行文件。

     # Target specific macros
     TARGET = HelloWorld
     TARGET_SOURCES := \
     helloworld.c
     TOPPERS_OSEK_OIL_SOURCE := ./helloworld.oil

     
BUILD_MODE = ROM_ONLY

Q: 我不喜欢nxtOSEK默认的启动画面,要怎么使用我自己的启动画面?
A: 非常抱歉,我没有什么图形设计的天赋。如果您想要用的您自己的启动画面,请按照下列步骤做:



1. 在ecrobot目录下找到ecrobot_splash.bmp,这是nxtOSEK启动画面的设计源路径。
2. 保存修改好的ecrobot_splash.bmp。必须保存为单色的bmp文件,而且像素大小必须为100( 宽)×64(高)。
3. 如果您已经成功的编译构建了一个nxtOSEK程序,打开Cygwin,转到ecrobot目录下输入makemake,然后回车。然后新的ecrobot_splash.bmp就会被连接到libecrobot.a。
4. 在Cygwin中输入make release 清理文件。
5. 编译构建您的程序,上传到NXT,你就会看到您自己的启动画面了!

 

nxtOSEK硬件问题:

Q: 上传nxtOSEK程序会影响NXT Flash的使用寿命吗?
A: nxtOSEK 2.02支持将程序上传到Flash和RAM。关于对Flash使用寿命的影响,上传NXT BIOS到Flash和上传乐高标准固件是等效的,上传nxtOSEK到Flash和上传NXT-G程序是等效的。对于上传nxtOSEK程序到RAM,它不会影响Flash的使用寿命。在nxtasy.org有一个不错的讨论帖,请参考这里

Q: 上传了程序到我的NXT,可是按什么按键(RUN/STOP/EXIT)都好像没有反应,怎么办?
A: 在NXT的内部有两个CPU(一个主ARM7和一个AVR作为外围设备控制器)。这可能是两个CPU间的一些信息交流错误导致的,请按照下列步骤解决这个问题:
1. 断开在NXT上的USB联机线。
2. 从NXT上拔出电池,等待至少5秒后,再装上去。
3. 重新连接USB联机线。
4. 按NXT上的ENTER按钮。
5. 上传程序。

 

nxtOSEK工程问题:

Q: NXT GT的性能如何?
A: NXT GT是使用了标准的伺服电机和马达旋转是经由40(马达):16(轮子)的齿轮比例传输的。NXT GT的最高速度约为1.3m/sec(电压约为8V时)。关于NXT GT的详细信息请查看这个这里

 

 

主页