I2C - Arduino STM32 Nucleo L476RG

Jan Waclawek konfera na efton.sk
Středa Prosinec 12 08:45:43 CET 2018


No ved prave.

A teraz aky je postup, aby ste pomohli panovi kolegovi Jirkovi MWW zistit,
preco to jemu takto krasne nefunguje?

wek



----- Original Message ---------------

>Kde ti zakerni arduinisti udelali chybu ze jim to funguje? :-)
>
>#include "stm32l4xx_ll_rcc.h"
>
>extern "C" {
>  int test __attribute__ ((section (".noinit")));
>}
>
>void setup() {
>  if (LL_RCC_IsActiveFlag_SFTRST() != RESET) {
>    test = 0;
>  }
>  __HAL_RCC_CLEAR_RESET_FLAGS();
>
>  Serial.begin(9600);
>  Serial.print("RESET FIRE: ");
>  Serial.println(test++);
>}
>
>void loop() {
>}
>
>
>vystup:
>RESET FIRE: 0
>RESET FIRE: 1
>RESET FIRE: 2
>RESET FIRE: 3
>RESET FIRE: 4
>RESET FIRE: 5
>RESET FIRE: 6
>RESET FIRE: 7
>RESET FIRE: 8
>RESET FIRE: 9
>RESET FIRE: 10
>RESET FIRE: 11
>RESET FIRE: 12
>
>Napsano a kompilovano v Arduino IDE v1.8.7., pouzito https://github.com/stm32duino/Arduino_Core_STM32 <https://github.com/stm32duino/Arduino_Core_STM32> (Nucleo L476RG)
>
>T
>
>
>> 12. 12. 2018 v 7:07, Jan Waclawek <konfera at efton.sk>:
>> 
>>> to fakt netusim, ale mohu to zitra zkusit. 
>> 
>> Super. Doporucujem zacat s preskumanim mapfile - prosim, postnite ho tu.
>> 
>> Mozno na reprodukciu problemu budeme musiet vyziadat zdrojak od pana kolegu
>> Jirku MWW, ale mozno na uvod bude stacit nieco jednoduche len s tou
>> premennou s atributom umiestnujucim ho do .noinit. Mozno treba aj dat
>> nejake premenne do .data a do .bss aby sa ten efekt prejavil; a mozno ten
>> efekt suvisi s nejakou konkretnou arduino kniznicou (alebo cube/hal
>> kniznicou).
>> 
>> Ten .noinit v linker skripte - ak je to tento
>> https://github.com/stm32duino/Arduino_Core_STM32/blob/master/variants/NUCLEO_L476RG/ldscript.ld
>> - nie je. Ak nie je ta section priradena nejakym inym sposobom - priamo
>> niektorym prikazom v command line napr --section-start, pouzitim ineho
>> alebo doplnkoveho linker scriptu (*) - tak je ta section pokladana za
>> orphan, . V tom pripade nastupuje "cierna magia", t.j. nie prilis
>> zdokumentovane pravidla, ktorymi ld odhadne, akeho charakteru ta section
>> je, a umiestni ju podla toho do prislusnej output section/memory area.
>> Znova, "cierna magia" je ovplyvnena aj command line, napr. - dost
>> rukolapne - --orphan-handling. No a na command line samozrejme vplyvaju
>> specs, ktore tiez netusim ze ako su nastavene pre prekladac, ktory sa s
>> tym stm32duinom pouziva. 
>> 
>> Skusmo, bez celeho toho arudina/stm32duina ktore si nemienim instalovat, s
>> nejaky relativne starsim gcc-based prekladacom z launchpadu (t.j. binarnym
>> balikom vyrobenym ARMom) mi tu .noinit section umiestnilo medzi .data a
>> .bss a to tak, ze symboly konca .data a zaciatku .bss, ktore pouziva bezny
>> startup code, boli pred a za tym .noinit, t.j. startup code by sa toho


Další informace o konferenci Hw-list