Logiciels Libres et Systèmes Embarqués


4.6. Support de la Flash

4.6.1. Configuration de U-Boot

Il faut décommenter la macro CFG_NO_FLASH dans le fichier de configuration pour que U-Boot gère la mémoire Flash. Ensuite, il faut enlever la désactivation des commandes Flash dans la macro CONFIG_COMMANDS et préciser la configuration de cette dernière :

 //#define CFG_NO_FLASH
[...]
 #define CONFIG_COMMANDS (CONFIG_CMD_DFL & CFG_CMD_SETGETDCR)
[...]
 #define CFG_FLASH_BASE	      0x21000000
 #define CFG_MAX_FLASH_BANKS  1   /* max number of memory banks */
 #define CFG_MAX_FLASH_SECT   256 /* max number of sectors on one chip */

 #define CFG_FLASH_ERASE_TOUT 120000 /* Timeout for Flash Erase (ms) */
 #define CFG_FLASH_WRITE_TOUT 600 /* Timeout for Flash Write (ms) */

4.6.2. Modification des sources

La carte ML300 utilisant une EEPROM comme mémoire persistante, il faut récupérer le pilote Flash d'un autre portage :

bash# cp board/ml2/flash.c board/xilinx/ml300/

On doit ensuite modifier le fichier board/xilinx/ml300/Makefile pour compiler ce pilote :

  OBJS = $(BOARD).o \
+        flash.o    \
         serial.o   \

Il ne reste plus qu'à effectuer de menus changements dans le fichier board/xilinx/ml300/flash.c:

- #include <configs/ML2.h>
+ #include <configs/ml300.h>

Il ne faut pas oublier de préciser la taille de la mémoire Flash, ainsi que la taille d'un secteur :

  #define FLASH_BANK_SIZE (64*1024*1024)
[...]
  #define SECT_SIZE       (512*1024)

Précisons toutefois que ce pilote n'a pas été testé de manière soutenue.