Comment flasher un RFbee?

Bonjour à tous,

Je me permet de vous écrire ici après avoir tenté plusieurs forums et même la partie anglophone de ce forum, aucune réponse pour l'instant et pourtant ça fait des semaines que je reste bloqué au point zéro de mon projet.

Ce que je veux faire : utiliser mon raspberry pour communiquer avec des vannes thermostatiques programmables selon le protocole !MAX.

Le matériel pour y arriver : - le Rasberry pi b+ - un module RFbee (basé sur un atmega 168 avec le bootloader arduino et un transceiver CC1101) - un module UART/USB Foca v2.2

Côté software, ça devrait se faire par le logiciel FHEM assez connu côté allemand et surtout par le flash d'un custom firmware sur le RFbee (le firmware CULfw dont une version existe pour le RFbee ici).

J'ai donc réussi à compiler ce firmware mais au moment de l'uploader avec avrdude en utilisant le Makefile prévu, j'obtiens cette erreur :

 RFbee.hex: 14 558 / 16 384 Bytes (88,85%)
    ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~

    avrdude.exe: AVR device initialized and ready to accept instructions

    Reading | ################################################## | 100% 0.02s

    avrdude.exe: Device signature = 0x1e9406
    avrdude.exe: NOTE: "flash" memory has been specified, an erase cycle will be performed
                 To disable this feature, specify the -D option.
    avrdude.exe: erasing chip
    avrdude.exe: reading input file "F:\RFbee\RFbee.hex"
    avrdude.exe: input file F:\RFbee\RFbee.hex auto detected as Intel Hex
    avrdude.exe: writing flash (14558 bytes):

    Writing | ################################################## | 100% 12.73s

    avrdude.exe: 14558 bytes of flash written
    avrdude.exe: verifying flash memory against F:\RFbee\RFbee.hex:
    avrdude.exe: load data flash data from input file F:\RFbee\RFbee.hex:
    avrdude.exe: input file F:\RFbee\RFbee.hex auto detected as Intel Hex
    avrdude.exe: input file F:\RFbee\RFbee.hex contains 14558 bytes
    avrdude.exe: reading on-chip flash data:

    Reading | ################################################## | 100% 10.93s

    avrdude.exe: verifying ...
    avrdude.exe: verification error, first mismatch at byte 0x3800
                 0x0c != 0x5a
    avrdude.exe: verification error; content mismatch

    avrdude.exe done.  Thank you.

J'ai eu beau essayer toutes les méthodes, essayer d'uploader le .hex avec windows, linux etc... en appuyant sur le bouton reset juste avant de flasher... rien, toujours la même erreur.

Du coup je me demande si c'est le fichier à la base qui est en cause ou s'il y a une procédure de flash particulière que je ne connais pas et qui fait que je perds des données en route.

Voilà, donc si une bonne âme pouvait m'aider, je lui en serai très reconnaissante car pour l'instant je bloque totalement.

Merci beaucoup !

Hello !

Je me réponds à moi-même car j'ai enfin trouvé la solution. Ca pourra servir à d'autres, qui sait !

En fait ce code d'erreur "verification error, first mismatch at byte 0x3800" peut simplement provenir du fait que le firmware est trop gros pour la mémoire flash de l'appareil. Lors de la compilation, il n'y a pas forcément d'erreur car c'est la mémoire totale qui est prise en compte dans la vérification, mais lors du flash, il faut également prendre en compte la taille du bootloader qui est déjà dessus !!

J'ai donc fait le tri dans les librairies qui étaient inutiles pour mon application et je suis passé de 16kb à 12kb. Le flash s'est passé sans encombre et sans avoir à faire de manoeuvres compliquées (du style reset au bon moment etc...).

Comme quoi... des fois on peut chercher des solutions compliquées (bootloader défectueux etc) alors que c'est tout simple.

Bonne continuation !