Disk on chip driver issue in QNX and other troubleshooting with Disk on Chip

DiskOnChip 2000 consists of the following major functional blocks• System Interface for host interface.
• Boot Block that contains IPL ROM required for recognition during BIOS expansion search in PC architectures.
• Reed-Solomon-based Error Detection and Error Correction Code (EDC/ECC) for on-the fly error handling.
• Flash Control block that contains registers responsible for transferring the address, data and control information between the TrueFFS driver and the flash media.

The BIOS code first executes the Power On Self-Test (POST) and then searches for all
expansion ROM devices. When DiskOnChip 2000 is found, the BIOS code executes from it the IPL
(Initial Program Loader) code, located in the boot block. This code loads the TrueFFS driver into
system memory, installs DiskOnChip 2000 as a disk in the system, and then returns control to the
BIOS code. The operating system subsequently identifies DiskOnChip 2000 as an available disk.
TrueFFS responds by emulating a hard disk.
From this point onward, DiskOnChip 2000 appears as a standard disk drive. It is assigned a drive
letter and can be used by any application, without any modifications to either the BIOS set-up or the
autoexec.bat/config.sys files.

Since QNX runs entirely in 32-bit protected mode and does not rely on
BIOS services, the Fsys.diskonchip device driver must be active at
boot time to allow access to the DiskOnChip.Normally, the driver is started without any parameters. Since the DiskOnChip is a memory-mapped device, the driver should locate it in memory. By default, the driver looks in the memory range 0C8000h
to 0E0000h. If the memory window address is known, it is possible to
pass it to the driver from the command line, thus eliminating the
search. For example, if the DiskOnChip address is D4000h, the driver
can be started as follows:

#Fsys.diskonchip -v8w:D4000
Option above with Fsys:

-v    Verbose
-8    Force 8 bit mode  * should be used to detect older firware Diskonchip with newer version of  Fsys.diskonchip

-w   used to pass exact address at which diskonchip  is on socket viz: D8000

Issues with DFORMAT and Firmware version

The version of the DFORMAT utility and the firmware file version need to be same .However it is pertained to mention that Disk on chip firmware file to be updated using DOS institutes from M System (In the case of using boot qnx from DOC it is recommended to use DFORMAT from DOS utilities for low level format and firmware update). If the error message “File too large for specified Boot-Image size“ is displayed during formatting, then there was an incompatibility between the firmware file and the DFORMAT utility. To solve this problem go through to following steps :
1. Delete the previous firmware file:
DFORMAT /WIN:D000 /S:!
2. Re-install the required firmware file, i.e. DOC514.EXB:
DFORMAT /WIN:D000 /S:DOC514.EXB
* It is advised to use actual firmware file for firmware which actully exist
disk on chip i.e for a Disk on chip 2000 ver 4.22 the firmware file will be DOC422.EXB

Important point to be taken care while booting from disk on chip in QNX :

> The driver version included on .boot image should be of the same version as of firmware of Diskonchip.

> The Fsys should be old 8 bit ver 1.1 for Fsys.diskonchip being version 1.22 otherwise it wil not work because newer version of Fsys forces 32 bit emulation while older Fsys forces into 8 bit.

Kuldeep Singh

Ohhh..... its about me , i am a Graduate in Electronics and telecommunication Engineering. Presently involved in Embedded systems support and developing own flavor of Linux for my day to day trouble needs ....... Can help you in digging of your vintage stuff and i am here to share my knowledge through my post and articles on this blog..........

Leave a Reply

Your email address will not be published. Required fields are marked *

CAPTCHA * Time limit is exhausted. Please reload CAPTCHA.