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.

[arm][lpc1114] Programowanie przez bootloader ISP

pwl16 27 Mar 2012 01:59 2254 11
  • #1 27 Mar 2012 01:59
    pwl16
    Poziom 9  

    Witam,

    Mam kłopot z zaprogramowaniem LPC1114 przez ISP. Przy próbie zaprogramowana lub "blank check" dostaję komunikat:

    "Unable to communicate. (transmit/receive)".

    Sygnaturę mogę odczytać i raczej jest odczytywana poprawnie, bo jak wybiorę inny typ procesora niż mam w układzie to od razu dostaję komunikat, że sygnatura się nie zgadza.

    Używam Flash Magic 6.30 oraz jako przejściówki z USB JTAGa od Freddiego Chopina. Identyczna sytuacja występuje na dwóch komputerach oraz przy użyciu zwykłego portu COM1 i przejściówki na MAX232. USB sprawdzałem zarówno na sterownikach libUSB jak i oryginalnych FT.

    0 11
  • #2 27 Mar 2012 08:00
    Freddie Chopin
    Specjalista - Mikrokontrolery

    Może układ jest jakoś zabezpieczony? Sterujesz resetem i pinem ISP poprzez UART, czy ręcznie? Jak masz to sterowanie ustawione w programie? Pokaż jakiś obrazujący sytuację zrzut ekranu.

    4\/3!!

    0
  • #3 27 Mar 2012 11:25
    pwl16
    Poziom 9  

    Przy obu ustawieniach jest podobnie. Teraz steruję ręcznie. P0.1 mam zwarte do masy i wciskam reset. W zakładce "Hardware Config" Wszystkie pola są odznaczone a linie DTR i RTS nie podłączone do układu. Tak wygląda po odczytaniu sygnatury:


    [arm][lpc1114] Programowanie przez bootloader ISP

    W zakładce "Security" nie mogę zmodyfikować opcji "Protect ISP Code" - ale z tego co wiem dotyczy to ochrony samego bootloadera. Przy odczycie "Read Security" dostaję odpowiedź "CRP is disabled":

    [arm][lpc1114] Programowanie przez bootloader ISP

    [arm][lpc1114] Programowanie przez bootloader ISP

    Natomiast po próbie zaprogramowania:
    [arm][lpc1114] Programowanie przez bootloader ISP [arm][lpc1114] Programowanie przez bootloader ISP

    Sprawdziłem jeszcze na drugiej płytce (moduł NanoM0) i jest ten sam kłopot. Ta płytka ma w sobie Jlinka przez którego da się ją zaprogramować.

    0
  • #4 27 Mar 2012 11:56
    Freddie Chopin
    Specjalista - Mikrokontrolery

    1. Spróbuj zaznaczyć opcję Erase all Flash+Code Rd Prot
    2. Spróbuj ustawić prędkość typu 57600
    3. Na pewno częstotliwość kwarcu jest prawidłowa?

    4\/3!!

    0
  • #5 27 Mar 2012 12:05
    michalko12
    Specjalista - Mikrokontrolery

    Na zakładce Communications próbowałeś ustawiać opcje High Speed Communications?

    0
  • #6 27 Mar 2012 13:27
    pwl16
    Poziom 9  

    ad 1. - próbowałem
    ad 2. - również, praktycznie na wszystkich prędkościach jest tak samo (z opcją High-Speed Communication jak sugeruje michalko12 również)
    ad 3. - Kwarc jest dobry.

    Co więcej płytka programuje się przy pomocy Jlinka i wtedy "Blink" działa. Po próbie zaprogramowania przez ISP przestaje. Próbowałem tez połączyć się przez terminal. Po przejściu w tryb ISP i wysłaniu z terminala znaku '?' otrzymuje w odpowiedzi "Synchronized" a jak wysyłam litery to wracają - a więc połączenie musi być. Może jest bug w najnowszej wersji Flash Magic albo LPC1114F/302 mają jakiś problem z fabrycznym bootloaderem?

    0
  • #7 27 Mar 2012 13:57
    Freddie Chopin
    Specjalista - Mikrokontrolery

    Trochę dziwne... Gdy tworzyłem/modyfikowałem ten projekt, a więc całkiem niedawno, sam działałem z Flash Magic i nie było większych problemów. Inną sprawą jest to, że ja mam płytkę ze zintegrowanym "programatorem", który steruje resetami i pinem ISP, choć nie sądzę aby to było specjalnie krytyczne,,, /;

    Tego reseta wciskasz jakoś tuż przed programowaniem, czy np raz na całą sesję? Pewnie już próbowałeś, ale może akurat nie - spróbuj go wcisnąć dosłownie ułamek sekundy przed rozpoczęciem programowania.

    Inne "większe" komendy (sprawdzenie czy flash czysty, weryfikacja z wrzuconym plikiem, ...) działają, czy też nie?

    4\/3!!

    0
  • #8 27 Mar 2012 14:53
    pwl16
    Poziom 9  

    Zwieram P0.1 zworką do masy i tak zostawiam. Następnie przyciskam na chwilę reset i puszczam (P0.1 zostaje zwarty albo wyjmuję zworę - ten sam efekt).

    Działa odczyt sygnatury, "Read Security" i kasowanie pamięci - a przynajmniej po zastosowaniu komendy "Erase" przestaje działać wgrany przez SWD "Blink". Też nie sądzę, żeby sterowanie pinami od ISP było krytyczne. Procesor wchodzi w odpowiedni tryb. Można mu wysłać przez terminal komendy zgodnie z opisem (str 407 user manual) i odpowiada tak jak powinien. Konkretnie wpisuję z klawiatury '?', dostaję "Synchronized", wpisuję "Synchronized" otrzymuję "OK" itd - to nie są przypadkowe ciągi znaków, jakby nie działał bootloader to by były co najwyżej śmieci.

    Wygląda to jakby bootloader (lub Flash Magic) nie mógł przeprowadzić operacji zpisu/odczytu na pamięci flash. Weryfikacja niby działa, ale po dość długiej chwili wypisuje, że jest błąd pod adresem 0x03 - a więc na samym poczatku tak więc raczej nie udaje się jej odczytać zapisanego we flashu programu.

    Masz zestaw ZL32ARM? A jaki jest na nim procesor? Tzn która wersja? U mnie jest /302. Da się może jakoś wgrać czysty bootloader przez SWD? I którą masz wersję Flash Magica? U mnie jest 6.30.2621 - niestety starsze nie są dostępne bo bym chętnie sprawdził.

    0
  • #9 27 Mar 2012 15:08
    Freddie Chopin
    Specjalista - Mikrokontrolery

    pwl16 napisał:
    Masz zestaw ZL32ARM?

    Dokładnie ten.

    Cytat:
    A jaki jest na nim procesor? Tzn która wersja? U mnie jest /302.

    Przykład był robiony na dokładnie tą płytkę, wg strony kamami jest tam "LPC1114FBD48/301".

    Cytat:
    Da się może jakoś wgrać czysty bootloader przez SWD?

    Bootloadera raczej nie da się uszkodzić.

    Cytat:
    I którą masz wersję Flash Magica? U mnie jest 6.30.2621 - niestety starsze nie są dostępne bo bym chętnie sprawdził.

    Sprawdzę później i dam znać.

    4\/3!!

    0
  • #10 27 Mar 2012 15:17
    michalko12
    Specjalista - Mikrokontrolery

    Problemów szukałbym w samej komunikacji. Pisałeś że sprawdzałeś na różnych portach w tym na zwykłym COM. Spróbuj w pierwszej kolejności usunąć kwarc i bez niego zaprogramować. Odznacz High Speed Communications, a prędkość programowania ustaw na 57600. Druga sprawa to sprawdź zasilanie procesora, czy jest stabilne i bez zakłóceń.

    0
  • #12 27 Mar 2012 17:38
    pwl16
    Poziom 9  

    Znalazłem rozwiązanie!

    Problemem najwyraźniej jest sam Flash Magic. Wersja 4.24 proponowana przez kolegę niestety nie obsługuje rdzeni Cortex. Ściągnąłem z netu wersję 5.74 i układ programuje się poprawnie i natychmiastowo czyli tak jak powinien. Wszystkim serdecznie dziękuję za pomoc i poświęcony czas. Gdyby ktoś miał podobny problem zamieszczam starszą wersję (Jak się poświęci chwilę to się znajdzie ją też przez Google).

    0