Kanał - ATNEL tech-forum
Wszystkie działy
Najnowsze wątki



Teraz jest 24 mar 2026, o 00:26


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 8 ] 
Autor Wiadomość
PostNapisane: 23 lis 2016, o 14:02 
Offline
Użytkownik

Dołączył(a): 10 kwi 2014
Posty: 61
Pomógł: 0

Witam!
Chciałem sobie odświeżyć nieco biblioteki i rozszerzyć je o kilka procesorków.
Macie jakieś sprawdzone sposoby jak to wszystko linkować ze sobą?
Mirekk36 wspominał coś o tym, że można to realizować na wzór struktury V-usb.
Ale nie do końca rozumiem, jak oni uzależniają daną część kodu od danego procesorka.
Jedyne co mi przychodzi to wrzucenie wysoko poziomowych funkcji w jeden plik i linkowanie tych nisko poziomowych w górę biblioteki.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 23 lis 2016, o 14:32 
Offline
Moderator
Avatar użytkownika

Dołączył(a): 03 paź 2011
Posty: 27450
Lokalizacja: Szczecin
Pomógł: 1045

Jatsekku napisał(a):
Mirekk36 wspominał coś o tym, że można to realizować na wzór struktury V-usb.

A gdzie ja coś takiego mówiłem ? ;) sam nie rozumiem co to w ogóle miałoby oznaczać co wyżej napisałeś.

Jatsekku napisał(a):
Ale nie do końca rozumiem, jak oni uzależniają daną część kodu od danego procesorka.

"oni" ... to znaczy kto ?

Jatsekku napisał(a):
Chciałem sobie odświeżyć nieco biblioteki i rozszerzyć je o kilka procesorków.

O jakich ty w ogóle bibliotekach piszesz ?

_________________
zapraszam na blog: http://www.mirekk36.blogspot.com (mój nick Skype: mirekk36 ) [ obejrzyj Kurs EAGLE ] [ mój kanał YT TV www.youtube.com/mirekk36 ]



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 23 lis 2016, o 14:41 
Offline
Użytkownik

Dołączył(a): 10 kwi 2014
Posty: 61
Pomógł: 0

Myśl trochę skrócona :)
Cytat z elektrody:

"Zobacz sobie na "pseudo biblioteki" np V-USB, tam masz bardzo podobną wręcz identyczną sytuację, tylko jeden plik konfiguracyjny musisz przekopiować do folderu swojego projektu a reszta jest taka sama dla każdego projektu. Jak widać nie jest to jakieś cudowne rozwiązanie wymyślone tylko przeze mnie ;) "

Oni - twórcy biblioteki V-USB.

Obojętnie, napisanie przez siebie biblioteki, które wykorzystują przerwania np. UART.

Chodzi mi o to, żeby jedna biblioteka była uniwersalna dla wielu procesorów AVR, wisienką na torcie byłoby gdyby kompilator sam wykluczał niewykorzystywane funkcje.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 23 lis 2016, o 14:43 
Offline
Użytkownik

Dołączył(a): 20 kwi 2014
Posty: 51
Zbananowany użytkownik

Pomógł: 3

Jatsekku napisał(a):
Witam!
Chciałem sobie odświeżyć nieco biblioteki i rozszerzyć je o kilka procesorków.
Macie jakieś sprawdzone sposoby jak to wszystko linkować ze sobą?
Mirekk36 wspominał coś o tym, że można to realizować na wzór struktury V-usb.
Ale nie do końca rozumiem, jak oni uzależniają daną część kodu od danego procesorka.
Jedyne co mi przychodzi to wrzucenie wysoko poziomowych funkcji w jeden plik i linkowanie tych nisko poziomowych w górę biblioteki.


Pytanie zaiste nie za bardzo zrozumiałe :)
Gdy miały mnie ponieść wodze fantazji to odpowiedziałbym tak:
Jest sposób na rozszerzenie bibliotek o nowe procesory.
Ładujesz do Eclipsa projekt zgodny z pewnym procesorem, sprawdzasz czy kod działa poprawnie.
Później zmieniasz na inny procesor w ustawieniach projektu i znowu sprawdzasz, jeśli projekt działa poprawnie, to cieszysz się z rozszerzonej biblioteki.
Jeśli nie działa, to bierzesz do ręki noty katalogowe procka działającego i niedziałającego i tak długo poprawiasz błędy aż zacznie działać.
Zwykle różnice są w rejestrach i flagach.
Później korzystasz z opcji preprocesora i np warunkiem:
#if defined __AVR_ATmega32__
#endif
ustalasz opcje dla konkretnego procesora, resztę załatwia Eclipse, który automatycznie steruje makefile'em w zależności od wybranego procka.
Nie mam tylko pewności czy o to Ci chodziło :)

------------------------ [ Dodano po: 1 minucie ]

Jatsekku napisał(a):
Myśl trochę skrócona :)
Cytat z elektrody:

"Zobacz sobie na "pseudo biblioteki" np V-USB...

Od dawna zachodzę w głowę, co ci "Oni" mają do bibliotek V-USB...

------------------------ [ Dodano po: 8 minutach ]

Jatsekku napisał(a):
Chodzi mi o to, żeby jedna biblioteka była uniwersalna dla wielu procesorów AVR, wisienką na torcie byłoby gdyby kompilator sam wykluczał niewykorzystywane funkcje.


To teraz rozumiem całkowicie.
Na dniach opublikuję pewien projekt, który prawdopodobnie trochę rozjaśni Ci ten temat.
Żeby za dużo na razie nie zdradzać, zrobiłem projekt korzystający z V-USB, który przystosowany jest jednocześnie do Atmega8, Atmega32, ATtiny85 i ATmega328P. Co jak dla mnie, początkującego, było sporym wyzwaniem i zajęło kupę czasu, a prace nadal są w toku.
Dodatkowo współpracuje również z ATmega32U4, ale to już inna bajka :)



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 23 lis 2016, o 14:59 
Offline
Użytkownik

Dołączył(a): 10 kwi 2014
Posty: 61
Pomógł: 0

Akurat to, że mogę sobie wyłączać lub włączać do kompilacji fragmenty programów w uzależnieniu od nazwy procka wiem doskonale :)
Sęk w tym, że chciałem się dowiedzieć jak się to profesjonalnie robi. Tzn właśnie jak zrealizować, żeby sam kompilator nie linkował funkcji które nie są używane, jak podzielić bibliotekę na odpowiednie warstwy abstrakcji sprzętowej (HAL) itp :) W najprostszym przypadku to mogę sobie po prostu skopiować bibliotekę n-razy opatrzyć je o odpowiednie instrukcje "#if defined" i pozmieniać odpowiednie rejestry i flagi. ale chyba nie o to chodzi...



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 23 lis 2016, o 15:08 
Offline
Użytkownik

Dołączył(a): 20 kwi 2014
Posty: 51
Zbananowany użytkownik

Pomógł: 3

Jatsekku napisał(a):
Akurat to, że mogę sobie wyłączać lub włączać do kompilacji fragmenty programów w uzależnieniu od nazwy procka wiem doskonale :)
Sęk w tym, że chciałem się dowiedzieć jak się to profesjonalnie robi. Tzn właśnie jak zrealizować, żeby sam kompilator nie linkował funkcji które nie są używane, jak podzielić bibliotekę na odpowiednie warstwy abstrakcji sprzętowej (HAL) itp :) W najprostszym przypadku to mogę sobie po prostu skopiować bibliotekę n-razy opatrzyć je o odpowiednie instrukcje "#if defined" i pozmieniać odpowiednie rejestry i flagi. ale chyba nie o to chodzi...


Zatem, wg mnie, powinieneś zacząć studiować bibliotekę Lufa:
https://github.com/abcminiuser/lufa

W mojej, skromnej, opinii to jest właśnie taki projekt, o jakim piszesz.
Wieloplatformowy, wieloprocesorowy
Dodatkowo IRMP:
http://www.mikrocontroller.net/articles/IRMP

To z nich można wiele się nauczyć, ale nie jest to zbyt proste.
Gotowych rozwiązań, sposobów to pewnie nikt Ci nie napisze.
No chyba, że Mirek w PurpleBooku... :)



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 23 lis 2016, o 15:15 
Offline
Moderator
Avatar użytkownika

Dołączył(a): 03 paź 2011
Posty: 27450
Lokalizacja: Szczecin
Pomógł: 1045

Cytuj:
Myśl trochę skrócona
Cytat z elektrody:

trochę .... heheheh trochę ... dobre ;)

Jatsekku napisał(a):
Sęk w tym, że chciałem się dowiedzieć jak się to profesjonalnie robi.

Profesjonalnie to nikt przede wszystkimi nie robi prawdziwych bibliotek w warunkach amatorskich bo to się mija z celem ;) ...

Natomiast tworzenie takich "ala" bibliotek masz opisane w dwóch książkach które posiadasz ...

Sterowanie kompilacją dla kilku różnych procków też masz pokazane w wielu - na prawdę wielu przykładach wziąwszy pod uwagę obydwie książki ... więc aż się dziwię, że nie za bardzo w ogóle jakby wiesz jak się za to zabrać ...

A jak chcesz zobaczyć co i jak można robić z UARTEM dla wielu różnych procków to czemu nie zajrzysz np do kodu źródłowego BLS który masz pokazany i otwarty w programie MkBootloader .... Masz tam taką ilość dyrektyw preprocesora wachlujących nazwami rejestrów i bitów w rejestrach w zależności od procków że cię głowa rozboli ;) od analizy ... Ale jest to bardzo dobry przykład jak można to robić

Oczywiście podstawa to DOBRZE zaplanować bibliotekę czyli jak ?

ano tak żeby ZDECYDOWANIE oddzielić funkcje z warstwy abstrakcji od funkcji warstwy sprzętowej - i już masz 50% sukcesu

Jatsekku napisał(a):
wisienką na torcie byłoby gdyby kompilator sam wykluczał niewykorzystywane funkcje.

No tu znowu aż wstyd troszkę pytać gdy masz to nie tylko opisane w Bluebooku ale na dodatek jeszcze wyszczególnione ładnie na końcu w aneksach żeby zawsze można było szybko sięgnąć po te opcje kompilatora ;) ... więc no tylko tam zajrzeć panie kochany.

------------------------ [ Dodano po: 1 minucie ]

szymonciow napisał(a):
No chyba, że Mirek w PurpleBooku...

Nie - dlatego że zawsze powtarzam, że z punktu widzenia tworzenia tak dla siebie to jest zupełny nonsens ;) Za to ma to sens gdy ktoś tworzy coś przede wszystkim bardzo popularnego już na świecie wręcz ;) ...

A dla siebie ? .. .no też można chociażby dla sportu, czemu nie ? ;) a kto komu zabroni ?

------------------------ [ Dodano po: 2 minutach ]

w purple booku - będziemy się zajmować zapewne dużo ciekawszymi rzeczami.

_________________
zapraszam na blog: http://www.mirekk36.blogspot.com (mój nick Skype: mirekk36 ) [ obejrzyj Kurs EAGLE ] [ mój kanał YT TV www.youtube.com/mirekk36 ]



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 23 lis 2016, o 15:22 
Offline
Użytkownik

Dołączył(a): 10 kwi 2014
Posty: 61
Pomógł: 0

Dziękuję za przykłady ! IRMP jest już o wiele bardziej przejrzysty :)
Rany, nie wiedziałem, że można to zmieniać w opcjach kompilatora, faktycznie wstyd hehe :)
To już wszystko jest jasne, biorę się za pisanie. Dziękuję wam bardzo! :)



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
Wyświetl posty nie starsze niż:  Sortuj wg  
Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 8 ] 

Strefa czasowa: UTC + 1


Kto przegląda forum

Użytkownicy przeglądający ten dział: Brak zidentyfikowanych użytkowników i 2 gości


Nie możesz rozpoczynać nowych wątków
Nie możesz odpowiadać w wątkach
Nie możesz edytować swoich postów
Nie możesz usuwać swoich postów
Nie możesz dodawać załączników

Szukaj:
Skocz do:  
Sitemap
Technologię dostarcza phpBB® Forum Software © phpBB Group phpBB3.PL
phpBB SEO