Trouble compiling Fmt_device.c

We have a Rabbit 4000 with a RCM4210 module. I’m trying to get the FAT file system working on the serial flash. I tried compiling Fmt_device.c with DC 10.23. I get 2 errors and 10+ warnings. The errors are:
line 22 : error sflash_fat.lib : RCM3309 is out of scope/ not declared.
line 23 : error sflash_fat.lib : RCM3319 is out of scope/ not declared.
The warnings are all ‘Conversion to incompatible pointer type’ at various lines in Fmt_device.c. I did a Windows search for any .lib file in the DC\lib folder that contained RCM3309 or RCM3319. The lines in sflash_fat.lib were the only ones. It looks like boardtypes.lib is supposed to be where they are, but they are not. Did someone forget something or am I missing something?


I #defined the 2 missing ones to 0 to get it to compile. Now, fat_AutoMount() returns -5 - I/O error. What would cause that error? The serial flash has never been used. I tried replacing the FDDF_MOUNT_DEV_ALL | FDDF_MOUNT_PART_ALL parameter with FDDF_USE_DEFAULT but got the same results. The fat_print_config() call produces:
FAT configuration

Drivers (total 1)…
Type: SF initFunc 2976 callback 0000
–> Device 0: ID 0000 timeout 0000 flags 001F callback 0000 sig SFLASH-1

Any ideas?


I had the same problem and notified Tech Support. This is a bug. I commented out those references in the library

in line 22 of error sflash_fat.lib : /[b]BOARD_TYPE==RCM3309[/b]/
in line 23 of error sflash_fat.lib : /[b]BOARD_TYPE==RCM3319[/b]/

Then everything worked fine.
These board types are undefined.


Thanks. We called tech support, too. They told us to #define the 2 to 0 rather than modify their libraries. They are, apparently, obsolete models. I ended up #defining them to the current models - #define RCM3309 RCM3305 and #define RCM3319 RCM3315. More predictable results.

The other error I get (I/O error) happens the first time I run the program. If I run it again it works fine.