Annonce

Pour vous inscrire sur le forum, veuillez faire une demande par mail à maison-du-libre@mdl29.net

#1 16-02-2011 01:42:21

jkx
Administrateur
Inscription : 12-12-2009
Messages : 241

Bootloader

J'ai trois soucis avec mes tests d'optiboot ..

1) l'atmega 168-20PU ne démarre pas à 3.3v, il lui faut au moins 3.8v pour démarrer .. donc impossible de l'utiliser dans l'état avec le connecteur USB-TTL.
    Je vais rematter dans les fuses voir, s'il n'y a pas un truc que j'ai raté

2) optiboot ne supporte pas le 88, d'après ce que j'ai vu l'adresse de boot est pas bonne .. (les fuses non +)

3) Avec le 168, je bloque aussi .. un peu plus loin. En effet, avrdude appelle des IOCTL qui n'existe pas sur les dongles USB (non-ftdi) en passant un -c arduino ...


=> Je vais regarder cette histoire de tension d'alim .. (fuses ?) et tenter d'utiliser un autre bootloader. J'ai déjà utiliser ce genre de chose sur les atmega8, je pense que ca devrait passer ..

Si vous avez des idées, je prends ! smile


A ++

Hors ligne

#2 16-02-2011 23:21:21

vaxvms
MDL
Inscription : 27-12-2009
Messages : 77

Re : Bootloader

Ben moi ca marche, et avec un atmega88 smile

Hors ligne

#3 16-02-2011 23:32:41

vaxvms
MDL
Inscription : 27-12-2009
Messages : 77

Re : Bootloader

Bon, histoire d'etre un peu plus explicite.
1/ Est-ce que tu n'aurais pas le brown-out detector activé par hasard ?

2/ La version du repository le supporte. Je n'ai pas eu beaucoup de correction a faire :
- Ajouter -nostdlib pour passer en dessous des 512octets
- Corriger les fuses (hfuse : DF, lfuse : E2 et efuse : 04)
- Mettre la bonne adresse pour la section .text :  --section-start=.text=0x1e00

Il faut faire attention a un truc. La doc de l'avr parle en word (2octets) alors que les outils gnu avr parlent en octet.  Ca influe sur l'adresse de start du bootloader et sa taille (nous, c'est 256 words)

Bien sur, ne pas oublier d'activer le fuse BOOTRST pour qu'il boote sur le bootloader ...

3/ Pas grave, je les ai aussi et ca fonctionne quand meme. Ca doit correspondre au DTR (il me semble) qui permet de provoquer le reset de l'avr de l'arduino

vaxvms

Hors ligne

#4 17-02-2011 01:19:45

jkx
Administrateur
Inscription : 12-12-2009
Messages : 241

Re : Bootloader

1) c'est bon, le 3.3 est Ok, c t bien un pb de fuse (brown-out ) ..

2) pour le 168, j'ai bien E2 DF 04 (sans section de start, c'est celle par défaut) ..

mais ca bootload toujours pas, il va falloir que je regarde du coté de la LED.. mais j'ai l'impression que le soucis provient de l'USB->TTL car j'ai qques soucis avec.
Notamment si je lance screen /dev/ttyUSB avant d'avoir branché le micro, g bien mon hello world, dans le cas contraire j'ai du garbage .. je dois résetter pour que ca rentre
dans l'ordre...

C'est quoi ta cmd pour flasher via le bootloader (juste pour être sur .. )

Hors ligne

#5 17-02-2011 01:33:04

vaxvms
MDL
Inscription : 27-12-2009
Messages : 77

Re : Bootloader

Ca clignote bien 3 fois au démarrage ?

J'utilise cette commande :
avrdude -v -b 115200 -P /dev/ttyUSB0 -p m88 -c arduino  -U flash:w:main.hex

Hors ligne

#6 17-02-2011 10:44:52

jkx
Administrateur
Inscription : 12-12-2009
Messages : 241

Re : Bootloader

Ok, le même cmd que moi donc, pour la led, je ne sais pas, je ne l'ai pas cablée ...



A ++

Hors ligne

#7 19-02-2011 15:51:11

jkx
Administrateur
Inscription : 12-12-2009
Messages : 241

Re : Bootloader

J'ai remis la main sur mon script qui calcule le taux d'erreur pour une fréquence d'horloge sur un port série ..

  2400 bps => UBR=207.333333333 => 2403.84615385 bps => Error: 0.160256410256 
  4800 bps => UBR=103.166666667 => 4807.69230769 bps => Error: 0.160256410256
  9600 bps => UBR=51.0833333333 => 9615.38461538 bps => Error: 0.160256410256
  14400 bps => UBR=33.7222222222 => 14285.7142857 bps => Error: -0.793650793651
  19200 bps => UBR=25.0416666667 => 19230.7692308 bps => Error: 0.160256410256
  28800 bps => UBR=16.3611111111 => 29411.7647059 bps => Error: 2.12418300654
  38400 bps => UBR=12.0208333333 => 38461.5384615 bps => Error: 0.160256410256
  57600 bps => UBR=7.68055555556 => 55555.5555556 bps => Error: -3.54938271605
  76800 bps => UBR=5.51041666667 => 71428.5714286 bps => Error: -6.99404761905
  115200 bps => UBR=3.34027777778 => 125000.0 bps => Error: 8.50694444444


En clair, 115200 c'est impossible en 8Mhz .. ca fait 8% d'erreur ..
Je viens d'investiguer mes pb de bootloader viennent du port série .. son fonctionnement est trop aléatoire pour avoir un truc stable ..
Je pense que ca vient de l'adaptateur série / usb ..


A ++

Hors ligne

#8 19-02-2011 18:13:02

vaxvms
MDL
Inscription : 27-12-2009
Messages : 77

Re : Bootloader

Alors il faut se limiter à 38400 ?

Hors ligne

#9 19-02-2011 19:16:35

jkx
Administrateur
Inscription : 12-12-2009
Messages : 241

Re : Bootloader

Voui .. c'est une histoire de multiplicateur ..

Hors ligne

#10 19-02-2011 19:18:46

jkx
Administrateur
Inscription : 12-12-2009
Messages : 241

Re : Bootloader

voici le code (python)

br = [2400,4800,9600,14400,19200,28800,38400,57600,76800,115200,230400,250000]

f =  8000000.0

print f
for b in br:
    ubr = f / ( 16 * b) - 1
    r_ubr = int(round(ubr)) 
    b_dest = f  / (  16 * (r_ubr + 1))
    error = ( b_dest / b - 1 ) * 100.0
    print "%s bps => UBR=%s => %s bps => Error: %s " % (b,ubr,b_dest,error)

A ++

Hors ligne

#11 20-03-2011 17:55:54

vaxvms
MDL
Inscription : 27-12-2009
Messages : 77

Re : Bootloader

J'arrive à avoir un truc qui marchotte en 38400, avec le programme flashé qui utilise la même vitesse.

Le flash se passe bien et j'arrive à reflasher. Si on est pas a la même vitesse dans le bootloader et le programme, on n'arrive pas a accéder au bootloader.

Il y a quand même pas mal de cas ou dès que avrdude se connecte, il lance le programme flashé ...

Hors ligne

Pied de page des forums