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
