Dzień dobry,
Nie mogę sobie poradzić z zaprogramowaniem stm32f4 na płytce discovery. Do programowanie używam wbudowanego st-lika. Mój system to Ubuntu 10.04.
Program jaki chciałbym wgrać to przykład ze strony Freddiego Chopina pod tą właśnie płytkę. Jedyne co zmieniłem to w Makefile'u toolchain na arm-linux-gnueabi (linaro). Ogólnie program się niby kompiluje bez żadnych błędów.
Skompilowałem sobie openOCD w wersji 0.6.1
Ogólnie mogę się połączyć z prockiem i mogę resetować i haltować i tak dalej. Problemy zaczęły się jak chciałem wgrać ten przykładowy program. Po kolei mniej więcej co robię:
1.make w folderze projektu
2.Przechodzę do folderu cd ./out
3.Odpalam openOCD poleceniem "openocd -f ~/Pulpit/stm32/openocd-0.6.1/tcl/interface/stlink-v2.cfg -f ~/Pulpit/stm32/openocd-0.6.1/tcl/target/stm32f4x_stlink.cfg "
4. Łączę się przez telnet w drugim terminalu poleceniem: "telnet localhost 4444"
5.Wpisuję "reset halt"
6.Wpisuję "flash probe 0"
7.Wpisuję "flash write_image erase unlock stm32f4_blink_led.bin 0x08000000"
8. Tutaj się zaczynają dziać złe rzeczy. W najlepszej sytuacji zgłasza, że zaprogramował, ale po "reset run" nic nie mruga. Niby status po "poll" jest "running", ale nic się nie dzieje. Czasem po erase się zawiesza openOCD to znaczy diodka od st-linka sobie mruga zielono, czerwono, ale nic się nie dzieje.To znaczy nie zgłasza się czy wgrał czy nie po prostu wygląda to jakby się zawiesił. Czasem wyskakują jakieś błędy, że nie może pisać do flash (ale to było z tego co pamiętam tylko raz).
Zrzut tego co wypluje openOCD przy najlepszym razie:
Ogólnie już siedzę nad tym kolejny dzień i nie daje mi to spokoju. Pewnie robię jakiś dziecinny błąd. Przeglądałem podobne tematy, ale takiego, żeby się procek programował i program nie działał (niby działał) nie znalazłem.
W załączniku dodaje plik wygenerowany przez make.
Proszę o jakieś nakierowanie co mogę robić źle, z góry dziękuję za wszelką pomoc. Oczywiście jestem początkujący w tematyce ARM, wcześniej programowałem trochę w AVR, ale to w porównaniu do ARM są zabaweczki...
Nie mogę sobie poradzić z zaprogramowaniem stm32f4 na płytce discovery. Do programowanie używam wbudowanego st-lika. Mój system to Ubuntu 10.04.
Program jaki chciałbym wgrać to przykład ze strony Freddiego Chopina pod tą właśnie płytkę. Jedyne co zmieniłem to w Makefile'u toolchain na arm-linux-gnueabi (linaro). Ogólnie program się niby kompiluje bez żadnych błędów.
Size of modules:
arm-linux-gnueabi-size -B -t --common out/startup.o out/gpio.o out/main.o out/vectors.o
text data bss dec hex filename
104 0 0 104 68 out/startup.o
404 0 0 404 194 out/gpio.o
700 0 0 700 2bc out/main.o
408 0 0 408 198 out/vectors.o
1616 0 0 1616 650 (TOTALS)
Size of target .elf file:
arm-linux-gnueabi-size -B out/stm32f4_blink_led.elf
text data bss dec hex filename
1777 148 1028 2953 b89 out/stm32f4_blink_led.elf
Skompilowałem sobie openOCD w wersji 0.6.1
openocd --version
Open On-Chip Debugger 0.6.1 (2013-02-19-00:57)
Licensed under GNU GPL v2
For bug reports, read
http://openocd.sourceforge.net/doc/doxygen/bugs.html
Ogólnie mogę się połączyć z prockiem i mogę resetować i haltować i tak dalej. Problemy zaczęły się jak chciałem wgrać ten przykładowy program. Po kolei mniej więcej co robię:
1.make w folderze projektu
2.Przechodzę do folderu cd ./out
3.Odpalam openOCD poleceniem "openocd -f ~/Pulpit/stm32/openocd-0.6.1/tcl/interface/stlink-v2.cfg -f ~/Pulpit/stm32/openocd-0.6.1/tcl/target/stm32f4x_stlink.cfg "
4. Łączę się przez telnet w drugim terminalu poleceniem: "telnet localhost 4444"
5.Wpisuję "reset halt"
6.Wpisuję "flash probe 0"
7.Wpisuję "flash write_image erase unlock stm32f4_blink_led.bin 0x08000000"
8. Tutaj się zaczynają dziać złe rzeczy. W najlepszej sytuacji zgłasza, że zaprogramował, ale po "reset run" nic nie mruga. Niby status po "poll" jest "running", ale nic się nie dzieje. Czasem po erase się zawiesza openOCD to znaczy diodka od st-linka sobie mruga zielono, czerwono, ale nic się nie dzieje.To znaczy nie zgłasza się czy wgrał czy nie po prostu wygląda to jakby się zawiesił. Czasem wyskakują jakieś błędy, że nie może pisać do flash (ale to było z tego co pamiętam tylko raz).
Zrzut tego co wypluje openOCD przy najlepszym razie:
Open On-Chip Debugger 0.6.1 (2013-02-19-00:57)
Licensed under GNU GPL v2
For bug reports, read
http://openocd.sourceforge.net/doc/doxygen/bugs.html
adapter speed: 1000 kHz
Info : clock speed 1000 kHz
Info : stm32f4x.cpu: hardware has 6 breakpoints, 4 watchpoints
Info : accepting 'telnet' connection from 4444
target state: halted
target halted due to debug-request, current mode: Thread
xPSR: 0x01000000 pc: 0xfffffffe msp: 0xfffffffc
background polling: on
TAP: stm32f4x.cpu (enabled)
target state: halted
target halted due to debug-request, current mode: Thread
xPSR: 0x01000000 pc: 0xfffffffe msp: 0xfffffffc
Info : device id = 0x10016413
Info : flash size = 1024kbytes
Info : device id = 0x10016413
Info : flash size = 1024kbytes
flash 'stm32f2x' found at 0x08000000
background polling: on
TAP: stm32f4x.cpu (enabled)
target state: halted
target halted due to debug-request, current mode: Thread
xPSR: 0x01000000 pc: 0xfffffffe msp: 0xfffffffc
auto erase enabled
auto unlock enabled
target state: halted
target halted due to breakpoint, current mode: Thread
xPSR: 0x61000000 pc: 0x20000042 msp: 0xfffffffc
wrote 16384 bytes from file stm32f4_blink_led.bin in 1.285954s (12.442 KiB/s)
background polling: on
TAP: stm32f4x.cpu (enabled)
target state: halted
target halted due to breakpoint, current mode: Thread
xPSR: 0x01000000 pc: 0xfffffffe msp: 0xfffffffc
background polling: on
TAP: stm32f4x.cpu (enabled)
target state: running
background polling: on
TAP: stm32f4x.cpu (enabled)
target state: running
background polling: on
TAP: stm32f4x.cpu (enabled)
target state: running
Ogólnie już siedzę nad tym kolejny dzień i nie daje mi to spokoju. Pewnie robię jakiś dziecinny błąd. Przeglądałem podobne tematy, ale takiego, żeby się procek programował i program nie działał (niby działał) nie znalazłem.
W załączniku dodaje plik wygenerowany przez make.
Proszę o jakieś nakierowanie co mogę robić źle, z góry dziękuję za wszelką pomoc. Oczywiście jestem początkujący w tematyce ARM, wcześniej programowałem trochę w AVR, ale to w porównaniu do ARM są zabaweczki...