Logiciels Libres et Systèmes Embarqués


4.5. Support de la CompactFlash

4.5.1. Configuration de U-Boot

SystemACE est le nom du système Xilinx servant d'interface entre la CompactFlash et le FPGA. Pour que U-Boot gère le SystemACE comme un disque, il faut ajouter dans le fichier include/configs/ml300.h les macros suivantes :

#define CONFIG_SYSTEMACE     1
#define CFG_SYSTEMACE_BASE   0x41800000
#define CFG_SYSTEMACE_WIDTH  8
#define CONFIG_DOS_PARTITION

De plus, pour que U-Boot accède aux fichiers présents sur la CompactFlash, il faut activer le support du système de fichier FAT :

#define CONFIG_COMMANDS ((CONFIG_CMD_DFL | CFG_CMD_FAT) & \
			  CFG_CMD_SETGETDCR &  CFG_CMD_IMLS &  \
			  CFG_CMD_FLASH)

4.5.2. Modification des sources

Il manque un appel de fonction dans la fonction systemace_get_dev du fichier common/cmd_ace.c, pour que U-Boot puisse détecter les partitions :

  if (systemace_dev.blksz == 0) {
    [...]
+   init_part(&systemace_dev);
  }

Une fois que U-Boot est chargé et exécuté, on peut tester la CompactFlash de la manière suivante :

uboot# fatinfo ace 0
Partition 1: Filesystem: FAT16 "NO NAME    "

uboot# fatls ace 0
FAT16, fatlength: 122
Rootdir begins at sector: 245, offset: 1ea00, size: 32
Data begins at: 269
Cluster size: 4
189     xilinx.sys
v2p_test/
308736  uboot.elf
1535123 rapport-alpha-15.tar.gz
RootDentname == NULL - 11
3 file(s), 1 dir(s)

Pour transférer un fichier en mémoire, il suffit d'utiliser la commande fatload.