Trzeba by ustalić kto będzie na kursie przyswajał wiedzę, a kto ewentualnie mógłby ją przekazać. Zależy to od poziomu kursu :-) Może ja napiszę co wiem/zrobiłem a co mógłbym/chciałbym się dowiedzieć:
1. wiem/zrobiłem:
- przetestowałem kilka środowisk IDE oraz "gołe" budowanie z makefile przy pomocy edytora z pakietu Qt (QtCreator), teraz lubię jednak jakieś IDE, Eclipse+GNUArm czy CrossWorks/Segger może być, byle chodziło na Mac-a
- wykorzystuję SPL, choć uważam, że bez niego byłoby chyba lepiej. Od gołych rejestrów odrzuca mnie np. konfiguracja USART i przeliczanie prędkości :-) Można, ale łatwo się pomylić i to trochę "orka na ugorze"
- napisałem protokół komunikacyjny z CRC, do wymiany danych binarnych z desktopem, bazujący na USART, z timeoutami, nie zawieszający się :-) Część desktopowa w Javie (przenaszalne, komponent komunikacyjny JSSC)
- wykorzystuję przerwania do mierzenia czasu, timer do pomiaru częstotliwości, przetworniki ADC w tym przez DMA, czyli takie podstawy, wszystko z wykorzystaniem SPL. W ograniczonym stopniu wykorzystywałem SPI do komunikacji z innymi modułami (akcelerometr LISL)
- napisalem obsluge ad9850/51 w spl, banalne wykorzystanie GPIO
- C/C++ znam w miarę, może nie biblioteki typu boost czy smartpointery z C++ (dosyć dawno produkcyjnie programowałem w C/C++) ale poza tym ok, zresztą zawsze można się doszkolić.
w tym co powyżej mogę w miarę skromnych mozliwości dopomóc, pomóc zrobić jakiś kod szkoleniowy itd. Przy SPL się nie upieram, jeśli celem kursu ma być mistrzowskie opanowanie rdzenia i peryferii i wszyscy tego chcą to kim jestem by się sprzeciwiać ;-) Jednak użycie biblioteki w stylu openstm32 mogłoby być dobrym kompromisem.
2. czego nie wiem/nie robiłem/chętnie bym się nauczył:
- implementacja wirtualnego portu com na usb czysto programowo, żeby nie musieć kupować dongla USB/RS232, który nie jest drogi ale jeśli można łatwo w programie to czemu nie
- wykorzystywanie bibliotek innych niż SPL/HAM, integracja z projektem bazującym na makefile. To żeby być maksymalnie elastyczny jeśli chodzi o IDE/edytor oraz zewnętrzne biblioteki dla ułatwienia sobie pracy
- Integracja modułów sprzętowych (np. typowo radiowych) z wykorzystaniem SPI, I2C, wykonanie jakiegoś DSP programowo, itd.
- wykorzystanie przerwan i usart wspomagany przez dma oraz pozostale bardziej zaawansowane techniki mozliwe na cortexie
- ... coś o czym jeszcze nie wiem ale napewno by mi się spodobało :-)
Jak każdy zainteresowany potencjalnym kursem napisałby co wie a co chciałby się dowiedzieć to moglibyśmy ustalić jakiś plan kursu, wspólny warsztat roboczy i skład "uczniowski" oraz grono "nauczycielskie" :-) na każdym etapie.
Takie moje luźne przemyślenia nt. warsztatu pracy:
- środowisko dostępne na wszystkich platformach za darmo, może faktycznie SES skoro st-linka można reflashować na j-linka. Albo Eclipse ? Alternatywa to czysto makefilowy projekt i każdy sobie ustawia środowisko sam, jednak dla początkujących to byłby problem.
- praca bez SPL/HAL na początek
- zastanowiłbym się nad enkapsulacją podstawowych rzeczy w formie takiej mikro-biblioteczki. Celowo podałem kod w formie obiektowej, ale można by np. zrobić strukturę w C++ z funkcjami, alokowaną nie na stercie przez new ale normalnie na stosie lub jako globalna zmienna. Wtedy narzut byłby minimalny a czytelność o wiele większa jak można wywołać funkcję jako komponent struktury. To IMHO oczywiście i zależy od tego jakie mają być założenia kursu i może faktycznie wynika z mojego przyzwyczajenia do dektopowego kodu.
Tyle ode mnie :-)
1. wiem/zrobiłem:
- przetestowałem kilka środowisk IDE oraz "gołe" budowanie z makefile przy pomocy edytora z pakietu Qt (QtCreator), teraz lubię jednak jakieś IDE, Eclipse+GNUArm czy CrossWorks/Segger może być, byle chodziło na Mac-a
- wykorzystuję SPL, choć uważam, że bez niego byłoby chyba lepiej. Od gołych rejestrów odrzuca mnie np. konfiguracja USART i przeliczanie prędkości :-) Można, ale łatwo się pomylić i to trochę "orka na ugorze"
- napisałem protokół komunikacyjny z CRC, do wymiany danych binarnych z desktopem, bazujący na USART, z timeoutami, nie zawieszający się :-) Część desktopowa w Javie (przenaszalne, komponent komunikacyjny JSSC)
- wykorzystuję przerwania do mierzenia czasu, timer do pomiaru częstotliwości, przetworniki ADC w tym przez DMA, czyli takie podstawy, wszystko z wykorzystaniem SPL. W ograniczonym stopniu wykorzystywałem SPI do komunikacji z innymi modułami (akcelerometr LISL)
- napisalem obsluge ad9850/51 w spl, banalne wykorzystanie GPIO
- C/C++ znam w miarę, może nie biblioteki typu boost czy smartpointery z C++ (dosyć dawno produkcyjnie programowałem w C/C++) ale poza tym ok, zresztą zawsze można się doszkolić.
w tym co powyżej mogę w miarę skromnych mozliwości dopomóc, pomóc zrobić jakiś kod szkoleniowy itd. Przy SPL się nie upieram, jeśli celem kursu ma być mistrzowskie opanowanie rdzenia i peryferii i wszyscy tego chcą to kim jestem by się sprzeciwiać ;-) Jednak użycie biblioteki w stylu openstm32 mogłoby być dobrym kompromisem.
2. czego nie wiem/nie robiłem/chętnie bym się nauczył:
- implementacja wirtualnego portu com na usb czysto programowo, żeby nie musieć kupować dongla USB/RS232, który nie jest drogi ale jeśli można łatwo w programie to czemu nie
- wykorzystywanie bibliotek innych niż SPL/HAM, integracja z projektem bazującym na makefile. To żeby być maksymalnie elastyczny jeśli chodzi o IDE/edytor oraz zewnętrzne biblioteki dla ułatwienia sobie pracy
- Integracja modułów sprzętowych (np. typowo radiowych) z wykorzystaniem SPI, I2C, wykonanie jakiegoś DSP programowo, itd.
- wykorzystanie przerwan i usart wspomagany przez dma oraz pozostale bardziej zaawansowane techniki mozliwe na cortexie
- ... coś o czym jeszcze nie wiem ale napewno by mi się spodobało :-)
Jak każdy zainteresowany potencjalnym kursem napisałby co wie a co chciałby się dowiedzieć to moglibyśmy ustalić jakiś plan kursu, wspólny warsztat roboczy i skład "uczniowski" oraz grono "nauczycielskie" :-) na każdym etapie.
Takie moje luźne przemyślenia nt. warsztatu pracy:
- środowisko dostępne na wszystkich platformach za darmo, może faktycznie SES skoro st-linka można reflashować na j-linka. Albo Eclipse ? Alternatywa to czysto makefilowy projekt i każdy sobie ustawia środowisko sam, jednak dla początkujących to byłby problem.
- praca bez SPL/HAL na początek
- zastanowiłbym się nad enkapsulacją podstawowych rzeczy w formie takiej mikro-biblioteczki. Celowo podałem kod w formie obiektowej, ale można by np. zrobić strukturę w C++ z funkcjami, alokowaną nie na stercie przez new ale normalnie na stosie lub jako globalna zmienna. Wtedy narzut byłby minimalny a czytelność o wiele większa jak można wywołać funkcję jako komponent struktury. To IMHO oczywiście i zależy od tego jakie mają być założenia kursu i może faktycznie wynika z mojego przyzwyczajenia do dektopowego kodu.
Tyle ode mnie :-)
Robert HF6ROB

