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 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 drivercan 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.