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



Teraz jest 20 kwi 2024, o 02:43


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 11 ] 
Autor Wiadomość
PostNapisane: 17 lip 2016, o 04:55 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 17 lis 2012
Posty: 41
Lokalizacja: Gdańsk
Pomógł: 1

Witam. Tym razem proszę o poradę dotyczącą uruchomienia biblioteki do obsługi kart SD. Po przerwie zainstalowałem nowe środowisko Eclipse Mars i pojawił się problem podczas kompilacji lekcji 15 TEST_FAT_FS. Gdy wgrywam bezpośrednio plik HEX wszystko działa poprawnie. Gdy tylko otworzę plik main.c w Eclipse MARS pojawiają się błędy. Po poprawieniu pierwszych z nich w plikach main.c oraz xitoa.h:
Kod:
main.c
const prog_char *p;      -->   const char *p PROGMEM;
static const prog_char str[] =   -->   static const char str[] PROGMEM =

xitoa.h
void xputs(const prog_char *string);      -->   void xputs(const char *string PROGMEM);
void xprintf(const prog_char *format, ...);   -->   void xprintf(const char *format PROGMEM, ...);


w konsoli otrzymuję taki oto rezultat:
Cytuj:
../xitoa.h:26:1: warning: '__progmem__' attribute ignored [-Wattributes]
void xputs(const char *string PROGMEM);
^
../xitoa.h:50:1: warning: '__progmem__' attribute ignored [-Wattributes]
void xprintf(const char *format PROGMEM, ...);
^
../main.c: In function 'put_rc':
../main.c:176:2: warning: '__progmem__' attribute ignored [-Wattributes]
const char *p PROGMEM;
^
../main.c: In function 'main':
../main.c:640:1: internal compiler error: in push_reload, at reload.c:1360


Tym razem Eclipse podkreśla błąd na czerwono na końcu głównej funkcji programu main. Niestety nie wiem jak dalej szukać dalszego rozwiązania, aby program się poprawnie skompilował. Z góry dziękuje wszystkim za podpowiedzi.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 17 lip 2016, o 11:56 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 20 sie 2013
Posty: 795
Lokalizacja: Poznań
Pomógł: 59

http://mirekk36.blogspot.com/2012/08/ec ... zytaj.html



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 18 lip 2016, o 00:36 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 17 lis 2012
Posty: 41
Lokalizacja: Gdańsk
Pomógł: 1

A mógłby ktoś mnie bardziej nakierować jak powinny wyglądać te linie kodu. Czytałem już wcześniej ten artykuł wiele razy i nie widzę jeszcze błędu w kodzie. Wszędzie dodany identyfikator const.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 18 lip 2016, o 05:02 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 17 lis 2012
Posty: 41
Lokalizacja: Gdańsk
Pomógł: 1

Dokonałem teraz następujących zmian:

Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


Nie jestem pewny czy te zmiany są poprawne, ale nie mam już trzech warningów.
Pozostał jeszcze błąd w pliku main.c oznaczony na końcu funkcji głównej programu:

Cytuj:
../main.c:640:1: internal compiler error: in push_reload, at reload.c:1360
}
^
Please submit a full bug report,
with preprocessed source if appropriate.
See <http://www.atmel.com> for instructions.
make: *** [main.o] Błąd 1



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 9 sie 2016, o 11:41 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 17 lis 2012
Posty: 41
Lokalizacja: Gdańsk
Pomógł: 1

Witam czy miałby ktoś trochę czasu i spróbował u siebie skompilować dołączone archiwum z obsługą karty SD. Chciałbym mieć pewność że to nie moje Eclipse odmawia posłuszeństwa. Dzięki za pomoc bo już od dłuższego czasu nie mogę sobie z tym projektem poradzić.


Załączniki:

Aby zobaczyć załączniki musisz się zalogować. Tylko zalogowani użytkownicy mogą oglądać i pobierać załączniki.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 9 sie 2016, o 12:55 
Offline
Moderator
Avatar użytkownika

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

Nie mam niestety zwykle czasu na takie sprawdzenia - no ale jednak udało się w chwili przerwy

pobrałem twój plik ZIP, rozpakowałem, zaimportowałem cały projekt do mojego workspace no i puściłem kompilację

Pokazało się CAŁE STADO dzikich błędów ... spora część w bibliotece FTA_FS, której to wersja nie jest dostosowana do najnowszego toolchaina.

Ale również KUPA BŁĘDÓW w twoim kodzie .... OD kiedy to tworzy się zmienne

static TYP nazwa_zmiennej PROGMEM !?!? wewnątrz funkcji programu a do tego jeszcze zmiennych tablicowych .... powiedz mi skąd bierzesz takie wzorce i pomysły ? bo aż ciekaw jestem ? i nie piszę tego z przekąsem czy ironią tylko chcę po prostu lepiej zrozumieć skąd ludzie mają takie pomysły, żeby w przyszłości móc jeszcze lepiej podejść do tłumaczenia pewnych rzeczy ....

Ja przekonany jestem, że nie mogłeś takich pomysłów zaczerpnąć albo z moich książek albo z poradników - więc skąd ? to mnie ciekawi

ostatni błąd w pliku main.c ten z tym nawiasem klamrowym to oczywista oczywistość - że coś po drodze zepsułeś z nawiasologią i teraz musisz poszukać miejsca gdzie wykastrowałeś o jeden zawias klamrowy za dużo albo gdzie dodałeś albo jeszcze inny babol związany właśnie z takim (sorki za określenie) no trochę dzikim definiowaniem zmiennych w pamięci flash wewnątrz funkcji ... wtedy pewnie kompilator dostaje odlotu już na maxa

Dobrze a teraz skąd się biorą błędy w bibliotece Fat_FS no z tego że była pisana pod stary toolchain WinAVR a nie pod najnowszy Atmel Toolchain

tam w tej bibliotece już nie chodzi tylko o specyfikatory const ale jeszcze inne poważniejsze zmiany ... ja sporo czasu poświęciłem aby przeportować tę bibliotekę pod Atmel Toolchain i jest ona albo na płycie DVD albo na Pendrive w nowym wydaniu Bluebooka w twardej oprawie ... jeśli jej nie masz to nie musisz zaraz kupować całej nowej książki - napisz do Pani Anety aneta@atnel.pl i dowiedz się jak i za ile można zakupić sam nośnik do nowszej wersji książki jeśli masz starszą jej wersję oczywiście - ale po ikonkach w podpisie widać że masz Bluebooka

Wtedy najpierw odpal i skompiluj kod z książki a później go spokojnie przerabiaj do swoich potrzeb tylko proszę zapomnij o tych praktykach z tworzeniem tych przedziwnych zmiennych wewnątrz funkcji ok ?

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

ach teraz dopiero zauważyłem jeszcze raz spoglądając na kod - to nie ty tworzyłeś te zmienne w niektórych funkcjach w main.c one już tam były tylko to ty wymyśliłeś widzę dodanie tam specyfikatora PROGMEM i to w głównej mierze powaliło całość.

Dodanie specyfikatora const nie oznacza, że ZAWSZE musi być dodany PROGMEM. Ale w odwrotnej sytuacji tzn tam gdzie jest PROGMEM zawsze trzeba dodać const.

_________________
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: 9 sie 2016, o 16:41 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 17 lis 2012
Posty: 41
Lokalizacja: Gdańsk
Pomógł: 1

Dzięki za podpowiedzi jako że jestem w tej chwili w Chinach nie mogę zaopatrzyć się w nośnik ale pomyślę po powrocie.

Pomysł ze zmiennymi wpadł mi ponieważ kompilator u mnie nie widzi definicji "prog_char" jakie były w oryginalnym projekcie właśnie wewnątrz funkcji, więc wszędzie tam pozmieniałem na const .... PROGMEM. Założyłem że prog_char definiował właśnie zmienną char w pamięci programu. Dziwiło mnie późniejsze przypisywanie do tych zmiennych.

Muszę jeszcze raz na tym programem na spokojnie posiedzieć.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 9 sie 2016, o 18:51 
Offline
Moderator
Avatar użytkownika

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

jeśli masz nowsze wydanie książki to po prostu zajrzyj do kodów na dołączonym nośniku - bo są przeportowane pod nowszy toolchain

_________________
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: 25 lut 2017, o 14:08 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 17 lis 2012
Posty: 41
Lokalizacja: Gdańsk
Pomógł: 1

Odgrzebię mój stary post. Zgodnie ze wskazówkami zakupiłem niebieski pendrive z kodami przystosowanymi do nowego toolchain'a. Zaimportowałem wspomniany wcześniej projekt 15_TEST_FAT_FS i po próbie kompilacji ponownie ten sam błąd:

Cytuj:
make all
'Building file: ../main.c'
'Invoking: AVR Compiler'
avr-gcc -Wall -Os -fpack-struct -fshort-enums -ffunction-sections -fdata-sections -Wstrict-aliasing=1 -funsigned-char -funsigned-bitfields -mmcu=atmega32 -DF_CPU=11059200UL -MMD -MP -MF"main.d" -MT"main.o" -c -o "main.o" "../main.c"
../main.c: In function 'main':
../main.c:641:1: internal compiler error: in push_reload, at reload.c:1360
}
^
Please submit a full bug report,
with preprocessed source if appropriate.
See <http://www.atmel.com> for instructions.
make: *** [main.o] Błąd 1


Kolejny raz sprawdzone nawiasy i wygląda na to że wszystkie są ok. Nie dokonywałem żadnych zmian w programie. Muszą być OK.
Projekt sprawdzany dla testu na Eclipse Mars oraz Neon.
Czy ktoś ma jakieś pomysły gdzie może być problem. Inne projekty z niebieskiej i zielonej się kompilują bez problemów. 15_Karta_SD oraz 15_TEST_Petit_FS również OK.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 25 lut 2017, o 18:34 
Offline
Użytkownik

Dołączył(a): 02 gru 2015
Posty: 544
Pomógł: 27

Zobacz ten temathttp://forum.atnel.pl/topic14846.html


Autor postu otrzymał pochwałę


Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 26 lut 2017, o 07:12 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 17 lis 2012
Posty: 41
Lokalizacja: Gdańsk
Pomógł: 1

Dzięki wielkie za pomoc. Modyfikacja w jednej linijce kodu i wszystko poprawnie się kompiluje. Jakoś przeoczyłem tamten wątek na forum.



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: 11 ] 

Strefa czasowa: UTC + 1


Kto przegląda forum

Użytkownicy przeglądający ten dział: Brak zidentyfikowanych użytkowników i 11 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:  
cron
Sitemap
Technologię dostarcza phpBB® Forum Software © phpBB Group phpBB3.PL
phpBB SEO