![]() |
|
Programowanie ARM, nauka, środowiska programistyczne IDE - Wersja do druku +- Forum HomeMade (https://sp-hm.pl) +-- Dział: Oprogramowanie (https://sp-hm.pl/forumdisplay.php?fid=12) +--- Dział: Technika programowania mikroprocesorów (https://sp-hm.pl/forumdisplay.php?fid=58) +--- Wątek: Programowanie ARM, nauka, środowiska programistyczne IDE (/showthread.php?tid=1816) |
RE: Programowanie ARM, nauka, środowiska programistyczne IDE - BUBAMUBA - 12-08-2016 Hey Jakoś ostatnio mało czasu mam na hobby i nie mam czasu opakować wszystkiego w ładną całość wstawię wam to w kawałkach z instrukcją montażu. Jakiś czas temu umieściłem już na elektrodzie paczkę z plikami do obsługi LCD. Paczka ta była modyfikacją do przykładowego projektu freddiego chopina (użytkownik elektrody). link do przykładu: http://www.freddiechopin.info/pl/download/category/6-przyklady Jest to przykład działający na "czystym eclipsie" bez arm plugin czy cocooxa. Dodane są tylko plugny (zylin, gdb) do debugu oraz wskazany kompilator. Jako że bazuje on na makefile myślę że niema najmniejszego problemu przenieś przykład na dowolne środowisko, ja jednak do tej pory pracuje na tym. Na jego stronie jest już troche przestarzała instrukcja jak zrobić to środowisko. Jeśli ktoś ma ochotę to mogę pomóc je złożyć. Po zaimportowaniu tego środowiska należy rozpakować moją paczkę i podmienić/dodać pliki. I tyle po skompilowaniu ekran będzie się świecił na biało(w moim przypadku wychodzi ten przeklęty lekki turkus). Aby zacząć malować wystarczy dodać/skonfigurować warstwę po skonfigurowaniu LCD: LTDC_Layer1->WHPCR = 30 | (269 <<16); LTDC_Layer1->WVPCR = 4 | (323 <<16); LTDC_Layer1->PFCR = 0b0; LTDC_Layer1->CFBAR = 0xD0000000; LTDC_Layer1->CFBLR = 963 | (960 <<16); LTDC_Layer1->CFBLNR = 320; LTDC_Layer1->CR |= LTDC_LxCR_LEN; LTDC_Layer1->CACR = 0xFF; LTDC->SRCR = LTDC_SRCR_IMR; LTDC->GCR |= LTDC_GCR_LTDCEN; I od tej pory ramka rozpoczyna się od adresu: 0xD0000000; każdy piksel to 32 bity format ARGB8888. Umieszczam to abyście mogli zacząć się temu przyglądać/wzorować się na tym. Nie wykluczam błędów. U mnie to działa ale możliwe że dokonałem modyfikacji których w tej paczce nie umieściłem. Jednak muszę znaleźć więcej czasu bo nie chce dodawać wersji która jest zlepkiem różnych eksperymentów, a tak właśnie wygląda najaktualniejszy kod źródłowy na którym pracuje. Musze zacząć od nowego projektu, poskładać to co jest potrzebne i po sprawdzeniu wam to udostępnię. RE: Programowanie ARM, nauka, środowiska programistyczne IDE - QRP73 - 15-08-2016 Pokazuje kolega przykladowy ekran i pisze ze lcd pod LTDC dziala. Ten przyklad jest niekompletny, brakuje w nim plikow. Dlaczego w programie nie ma inicjowania pamieci SDRAM? Dla jakiego zegara stm32f429 jest ta konfiguracja? RE: Programowanie ARM, nauka, środowiska programistyczne IDE - BUBAMUBA - 15-08-2016 dla 180 MHz sdram jest inicjowany w pliku system_init są funkcje które są wywoływane przez startup tam jest inicjalizacja sdram i zegara RE: Programowanie ARM, nauka, środowiska programistyczne IDE - QRP73 - 17-08-2016 Dzieki za wyjasnienia, nie moglem tego zlokalizowac w programie. Zrobilem z tego projekt pod Em, dadalem pliki i teraz poprawnie sie kompiluje. Hyba cos jest zle w inicjowaniu sdramu bo po kilku zapisach do ramki obrazu wiesza stma. Za malo wiem o oblsudze pamieci dynamicznych aby to namierzyc. Czy udalo sie komus uruchmic ten kod i moze zapisywac do sdramu ? Nie widze rowniez zadnych zmian na LCD przy zapisie do ramki obrazu. RE: Programowanie ARM, nauka, środowiska programistyczne IDE - BUBAMUBA - 17-08-2016 while (1) { //zielona dioda LED for (count = 0; count < count_max; count++); // delay LED_bb = 1; for (count = 0; count < count_max; count++); // delay LED_bb = 0; *((uint32_t *)ptr++) = 0xFFFFFFFF; //pixel do ramki obrazu } Tu masz błąd. Ta pętla w końcu zaczyna zapisywać w rejony poza ramem. RE: Programowanie ARM, nauka, środowiska programistyczne IDE - QRP73 - 17-08-2016 To nie to, przy tych opoznieniach na diodzie to duzo czasu musi minac aby wypelnic ramke. Dioda mruga 8 razy i mam STOP, komunikat zdebugera blad dostepu do memory. A u Ciebie to pracuje ? RE: Programowanie ARM, nauka, środowiska programistyczne IDE - SQ8MVY - 17-08-2016 Witam, Kod: *((uint32_t *)ptr++) = 0xFFFFFFFF; //pixel do ramki obrazuNo ok, ale gdzie tu masz jakąś kontrolę ilości zapisywanych danych do ramki obrazu ? W takiej formie Kod: while (1)pętla będzie się kręcić w nieskończoność, i wartość 0xFFFFFFFF będzie zapisywana do kolejnych komórek pamięci. A stm się wiesza, bo pętla zaczyna zapisywać tam gdzie nie powinna.. I jeszcze jedna mała uwaga !!!! Pamiętajcie, że ten ( i nie tylko ten) model stm-a ma mały obszar PAMIĘCI JEDNOKROTNEGO ZAPISU !!!!!! Więc uważajcie z takimi "kocimi" wynalazkami w kodzie !!!! RE: Programowanie ARM, nauka, środowiska programistyczne IDE - BUBAMUBA - 17-08-2016 Nie wiem jakie masz błędy. Pokaż logi. RE: Programowanie ARM, nauka, środowiska programistyczne IDE - QRP73 - 17-08-2016 Macie racje, ze brakuje ograniczenia ale ten zapis dalem tylko tak testowo. ptr jest ustawiany na poczatek ramki, dioda mruga wolno wiec nie ma ryzyka wyjscia poza sdram. Dobra, wyrzucilem ten zapis w petli i dalem zerowanie ramki obrazu przed petla. Efek taki sam, stm wisi. Co jest nie tak ? Nie wiem o jakie logi pytasz, kod nie wystarczy ? Co to jest pamiec jednokrotnego zapisu, to takie OTP jak w starych procesorach? RE: Programowanie ARM, nauka, środowiska programistyczne IDE - BUBAMUBA - 17-08-2016 Nie wiem co używasz do debugowania. Zazwyczaj jest jakiś terminal co wypluwa błędy i informacje. Poza tym nie jestem pewien ale chyba procek twój chodzi na 168MHz a mój przykład jest na 180. Trzeba podbić mu napięcie (w rejestrach) i wykręcić na maksa. Poza tym nie wiem jaki chcesz efekt jak 0xFFFFFFFF to jest biały obraz czyli taki sam jak tło. Daj 0xFF000000 to powinien zrobić się czarny. |