STM32, multithreading in EEPROM

programski jeziki in programiranje

Moderator: tilz0R

STM32, multithreading in EEPROM

OdgovorNapisal/-a Kroko » 12 Sep 2017, 12:12

tilz0R je napisal/-a:Drugače pa Cortex-M ne omogoča multicore konfiguracije, kot to omogoča Cortex-A.

Uporabljam LPC4357, ki ima dva jedra.
http://www.planet-cnc.comKroko was here!
Uporabniški avatar
Kroko
 
Prispevkov: 3870
Pridružen: 14 Jan 2015, 12:12
Kraj: Ljubljana
Zahvalil se je: 613 krat
Prejel zahvalo: 1245 krat
Uporabnika povabil: Vrtni palček
Število neizkoriščenih povabil: 229

Re: Programski jeziki in okolja

OdgovorNapisal/-a tilz0R » 12 Sep 2017, 12:15

Kroko je napisal/-a:
tilz0R je napisal/-a:Drugače pa Cortex-M ne omogoča multicore konfiguracije, kot to omogoča Cortex-A.

Uporabljam LPC4357, ki ima dva jedra.


Seveda, vendar to ni klasična konfiguracija, kot jo imajo Cortex-A procesorji in vsi ostali multicore procesorji.
Tvoj LPC je mikrokontroler, ki so mu dali dva procesorja, pa še to nista ista, kar pomeni da nikakor ne moreta izvajati istih stvari.

Z drugimi besedami: ti imaš 2 različna MCU-ja v enem, ki imata skupno vodilo za hitrejši pretok informacij med njima.
Knowledge sharing is people' caring., T. MAJERLE
Uporabniški avatar
tilz0R
 
Prispevkov: 1371
Pridružen: 18 Jan 2015, 00:12
Kraj: Črnomelj
Zahvalil se je: 180 krat
Prejel zahvalo: 340 krat
Uporabnika povabil: s56rga
Število neizkoriščenih povabil: 255

Re: Programski jeziki in okolja

OdgovorNapisal/-a Protoncek » 12 Sep 2017, 14:35

Nekdo je omenil, da armi nimajo več eeproma... kaj to pomeni? Potem ne moreš shranjevati nekam, kjer se ohrani ob izpadu napajanja?
Uporabniški avatar
Protoncek
 
Prispevkov: 2632
Pridružen: 17 Jan 2015, 21:41
Kraj: Mengeš
Zahvalil se je: 213 krat
Prejel zahvalo: 247 krat
Uporabnika povabil: VolkD
Število neizkoriščenih povabil: 52

Re: Programski jeziki in okolja

OdgovorNapisal/-a mujo » 12 Sep 2017, 14:37

Nimajo dodatne EEPROM periferije, ampak samo FLASH.
mujo
 
Prispevkov: 719
Pridružen: 21 Jan 2015, 10:50
Kraj: MB
Zahvalil se je: 1 krat
Prejel zahvalo: 145 krat
Uporabnika povabil: VolkD
Število neizkoriščenih povabil: 17

Re: Programski jeziki in okolja

OdgovorNapisal/-a tilz0R » 12 Sep 2017, 14:39

Protoncek je napisal/-a:Nekdo je omenil, da armi nimajo več eeproma... kaj to pomeni? Potem ne moreš shranjevati nekam, kjer se ohrani ob izpadu napajanja?


Jaz sem to omenil, vendar nisi v celoti dobro interpretiral :)

ARM kot takšen (jedro) nima nobene veze z periferijo in pomnilnikom.
Jaz sem pa omenil za STM32, da razen L0 in L1 seriji, ostali nimajo več EEPROM-a (L4 recimo), ker je tehnologija MCU-ja premajhna za EEPROM (konkretno tehnologija ST).

Uporabiš lahko flash sektor za stranjevanje tega.
Knowledge sharing is people' caring., T. MAJERLE
Uporabniški avatar
tilz0R
 
Prispevkov: 1371
Pridružen: 18 Jan 2015, 00:12
Kraj: Črnomelj
Zahvalil se je: 180 krat
Prejel zahvalo: 340 krat
Uporabnika povabil: s56rga
Število neizkoriščenih povabil: 255

Re: Programski jeziki in okolja

OdgovorNapisal/-a Protoncek » 12 Sep 2017, 19:39

Aha, torej nimajo ločen EE sektor kot avrji ampak za ta namen lahko uporabiš isti flash, ki je uporabljen za program? Zanimivo in koristno, moram reči. Nenazadnje je lahko na voljo veliko več prostora, če je recimo program kratek...

Hvala za pojasnilo!
Uporabniški avatar
Protoncek
 
Prispevkov: 2632
Pridružen: 17 Jan 2015, 21:41
Kraj: Mengeš
Zahvalil se je: 213 krat
Prejel zahvalo: 247 krat
Uporabnika povabil: VolkD
Število neizkoriščenih povabil: 52

Re: Programski jeziki in okolja

OdgovorNapisal/-a tilz0R » 12 Sep 2017, 19:41

Protoncek je napisal/-a:Aha, torej nimajo ločen EE sektor kot avrji ampak za ta namen lahko uporabiš isti flash, ki je uporabljen za program? Zanimivo in koristno, moram reči. Nenazadnje je lahko na voljo veliko več prostora, če je recimo program kratek...

Hvala za pojasnilo!


Drži. V ta namen imajo tudi L serije majhne sektorje (1k), medtem ko imajo high performance MCU-ji med 16 in 128kB velike sektorje.

Še vedno je pa to flash. Za prepis enega byta moraš vse izbisat najprej, uredit in zapisat nazaj.
Knowledge sharing is people' caring., T. MAJERLE
Uporabniški avatar
tilz0R
 
Prispevkov: 1371
Pridružen: 18 Jan 2015, 00:12
Kraj: Črnomelj
Zahvalil se je: 180 krat
Prejel zahvalo: 340 krat
Uporabnika povabil: s56rga
Število neizkoriščenih povabil: 255

Re: Programski jeziki in okolja

OdgovorNapisal/-a s54mtb » 12 Sep 2017, 19:46

Ne vse, ampak posamezni sektor, da ne bo pomote.

Btw... Obstaja arm mcu z fram?
s54mtb
 
Prispevkov: 7757
Pridružen: 15 Jan 2015, 01:10
Zahvalil se je: 1005 krat
Prejel zahvalo: 2472 krat
Uporabnika povabil: Vrtni palček
Število neizkoriščenih povabil: 36

Re: Programski jeziki in okolja

OdgovorNapisal/-a tilz0R » 12 Sep 2017, 19:51

s54mtb je napisal/-a:Btw... Obstaja arm mcu z fram?


ST ne, mislim da pri TI obstaja.
Knowledge sharing is people' caring., T. MAJERLE
Uporabniški avatar
tilz0R
 
Prispevkov: 1371
Pridružen: 18 Jan 2015, 00:12
Kraj: Črnomelj
Zahvalil se je: 180 krat
Prejel zahvalo: 340 krat
Uporabnika povabil: s56rga
Število neizkoriščenih povabil: 255

Re: Programski jeziki in okolja

OdgovorNapisal/-a TilenS » 12 Sep 2017, 19:51

Meni ta "EE" pogrutavščina v ROM niti malo ni zanimiva še manj pa uporabna.

Na STM32 pogrešam samo dve stvari, da bi to res bil TOP uC:

- Ločen boot sektor za uporabniško kodo (najboljša opcija bi bila da povoziš njihov boot z svojim)
- EE periferija.

Brez tega so določene stvari PITA.
TilenS
 
Prispevkov: 298
Pridružen: 05 Feb 2015, 00:40
Zahvalil se je: 0 krat
Prejel zahvalo: 41 krat
Uporabnika povabil: DusanK
Število neizkoriščenih povabil: 8

Re: Programski jeziki in okolja

OdgovorNapisal/-a tilz0R » 12 Sep 2017, 19:53

TilenS je napisal/-a:Na STM32 pogrešam samo dve stvari, da bi to res bil TOP uC:

- Ločen boot sektor za uporabniško kodo (najboljša opcija bi bila da povoziš njihov boot z svojim)
- EE periferija.


1. Kako bi naredil enter v bootloader?
2. Žal tehnologija pri 90 ali 40nm ne omogoča uporabnega EEPROM-a.

Predlagam da se odpre nova tema glede teh stvari.
Knowledge sharing is people' caring., T. MAJERLE
Uporabniški avatar
tilz0R
 
Prispevkov: 1371
Pridružen: 18 Jan 2015, 00:12
Kraj: Črnomelj
Zahvalil se je: 180 krat
Prejel zahvalo: 340 krat
Uporabnika povabil: s56rga
Število neizkoriščenih povabil: 255

Re: Programski jeziki in okolja

OdgovorNapisal/-a zanka » 12 Sep 2017, 20:06

Kaj se misli s tem, da ima svoj boot? Ali se ne začne uporabniška koda, tako da prebere naslov na 0x0?
Uporabniški avatar
zanka
 
Prispevkov: 1768
Pridružen: 17 Mar 2016, 01:16
Kraj: Krško
Zahvalil se je: 92 krat
Prejel zahvalo: 151 krat
Uporabnika povabil: DusanK
Število neizkoriščenih povabil: 29

Re: Programski jeziki in okolja

OdgovorNapisal/-a TilenS » 12 Sep 2017, 20:26

Kako bi naredil enter v boot? Tako kot je zdaj na vseh STM32 procesorjih za njihov boot... Pri custom boot je pa tisti BOOT pin in sama funkcionalnost okoli njega samo še za okras.

Takšna stvar mogoče zgleda od daleč zelo trivialna za rešit se pa v resnici zelo hitro zakomplicira. Pri starem AT89 ki sem ga uporabljal bi bila takšna specifikacija zelo enostavno rešena, imel je ločen boot sektor, ki si ga poklical ali preko SW ali pa preko HW (pina).

A STM je to zadevo zakompliciral do amena, resno ne zastopim kaj so razmišljali (če sploh so). Na BOOT pin lahko že kar na začetku pozabiš, nima več funkcije. Edina opcija je da je boot na začetku ROM-a, se pravi ob runtime naprej skočiš v boot tam preveriš SW in HW zastavice, kar za HW pomeni, da moraš za boot sam določiti nek GPIO in potem na vezju paziti, da je ob vklopu vezja oz. pri prehodu čez boot zmeraj v primernem stanju, da ni lažnih skokov v boot. To je resen PITA. Mislim na uC je BOOT pin ampak je totalno neuporaben razen za njihov bootloader, odlično.

Ta "EE" v ROM tudi ni nekaj za hvalit, je kar visoko po PITA lestvici. V AT89 si premapiral EE v RAM prostor in pisal kot v RAM (pač počasneje) nič brisanja celih page-ov. Tukaj pa ko spremeniš 1 bajt moraš prej shraniti cel page in še to po možnosti v en drug page v ROM-u, če ga v RAM in vmes slučajno zmanjka napajanja si v riti, potem nazaj v RAM, da spremeniš tisti 1 bajt in potem nazaj na staro ROM lokacijo. So tudi drugi postopki, da ne uničuješ enih in istih celic. Postopek da ni heca za zapisat en bajt.


Sta pa to edini dve stvari, ki me pri STM motita že sicer od samega začetka (pa nisem edini) ampak drugo je super, zadeva dela, tole še naj dodelajo pa bo.
TilenS
 
Prispevkov: 298
Pridružen: 05 Feb 2015, 00:40
Zahvalil se je: 0 krat
Prejel zahvalo: 41 krat
Uporabnika povabil: DusanK
Število neizkoriščenih povabil: 8

Re: Programski jeziki in okolja

OdgovorNapisal/-a tilz0R » 12 Sep 2017, 20:37

Hm, moderator premakni to v drugo temo.

Torej BOOT je tam za user ali embedded boot. V embedded boot lahko skočiš iz sw ali preko boot.

Če hočes svojega preprosto dodaj svojega na začetek flasha in je. Naslednji sektor pa imej za konfiguracijo.
Lahko daš pa svoj boot v zadnji sector flasha in imaš navidezno ločen user main in user boot program, kjer boot pokličeš, kadar ga potrebuješ.

Žal je ta odgovor v smislu "primarly opinion based" in je le moje mnenje.
Knowledge sharing is people' caring., T. MAJERLE
Uporabniški avatar
tilz0R
 
Prispevkov: 1371
Pridružen: 18 Jan 2015, 00:12
Kraj: Črnomelj
Zahvalil se je: 180 krat
Prejel zahvalo: 340 krat
Uporabnika povabil: s56rga
Število neizkoriščenih povabil: 255

Re: Programski jeziki in okolja

OdgovorNapisal/-a s54mtb » 12 Sep 2017, 20:44

LPC11A in 11E imajo tudi eeprom, pa LPC18xx itd...
s54mtb
 
Prispevkov: 7757
Pridružen: 15 Jan 2015, 01:10
Zahvalil se je: 1005 krat
Prejel zahvalo: 2472 krat
Uporabnika povabil: Vrtni palček
Število neizkoriščenih povabil: 36


Vrni se na Software

Kdo je na strani

Po forumu brska: 0 registriranih uporabnikov in 1 gost