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

Jan Waclawek konfera na efton.sk
Pondělí Červen 1 10:45:07 CEST 2015


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



Daląí informace o konferenci Hw-list