Charger un programme à partir d'une carte SD

barbudor: J'espérais aussi qu'une âme bienveillante jète un coup d'oeil a ce que j'ai fait pour confirmer...

Si ça peut aider demain aprés-midi je peut regarder un peu comment modifier le makefile/code.

D'avance merci à tous JP

@bricopin
Quelle broche as tu choisit sur ta Mega pour le chip-select de la carte SD ?

Ci joint les modifs effectuées

  • winmake.cmd : fichier de commande qui remplace le makefile. Il permet de construire le bootloader pour ATmega328p ou pour ATmega2560. La broche a utiliser comme chipselect pour la carte SD doit être précisée dans le fichier CMD par son port (A, B, C, …) et le numéro de bit dans le port.
    par exemple pour ATmega328p j’utilise la pin 4 qui correspond au port 4, pin 4. Pour Mega2560 broche 49 (port L pin 0).
  • stk500v1 : ajouter le "defined(ATmega2560) pour que ca compile pour ATmega2560
  • board-arduino.h : idem

création d’un board.txt qui devrait correspondre

Dans ton répertoire sketches, créer un sous répertoire hardware (obligatoire) et dézipper dedans le fichier ci-dessous
Il faut modifier winmake.cmd pour définir la bonne broche CS
Modifier aussi pour le chemin à ton environnement Arduino et pour le programmateur que tu vas utiliser
Dans une fenêtre DOS :

  • lancer “winmake” pour compiler le bootloader
  • lancer “winmake flash” pour flasher le bootloader

Ensuite pour flasher tes sketches depuis l’IDE, utiliser la carte “2boots ATmega2560”

2boots.zip (47.5 KB)

Bonjour Barbudor Avant de faire les essais, je voudrais être sur de tout comprendre.

Quelle broche as tu choisit sur ta Mega pour le chip-select de la carte SD ?

La broche pour le chip-select est la broche 53, donc quelle sont les valeurs à mettre dans le winmake.cmd pour le port et pour le N° de bit (et comment les calcules tu ?)

  • stk500v1 : ajouter le "defined(ATmega2560) pour que ca compile pour ATmega2560
  • board-arduino.h : idem

La, j'ai besoin que tu m'explique ce que je dois faire.

Modifier aussi pour le chemin à ton environnement Arduino et pour le programmateur que tu vas utiliser

Ici également

Dans une fenêtre DOS : - lancer "winmake" pour compiler le bootloader - lancer "winmake flash" pour flasher le bootloader

Que font ces deux commandes. Et enfin un grand merci

bricopin: Avant de faire les essais, je voudrais être sur de tout comprendre.

Quelle broche as tu choisit sur ta Mega pour le chip-select de la carte SD ?

La broche pour le chip-select est la broche 53, donc quelle sont les valeurs à mettre dans le winmake.cmd pour le port et pour le N° de bit (et comment les calcules tu ?)

Voir pin_arduino.h dans le bon répertoire. Pour Mega c'est : C:\arduino\hardware\arduino\variants\mega

const uint8_t PROGMEM digital_pin_to_port_PGM[] = {
    // PORTLIST     
    // -------------------------------------------      
....
    _BV( 0 )    , // PB 0 ** 53 ** SPI_SS   
...

Donc Port B, bit 0 soit:

set MMCCS_PORT=B
set MMCCS_BIT=0
  • stk500v1 : ajouter le "defined(ATmega2560) pour que ca compile pour ATmega2560
  • board-arduino.h : idem

La, j'ai besoin que tu m'explique ce que je dois faire.

Rien. J'explique ce que j'ai fait. J'aurais du employé le participe passé au lieu de l'infinitif ;)

Modifier aussi pour le chemin à ton environnement Arduino et pour le programmateur que tu vas utiliser

Ici également

Changer la ligne :

set ARDUINO=D:\Projets\tools\arduino

pour pointer vers le répertoire de base de ton environnement Arduino Et changer aussi

set ISPTOOL=usbasp
set ISPPORT=usb
set ISPSPEED=-b 115200

Pour spécifier quel programmateur tu va utiliser

Dans une fenêtre DOS : - lancer "winmake" pour compiler le bootloader - lancer "winmake flash" pour flasher le bootloader

Que font ces deux commandes.

Elle font ce que je dit : l'une compile le bootloader avec les bonnes commandes et génère le fichier HEX du bootloader L'autre flashe le bootloader dans le chip.

Bon, j’ai fais toute les modifs.
Mais lorsque je lance la commande “winmake” dans une fenêtre DOS, le résultat ne semble pas concluant.
Il me crée bien un répertoire Build, mais celui-ci est vide.
Est ce que j’ai bien compris la modif suivante ?

Changer la ligne :
Code:
set ARDUINO=D:\Projets\tools\arduino
pour pointer vers le répertoire de base de ton environnement Arduino

Je dois pointer vers le répertoire contenant arduin.exe ou bien vers le répertoire contenant mes fichiers de travail (ino) ?
Je joins la copie de le fenêtre DOS

Erreur winmake.txt (2.22 KB)

Apparemment tu as un espace dans le nom Essaye entre " "

set ARDUINO="C:\W-Arduino\Arduino 1.0.3"

OK, pour ça c'est bon, j'ai le repretoire Build et les fichier .elf et .hex Maintenant, la commande "winmake flash" me retourne également un message d'erreur

D:\A-Donnees\Projet verins élec\Developpements des applis\Applications\Arduino\E ssai SD2Boots\NIVELUP\hardware\2boots\bootloaders>"winmake flash"

'"winmake flash"' n'est pas reconnu en tant que commande interne ou externe, un programme exécutable ou un fichier de commandes.

sans les guillemets

OK, la commande fonctionne, mais il y à des erreur

D:\A-Donnees\Projet verins élec\Developpements des applis\Applications\Arduino
Essai SD2Boots\NIVELUP\hardware\2boots\bootloaders>winmake flash

D:\A-Donnees\Projet verins élec\Developpements des applis\Applications\Arduino
Essai SD2Boots\NIVELUP\hardware\2boots\bootloaders>C:\W-Arduino\Arduino_1.0.3\har
dware\tools\avr\bin\avrdude -c usbasp -p atmega2560 -P usb -b 9600 -e -u -U lo
ck:w:0x3f:m -U efuse:w:0xFD:m -U hfuse:w:0xD8:m -U lfuse:w:0xFF:m
avrdude: can’t open config file “”: No such file or directory
avrdude: error reading system wide configuration file “”

D:\A-Donnees\Projet verins élec\Developpements des applis\Applications\Arduino
Essai SD2Boots\NIVELUP\hardware\2boots\bootloaders>sleep 3
‘sleep’ n’est pas reconnu en tant que commande interne
ou externe, un programme exécutable ou un fichier de commandes.

D:\A-Donnees\Projet verins élec\Developpements des applis\Applications\Arduino
Essai SD2Boots\NIVELUP\hardware\2boots\bootloaders>C:\W-Arduino\Arduino_1.0.3\har
dware\tools\avr\bin\avrdude -c usbasp -p atmega2560 -P usb -b 9600 -U flash:w:
build\2boots-arduino-atmega2560-16000000L-PB0.hex -U lock:w:0x0f:m
avrdude: can’t open config file “”: No such file or directory
avrdude: error reading system wide configuration file “”

D:\A-Donnees\Projet verins élec\Developpements des applis\Applications\Arduino
Essai SD2Boots\NIVELUP\hardware\2boots\bootloaders>goto end

D:\A-Donnees\Projet verins élec\Developpements des applis\Applications\Arduino
Essai SD2Boots\NIVELUP\hardware\2boots\bootloaders>

ok. Mon environnement est un peu bricolé et différent d’un environnement Arduino standard

Nouveau fichier winmake.cmd

winmake.cmd (2.24 KB)

La c’est OK, ça à bien flashé.
Maintenant, peut tu me dire confirmer ce qu’il me reste à faire afin d’éviter toute bévues.
1 - Je charge le sketch “NameBoardSketch.ino” sur la méga pour inscrire le nom de mon sketch sur l’Eeprom.
2 - Je copie mon sketch .hex sur la carte SD
3 - je fais les essais

Commence par vérifier que ta Mega répond bien et charge Blink N'oublie pas qu'il faut que tu utilises la carte "2boots Atmega2560" et pas la carte standard Arduino 2560

Si ca c'est ok, tu peux enchainer les étapes suivantes N'oublie pas que le fichier HEX sur lacarte SD doit s'appeller du nom que tu auras rentré dans NameBoardSketch

Commence par vérifier que ta Mega répond bien et charge Blink

Blink ne réussit pas à se charger (mais se charge normalement sur une autre Mega non modifiée)

Taille binaire du croquis : 1 632 octets (d'un max de 258 048 octets)
avrdude: stk500v2_ReceiveMessage(): timeout
avrdude: stk500v2_ReceiveMessage(): timeout
avrdude: stk500v2_ReceiveMessage(): timeout
avrdude: stk500v2_ReceiveMessage(): timeout
avrdude: stk500v2_ReceiveMessage(): timeout
avrdude: stk500v2_ReceiveMessage(): timeout
avrdude: stk500v2_getsync(): timeout communicating with programmer

Tu utilises bien dans l’IDE le type de carte “2boots ATmega2650” ?
Si c’est bien le cas essaye en remplaçant le board.txt avec celui-ci dessous

boards.txt (1.33 KB)

Elle n’apparait pas dans la liste, j’ai du loupé quelques chose

Bon, c'est réparé, je n'avais pas capté qu'il fallait que boards.txt soit dan le répertoire ou il y avait arduino.exe je l'avais laissé dans le répertoire contenant mes fichiers de travail. Je continue donc la procédure.

Tu devrais avoir dezippé ce que je t'ai donné dans le répertoire de tes sketches (celui qui est indiqué en haut dans la boite de dialogue Fichiers -> Préférences)

Ainsi

?\
 +-- hardware\
 |      +-- 2boots\
 |             +-- boards.txt
 |             +-- bootloaders\
 |                    ++-- ... tous les autres fichiers du zip
 +-- ... tes répertoires de sketches

Non, pas dans le répertoire où il y a arduino.exe Relis le post juste ci dessus On ne modifie rien dans l'arboresence Arduino, rien de rien On se place dans le répertoire des sketches depuis le début

OK, tout est rentré dans l’ordre; je continue…

N’oublie pas que le fichier HEX sur lacarte SD doit s’appeler du nom que tu auras rentré dans NameBoardSketch

Le fichier que je dois copier sur la carte SD se nomme NIVELUP.cpp.hex, est ce que je dois le renommer en NIVELUP.hex ou bien le laisser en l’état