DuinOS
一、DuinOS 简介
DuinOS 是一个 86Duino 专用的 DOS 作业系统,目的是为希望在 86Duino 上操作 DOS 的进阶玩家提供一个完善且易于使用的 DOS 环境。
DuinOS 包含完整的 FreeDOS 及专用系统工具,并内建程式开发环境,可直接在其中编译及执行 86Duino 程式。另外,针对 86Duino Zero/EduCake 无法连接 VGA 显示卡输出 DOS 画面的情况,DuinOS 也提供了专用的 DOS shell 程式,让使用者可直接透过 USB 介面操作 DOS 命令行。大部份专用工具程式皆附有原始码,方便熟悉 DOS 的进阶玩家们直接在 DuinOS 内 hack 及重编译这些工具。
下面将解说 DuinOS 的安装与操作。
二、安装 DuinOS 至 SD 卡
开始安装前请先至下载页面下载 DuinOS 压缩档。在 SD 卡上安装 DuinOS 的方式,在不同作业系统上略有出入,请根据您使用的作业系统选择安装教学:
如果您使用 86Duino One,在安装 DuinOS 至 SD 卡后,把该 SD 卡插入 86Duino 的 SD 插槽,并接上 VGA 卡及 USB 键盘,再将 86Duino 开机即可直接操作 DOS,所下图所示:
无法连接 VGA 卡的 86Duino Zero 及 86Duino Educake 需藉由主机画面重定向(Console Redirection)功能或 DuinOS 内建的 DOS shell(86UsbSh )工具程式才能看到 DOS 画面,相关设定及操作方法请见后面第四节的说明。
三、DuinOS 内含软体
最新的 DuinOS 内包含了下列软体:
- FreeDOS 1.1
- DJGPP 2.05
- FreeBASIC 1.03.0
- OpenWatcom 1.9
- FreeRTOS 8.2.2
- Windows CE 6.0
- 86Duino DOS SDK
- 86Duino DOS 工具
- Vortex86EX 週边装置驱动程式
下列是部份软体的简要介绍:
FreeDOS
FreeDOS 是一个相容于 MS-DOS 的开源作业系统,使用 GPL 授权,其大多数的行为表现都与 MS-DOS 相同;过去可以在 MS-DOS 上执行的程式或命令,也可以在 FreeDOS 上执行,所以 FreeDOS 在使用上与 MS-DOS 几乎没有差别。DuinOS 裡与 FreeDOS 相关的档案都放在 \FDOS 目录下。
DJGPP
DJGPP 是一组可以用来编译 C/C++ 语言并产生出 32 位元保护模式程式的工具,使用 GPL 授权,其核心是移植到 DOS 的 GCC,并包含了一些常用工具,如:ld、make、gdb … 等,使用方法与在 Linux 上使用这些工具无异。DuinOS 裡与 DJGPP 相关的档案都放在 \DJGPP 目录下。
以下列出 DuinOS 中的 DJGPP 所包含的工具软体及函式库,您若有需要,可至 DJGPP 官网 下载更多工具及函式库安装至 DuinOS 中:
gcc 6.1.0 | gpp 6.1.0 | binutils 2.25.1 | djdev 2.05 |
gdb 7.11 | make 4.2.1 | grep 2.22 | filutil 4.1 |
bison 2.4.1 | flex 2.5.4 | filutil 4.1 | sed 4.2.2 |
rhide 1.5 | PDCurses 3.4 | Allegro 4.2.2 | SwsSock 1.06 |
FreeBASIC
FreeBASIC 是一个 BASIC 语言的开源编译器,使用 GPL 授权,相容微软的 QuickBASIC。DuinOS 裡与 FreeBASIC 相关的档案都放在 \FBASIC 目录下。
OpenWatcom
OpenWatcom 是 Watcom C/C++ 的后期开源版本。Watcom C/C++ 是早期 DOS 上知名的 32-bit 编译器,许多经典的 DOS 游戏都是以此编译器写成。在 DuinOS 裡,OpenWatcom 主要用来编译 FreeRTOS 的程式,与其相关的档案都放在 \WATCOM 目录下。
FreeRTOS
FreeRTOS 是一个轻量级的开源即时作业系统,被大量应用在许多基于微处理机的嵌入式产品裡。DuinOS 内含的 FreeRTOS 运行在 x86 真实模式下,使用上将受真实模式运行环境制约,更详细资讯可参考 FreeRTOS 官方的
Windows CE
Windows CE 是微软研发的即时作业系统,适合安装在硬体规格较低的电脑系统裡做各种嵌入式应用。DuinOS 允许使用者能在 DOS 下直接启动 Windows CE,详细说明请参考第六节。与 Windows CE 相关的档案都放在 \WINCE 目录下。
网路驱动
DuinOS 的网路驱动採用 NDIS 协定,与网路驱动相关的档案都放在 \NET 资料夹下;在该资料夹下的 PROTMAN.DOS、PROTMAN.EXE、NETBIND.COM 是 NDIS 相关驱动程式,而 NET\R6040 资料夹下的 RDCPCI.DOS 是 Vortex86EX 内建网卡的驱动程式,PROTOCOL.INI 是网路相关的设定档(设定内容可参阅 FreeDOS 的说明文件)。
注意:DuinOS 启动时会建立一个代号为 Z 的 RAM disk,这个 Z 槽是用来让一些网路相关工具、函式库及部份 86Duino DOS 工具程式放置暂存资料,如果使用者移除了 Z 槽,将使网路与部份 86Duino DOS 工具程式无法使用。
四、86Duino DOS 工具程式
DuinOS 内建几个 86Duino 专用工具程式,放在 TOOLS 目录下,以下个别介绍其用法。
86UsbSh
86UsbSh 是一支为 86Duino 开发的 USB DOS shell 程式,可让使用者直接透过 USB 介面操作 DOS 命令行。86UsbSh 通常是透过 AUTOEXEC.BAT 在开机时启动,如此免除额外使用 VGA 卡与键盘,详细使用方法请参阅下列连结:
注意:您无法使用 86UsbSh 看到会进入绘图模式(或直接存取显示卡记忆体)的 DOS 程式之输出;您也无法透过 86UsbSh 操作需要利用键盘输入进行互动的 DOS 程式。此外,由于 DuinOS 内定在开机时启动 86UsbSh,如果您使用 86Duino One 并想透过 VGA 卡及键盘直接操作 DOS,您将需要修改 AUTOEXEC.BAT,步骤如下列连结所说明:
86ComSh
86ComSh 可用来开启 FreeDOS 的主机画面重定向(Console Redirection)功能,支援从 86Duino 的任一个串列埠输出 DOS 操作画面。以 86ComSh 操作 DOS 的限制比 86UsbSh 少,也一样通常透过 AUTOEXEC.BAT 在开机时启动,以免除额外使用 VGA 卡与键盘,缺点是需要使用 USB-to-UART 转接线材。下列连结以 Serial1 重定向为例说明 86ComSh 的使用:
- 透过 USB-to-UART (TTL) 线材连接 86Duino 与电脑,并传送 Shell 输出至电脑端
- 透过 USB-to-RS232 线材连接 86Duino Educake 与电脑,并传送 Shell 输出至电脑端
注意:您无法透过 Console Redirection 看到会进入绘图模式(或直接存取显示卡记忆体)的 DOS 程式之输出。
86Duino I/O Toolkit
DuinOS 从 1.1 版开始包含了几个可在 DOS 下存取 86Duino I/O 介面、改变系统设定、及显示系统资讯的小程式,列表如下:
- 86ADC:读取并显示 86Duino A/D 接脚上侦测到的数值。
- 86IO:存取 86Duino 板上 GPIO 接脚。
- 86CRSBAR:透过设定 Vortex86EX SoC 的 I/O Crossbar,切换 86Duino 部份 I/O 接脚的功能。
- 86CLOCK:设定 86Duino 的 CPU 工作时脉。
- 86INFO:显示 86Duino 的系统资讯。
- 86PWM:产生 86Duino 板上的 PWM。
五、86Duino DOS SDK
DuinOS 内建 86Duino DOS SDK,其包含完整 86Duino 程式编译环境,可让使用者在自行撰写的 C++ 程式中呼叫 86Duino 的 API 及内建函式库来存取 86Duino 提供的各种 I/O 功能,如 digitalRead()
、digitalWrite()
、analogRead()
等函数。详细说明请参阅下列文章:
六、Windows CE Demo Image
DuinOS 由 1.1 版开始整合进 Windows CE 6.0 的 demo image,并允许在 DOS 下启动 Windows CE 作业系统。DuinOS 内含的 Windows CE 支援 Vortex86EX SoC 大部份硬体週边,如网路、HD Audio、串列埠等,并且在没有显示卡的场合,允许透过 telnet 连线远端操作 Windows CE。
在 DOS 命令列下启动 Windows CE 的方式相当简单,使用者只要根据 86Duino 型号执行对应的批次档即可:
CE_ZERO.BAT |
在 86Duino Zero 上启动 Windows CE |
CE_ONE.BAT |
使用 86Duino One 且没有连接 Vortex86VGA 显卡时,启动 Windows CE |
CE_ONE_V.BAT |
使用 86Duino One 且连接 Vortex86VGA 显卡时,启动 Windows CE |
CE_ECAKE.BAT |
在 86Duino EduCake 上启动 Windows CE |
此外,使用者亦可设定在 DuinOS 开机时自动启动 Windows CE,见下文教学:
注意:DuinOS 内含的 Windows CE demo image 只是用于 Vortex86EX SoC 的展示用途,其本身并不提供 Windows CE 商业授权,若您需在公开商品内使用 Windows CE,应自行向微软取得合法授权。
The text of the 86Duino reference is licensed under a Creative Commons Attribution-ShareAlike 3.0 License.