manufacturer of I/O-rich SBCs, operator interfaces, handheld instruments, and development tools for embedded control low cost single board computers, embedded controllers, and operator interfaces for scientific instruments & industrial control development tools for embedded control order our low cost I/O-rich embedded control products embedded controller manufacturer profile single board computers & embedded controllers development tools & starter kits for your embedded design operator interfaces with touchscreens and graphical user interface plug-in expansion modules for digital & analog I/O C language & Forth language integrated development tools, IDE single board and embedded computer accessories embedded controller enclosures, bezels, environmental gaskets
Table of Contents

Introduction

Specifications

Hardware

Flash Card

Connecting To the Wildcard Bus

Selecting the Wildcard Address

Installing the CF Card

CF Card Software Package User Guide and Glossary

How To Install the CF Software

Using the Driver Code with C

Using the Driver Code with Forth

CF Card Software

Categorized List of Functions and Constants

ATA Failure Codes

ATA Primitives

CF Card Information

Directory

File Access and Position Modes

File I/O

File Processing

File System Error Handling

Initialization

Overview of Glossary Notation

Using the File System Functions

Commonly Used Terms

String Parameters and the Use of THIS_PAGE

Access Privileges

Root Directory Only and File Name Restrictions

File Position Indicator

Error Handling

Real-Time Clock on the Host Computer Enables Time/Date Marking of Files 12

Initialization

Automatic Initialization and File Processing

Upgrade note for former Memory Interface Board (MIB) Users

How To Create and Use an AUTOEXEC.QED File

Compile a Program into Flash Memory

Create a Set of Image Files

Transfer the Image File Contents into Memory

Restrictions on Software Upgrades

Recovering from Buggy AUTOSTART.QED Files

Compact Flash Card Software Package Main Glossary

Upgrade Notice for Prior Users of the Memory Interface Board

Sample FILEDEMO.C File (pdf)

Sample FILEDEMO.4th File (pdf)

CF Wildcard Hardware Schematic

The Compact-Flash Wildcard and
CF Card Software Package User Guide

<< Previous | Next>>

Compact Flash Card Software Package Main Glossary

C: APLUS_MODE
4th: APLUS_MODE ( -- n )
A constant that is passed as a file-access privilege parameter to the File_Open function to indicate that the file may be read or written. If APLUS_MODE is specified, random-access reads are allowed, but all data written to the file will automatically be appended (and the file pointer will be moved) to the end of the file regardless of the original file position. See also R_MODE, W_MODE, A_MODE, RPLUS_MODE, and WPLUS_MODE.

C: int ATA_Command( xaddr xbuf, ulong startsector, uint numsectors, int cmd, int xfer_type,
        int features)
4th: ATA_Command ( xbuf\startsector\numsectors\cmd\xfer_type\features -- failure_code)
This primitive function is rarely used by the programmer; it is called by higher level functions that perform Read, Write, ID Drive, and Set Features operations on the ATA device. This routine performs the ATA command specified by parameter cmd, transferring data to/from the card as indicated by the xfer_type using the specified host data buffer starting at xaddress xbuf (the "host" is the Mosaic controller). Command codes are specified by the ATA standard. Valid transfer types are 0 (no transfer), 1 (card-to-host transfer), or 2 (host-to-card transfer). The features parameter is used by the Set Features command (see ATA_Set_Features). The returned failure parameter equals 0 if no error occurred; otherwise a FAIL_ code is returned to describe the error (see the glossary entries for the named constants that begin with "FAIL", and ATA_Fail). If numsectors = 0, no sectors are transferred. If numsectors > 255, the specified command is sent to the ATA device multiple times, each time with sector_count constrained to the range 0 to 255. The maximum value of numsectors is 65,535, leading to a maximum data transfer size of just under 32 Megabytes. The actual number of sectors transferred can be determined by calling the Numsectors_Transferred function. Make sure that ATA_ID_Drive has been executed since the last restart before calling this function; otherwise the specified command will not be executed, thereby protecting against reads and writes to an unknown device. This function Gets and Releases the CF resource variable (located at the 4 bytes starting at FI) to manage multitask access. This command works on hard drives up to 128 Gigabytes. NOTE that accesses to the CF Card should NOT be executed from within an interrupt service routine, as the PAUSE operation called by the Get function may cause an infinite delay if invoked from within an interrupt routine.

C: int ATA_Fail( void )
4th: ATA_Fail ( -- fail_code )
Returns the failure code from the most recently executed ATA command. The returned failure parameter equals 0 if no error occurred; otherwise a nonzero code is returned to describe the error. If several errors occurred, the relevant bit-mask FAIL_ codes are OR'd together. See the glossary entries for the named constants that begin with "FAIL".

C: int ATA_ID_Drive( xaddr xbuffer)
4th: ATA_ID_Drive ( xbuffer -- failure_code)
This function transfers 512 bytes of identification information from the ATA card to QED memory starting at the 32-bit QED address xbuffer. This information is used by the higher level initialization functions to store relevant information about the card in the file system data structures. The user typically does not invoke this command directly; rather, it is called by the high level functions Init_File_IO or Init_File_System which first call Init_File_Heap (which sets up the data structures used by this function) and then call this ATA_ID_Drive function. This command must be called (via Init_File_IO or Init_File_System) after every powerup or restart, before other accesses to the ATA card; otherwise the specified ATA access command will not be executed and higher level commands will return the ERR_FAIL_ID_DRIVE error code. This scheme protects against reads and writes to an unknown device. This command must be called (via Init_File_IO or Init_File_System) after a new ATA card is inserted into the CF Card socket. The returned failure parameter equals 0 if no error occurred; otherwise a FAIL_ code is returned to describe the error (see the glossary entries for the named constants that begin with "FAIL"). If no error occurs during command, this routine initializes the parameter used by the Card_Size function to report the number of bytes in the card. This function Gets and Releases the CF resource variable (located at the 4 bytes starting at FI) to manage multitask access. NOTE that accesses to the CF Card should NOT be executed from within an interrupt service routine, as the PAUSE operation called by the Get function may cause an infinite delay if invoked from within an interrupt routine. For implementation details, see ATA_Command.

C: int ATA_Read( xaddr xbuf, ulong startsector, uint numsectors )
4th: ATA_Read ( xbuf\d.startsector\numsectors -- failure_code)
Transfers data from the ATA flash card to QED memory (the "host"). The source sector in the ATA card is specified by the 32-bit startsector parameter. The destination data is written starting at extended address xbuf in the QED memory. The number of bytes transferred equals numsectors times 512 (see SECTOR_SIZE). The returned failure parameter equals 0 if no error occurred; otherwise a FAIL_ code is returned to describe the error (see the glossary entries for the named constants that begin with "FAIL"). If numsectors = 0, no sectors are transferred. The maximum value of numsectors is 65,535, leading to a maximum data transfer size of just under 32 Megabytes. The actual number of sectors transferred can be determined by calling the Numsectors_Transferred function. Make sure that ATA_ID_Drive has been executed since the last restart before calling this function; otherwise the specified command will not be executed, thereby protecting against reads and writes to an unknown device. This function Gets and Releases the CF resource variable (located at the 4 bytes starting at FI) to manage multitask access. This command works on hard drives up to 128 Gigabytes. NOTE that accesses to the CF Card should NOT be executed from within an interrupt service routine, as the PAUSE operation called by the Get function may cause an infinite delay if invoked from within an interrupt routine. For implementation details, see ATA_Command. If for some reason you need to read the master boot record in the hidden sector region at the physical start of the drive, specify a startsector of -{Hidden_Sectors}; see the Hidden_Sectors glossary entry.

C: int ATA_Set_Features( int config_contents, int feature_contents )
4th: ATA_Set_Features ( config_contents\feature_contents -- failure_code)
Writes to the ATA card to select features. This command is typically not required and is not called by any of the high level file functions; it is included for completeness. For example, the default features for Sandisk SDCFB series cards are correct without modification. For most features, the config_contents parameter is irrelevant; the exception is the Sandisk set-current-limit feature; see the Sandisk product manual for details if you want to use this feature. This function must be called AFTER invoking Init_File_IO or Init_File_System to ensure that FI points to a block of 300 bytes of available RAM, and a 32-bit zero must be stored into the extended address returned by FI to initialize the CF resource variable. The returned failure parameter equals 0 if no error occurred; otherwise a FAIL_ code is returned to describe the error (see the glossary entries for the named constants that begin with "FAIL"). This function gets and releases the CF resource variable to manage multitask access. For implementation details, see ATA_Command.

C: int ATA_Write( xaddr xbuf, ulong startsector, uint numsectors )
4th: ATA_Write ( xbuf\d.startsector\numsectors -- failure_code)
Transfers data from QED memory (the "host") to the ATA flash card. The source data starts at extended address xbuf in the QED memory. The number of bytes transferred equals numsectors times 512 (see SECTOR_SIZE). The destination sector in the ATA card is specified by the 32-bit startsector parameter. The returned failure parameter equals 0 if no error occurred; otherwise a FAIL_ code is returned to describe the error (see the glossary entries for the named constants that begin with "FAIL"). If numsectors = 0, no sectors are transferred. The maximum value of numsectors is 65,535, leading to a maximum data transfer size of just under 32 Megabytes. The actual number of sectors transferred can be determined by calling the Numsectors_Transferred function. Make sure that ATA_ID_Drive has been executed since the last restart before calling this function; otherwise the specified command will not be executed, thereby protecting against reads and writes to an unknown device. This function Gets and Releases the CF resource variable (located at the 4 bytes starting at FI) to manage multitask access. This command works on hard drives up to 128 Gigabytes. NOTE that accesses to the CF Card should NOT be executed from within an interrupt service routine, as the PAUSE operation called by the Get function may cause an infinite delay if invoked from within an interrupt routine. For implementation details, see ATA_Command.

<< Previous | Next>>


Home|Site Map|Products|Manuals|Resources|Order|About Us
Copyright (c) 2006 Mosaic Industries, Inc.
Your source for single board computers, embedded controllers, and operator interfaces for instruments and automation