Re: HW aj SW vyvojove prostriedky pre STM32, Was: STlink programátor - bylo Re: perspektiva řady Xmega od Atmelu

Josef Štengl ok1ced na nagano.cz
Pondělí Červen 1 12:59:23 CEST 2015


No, je otázka co berete jako periférii a co jako jádro. Pokud berete sekundární spražený procesor, nastavení ECC a 
podobných serepetiček jako cache, endianitu a kód přerušení jako periférii tak asi ano. Ale to už je docela tvrdá hranice.


I když, zrovna jsem dívám na arm, na který jsem psal start-up dva měsíce - většinu času jsem četl dokumentaci.
Pravda, cíl byl to SIL3 start-up :-)

A nemáte pravdu, funkce která je napsaná tak jak má, to jest není to jen prodloužení registrů, jak je bohužel v knihovnách 
od výrobce zvykem, není zbytečným balastem. Nepotřebujete dokumentaci k takovéto funkci, protože je plně dokumentována. To 
bohužel se také často neděje. Pak je to funkce pro funkci a a pak to nemá smysl vůbec psát (pokud za to nejste placen, co 
je zase blbost toho kdo to platí).

Dokumentace k ARM je docela dobrá. Jen je jí strašná kvanta a prokousat se jí není sranda. Periférie jsou ovšem věc 
výrobce (dodavatele) periférií).

No je pravda, že kde nic není ani Doxygen nebere :-)

ced



Dne 1.6.2015 v 10:45 Jan Waclawek napsal(a):
> Budem oponovat, a to vo vsetkom.
>
>> ARMy jsou výrazně sloľitějąí a vytvořit kostru funkčního firmwaru na
>> úrovni zápisu do registrů se prostě bez zkuąeností během pár hodin
>> nedá stíhat.
>
> Registre sa tykaju periferii a nie jadra. Tie periferie na 32-bitoch sice
> maju tendenciu byt zlozitejsie, na druhej strane je dovodom velkej casti
> tej zlozitosti extra funkcionalita ktoru jednoducho nemusite pouzit,
> defaulty su obvykle presne v tomto duchu. Napr. USART ma aj synchronny,
> IrDA a neviemaky mod, ale ak ma nezaujimaju, tak sa proste na toto
> vztahujucich bitov nedotykam - toto staci povedat studentom a urcite to
> pochopia.
>
> Druha zlozitost sa tyka clock a power managementu, ale to v prvom kole
> vobec nemusite studentom spominat - pokojne to moze byt vopchate do
> startup kodu alebo kdekolvek inde, kde to bud neuvidia, alebo uvidia ale
> sa im povie v 3 vetach co to je a nech sa toho dotykaju len ked budu na to
> pripraveni a hotovo.
>
> Takze presne to iste, co stihate s AVRkom, stihnete - s patricnou pripravou
> na Vasej strane - aj s tym ARMom.
>
>> Dávat předchystaný kód s tím, ľe stačí doplnit pár řádků
>> na správné místo, coľ s oblibou dělají výrobci MCU na firemních
>> ąkoleních, je k ničemu.
>
> Vobec nie. V skutocnosti im aj tak davate len strucny uvod a niekolko velmi
> obmedzenych prikladov - pochybujem napriklad, ze s nimi preberate startup
> kod, linker skript apod. Je na Vas, aby ste ich motivovali k dalsej
> samostatnej praci a nasmerovali ich na literaturu, prip. im ju poskytli.
>
>> nerad bych, abychom skončili ve třetí kategorii v představě ARMu
>> http://sos.alpov.net/mbed-vyvoj.jpg . Na druhou stranu není ani dobré
>> zamrznout v té první :-)
>
> Vobec nic zle na tej prvej nie je, aj ked ten obrazok je pochopitelne
> zamerne urobeny velmi sugestivne. Drviva vacsina nechuti k asembleru
> vyplyva z nespravnej metodiky prace s nim (typicky ziadnej). U RISCov je
> vsak asembler zamerne neludsky, takze tam je utrpenim ho aktivne pouzivat.
> Neznamena to vsak, ze treba veci schovavat; naopak, programator mcu bez
> pasivnej znalosti asembleru (a bez znalosti zakladov hardware) je podla
> mna programatorsky imbecil.
>
>> Z mého pohledu kaľdá funkce SPL logicky odpovídá přístupu k pár
>> registrům, dá se snadno pročíst její kód
>
> Prave naopak, kazda funkcia je len zbytocnym balastom, ktory zbytocne a bez
> akehokolvek zisku komplikuje vztah k zakladnej dokumentacii t.j.
> RM/datasheet.
>
>> a svým názvem a parametry za
>> mě řeąí dokumentaci - uąetří řadu komentářů, které bych jinak k
>> nastavování registrů musel otrocky vypisovat, abych za rok jeątě
>> tuąil, co chtěl tím řádkem básník říci.
>
> Ale ho*no, s prepacenim. Hlavickove subory stm32***xxx.h obsahuju vsetky
> komentare ktore potrebujete, proste urobite copy/paste, napr.
>
>      // now start up USART1
>      FPLED_USART->BRR = 16 * (1000000UL * HCLK_FREQUENCY_IN_MHz"/> / 4 ) /
> FPLED_USART_BAUDRATE;
>      // LBCL, CPOL and CPHA bits have to be selected when both the
> transmitter ant the receiver are disabled (says the user manual)
>      FPLED_USART->CR2 = 0
>        OR ( 0                       * USART_CR2_ADD_0    )  /* Address of
> the USART node */
>        OR ( 0                       * USART_CR2_LBDL     )  /* LIN Break
> Detection Length */
>        OR ( 0                       * USART_CR2_LBDIE    )  /* LIN Break
> Detection Interrupt Enable */
>        OR ( 1                       * USART_CR2_LBCL     )  /* Last Bit
> Clock pulse */
>        OR ( 0                       * USART_CR2_CPHA     )  /* Clock Phase */
>        OR ( 0                       * USART_CR2_CPOL     )  /* Clock
> Polarity */
>        OR ( 1                       * USART_CR2_CLKEN    )  /* Clock Enable
> */
>        OR ( USART_CR2_STOP__1_BIT   * USART_CR2_STOP_0   )  /* Bit 0 */
>        OR ( 0                       * USART_CR2_LINEN    )  /* LIN mode
> enable */
>      ;
>      // reset value of GTPR is OK for us, too
>      FPLED_USART->CR1 = 0
>        OR ( 0                       * USART_CR1_SBK      )  /* Send Break */
>        OR ( 0                       * USART_CR1_RWU      )  /* Receiver
> wakeup */
>        OR ( 0                       * USART_CR1_RE       )  /* Receiver
> Enable */
>        OR ( 1                       * USART_CR1_TE       )  /* Transmitter
> Enable */
>        OR ( 0                       * USART_CR1_IDLEIE   )  /* IDLE
> Interrupt Enable */
>        OR ( 0                       * USART_CR1_RXNEIE   )  /* RXNE
> Interrupt Enable */
>        OR ( 0                       * USART_CR1_TCIE     )  /* Transmission
> Complete Interrupt Enable */
>        OR ( 0                       * USART_CR1_TXEIE    )  /* Transmitter
> Empty Interrupt Enable */
>        OR ( 0                       * USART_CR1_PEIE     )  /* PE Interrupt
> Enable */
>        OR ( 0                       * USART_CR1_PS       )  /* Parity
> Selection - 0 = even, 1 = odd */
>        OR ( 0                       * USART_CR1_PCE      )  /* Parity
> Control Enable */
>        OR ( 0                       * USART_CR1_WAKE     )  /* Wakeup method
> - 0 = Idle Line, 1 = Address Mark */
>        OR ( 0                       * USART_CR1_M        )  /* Word length -
> 0 = 8-data-bit, 1 = 9-data-bit */
>        OR ( 1                       * USART_CR1_UE       )  /* USART Enable
> */
>        OR ( 0                       * USART_CR1_OVER8    )  /* USART
> Oversampling by 8 enable */
>      ;
>      FPLED_USART->CR3 = 0
>        OR ( 0                       * USART_CR3_DMAT     )  /* DMA Enable
> Transmitter */
>      ;
>
>
>
>> Ohledně praktického pouľití - ľe se pouľívá SPL vím. Existuje někdo,
>> kdo pro skutečnou práci přeąel na HAL a dělá s tím?
>
>
> Podla ohlasov z for su to vacsinou zufalci, ale to moze byt tym, ze na fora
> pisu vo vseobecnosti vacsinou zufalci.
>
> wek
>
> _______________________________________________
> HW-list mailing list  -  sponsored by www.HW.cz
> Hw-list na list.hw.cz
> http://list.hw.cz/mailman/listinfo/hw-list
>


Další informace o konferenci Hw-list