Skocz do zawartości
Zaloguj się, aby obserwować  
Elvis

[Programowanie] Jak rozpocząć przygodę z ARM-ami (wersja szybka, choć droga)

Pomocna odpowiedź

Po załadowaniu programu rozwarłem zworkę odpowiedzialną za bootloadera.

Na 100% dioda jest podłączona do pinu P1.24.

JTAG jest w drodze 🙂

Kurde, nie mam pojęcia co mogłem skopać.

Udostępnij ten post


Link to post
Share on other sites

Chyba wiem dlaczego nie działa. Trzeba zdefiniować stałą STARTUP_FROM_RESET.

W oknie "Project Explorer" kliknij prawym klawiszem na projekcie i wybierz Properties.

Następnie poszukaj "Preprocessor Options"->"Preprocessor Definitions" i dodaj STARTUP_FROM_RESET.

[ Dodano: 18 Mar 10 09:47 ]

Dwa słowa wyjaśnienia. Przed uruchomieniem funkcji głównej programu, czyli main() dzieje się całkiem sporo.

Warto otworzyć plik "Philips_LPC210X_Startup.s" - jest tworzony przez CrossStudio podczas zakładania projektu.

W tym pliku zdefiniowany jest wektor przerwań oraz procedura obsługi reset-u (czyli prawdziwy początek programu).

Linia 150 i kolejne definiuje od czego nasz program się rozpoczyna:

reset_handler_address:
#ifdef STARTUP_FROM_RESET
 .word reset_handler
#else
 .word reset_wait
#endif

Czyli jeśli nie ma zdefiniowanej stałej STARTUP_FROM_RESET po resecie procesor przechodzi do fragmentu reset_wait gdzie znajduje się nieskończona pętla.

Dopiero jeśli zdefiniujemy STARTUP_FROM_RESET po resecie następuje skok do reset_handler i program rozpoczyna się normalnie (reset_handler m.in. konfiguruje PLL, dostęp do pamięci Flash).

Takie działanie może wydawać się nieco dziwne, ale jest bardzo przydatne podczas pracy z JTAG-iem. W procesorach ARM (nie wiem czy wszystkich, LPC na pewno) JTAG nawiązuje połączenie z procesorem gdy ten już pracuje. Czyli przez JTAG wykonywany jest reset, procesor wykonuje kawałek programu i dopiero wtedy JTAG zatrzymuje jego działanie (oraz uruchamia program ponownie, tym razem z debuggerem).

Oznacza to, że początek programu wykonywany jest 2 razy, a co gorsze jeśli na początku programu jest coś co wyłączy JTAG nie będzie możliwości pracy z JTAG-iem, nie będzie można nawet wgrać innego programu (pozostaje możliwość przez RS232).

Aby temu zapobiec CrossStudio domyślnie tworzy nieskończoną pętlę na początku programu. Gdy nasz program jest już przetestowany i gotowy, można zdefiniować stałą STARTUP_FROM_RESET i pozbyć się pętli przed programem.

  • Lubię! 1

Udostępnij ten post


Link to post
Share on other sites

Teraz już wszystko działa, bardzo dziękuje.

Udostępnij ten post


Link to post
Share on other sites

Dzień dobry.

Chciałem rozpocząć swoją naukę programowania mikrokontrolerów od Cortex'a M3 (107VC żeby być dokładnym).

Mam płytkę STM2110C-EVAL i no cóż.... to, że mam masę pytań/problemów, chyba mówić nie trzeba.

Korzystając z okazji, że znalazłem /przynajmniej na razie tylko tak wyglądający/ bardzo przystępny 'tutorialek' chciałbym się zapytać o 2 rzeczy. Może ktoś z bardziej doświadczonych członków forum będzie w stanie mi pomóc.

1. Mam debuggera Emlinka. Do tego ściągnąłem sobie uVision4 eval Keila. Postępując zgodnie z instrukcją instalacji udaje mi się otrzymać możliwość wyboru tego debuggera do wgrania i oglądania programu podczas pracy. Ale wystarczy, że wybiorę opcję 'settings' /czyli ustawienie jakichkolwiek parametrów/ a uVision się sam zamyka i zwraca problem. Czy ktoś spotkał się z takim problemem? Czy może jest na nie jakieś remedium?

Jeśli chodzi o parametry systemu to: WinXP SP3 /tak... wiem.... ale to komputer w pracy/, visual studio 2008, .Net Framework 3,5 /poprzednie także/.

1b. Czy można spróbować tak skonfigurować Generic FT2232 Device, aby współpracował z Emlinkiem? Jego parametry /nie wiem, czy wszystkie/ mam w menadżerze urządzeń w systemie.

2. Ten problem nawiązuje już bardziej do treści tematu, a mianowicie chciałem wykonać analogiczne kroki co autor tutoriala. Całkowicie pomijam fakt, że Emlink nie działa z CrossStudio, chciałem tylko przeprowadzić kompilację.

Zainstalowałem pakiety: STM32 CPU, STM32F10x CPU, STM32F10x Pheripherals.

Stworzyłem nowy projekt.

I tu jest problem. Nie mam docelowego pliku do zlinkowania, tj. STM32xxxxx.h

Pomyślałem, że może coś zrobiłem nie tak, więc ściągnąłem też pakiet "NXP LPC2000", ale po instalacji także nie ma żadnego pliku z tej linii: "#include ". Swoją drogą kat. targets nie zawiera żadnego pliku *.h. Oczywiście program się skompilował, lecz jestem w kropce. Gdzie znaleźć jakieś wyjaśnienie, jaki plik powinienem 'includować', żeby program mógł się skompilować?

Oczywiście nie mówię o reszcie, na razie sam 'include', bo zdaję sobie sprawę, że porty są u mnie zupełnie inne.

Czy może ktoś powie, że nie ma możliwości łatwej konwersji tego programu na moją płytkę?

O mnie i czemu tu jestem:

żaden ze mnie wielki programista, a i instrukcji THUMB2 jeszcze w ogóle nie znam. Chciałem się po prostu nauczyć, a że na pierwszy rzut oka obecne programowanie mikroprocesorów wydaje się podobne jak pisanie programów w C/C++, więc postanowiłem spróbować. Ot, tyle. Nie chcę zawojować świata, a piszę to wyjaśnienie tylko dlatego, że widziałem niektóre posty otwarcie atakujące ludzi, którzy w pierwszych postach pisali, że chcą się nauczyć programowania i szukają pomocy.

Z góry dziękuję za ewentualną pomoc

Rafał Typiak

P.S.

Czytałem trochę postów na tym forum i spodziewam się różnych odpowiedzi w stylu 'powinieneś zacząć od czegoś prostszego'. Pewnie jest w tym dużo racji, lecz mimo wszystko mam zamiar trochę poczłapać w tym skomplikowanym bagienku, które sobie sprawiłem. Nie planuję zrobienia robota /przynajmniej jeszcze nie :)/ ale chciałem zrobić kontroler działający w sieci CAN.

Udostępnij ten post


Link to post
Share on other sites

Witam,

Mam taki problem że CrossStudio nie generuje mi pliku .hex

Co może być nie tak?

Z góry dziękuje za pomoc.

Pozdrawiam, CIKO

Udostępnij ten post


Link to post
Share on other sites

W ustawieniach projektu trzeba odszukać opcję generowania dodatkowo pliku .hex.

Ja mam wersję 1.x CrossStudio, tam było to w zakładce Linker, opcja "Additional Output Format"

Udostępnij ten post


Link to post
Share on other sites

Dziękuję bardzo za pomoc.

Wszystko działa.

Udostępnij ten post


Link to post
Share on other sites

Dołącz do dyskusji, napisz odpowiedź!

Jeśli masz już konto to zaloguj się teraz, aby opublikować wiadomość jako Ty. Możesz też napisać teraz i zarejestrować się później.
Uwaga: wgrywanie zdjęć i załączników dostępne jest po zalogowaniu!

Anonim
Dołącz do dyskusji! Kliknij i zacznij pisać...

×   Wklejony jako tekst z formatowaniem.   Przywróć formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Twój link będzie automatycznie osadzony.   Wyświetlać jako link

×   Twoja poprzednia zawartość została przywrócona.   Wyczyść edytor

×   Nie możesz wkleić zdjęć bezpośrednio. Prześlij lub wstaw obrazy z adresu URL.

Zaloguj się, aby obserwować  

×
×
  • Utwórz nowe...