Hi,
ich moechte mich derzeit ein wenig in PIC32 einarbeiten, bin aber ein
absoluter Linux-Nutzer. Also waere es natuerlich schoen, wenn das auch
alles unter Linux liefe. Nun gibt es einen Flash-Treiber fuer PIC32 fuer
OpenOCD. Nach ein wenig basteln haenge ich nun.
Laut "PIC32MX Flash Programming Specification" ist das Flash in zwei
Baenke aufgeteilt: Das eigentliche Code-Flash liegt bei 0x1D00000 (in
4KB-Bloecken), bei 0x1F000000. Wenn ich nun in definition in der config
schaue, steht da:
flash bank $_FLASHNAME pic32mx 0xbd000000 0 0 0 $_TARGETNAME
flash bank $_FLASHNAME pic32mx 0xbfc00000 0 0 0 $_TARGETNAME
Das ergibt fuer mich nun erstmal keinen Sinn. Dennoch ist sowohl ein
'flash info 0' als auch 'flash info 1' erfolgreich, genauso wie ein
flash 'flash erase_sector 0 0 127', was bei einer groesseren
loeschbreiten auch fehlschlaegt. Daraus laesst sich also scheinbar
folgern, dass die Adressen stimmen.
Wenn ich nun allerdings ein kleines Programm (mit ccompiler4pic32)
kompiliere:
1 | #include <p32xxxx.h>
|
2 | main()
|
3 | {
|
4 | TRISE = 0;
|
5 | PORTE = 0b10101010;
|
6 | while(1);
|
7 | }
|
und mit objcopy ins ihex-Format (s. Anhang) bringe und damit flashe,
bekomme ich von OpenOCD nur:
1 | $ sudo ./src/openocd -f [...] -c 'init' -c 'reset' -c 'halt' -c 'flash write_image erase led_message.hex'
|
2 | [...] (<- hier steht nur jtag-init-zeugs.)
|
3 | auto erase enabled
|
4 | Error: No flash at address 0x9d000000
|
5 | Error: No flash at address 0x9fc00490
|
6 | Error: No flash at address 0x9fc01180
|
7 | Info : Padding image section 3 with 880 bytes
|
8 | wrote 4096 bytes from file /home/ja/led_message.hex in 0.456561s (8.761 kb/s)
|
Was darauf schliessen laesst, dass die Adressen im ihex-File nicht mit
den Adressen von OpenOCD und den Adressen in der 'PIC32MX Flash
Programming Specification' unterscheiden.
Ich bin zugegebenermassen stark verwirrt. Kann mir jemand weiterhelfen,
wie ich aus diesem Wirrwarr etwas ordentliches mache?