Elektroda.pl
Elektroda.pl
X
Proszę, dodaj wyjątek www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

Jak skonfigurować środowisko LPCexpresso?

kornik280 21 Wrz 2013 12:38 2688 18
  • #1 21 Wrz 2013 12:38
    kornik280
    Poziom 18  

    Witam

    Czy ktoś mógłby mi napisać w paru zdaniach jak skonfigurować środowisko LPCexpresso dla LPC1114, i jak wgrać program mam programator Ulink2.
    To jest moje pierwsze starcie z armami

    0 18
  • #2 21 Wrz 2013 14:11
    mickpr
    Poziom 39  

    kornik280 napisał:
    mam programator Ulink2.
    Więc zostaje ci tylko KEIL MDK.
    Też popełniłem ten błąd (to znaczy mój pracodawca).
    Jeśli nie masz innego programatora - program na LPC możesz wgrać przez bootloader (FT232) + program FlashMagic.
    Polecam też : http://mikrokontrolery.blogspot.com/2011/04/arm-jak-zaczac.html

    kornik280 napisał:
    ak skonfigurować środowisko LPCexpresso
    Co do tego środowiska - nie będę się wypowiadał (nie chcę używać brzydkich wyrazów).
    Najlepiej skonfiguruj sobie Eclipse + CodeSourcery/Linaro + GNU ARM Eclipse Plugin +OpenOCD, ewentualnie użyj Keil-a (o ile cię na niego stać).

    0
  • #3 21 Wrz 2013 14:43
    kornik280
    Poziom 18  

    Nie ma jakiejś okrojonej wersji Keil dla użytku domowego?

    0
  • #4 21 Wrz 2013 15:05
    tadzik85
    Poziom 38  

    Inne rozwiązanie to zakupić lpcexpreesoo jaka płytkę w dla LPClinka.

    A LPCxpresso nie jest takie zle

    0
  • #5 21 Wrz 2013 15:46
    BlueDraco
    Specjalista - Mikrokontrolery

    LPCxpresso w zasadzie używa się samo - nic nie trzeba konfigurować - uruchamiasz wizard nowego projektu i już. Masz to również wyczerpująco opisane w dokumentacji.

    Keil można ściągnąć za darmo, z ograniczeniem do 32 KiB. Na LPC11xx trudno to raczej przekroczyć.

    0
  • #6 21 Wrz 2013 15:53
    mickpr
    Poziom 39  

    BlueDraco napisał:
    LPCxpresso w zasadzie używa się samo - nic nie trzeba konfigurować - uruchamiasz wizard nowego projektu i już.
    Zgoda, ale uruchomisz pod tym ULINK'a?

    BlueDraco napisał:
    Keil można ściągnąć za darmo, z ograniczeniem do 32 KiB. Na LPC11xx trudno to raczej przekroczyć.
    Bardzo słuszna uwaga.

    tadzik85 napisał:
    Inne rozwiązanie to zakupić lpcexpreesoo jaka płytkę w dla LPClinka.
    Stanowczo odradzam. Lepiej już kup sobie płytkę LPC1114mini. Za połowę ceny LPCXPresso będziesz miał klon JLINK z działającym (tylko niestety) SWD.
    Programatora LPC-Link z tej (LPCXpresso) płytki nie zastosujesz nigdzie indziej - niż pod LPCXpresso, i znów on ma znów ograniczenia (długości kodu). Szkoda pieniążków.

    0
  • #7 21 Wrz 2013 18:34
    kornik280
    Poziom 18  

    Płytkę sobie sam zrobiłem
    Zainstalowałem Keil, wersja demo w zupełności mi wystarcza.
    Stworzyłem projekt w którym mam startup_LPC11xx.s oraz dodałem main.c w którym inkludowałem lpc11xx.h.
    W main.c mam funkcje main() a w niej while(1).
    Kompiluje i wywala mi błąd:
    .\ttt.axf: Error: L6218E: Undefined symbol SystemInit (referred from startup_lpc11xx.o).

    Co robię źle?

    0
  • #8 21 Wrz 2013 19:58
    mickpr
    Poziom 39  

    Długo by pisać...
    Tutaj masz przykłady (także w KEIL) od płytki z LPC1114 - przeanalizuj je.
    http://ngxtech.com/knowledgebase/index.php?title=BlueBoard-LPC1114_Quick_Start_Guide
    (Sam możesz znaleźć w Internecie więcej - również pod Keil).
    Oprócz samego kodu potrzeba także odpowiedniego ustawienia linkera itd..

    Ewentualnie w samym KEIL-u masz examplesy od płytki MCB1000 z LPC1114 - katalog KEIL\ARM\Boards\Keil\MCB1000

    kornik280 napisał:
    Undefined symbol SystemInit
    To znaczy, że brak ci definicji funkcji SystemInit (standardowo powinna być w pliku system_LPC11xx.c).
    Jest ona wywoływana z pliku startup...., a przez jakiś błąd linker jej nie widzi.
    W podanych kodach masz poprawne pliki startowe.

    0
  • #9 21 Wrz 2013 20:41
    Badmaneq
    Poziom 23  

    Tak jak napisał mickpr brakuje Ci funkcji SystemInit.
    Funkcja SystemInit zwykle służy do konfiguracji głównie zegar (taktowania).
    U mnie Keil uVision 4.03q plik startup_LPC11xx.s nie wywołuje funkcji SystemInit, dlatego sam ją wywołuję z main jako pierwszą. Standardowo funkcja SystemInit znajduję się w pliku system_LPC11xx.c, który jest częścią biblioteki CMSIS dla LPC11xx, oczywiście funkcję SystemInit możesz sam napisać korzystając z poradnika http://mikrokontrolery.blogspot.com/2011/04/arm-lpc1114-ustawienie-inicjalizacja.html jednak uważam, że na początku lepiej korzystać z pliku system_LPC11xx.c. W uVision będziesz mógł wybierając ten plik "graficznie" ustawiać parametry pracy mikrokontrolera wybierając zakładkę "Configuration Wizard".

    Może powinieneś spróbować środowiska programistycznego CoIde (www.coocox.org), który bazuje na Eclipse i jest bardzo przyjazny dla newbie - zaznaczam to moja subiektywna opinia.

    0
  • #10 21 Wrz 2013 21:00
    mickpr
    Poziom 39  

    Badmaneq napisał:
    Może powinieneś spróbować środowiska programistycznego CoIde (www.coocox.org), który bazuje na Eclipse i jest bardzo przyjazny dla newbie - zaznaczam to moja subiektywna opinia.
    Fajne uwagi, ale kolega ma programator ULINK2 - i zmiana środowiska spowoduje, że będzie on bezużyteczny.

    0
  • #11 21 Wrz 2013 21:05
    BlueDraco
    Specjalista - Mikrokontrolery

    Keil tworzy samoczynnie projekty w wersji dość "ubogiej". Jeśli używasz wewnętrznego oscylatora RC, możesz sam zdefiniować pustą funkcję SystemInit, albo zakomentować jej wywołanie w pliku STtartup.

    Jeśli nie potrzebujesz debuggera - zmień środowisko na LPCxpresso i programuj uC przez UART, używając FlashMagic albo LPC21ISP. Ja robię tak od dawna - LPCxpresso jest znacznie bardziej funkcjonalne niż Keil.

    0
  • #12 21 Wrz 2013 21:30
    mickpr
    Poziom 39  

    BlueDraco napisał:
    LPCxpresso jest znacznie bardziej funkcjonalne niż Keil
    Tak? A to ciekawe. Może podaj jakieś konkrety?

    0
  • #13 21 Wrz 2013 21:48
    BlueDraco
    Specjalista - Mikrokontrolery

    Np. poziom podpowiedzi w edytorze - łatwe przemieszczanie się po kodzie, skakanie do definicji, wyświetlanie rozwinięć makr. Pisanie dużych programów w LPCxpresso jest obecnie dużo przyjemniejsze niż w Keil.

    0
  • #14 21 Wrz 2013 22:21
    mickpr
    Poziom 39  

    BlueDraco napisał:
    Np. poziom podpowiedzi w edytorze - łatwe przemieszczanie się po kodzie, skakanie do definicji, wyświetlanie rozwinięć makr. Pisanie dużych programów w LPCxpresso jest obecnie dużo przyjemniejsze niż w Keil.
    Należy wspomnieć, że edytor w Keil ulega stałym modyfikacjom (zauważyłem - że podobnie IAR Embedded Workbench) - ale masz rację - daleko mu jeszcze do Eclipse.
    Jednak poza edytorem odziedziczonym od Eclipse LPC Xpresso nie ma praktycznie żadnych zalet (jeśli nie używamy oryginalnych płytek LPCXpresso). W tym brak jest możliwości wykorzystania Ulink'a, który posiada autor postu.

    Używając środowiska Keil'a autor postu ma możliwość wykorzystania debuggera (jedno kliknięcie) + bezproblemowe programowanie (jedno kliknięcie), a z FlashMagic-iem - musi "kombinować". Brak możliwości debugowania to spory minus - nie sądzisz?

    Osobiście używam Eclipse + GNU ARM Plugin oraz Keil. Poziom (łatwość) debugowania przechyla szalę przyjazności środowiska na korzyść Keil'a.
    Bardzo lubię Eclipse, ale porównywanie do niego LPCXpresso nie ma sensu.
    Równie dobrze można by użyć CoIDE (środowisko CooCox) - tyle, że LPC Xpresso jest ograniczone do części rodziny NXP LPC, a CooCox już nie. CooCox nie ma też ograniczeń wielkości kodu!

    Dużym minusem Keil'a jest jego cena, ale tą wadę ma też LPCXpresso - wszak wersja pełna jest również płatna. Jednak w tym wypadku nie ma to znaczenia.

    Wspomnieć należy o jeszcze jednym plusie Keil'a. Jest on sygnowany przez same konsorcjum ARM.

    0
  • #15 21 Wrz 2013 22:37
    BlueDraco
    Specjalista - Mikrokontrolery

    W porównaniu z CooCox LPCxpresso ma znacznie mniej błędów i jest b. dobrze, profesjonalnie "dopieszczone". Dzięki temu jest wygodne i bezproblemowe w użyciu. Jeśli chodzi o debugowanie - oczywiście masz rację - debugować można praktycznie tylko przy użyciu płytek LPCxpresso. Ja akurat debuggera nie używam wcale. Ciekawostką jest to, że w darmowej edycji LPCxpresso nie ma ograniczenia na rozmiar generowanych binariów, a jedynie na rozmiar obrazu debuggowanego.

    Keil jest przy LPCxpresso nieco "kostropaty". Edytor poprawia się z wersji na wersję, ale daleko mu jeszcze do Eclipse. Graficznie jest średnio przyjemny. Keila używam z rodzinami STM32 i M051.

    0
  • #16 22 Wrz 2013 11:03
    kornik280
    Poziom 18  

    Dobrze nie ma błędów brakowało mi jednego pliku.
    Tą funkcje SystemInit() mam wywoływać "ręcznie" w main?
    Gdzie się ustawia jej parametry?

    0
  • #17 22 Wrz 2013 11:48
    Badmaneq
    Poziom 23  

    To zalezy :)
    Z poprzednich postow wynika, ze startup_LPC11xx.s wywoluje "automatycznie" funkcje SystemInit, wiec nie musisz jej ponownie uruchamiac.
    SystemInit nie przyjmuje parametrow, mozesz edytowac cialo funkcji w celu zmiany ustawien zegara.
    Btw. Jakiego pliku Ci brakowalo ?

    0
  • #18 22 Wrz 2013 12:04
    kornik280
    Poziom 18  

    Brakowało system_LPC11xx.c.
    Czyli muszę znaleść funkcje SystmInit() i wyedytować ją samodzielnie?
    Co mam tam pozmieniać oprócz kwarcu (25MHz), pętla PLL też tam jest?
    Bo chcę go puścić 50MHz.

    Kod: c
    Zaloguj się, aby zobaczyć kod

    0