tuxcnc pisze: ↑15 lis 2022, 19:27
Ogólnie to ten kod miał być tylko przykładem, że nie tylko warto znać budowę procesora na który się pisze kod, ale nawet czasem jest to konieczne.
Tutaj (STM32) jest na przykład taka heca, że procesor jest 32-bitowy, ale licznik tylko 16-bitowy. Skąd ktoś traktujący procesor jako "czarną skrzynkę" ma wiedzieć jakiego typu zmiennych użyć?
Oczywiście ktoś piszący program na peceta nie musi wiedzieć co to jest tablica deskryptorów, ale jakieś ogólne pojęcie o budowie procesora mieć trzeba, choćby żeby wiedzieć dlaczego bardzo podobny kod wykonuje się dziesięć razy wolniej...
W niektórych sytuacjach jest to konieczne - ale taki kod warto schować w odzielnym pliku albo przynajmniej wydzielonych funkcjach opisanych jako dedykowane do konkretnego sprzętu.
Ale czasami poleganie na konkretnej architekturze może się bardzo zemścić. Parę lat temu miałem "przyjemność" pracować przy portowaniu na ARM kodu napisanego pod Motorolę 68k. Autorzy orginalnego kodu (ze wstydem przyznam że jestem jednym z nich) uprościli sobie życie wykorzystując fakt że Motorola 68k jest "big endian" i podczas interpretacji danych z portu szeregowego albo eeproma może odczytać wartości 32bit wprost z binarnego bufora, bez żadnych dodatkowych deklaracji. ARM (tak jak x86) jest "little endian" i czytał głownie brednie...
Z drugiej strony - libpng (
http://www.libpng.org/pub/png/libpng.html ). Można ją bez problemu skompilować pod windows i linuxem x86. Można ją skompilować pod Motorolę 68k. W razie potrzeby można zdefiniować własny alokator pamięci (przydaje się przy systemach "bare metal", nie posiadających malloc/free) - po prostu coś pięknego

Albo FatFs (
http://elm-chan.org/fsw/ff/00index_e.html) - implementacja FAT16,FAT32 i extFAT - chodzi praktycznie na wszystkiem. W konfiguracji można wyłączyć wszystko co niepotrzebne (np. zostawiać sobie "read only" FAT16, albo ReadWrite ze stałą datą modyfikacji pliku jeśli nie mamy RTC) i zredukować wilkość kodu do minimum. Jest nawet wersja działająca na mikorkontrolerach z ilością ramu mniejszą niż wielkość sektora na karcie SD... po prostu coś pięknego
tuxcnc pisze: ↑15 lis 2022, 19:27
Z czego następnym razem każecie mi się tłumaczyć?
KOD JEST DOBRY I NAPISANY ZGODNIE Z ZASADAMI !
nigdy nie pracowałem na stm32 ale kolega z biura tak i parę rzeczy obiło mi się o uszy...
https://micromouseonline.com/2013/01/13 ... -approach/