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