Mikrokontrolery 32b Silabs

Przegryzam się (od absolutnego zera - nigdy nie miałem bliższego kontaktu z 32 bitami) przez datasheety procków Silabsa: Tiny-Gecko, Jade-Gecko, Pearl-Gecko. Moim celem jest zaprojektowanie płytki do testów.

Czytam, czytam i jak na razie nie natknąłem się na odpowiedź na podstawowe według mnie pytania. Ale czytam 'jak leci' nie szukając odpowiedzi na konkretne pytania. A sobie pomyślałem, że może ktoś po prostu wie to zaoszczędzi mi szukania.

Temat 1. W Xmegach do programowania podłączałem się pod PDI - dwa piny (w tym jeden był Reset).

Tutaj są DBG_SWCLKTCK i DBG_SWDIOTMS o których wyczytałem, że po resecie są aktywne. Skoro te nogi dają się też użyć inaczej to:

- ta 'aktywność' nie może trwać wiecznie,

- nie może być wyłączana jakimś rozkazem po tym łączu bo przecież w docelowym urządzeniu nikt tam nic nie będzie wysyłał.

Jak i kiedy ta aktywność 'się wyłącza'. Na obecnym etapie usiłuję przede wszystkim ustalić, czy do złącza do programowania muszę też doprowadzać linię reset, czy może wystarczy rozpoczynać programowanie odpowiednio szybko po włączeniu zasilania. Tylko, że normalnie to już kilkadziesiąt ms po zasileniu, urządzenia działają pełną parą więc może tego czasu jest za mało na działania 'ręczne'.

Jakoś nie zadbali, aby pin Reset był w pobliżu tych dwu linii (w Tiny szczególnie).

Ktoś może wie czy tą linią reset też trzeba zarządzać z programatora?

Temat 2. W datasheet Jade 12:

formatting link
strona 99 - piny USARTa 0 (US0_CLK, US0_CS, US0_CTS, USO_RTS, USO_RX, USO_TX) mogą być podłączone praktycznie do każdej nogi. Ale zastanawia mnie przesunięcie tych nóg na listach o 1. Dla kolejnych linii UARTa dla tego samego numerka identyfikującego wybrany pin obudowy przypisane są kolejne piny wokół procesora.

To mi sugeruje, że być może można tego UARTa obracać wokół obudowy scalaka ale zawsze poszczególne piny w jednakowym porządku względem siebie.

Czy piny UARTa muszą być 'w ustalonym porządku' czy jest pełna dowolność? P.G.

Reply to
Piotr Gałka
Loading thread data ...

Nie używałem nic od Silabs, ale SWD jest zaprojektowane przez ARMa i niezależne w dużej mierze od producenta uC.

Trwa wiecznie, chyba że twój program zmieni konfigurację SWD po starcie uC. Po ponownym resecie SWD wróci.

The SW Debug Port is routed as an alternate function and the SWDIO and SWCLK pin connections are enabled by default with internal pull up and pull down resistors, respectively. It is possible to disable these pin connections (and disable the pull resistors) by setting the SWDIOTMSPEN and SWCLKTCKPEN bits in GPIO_ROUTEPEN to 0.

To widziałeś?

formatting link
Na obecnym etapie usiłuję przede wszystkim ustalić, czy do złącza do

Linia reset nie jest niezbędna. Według dokumentacji (AAP Window) przydaje się do zdejmowania blokady debugowania, lub odzyskiwania kontroli nad SWD jeśli twój program go wyłącza szybko po starcie. Jeśli tego nie robisz, to programowanie można rozpocząć w dowolnym momencie.

Sprawdź też czy wygodniej/taniej do programowania nie będzie użyć bootloadera.

formatting link

Reply to
Zbych

W dniu 2020-10-08 o 18:58, Zbych pisze:

Nie wiedziałem, że określa się to SWD. Piny są SWCLK i SWDIO (data input/output). Wspólne w nazwach jest SW (Serial Wire).

Dzięki za info. Głupio mi, że nie wpadłem na to, że tak to też przecież może być (nigdy nie popełniłem żadnego programu na mikrokontroler). Czyli jeśli nie wykorzystam tych pinów do czegoś innego i w związku z tym procesor nie będzie miał powodu zaczynać swojej pracy od przełączenia ich na co innego to mogę nie podłączać resetu do gniazdka programowania. To mi pasuje bo 3 dziurki daje się ustawić w trójkąt i nie ma wątpliwości jak włożyć kabelek. Ustawienie 4 dziurek w sposób jednoznaczny zajęło by więcej miejsca i dawało by mniejszą pewność kontaktowania wszystkich pinów.

Ten fragment musi pochodzić z czegoś innego niż datasheet. Zapewne z reference manuala. Na razie przejrzałem datasheet rodziny Tiny i przeglądam Jade, a w planie mam jeszcze Pearl. Robię to powoli, bo robię sobie jednocześnie ściągę (spreadsheet) co do którego pinu w wybranych wstępnie obudowach mogę podłączyć - przyda się przy robieniu schematów i płytek. Na razie zwróciłem uwagę, na zupełnie inny zakres możliwości podłączania Tiny i Jade. Nie podoba mi się że w Jade QFN48 zostawili 4 nogi NC. Może przez to mi brakować nóg, a w BGA nie chcę wchodzić.

Pobrałem sobie prawie wszystkie appnoty które w nazwie nie miały żadnych krzaczków (jeszcze nie znalazłem czasu aby zajrzeć). Teraz sprawdziłem, że te co pobrałem kończą się na 0060, potem jedna 136 i dalej już nr ponad 800. Czyli odpowiedź: Nie widziałem. Jestem zdziwiony, że jak u Silabsa wybiorę konkretną rodzinę i potem noty aplikacyjne i zamiast kilku podstawowych zażyczę sobie wszystkich to tej 0062 nie ma na liście.

Wielkie dzięki.

Tytuł sugeruje, że jest to dokładnie to co będzie mi potrzebne bo zapewne nie za długo będziemy ustalali z bratem jakie uniwersalne rozkazy ująć w programatorze, abym potem korzystając z nich mógł programować te procesory.

Dzięki za potwierdzenie tego na co wpadłem po Twojej odpowiedzi wyżej.

Wiem, że jest tam jakiś bootloader i na pewno też go sprawdzimy. Tę notę akurat mają wśród 'wszystkich' więc ją miałem.

Podejrzewam, że to co nas przede wszystkim będzie interesowało, to czy za pomocą tego bootloadera da się zaprogramować wszystko (włącznie z bootloaderem).

Ostatnio doszliśmy w Xmegach do etapu, że (w uproszczeniu) najpierw ładujemy program testowy w obszar 'zwykły' a potem on ładuje dane (personalizujące urządzenie) do bootloadera i zabezpiecza obszar bootloadera i dopiero potem ładowny jest docelowy program, który nadgrywa program testowy. P.G.

Reply to
Piotr Gałka

Piotr Gałka wrote on 08.10.2020 20:02:

Fabrycznego bootloadera raczej się nie pozbędziesz.

Reply to
Zbych

W dniu 2020-10-08 o 20:02, Piotr Gałka pisze:

"Wbudowanego" bootloadera nie dasz rady zmienić, ale nic nie stoi na przeszkodzie aby napisać swój i ładować główny soft do flasha pod odpowiedni adres. Dla programu głównego trzeba wtedy przesunąć adresy przerwań, w Cortex-M3 z tego co pamiętam robi się to dość prosto. W Cortex-M0 wymaga to więcej zachodu, bo nie ma odpowiedniego rozkazu do tego.

Co do SWD to jest tak jak Zbych napisał. Wszystkie ARMy które znam działają tak, że jak nie zmienisz funkcji pinów SWD w swoim sofcie na np. zwykłe GPIO, to będzie on działał zawsze jako SWD. Zwykle producenci dają taką możliwość i sam z tego korzystałem.

Reply to
Bool

W dniu 2020-10-09 o 09:03, Bool pisze:

Przyjmuję do 'akceptującej wiadomości'. Mam za małe (faktycznie zerowe) doświadczenie z tym co się dzieje w prockach, aby podejmować jakąkolwiek dyskusję. Poza tym jedyne informacje jakie obecnie posiadam dotyczą w zasadzie tylko Xmega.

Obiło mi się gdzieś, że tego bootloadera można skasować, ale że nie pamiętam źródła to równie dobrze mogło to być jedynie wewnętrzne, niczym nie uzasadnione przekonanie, że tak przecież 'musi być'. P.G.

Reply to
Piotr Gałka

W dniu 2020-10-09 o 10:32, Piotr Gałka pisze:

[...]

Już wiem, gdzie mi się obiło. Fragment z EFM32JG12 Family Data Sheet:

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

3.10.4 Bootloader All devices come pre-programmed with a UART bootloader. This bootloader resides in flash and can be erased if it is not needed.

------------- P.G.

Reply to
Piotr Gałka

W dniu 2020-10-09 o 14:56, Piotr Gałka pisze:

Faktycznie, w przypadku niektórych EFM32 ten bootloader może być nadpisany.

formatting link
"Can be overwritten to maximize available flash area (EFM32 Series 0 and EZR32 Series 0 only) or be disabled by a lock bit in the lock bit page (EFM32 Series 1 only)."

Reply to
Bool

ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.