rozważania o CNC

ELEKTRONIKA ogólnie => mikrokontrolery => Wątek zaczęty przez: markcomp Wrzesień 24, 2012, 09:59:15



Tytuł: STM32F4 DIscovery - środowisko programowania...
Wiadomość wysłana przez: markcomp Wrzesień 24, 2012, 09:59:15
STM32F4 DIscovery - środowisko programowania...



na moim ubuntu 11.10 poszedł ten opis budowy:

Kod:
$ sudo apt-get install flex bison libgmp3-dev libmpfr-dev libncurses5-dev
libmpc-dev autoconf texinfo build-essential libftdi-dev
$ git clone https://github.com/esden/summon-arm-toolchain.git
$ cd summon-arm-toolchain
$ sudo ./summon-arm-toolchain
$ cd ..
$ sudo apt-get install libsgutils2-dev libusb-1.0-dev
$ git clone https://github.com/texane/stlink.git
$ cd stlink
$ make

teraz zobaczę czy to działa...

Kod:
smark@hpecik:~/ARM/stlink$ sudo ./gdbserver/st-util fu bar
non-option ARGV-elements: fu bar
2012-04-19T11:36:28 INFO src/stlink-usb.c: -- exit_dfu_mode
2012-04-19T11:36:28 INFO src/stlink-common.c: Loading device parameters....
2012-04-19T11:36:28 INFO src/stlink-common.c: Device connected is: F4 device, id 0x20006411
2012-04-19T11:36:28 INFO src/stlink-common.c: SRAM size: 0x30000 bytes (192 KiB), Flash: 0x100000 bytes (1024 KiB) in pages of 16384 bytes
Chip ID is 00000413, Core ID is  2ba01477.
KARL - should read back as 0x03, not 60 02 00 00
init watchpoints
Listening at *:4242...

no i chyba łączność działa...
teraz trzeba pouczyć się JAK ;)


http://youtu.be/Jh58kwllU0s


kompilacja przykładu
Kod:
$ EXPORT PATH=~/sat/bin:$PATH
$ cd stlink/examples/blink
$ make CONFIG_STM32F4_DISCOVERY=1

działa :)

przykład (tylko wersja F4):
Kod:
/* missing type */
typedef unsigned int uint32_t;


/* hardware configuration */
#define GPIOD 0x40020C00              /* port D */
#define GPIOD_MODER (GPIOD + 0x00)    /* port mode register */
#define LED_PORT_ODR (GPIOD + 0x14)   /* port output data register */
#define LED_GREEN (1 << 12)           /* port D, pin 12 */
#define LED_ORANGE (1 << 13)          /* port D, pin 13 */
#define LED_RED (1 << 14)             /* port D, pin 14 */
#define LED_BLUE (1 << 15)            /* port D, pin 15 */

void _tmain(void) {
main();
}
static inline void setup_leds(void)
{
  *(volatile uint32_t*)GPIOD_MODER |= (1 << (12 * 2)) | (1 << (13 * 2)) |
  (1 << (13 * 2)) | (1 << (14 * 2)) | (1 << (15 * 2));
}


static inline void switch_leds_on(void)
{
  *(volatile uint32_t*)LED_PORT_ODR = LED_BLUE | LED_GREEN | LED_ORANGE | LED_RED;
}

static inline void switch_leds_off(void)
{
  *(volatile uint32_t*)LED_PORT_ODR = 0;
}

#define delay()             \
do {                 \
  register unsigned int i;         \
  for (i = 0; i < 1000000; ++i)     \
    __asm__ __volatile__ ("nop\n\t":::"memory");\
} while (0)

/* static void __attribute__((naked)) __attribute__((used)) main(void) */
void main(void)
{
  setup_leds();

  while (1)
  {
    switch_leds_on();
    delay();
    switch_leds_off();
    delay();
  }
}


trochę tego więcej niż w Arduino...

jak to wrzucić do ARMka:

Kod:
$ arm-none-eabi-gdb
(gdb) target extended localhost:4242
(gdb) load blink_F4.elf
(gdb) continue




Tytuł: Odp: STM32F4 DIscovery - środowisko programowania...
Wiadomość wysłana przez: markcomp Wrzesień 24, 2012, 10:01:13
chciałem jeszcze poinformować o problemie jaki powstał... podczas pierwszych prób z podłączeniem -- problem jest TRYWIALNY -- kabel USB
na pierwszym -działało...
na drugim.. który wyglądał lepiej - NIE

nie działało tak
Kod:
sudo ./gdbserver/st-util fu bar
non-option ARGV-elements: fu bar
2012-04-21T22:14:13 WARN src/stlink-usb.c: Couldn't find any ST-Link/V2 devicesm

na dobrym kablu - połączenie się po prosty pojawia:
Kod:
sudo ./gdbserver/st-util fu bar
non-option ARGV-elements: fu bar
2012-04-21T22:18:25 INFO src/stlink-usb.c: -- exit_dfu_mode
2012-04-21T22:18:25 INFO src/stlink-common.c: Loading device parameters....
2012-04-21T22:18:25 INFO src/stlink-common.c: Device connected is: F4 device, id 0x20006411
2012-04-21T22:18:25 INFO src/stlink-common.c: SRAM size: 0x30000 bytes (192 KiB), Flash: 0x100000 bytes (1024 KiB) in pages of 16384 bytes
Chip ID is 00000413, Core ID is  2ba01477.
KARL - should read back as 0x03, not 60 02 00 00
init watchpoints
Listening at *:4242...



to połączenie warunkuje pracę z debuggerem (gdb - The GNU Debugger), który robi za ładowacz kodu...

Kod:
mark@hpecik:~/ARM/stlink/example/blink$ arm-none-eabi-gdb
GNU gdb (GDB) 7.3.1
Copyright (C) 2011 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.  Type "show copying"
and "show warranty" for details.
This GDB was configured as "--host=x86_64-unknown-linux-gnu --target=arm-none-eabi".
For bug reporting instructions, please see:
<http://www.gnu.org/software/gdb/bugs/>.
(gdb) target extended localhost:4242
Remote debugging using localhost:4242
0x0800788c in ?? ()
(gdb) load blink_
blink_32L.elf   blink_32VL.elf  blink_F4.elf   
(gdb) load blink_F4.elf
Loading section .text, size 0x48 lma 0x20000000
Start address 0x20000000, load size 72
Transfer rate: 900 bytes/sec, 72 bytes/write.
(gdb) continue

istotne jest przyłączenie się debuggera do moduły za pomocą łącza zbudowanego wcześniej
Kod:
st-util fu bar
[...]
Listening at *:4242...

4242 - słucha.. więc my do niego będziemy gadać:
Kod:
target extended localhost:4242

a następnie - ładujemy skompilowany wcześniej kod przykładu
Kod:
load blink_F4.elf

make przykładu wygenerował: blink_32L.elf   blink_32VL.elf  blink_F4.elf
wybrałem F4 -- bo nasz cortex jest 4

następne polecenie powoduje rozpoczęcie wykonywania kodu (ale z możliwością zatrzymania)
Kod:
continue


inne polecenia... dokładny opis można uzyskać
Kod:
man arm-none-eabi-gdb


Tytuł: Odp: STM32F4 DIscovery - środowisko programowania...
Wiadomość wysłana przez: markcomp Wrzesień 25, 2012, 11:42:49
ciekawy opis:
http://www.triplespark.net/elec/pdev/arm/stm32.html



Tytuł: Odp: STM32F4 DIscovery - środowisko programowania...
Wiadomość wysłana przez: markcomp Wrzesień 25, 2012, 11:43:23
Przegląd możliwości timerów w STM32F
http://www.stm32.eu/node/217/page/0/4


Tytuł: Odp: STM32F4 DIscovery - środowisko programowania...
Wiadomość wysłana przez: markcomp Wrzesień 25, 2012, 11:43:45
Sygnały zegarowe STM32F1 Connectivity Line
http://www.stm32.eu/node/27


Tytuł: Odp: STM32F4 DIscovery - środowisko programowania...
Wiadomość wysłana przez: Jagoda Lipiec 28, 2017, 10:46:43
Jestem pod wrażeniem wiedzy ;)