[ell-i-developers] Re: Could someone please test this on a real STM32F334?

  • From: Ivan Raul <supra.material@xxxxxxxxx>
  • To: "ell-i-developers@xxxxxxxxxxxxx" <ell-i-developers@xxxxxxxxxxxxx>
  • Date: Sat, 13 Sep 2014 17:33:51 +0200

Hi to all,

To flash the nucleo the first thing is to install the latest version of
texane/stlink, it already has Lari's addition merged, it works smoothly!

mkdir texane
cd texane
git clone https://github.com/texane/stlink.git
cd stlink/
./autogen.sh
./configure
make
sudo make install

Now, to flash, the .bin file is the one used (I lost some time trying to
make it work by flashing the .hex ...)
st-flash write sketch.bin 0x8000000
#if it complains about " WARN src/stlink-usb.c: Error -3 opening ST-Link/V2
device ...", run it with sudo
sudo st-flash write sketch.bin 0x8000000

In order to see the green LED blink, it is necessary to configure pin 13:
-----------------------
#include <Arduino.h>

void setup() {
  pinMode(13, OUTPUT);
}

void loop() {
  digitalWrite(13, 1);
  for (volatile int i = 0; i < 100000; i++)
     ;
  digitalWrite(13, 0);
  for (volatile int i = 0; i < 100000; i++)
     ;
}
------------------

Additionally, if you want to debug a little and see how the program
executes:

sudo st-util

Then, it will show the port " Listening at *:4242..."
now, open gdb with the elf file as input

arm-none-eabi-gdb sketch

Now, in the debug command line "(gdb)"

target remote localhost:4242

It will show that it is halted in the first instruction of the reset
handler, for me shows:
Reset_Handler () at
Runtime/stm32/build/../system/stm32/src/startup_stm32f334xx.c:287
287        __asm__ volatile ("mov    sp, %0" : : "r" (stack));

You can play to step to the next instruction

step

Or continue the execution

continue

If you command continue, it will run normally and you will notice the LED
blinking
To halt the execution after continue, press the classic

Ctrl+C

You can check the registers:

info reg

Or check the information at certain address, for example:

(gdb) x 0x0
0x0:    0x20003000
(gdb) x 0x8000000
0x8000000 <g_pfnVectors>:    0x20003000

What happens here is that the first section of flash is also mapped to the
address 0x00000000, to enable the initialization to find the vectors at the
very beginning of the memory. What is shown there is the initial value of
the stack pointer.

--------------------------------------

Regarding the initialisation procedure, I checked removing the copying of
the linker _estack provided variable to the stack. It is not necessary, the
stack pointer is initalised from the init vectors (at least with the
st32f334). The stack pointer is identical without the imperative assignment:

With copying:
sp             0x20002ff0    0x20002ff0
lr             0x8000197    134218135

Without copying
sp             0x20002ff0    0x20002ff0
lr             0x8000197    134218135

-------------------------------------

BR, Ivan





With Warm Regards, Ivan Raul

On Fri, Sep 12, 2014 at 7:49 PM, Pekka Nikander <pekka.nikander@xxxxxx>
wrote:

>   cd /tmp
>   git clone https://github.com/supramaterial/Runtime
>   cd Runtime/stm32/build
>   make sketch.cpp
>   # edit sketch.cpp to blink a led; see below
>   make
>
> That creates hardware/stm32f334nucleo/sketch.{hex,bin}
>
> How to flash that to the STM32F334nucleo, I don't know exactly.  Lari
> knows, he's done that.
>
> Here is a simple sketch for a LED in pin #3
>
> -----------------------
> #include <Arduino.h>
>
> void setup() {
>   pinMode(3, OUTPUT);
> }
>
> void loop() {
>   digitalWrite(3, 1);
>   for (volatile int i = 0; i < 10000; i++)
>      ;
>   digitalWrite(3, 0);
>   for (volatile int i = 0; i < 10000; i++)
>      ;
> }
> ------------------
>
> YMMV.
>
> --Pekka
>
>
> On 2014–09–12, at 20:30 , otso@xxxxxxxxxxxx wrote:
>
> > I have some time over weekend as well as the hardware, please send me the
> > details of what has to be tested and how "works" is defined. I'll test it
> > if I get more pressing issues with the hardware in order.
> >
> > -otso
> >
> >> Could someone please test this on a real STM32F334?  If it works, I'll
> >> merge it.
> >>
> >> --Pekka
> >>
> >> Begin forwarded message:
> >>
> >>> From: supramaterial <notifications@xxxxxxxxxx>
> >>> Subject: [Runtime] Added support for STM32F334 emulator (#24)
> >>> Date: 11 Sep 2014 1:05:12 GMT+3
> >>> To: Ell-i/Runtime <Runtime@xxxxxxxxxxxxxxxxxx>
> >>> Reply-To: Ell-i/Runtime
> >>> <
> reply+i-42466605-35e7ed84685e7220999a32a51c47bf889c73a76d-681239@xxxxxxxxxxxxxxxx
> >
> >>>
> >>> Please, test on real hardware, I just tested in the emulator.
> >>>
> >>> You can merge this Pull Request by running
> >>>
> >>>  git pull https://github.com/supramaterial/Runtime master
> >>> Or view, comment on, or merge it at:
> >>>
> >>>  https://github.com/Ell-i/Runtime/pull/24
> >>>
> >>> Commit Summary
> >>>
> >>> Add: C initialisation and headers for STM32F334
> >>> Add: Emulator SCB support for STM32F334
> >>> Add: Compile flags for emulator shared library for STM32F334
> >>> File Changes
> >>>
> >>> M stm32/emulator/inc/SCB.h (2)
> >>> M stm32/make/emulator.mk (5)
> >>> M stm32/make/system_lib.mk (2)
> >>> A stm32/system/stm32/inc/system_stm32f3xx.h (76)
> >>> D stm32/system/stm32/src/startup_stm32f334x8.S (421)
> >>> A stm32/system/stm32/src/startup_stm32f334xx.c (328)
> >>> Patch Links:
> >>>
> >>> https://github.com/Ell-i/Runtime/pull/24.patch
> >>> https://github.com/Ell-i/Runtime/pull/24.diff
> >>> —
> >>> Reply to this email directly or view it on GitHub.
> >>>
> >>
> >>
> >
> >
>
>

Other related posts: