Pages: 1 [2] 3 4 ... 7   Go Down
Author Topic: Mettre un bootloader sur un atmega168 avec un Mac  (Read 4696 times)
0 Members and 1 Guest are viewing this topic.
Geneva
Online Online
Faraday Member
**
Karma: 30
Posts: 3227
Yoplait... le pt'it suisse
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

J'ai fait mon adaptateur pour l'atmega168 en CMS :




Une broche en retrait :



Branchée sur l'Arduino :



J'ai essayé la méthode boot-cloner, mais ça ne fonctionne pas  :-?

j'ai remarqué que l'on pouvait utiliser le serial monitor pendant le boot-clonage, lors de l'échec, le moniteur me renvoi :

Quote
Program Enable ERROR (result 1)

J'ai un peu cherché dans le sketch "arduino_boot_cloner.pde", mais pour l'instant je ne trouve pas ce qui cloche.
« Last Edit: November 16, 2008, 10:58:03 am by jfs » Logged

MacBook intel core 2 duo  os X snow Leopard 10.6<br/> eMac PPc G4  os X Leopard 10.5<br/>powerbook G4 os X Leopard 10.5
imac PPC G3 os X Pa

FR
Offline Offline
Full Member
***
Karma: 0
Posts: 105
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

je n'ai pas d'expérience sur le bootcloner...
En tous les cas belle réalisation.

Nicolas
Logged

Geneva
Online Online
Faraday Member
**
Karma: 30
Posts: 3227
Yoplait... le pt'it suisse
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

J'ai enfin réussi à faire tourner le sketch jusqu'au bout, mais apparemment le boot loader n'a pas atteint la cible.

J'aimerais essayer la méthode bit bang, j'ai déjà préparer mes prises, par contre je ne sais pas comment faire avec ma console.
Logged

MacBook intel core 2 duo  os X snow Leopard 10.6<br/> eMac PPc G4  os X Leopard 10.5<br/>powerbook G4 os X Leopard 10.5
imac PPC G3 os X Pa

FR
Offline Offline
Full Member
***
Karma: 0
Posts: 105
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

La je maitrise plus  smiley
Perso j'étais parti de cet article http://tuxgraphics.org/electronics/200705/article07052.shtml

En résumé guido socher propose de faire un programmeur d'avr mais pour résoudre le pb de la poule et de l'oeuf (= comment programmer l'avr qui va servir de programmateur sans programmateur) il utilise le bitbang de la puce ftdi (très lent mais un fois que le bootloader est dessus = OK).

Pour cela il modifie uisp (un équivalent de avrdude qui permet de flasher un avr) pour qu'il puisse utiliser les pins bit bang du FTDI 232R. Il faut faire qq modif de ce code la  http://tuxgraphics.org/common/src2/article07052/uisp-20050207-with-usb-bbpg-patch.tar.gz
puis le compiler.

Essaye de compiler ce code ci dessus sous mac et après je t'indiquerai la suite si OK (je sais pas si c'est compilable sous mac).
Logged

Geneva
Online Online
Faraday Member
**
Karma: 30
Posts: 3227
Yoplait... le pt'it suisse
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Ok, je vais essayer de faire ça...  smiley
Logged

MacBook intel core 2 duo  os X snow Leopard 10.6<br/> eMac PPc G4  os X Leopard 10.5<br/>powerbook G4 os X Leopard 10.5
imac PPC G3 os X Pa

Geneva
Online Online
Faraday Member
**
Karma: 30
Posts: 3227
Yoplait... le pt'it suisse
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Je suis tombé sur ce site

et  sur un autre

encore un autre avec un fil de discussion sur un  forum

Je ne sais pas si c'est adéquat.
« Last Edit: November 16, 2008, 10:57:21 am by jfs » Logged

MacBook intel core 2 duo  os X snow Leopard 10.6<br/> eMac PPc G4  os X Leopard 10.5<br/>powerbook G4 os X Leopard 10.5
imac PPC G3 os X Pa

Geneva
Online Online
Faraday Member
**
Karma: 30
Posts: 3227
Yoplait... le pt'it suisse
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

J'ai installé MacPack

Ce pack contient ça :

    *  gcc 3.4.6
    * gcc 4.2.2
    * GNU binutils 2.18
    * avr-libc 1.4.7
    * avrdude 5.5
    * libusb 0.1.12
    * gdb 6.5
    * avarice 2.7
    * simulavr 0.1.2.2
    * GNU make 3.81

Maintenant, je fais quoi ?  smiley-wink
Logged

MacBook intel core 2 duo  os X snow Leopard 10.6<br/> eMac PPc G4  os X Leopard 10.5<br/>powerbook G4 os X Leopard 10.5
imac PPC G3 os X Pa

Geneva
Online Online
Faraday Member
**
Karma: 30
Posts: 3227
Yoplait... le pt'it suisse
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

En ouvrant une console, et en mettant un code du genre :

Quote
avrdude -p m168 -c stk500 -P /dev/tty.usbserial-A1001N2Y -i5 .....

J'arrive a avoir une liaison avec ma plaque.

Maintenant il me reste à trouver comment mettre mon bootloader .
« Last Edit: November 16, 2008, 02:14:26 pm by jfs » Logged

MacBook intel core 2 duo  os X snow Leopard 10.6<br/> eMac PPc G4  os X Leopard 10.5<br/>powerbook G4 os X Leopard 10.5
imac PPC G3 os X Pa

FR
Offline Offline
Full Member
***
Karma: 0
Posts: 105
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

en fait ni la distribution de uisp ni celle de avrdude ne fonctionne d'office avec le mode bit bang.
Il te faut donc :
- récupérer le source (facile)
- le modifier en appliquant un patch (facile)
- le compiler (et la c'est pas forcément une partie de plaisir).

c'est déja bon tu arrives a accéder a ta plaque en ligne de commande mais il te reste maintenant a compiler un avrdude pour avoir une commande du genre (avrdude -c ftbb)

Nicolas
Logged

Geneva
Online Online
Faraday Member
**
Karma: 30
Posts: 3227
Yoplait... le pt'it suisse
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Donc si j'ai bien compris il faut que je trouve le code source de Avrdude que j'ai installer, que j'y rajoute un patch et que je recompile le tout ?

La commande que tu dis serait celle qui permet de faire un bit bang ?


Est-ce que ça peux être un fichier qui s'apelle ATmegaBOOT_168.c ?

Je sens que je vais encore y passé quelques soirées   :smiley
« Last Edit: November 16, 2008, 05:46:49 pm by jfs » Logged

MacBook intel core 2 duo  os X snow Leopard 10.6<br/> eMac PPc G4  os X Leopard 10.5<br/>powerbook G4 os X Leopard 10.5
imac PPC G3 os X Pa

FR
Offline Offline
Full Member
***
Karma: 0
Posts: 105
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

non ce fichier est le code source du bootloader qui une fois compilé est a  flasher sur l'atmega a l'aide du programmer que tu es en train de construire.

le patch se trouve par la je pense http://savannah.nongnu.org/patch/?4330 mais ca doit aller avec une version d'avrdude particuliere

Nicolas

Logged

Geneva
Online Online
Faraday Member
**
Karma: 30
Posts: 3227
Yoplait... le pt'it suisse
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Je dois télécharger les 5 fichiers joints ?
Logged

MacBook intel core 2 duo  os X snow Leopard 10.6<br/> eMac PPc G4  os X Leopard 10.5<br/>powerbook G4 os X Leopard 10.5
imac PPC G3 os X Pa

Geneva
Online Online
Faraday Member
**
Karma: 30
Posts: 3227
Yoplait... le pt'it suisse
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Dans la discussion qui se trouve sur la page que tu m'as indiquée Thomas Fischl parle d'un test qu'il aurait effectué avec Mac osx.

Ceci mis à part j'ai downloadé les 5 fichiers, il me semblent qu'ils sont complémentaires.

Est ce que la méthode bitbang fait passer le bootloader bit par bit ?
si c'est le cas cela doit prendre un certain temps à faire un "burn".

Quote
mais ca doit aller avec une version d'avrdude particuliere

Si je me réfère aux dates sur cette page la version avrdude pour ce patch serait la 5.2 ou la 5.3.1  :-?
« Last Edit: November 17, 2008, 01:48:29 pm by jfs » Logged

MacBook intel core 2 duo  os X snow Leopard 10.6<br/> eMac PPc G4  os X Leopard 10.5<br/>powerbook G4 os X Leopard 10.5
imac PPC G3 os X Pa

Geneva
Online Online
Faraday Member
**
Karma: 30
Posts: 3227
Yoplait... le pt'it suisse
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

J'ai trouvé un fichier avrdude.conf avec ça dedans :

Code:
...

#
#   programmer
#       id       = <id1> [, <id2> [, <id3>] ...] ;  # <idN> are quoted strings
#       desc     = <description> ;                  # quoted string
#       type     = par | stk500 | stk500v2 | stk500pp | stk500hvsp | stk500generic |
#                  avr910 | butterfly | usbasp |
#                  jtagmki | jtagmkii | jtagmkii_isp | jtagmkii_dw |
#                  dragon_dw | dragon_jtag | dragon_isp | dragon_pp |
#                  dragon_hvsp; # programmer type
#       baudrate = <num> ;                          # baudrate for avr910-programmer
#       vcc      = <num1> [, <num2> ... ] ;         # pin number(s)
#       reset    = <num> ;                          # pin number
#       sck      = <num> ;                          # pin number
#       mosi     = <num> ;                          # pin number
#       miso     = <num> ;                          # pin number
#       errled   = <num> ;                          # pin number
#       rdyled   = <num> ;                          # pin number
#       pgmled   = <num> ;                          # pin number
#       vfyled   = <num> ;                          # pin number

...

Qu'est-ce que c'est ce fichier?


Dans le même fichier j'ai trouvé ça :

Code:
#------------------------------------------------------------
# ATmega168
#------------------------------------------------------------

part
    id              = "m168";
    desc            = "ATMEGA168";
     has_debugwire = yes;
     flash_instr   = 0xB6, 0x01, 0x11;
     eeprom_instr  = 0xBD, 0xF2, 0xBD, 0xE1, 0xBB, 0xCF, 0xB4, 0x00,
                   0xBE, 0x01, 0xB6, 0x01, 0xBC, 0x00, 0xBB, 0xBF,
                   0x99, 0xF9, 0xBB, 0xAF;
    stk500_devcode  = 0x86;
    # avr910_devcode = 0x;
    signature       = 0x1e 0x94 0x06;
    pagel           = 0xd7;
    bs2             = 0xc2;
    chip_erase_delay = 9000;
    pgm_enable       = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1",
                       "x x x x x x x x x x x x x x x x";

    chip_erase       = "1 0 1 0 1 1 0 0 1 0 0 x x x x x",
                       "x x x x x x x x x x x x x x x x";

    timeout         = 200;
    stabdelay       = 100;
    cmdexedelay     = 25;
    synchloops      = 32;
    bytedelay       = 0;
    pollindex       = 3;
    pollvalue       = 0x53;
    predelay        = 1;
    postdelay       = 1;
    pollmethod      = 1;

    pp_controlstack     =
      0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F,
      0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F,
      0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B,
      0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00;
    hventerstabdelay    = 100;
    progmodedelay       = 0;
    latchcycles         = 5;
    togglevtg           = 1;
    poweroffdelay       = 15;
    resetdelayms        = 1;
    resetdelayus        = 0;
    hvleavestabdelay    = 15;
    resetdelay          = 15;
    chiperasepulsewidth = 0;
    chiperasepolltimeout = 10;
    programfusepulsewidth = 0;
    programfusepolltimeout = 5;
    programlockpulsewidth = 0;
    programlockpolltimeout = 5;

    memory "eeprom"
        paged           = no;
        page_size       = 4;
        size            = 512;
        min_write_delay = 3600;
        max_write_delay = 3600;
        readback_p1     = 0xff;
        readback_p2     = 0xff;
        read            = " 1 0 1 0 0 0 0 0",
                          " 0 0 0 x x x x a8",
                          " a7 a6 a5 a4 a3 a2 a1 a0",
                          " o o o o o o o o";
    
        write           = " 1 1 0 0 0 0 0 0",
                          " 0 0 0 x x x x a8",
                          " a7 a6 a5 a4 a3 a2 a1 a0",
                          " i i i i i i i i";

      loadpage_lo      = "  1   1   0   0      0   0   0   1",
                    "  0   0   0   0      0   0   0   0",
                    "  0   0   0   0      0   0  a1  a0",
                    "  i   i   i   i      i   i   i   i";

      writepage      = "  1   1   0   0      0   0   1   0",
                    "  0   0   x   x      x   x   x  a8",
                    " a7  a6  a5  a4     a3  a2   0   0",
                    "  x   x   x   x      x   x   x   x";

      mode            = 0x41;
      delay            = 5;
      blocksize      = 4;
      readsize      = 256;
        ;

    memory "flash"
        paged           = yes;
        size            = 16384;
        page_size       = 128;
        num_pages       = 128;
        min_write_delay = 4500;
        max_write_delay = 4500;
        readback_p1     = 0xff;
        readback_p2     = 0xff;
        read_lo         = " 0 0 1 0 0 0 0 0",
                          " 0 0 0 a12 a11 a10 a9 a8",
                          " a7 a6 a5 a4 a3 a2 a1 a0",
                          " o o o o o o o o";
        
        read_hi          = " 0 0 1 0 1 0 0 0",
                           " 0 0 0 a12 a11 a10 a9 a8",
                           " a7 a6 a5 a4 a3 a2 a1 a0",
                           " o o o o o o o o";
        
        loadpage_lo     = " 0 1 0 0 0 0 0 0",
                          " 0 0 0 x x x x x",
                          " x x a5 a4 a3 a2 a1 a0",
                          " i i i i i i i i";
        
        loadpage_hi     = " 0 1 0 0 1 0 0 0",
                          " 0 0 0 x x x x x",
                          " x x a5 a4 a3 a2 a1 a0",
                          " i i i i i i i i";
        
        writepage       = " 0 1 0 0 1 1 0 0",
                          " 0 0 0 a12 a11 a10 a9 a8",
                          " a7 a6 x x x x x x",
                          " x x x x x x x x";

        mode        = 0x41;
        delay       = 6;
        blocksize   = 128;
        readsize    = 256;

        ;
        
    memory "lfuse"
        size            = 1;
        min_write_delay = 4500;
        max_write_delay = 4500;
        read            = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0",
                          "x x x x x x x x o o o o o o o o";
        
        write           = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0",
                          "x x x x x x x x i i i i i i i i";
        ;
    
    memory "hfuse"
        size            = 1;
        min_write_delay = 4500;
        max_write_delay = 4500;
        read            = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0",
                          "x x x x x x x x o o o o o o o o";
        
        write           = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0",
                          "x x x x x x x x i i i i i i i i";
        ;
    
    memory "efuse"
        size            = 1;
        min_write_delay = 4500;
        max_write_delay = 4500;
        read            = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0",
                          "x x x x x x x x x x x x x o o o";
        
        write           = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0",
                          "x x x x x x x x x x x x x i i i";
        ;
    
    memory "lock"
        size            = 1;
        min_write_delay = 4500;
        max_write_delay = 4500;
        read            = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0",
                          "x x x x x x x x x x o o o o o o";
        
        write           = "1 0 1 0 1 1 0 0 1 1 1 x x x x x",
                          "x x x x x x x x 1 1 i i i i i i";
        ;
    
    memory "calibration"
        size            = 1;
        read            = "0 0 1 1 1 0 0 0 0 0 0 x x x x x",
                          "0 0 0 0 0 0 0 0 o o o o o o o o";
        ;
    
    memory "signature"
        size            = 3;
        read            = "0 0 1 1 0 0 0 0 0 0 0 x x x x x",
                          "x x x x x x a1 a0 o o o o o o o o";
        ;
;

J'ai compris que ça se rapporte au Mega168 (c'était pas dur à deviner.. ;D) mais j'aimerais savoir ce que cela indique.

Pour le code source que je dois patcher où est ce qu'il devrait se trouver ?
« Last Edit: November 17, 2008, 04:29:26 pm by jfs » Logged

MacBook intel core 2 duo  os X snow Leopard 10.6<br/> eMac PPc G4  os X Leopard 10.5<br/>powerbook G4 os X Leopard 10.5
imac PPC G3 os X Pa

Geneva
Online Online
Faraday Member
**
Karma: 30
Posts: 3227
Yoplait... le pt'it suisse
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

En cherchant le code source d'avrdude 5.5 pour osx , je suis tombé sur cette page.

Tout en bas il y a ça :

Code:
What's New in This Release: [ read full changelog ]

· Add support for the USBtinyISP programmer (patch #6233)
· Add support for the C2N232I serial bitbang programmer (patch #6121)
· Bugfixes

Cela voudrait-il dire que la version 5.5 est déjà patchée bitbang ?




Dans ce  topic "stk500" est remplacé par "dasa".

Avec stk500 j'avais quelque chose genre :

Code:
programmer is not responding : time out

Avec dasa, j'ai ça :

Code:
avrdude -p m168 -c dasa -P /dev/tty.usbserial-A1001N2Y -F

avrdude: AVR device not responding
avrdude: initialization failed, rc=-1
avrdude: AVR device initialized and ready to accept instructions

Reading | ################################################## | 100% 0.32s

avrdude: Device signature = 0x000000
avrdude: Yikes!  Invalid device signature.
avrdude: Expected signature for ATMEGA168 is 1E 94 06

avrdude: safemode: Fuses OK

avrdude done.  Thank you.
Logged

MacBook intel core 2 duo  os X snow Leopard 10.6<br/> eMac PPc G4  os X Leopard 10.5<br/>powerbook G4 os X Leopard 10.5
imac PPC G3 os X Pa

Pages: 1 [2] 3 4 ... 7   Go Up
Jump to: