Python Script: LPC810 flashen

OP #3466823
Lesenswert?

Hi,

Anbei ein Python Script um den LPC810 über die serielle Schnittstelle 
bzw einen USB Adapter zu flashen. Die ursprüngliche Version habe ich bei 
http://midibel.com gefunden und noch ein wenig erweitert.

Vielleicht kann es ja der ein oder andere brauchen.....

Axel
Angehängte Dateien:
OP #3583403
Lesenswert?

Hallo,

es gibt eine neue Version, mit dem Parameter "-r" wird jetzt am Ende ein 
Reset ausgeführt. Damit wird dann nach dem Flashen gleich das neue 
Programmm gestartet und das lästiger drücken des Reset Tasters entfällt.
1
$ make && flushmagic.py -p /dev/ttyUSB1 -r blink.bin && picocom -b 115200 /dev/ttyUSB1

Zusammen mit einem UART Interrupt handler, der ein "r" für Reset und ein 
"i" für ISP-Reset versteht , lässt sich dann jegliche Interaktion mit 
der Platine vermeiden (zumindest solange das Programm läuft):
1
typedef void (*IAP)(uint32_t*, uint32_t*);
2
#define IAP_ENTRY ((IAP)0x1fff1ff1)
3

4
void intHdl_UART0(void) 
5
{
6
  if (0 != (LPC8xx_UART->stat & UART_STAT_RXRDY))
7
  {
8
    char c = (char)(LPC8xx_UART->rxDat)
9
    switch (c)
10
    {
11
      case 'r': // reset
12
        LPC8xx_SCS->AIRCR = 0x05fa0004;
13
        for(;;) { } // Loop forever as fail safe option
14
        break;
15

16
      case 'i': // reset into ISP
17
        { uint32_t cmd = 57;
18
          IAP_ENTRY( &cmd, NULL); }
19
       break;
20
    }
21
  }
22
}
Angehängte Dateien:
Gast #3585049
Lesenswert?

Hi,

RTS und DTR? Kann der LPC810 das überhaupt <g>? Seit dem FTDI/USB ist 
doch nur noch RX und TX interessant. Und DTR uns RTS kosten 2 PINs mehr 
von den 8. Das ist echt teuer dann. So kann man wenigstens den Reset Pin 
auch nutzen...

Peter
OP #3585616
Lesenswert?

Hallo,

also lt. LPC81x User Manual Kapitel:

* Der LPC81x kennt kein explizites DTR, die Switch Matrix hat neben 
U0_TXD_O, U0_RXD_I nur noch U0_RTS_O und U0_CTS_I
* Im Kapitel "22.3 Pin description" steht nur, dass PIO0_0/U0_RXD und 
PIO0_4/U0_TXD benutzt wird vom Bootloader.

Marc, hast du da noch mehr Doku oder gar den Bootloader mal 
disassembliert?
Unter http://midibel.com/bootrom-4.13.S ist ein dump zu finden, aber so 
ganz ohne Symbole ist das schon hart und ich hab irgendwann die Lust 
verloren...

Axel
OP #3585691
Lesenswert?

Ahh...klick...das mit dem DTR -> /RESET, RTS -> /BOOT ist eine gute 
Idee. Werde des das mal notieren und ggf als weitere Option in das 
Script einbauen. Mir sind nur leider die PIN ausgegangen, so dass ich 
den Reset als GPIO brauche. Muss mir jetzt doch mal ein paar LPC812 
besorgen.

Ich hab bisher nur die LPC10 DIP8 da zum testen, es sollte aber mit den 
anderen auch gehen, da das Protokoll gleich ist. Das Script hat auch 
keinen Test auf die Flash-Grösse drinnen, sollte also alles nehmen. In 
getPartName() habe ich nur die ID from LPC810 drinnen, die anderen sind 
auskommentiert bis die jemand verifiziert hat.

Axel
Gast #3585841
Lesenswert?

Hi Axel,

bei mir gibts Probleme in Zeile 108. Ich hab da mal aus dem Bauch heraus 
Klammern rum gemacht, scheint dann OK zu sein.

Aber wo bekomm ich das Modul 'serial' her? Ich hab wohl eine 
spartanische Installation...

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren