Elektroda.pl
Elektroda.pl
X

Search our partners

Find the latest content on electronic components. Datasheets.com
Please add exception to AdBlock for elektroda.pl.
If you watch the ads, you support portal and users.

Programowanie AT91SAM9260

vbnero 02 Apr 2009 15:15 6350 22
  • #1
    vbnero
    Level 10  
    Witam wszystkich.
    Ostatnio moja uczelnia zmusiła mnie do zaprogramowania mnimodułu firmy Propox opartego o arma AT91SAM9260. Zakupiony zestaw to:
    Code:
    minimoduł MMnet1001 http://www.propox.com/products/t_231.html

    Code:
    płytę ewaluacyjną EVBmmTm http://www.propox.com/products/t_183.html

    Code:
    wyświetlacz graficzny http://www.sklep.propox.com/index.php?d=produkt&id=2081
    Code:
    programator JTAG http://www.propox.com//products/t_206.html.

    Na pokładzie wgrany jest linuks Kernel 2.6.28.8, natomiast system oparty jest na OpenWrt.
    Nie jestem z tym tematem za bardzo obeznany i nie posiadam portu RS232 ani LPT, tylko USB, więc stąd moje pytania:
    - Czy zna ktoś dla tego procka środowisko, które wgra mi program przez USB? Wszystkie, które znalazłem, to albo RS, LPT albo po koreańsku. Co prawda znalazłem Crossworks, który łączy się przez J-TAG, ale nie widzę tam nigdzie opcji wgrania programu.
    - Dowiedziałem się, że mogę wgrywać programy prze ethernet, ale muszę wcześniej ustawić hasło łącząc się Hyperterminalem przez RS (którego nie mam w laptopie). Czy jest szansa, że którykolwiek konwerter RS-USB zadziała w tym przypadku? Musze dostać się do portu DBGU, aby ustawić hasło dostępu.

    Może miał ktoś już do czynienia z takim, lub podobnym zestawem firmy propox i chciałby się podzielić ze mną swoją wiedzą, będę bardzo wdzięczny. Muszę napisać program, który będzie pobierał i wysyłał dane przez USB i prawdę mówiąc, nie wiem jak się do tego zabrać. 2 tygodnie już walczę, aby zainstalować jakieś środowisko od edytora kody, przez kompilator do flashera, ale jak na razie idzie mi delikatnie mówiąc kiepsko. Dlatego też zdecydowałem się w końcu na napisanie tego postu.
    Pozdrawiam
    Konrad
  • #2
    filug
    Level 15  
    AT91SAM9260 zaprogramujesz używając atmelowej SAMBY.

    Problem jest tylko taki, że po podłączeniu MMnet do kompa poprzez USB device, nie zostanie wykryto procesor przez windowsa - nie uruchomi się SAM-BA bootloader w samym procesorze.

    Aby go uruchomić trzeba w jakiś sposób uniemożliwić uC start z pamięci Flash. Możesz to zrobić zakładając zworkę JP1 (czyli przywierając PC15) do masy. Wtedy niestety zostanie nadpisana pamięć Flash i już później nie wstanie system - w celu przywrócenia do stanu pierwotnego będziesz musiał programować Flasha od nowa.

    Druga możliwość to odlutowanie rezystora R28 - Flash będzie wtedy niewidoczny dla uC.

    Mam nadzieję, że chociaż trochę naprowadzi Cię to na trop ... sam walczę z tym prockiem tyle, że na MMnet1002.

    --
    pozdrawiam
    filug
  • #3
    vbnero
    Level 10  
    Używając Samby próbowałem. Ale albo źle próbuję wgrywać, albo nie wiem nic nie działa. Samba wygląda na zwieszoną. Przyznam szczerze, że potrzebuję "gotowca" na teraz, bo mi się termin zbliża. Do napisania mam ciągle komunikację USB, a na razie nie wiem jak to zmusić do życia.
    Niestety nie mogę w żaden sposób ingerować w płytkę. Moim marzeniem jesz tekst na LCD, który wyświetla "Cześć".
    Pozdrawiam
    Konrad
  • #4
    Smashing
    Level 20  
    Witam
    A nie da się połączyć przy pomocy Jtaga +samba?
    Jeszcze nie sprawdzałem czy sam9 się tak da programować , ale sam7 tylko tak w ten sposób programuje.
    ps
    Proszę o info czy koś próbował, jak nikt to mogę sprawdzić
    Pozdrawiam

    edit
    Ciekawe dlaczego propox wstrzymał sprzedaż tego programoatora i prosi o kontakt telefoniczny lub mejlowy.
    Osobiście używam AT91SAM-ICE z seguro, jest droższy o 100zl i działa
  • #5
    vbnero
    Level 10  
    No to jak mówiłem. Używałem samby + jtaga, ale wiesza mi się przy programowaniu.
  • #6
    filug
    Level 15  
    ja na samym początku robiłem tak:

    w opcjach linkera zaznaczałem, że program ma być ładowany pod adres 0x20000000 (czyli SDRAM, kompilowałem program ...

    i później w sambie - zakładka "SDRAM":
    1. wybierasz i klikasz "Enable Sdram",
    2. w "Send File Name" ustawiasz plik z wsadem,
    3. klikasz Send File
    4. w linii komend wpisujesz "go 0x20000000"

    mi w ten sposób udało się zmusić program do wystartowania z pamięci SDRAM.
  • #7
    vbnero
    Level 10  
    filug wrote:
    ja na samym początku robiłem tak:

    w opcjach linkera zaznaczałem, że program ma być ładowany pod adres 0x20000000 (czyli SDRAM, kompilowałem program ...

    i później w sambie - zakładka "SDRAM":
    1. wybierasz i klikasz "Enable Sdram",
    2. w "Send File Name" ustawiasz plik z wsadem,
    3. klikasz Send File
    4. w linii komend wpisujesz "go 0x20000000"

    mi w ten sposób udało się zmusić program do wystartowania z pamięci SDRAM.


    A możesz mi powiedzieć jakiego środowiska używasz do pisania i kompilacji programów?
  • #8
    filug
    Level 15  
    w chwili obecnej:
    Code Sourcery zainstalowane pod Fedorą - pod Windowsem miałem problemy przy komilacji u-boot'a.

    Było także GNU ARM i okazjonalnie, na samym początku Keil uVersion.

    Sam dopiero zaczynam zabawę z tym uC więc próbuję wszystkiego :)
  • #9
    vbnero
    Level 10  
    Z tego co wyczytałem, to Code Sourcery jeszcze nie wspiera ARM 9 (którego niestety ja właśnie mam). Ja próbuję pisać używając właśnie GNU ARM, ale jakoś mi nie idzie. Przydał by się taki poradnik krok po kroku jak się za to zabrać (konfiguracja środowiska, jakie łącza, jakie programy). Gdzieś ostatnio coś podobnego znalazłem (dotyczyło Eclipse z pluginem dla ARM), ale niestety zawieruszyło mi się po ostatniej awarii systemu.
  • #11
    arrevalk
    Level 25  
    @Freddie Chopin
    A yagartho? Fakt że trzeba się pomęczyć żeby to skonfigurować, i dodatkowo wiele rzeczy trzeba ręcznie przestawiać. Ale mi się na tym dobrze pracuje.
    @vbnero
    Jeżeli ten moduł ma na pokładzie linuxa to nie jest problemem wrzucać mu programy przez ftp. Kwestia znajomości hasla i loginu.
    Co do konwerterow usb/rs232 to powinien ci zadziałać każdy bo port DBGU ma tylko dwie linie TxD oraz RxD. Mi bardzo dobrze emuluje pełny port rs konwerter z chipem PL2302, kupilem go w markecie za 10zl.
    Pytanie czy aplikacje masz napisać od podstaw czy też może kożystać z linuxa jako systemu operacyjnego.
  • #13
    arrevalk
    Level 25  
    Yagartho to kompilacja GCC a wg dokumentacji GCC(4.3.3) rdzeń arm926ej-s jest na liście wspieranych architektur(zresztą są na niej chyba wszystkie achitektury arm włącznie ze StrongARM). I masz racje nie jest wtyczką do eclipse, mój bład.
  • #14
    vbnero
    Level 10  
    arrevalk wrote:
    @Freddie Chopin
    A yagartho? Fakt że trzeba się pomęczyć żeby to skonfigurować, i dodatkowo wiele rzeczy trzeba ręcznie przestawiać. Ale mi się na tym dobrze pracuje.
    @vbnero
    Jeżeli ten moduł ma na pokładzie linuxa to nie jest problemem wrzucać mu programy przez ftp. Kwestia znajomości hasla i loginu.
    Co do konwerterow usb/rs232 to powinien ci zadziałać każdy bo port DBGU ma tylko dwie linie TxD oraz RxD. Mi bardzo dobrze emuluje pełny port rs konwerter z chipem PL2302, kupilem go w markecie za 10zl.
    Pytanie czy aplikacje masz napisać od podstaw czy też może kożystać z linuxa jako systemu operacyjnego.


    No właśnie problemem jest wrzucanie przez ftp, bo muszę najpierw hasło ustawić :), a do tego potrzebuję RS i hyperterminal (tak twierdzi propox). Ale skoro twierdzisz, że można USB->RS w markecie kupić, to jak mi tylko jakiś otworzą, to zaraz się wybiorę i spróbuję ustawić hasło. Co do aplikacji, to myślę, że może ona korzystać z Linuksa.

    Wiem, że pytanie może głupie, ale jak po wrzuceniu przez ftp uruchomić program ?
  • #15
    arrevalk
    Level 25  
    To jest linux wiec traktujesz ten moduł tak samo jakbyś się zdalnie łączył z jakimś komputerem (telnet,ssh itp). Można też przez wirtualną konsole (która jest na porcie DBGU, może ona być wyłączona, zmienić coś takiego można w bootloaderze, uwaga ta konsola często pracuje w trybie root, wiec prosto nią coś namieszać). Krótko mówiąc musisz mieć jakieś podstawy programowania i obsługi linuxa.
    Jako hosta do tworzenia programów/łączenia z wszelkimi modułami z linuxem embedded ja wykorzystuje innego linuxa (Ubuntu) tak jest prościej.
    I niekoniecznie Hyperterminal, może być Herkules, puTTy itp.
    Poza tym piszesz że już coś próbowałeś zaprogramować na tym module sambą lub jtagiem. Wiec najprawdopodobniej nadpisałeś system tymi działaniami, będziesz musiał go przywrócić. Pewnie jest to opisane w instrukcji do modułu. Jest kilka książek opisujących jak wykorzystywać linuxa w systemach embedded (niekoniecznie o army ale robi się to tak samo):
    Karim Yaghmour, Building Embedded Linux Systems, O'Reilly 2003
    Doug Abbot, Linux for Embedded and Real-time Applications, Newnes 2003
    M. Mitchell, J. Oldham, A. Samuel, Advanced Linux Programming, New Riders 2001 (wydana po polsku)
    N. Matthew, R. Stones, Beginning Linux Programming, Wiley Publishing, Inc. 2007
    Co do uruchamiania programu po skopiowaniu to robi się to mniej więcej tak:
    Po skopiowaniu ftpem programu do katalogu np /home/uzytkownik, logujemy sie telnetem na moduł i przechodzimy do danego katalogu. Nadajemy plikowi prawa do wykonywania (czasem nie trzeba tego robic, a jeżeli już to tylko jednorazowo):
    Code:
    #chmod +x ./program

    Nastepnie uruchamiamy program:
    Code:
    #./program

    I możemy się cieszyć efektami naszej pracy, jeżeli to był program "Hello World!" to w terminalu powinna się pojawić linijka:
    Code:
    Hello World!

    Taki program można też uruchamiać razem ze startem systemu, po prostu trzeba dodać odpowiednią linijkę do skryptu statowego zlokalizowanego w katalogu /etc.
    Można by tak długo jeszcze tłumaczyć wszysko tylko że miejsca na to niema. Jak będziesz miał problemy to postaram się Ci pomóc na bieżąco.
  • #16
    vbnero
    Level 10  
    arrevalk wrote:
    Jako hosta do tworzenia programów/łączenia z wszelkimi modułami z linuxem embedded ja wykorzystuje innego linuxa (Ubuntu) tak jest prościej.
    I niekoniecznie Hyperterminal, może być Herkules, puTTy itp.
    Poza tym piszesz że już coś próbowałeś zaprogramować na tym module sambą lub jtagiem. Wiec najprawdopodobniej nadpisałeś system tymi działaniami, będziesz musiał go przywrócić. Pewnie jest to opisane w instrukcji do modułu.

    A więc mam pytanie:
    - co znaczy, że z Ubuntu jest prościej?
    Linux jest wgrany, bo po pierwszych próbach przywróciłem go.
    Z góry dziękuję za odpowiedzi.
  • #17
    Kalvis
    Level 13  
    Witam.
    Od niedawna także mam ten moduł. Do wgrania plików na moduł używam TFTP. Ja z kolei mam problem ze skonfigurowaniem środowiska. Niby w opisie od Propoxu jest napisane, że na płycie (płytkach) jest kompletne oprogramowanie: "Na płycie CD dostarczany jest kros-kompilator, znajduje się on w archiwum OpenWrt-SDKat91-
    for-Linux-i686.tar.bz2" ale go tam nie ma. To samo tyczy się kilku przykładowych programów.
    W tym manualu napisane jest także o konieczności kompilacji programów w środowisku linux. Mam ubuntu odpalonego na wirtualnej maszynie VMware.
    Nie wiem czego użyc do pisania i kompilacji programu pod tego linuxa. Chciałbym chociaż odpalic jakiś prosty programik typu "hello world" żeby by byc pewnym, że mam wszystko przygotowane do właściwego pisania.
    Niestety nie wiem jaki kompilator sciągnąc pod tę platformę i jak go zainstalowac w linuxie. Propox dopiero pisze tego manuala i na bieżąco uaktualnia płytę ale nie chce mi się czekac tak długo.
    Podsumowując:
    Co musze zainstalowac i jak na linuxie aby muc kompilowac program.
    Jakiej komędy użyc do kompilacji.
  • #18
    arrevalk
    Level 25  
    Quote:
    A więc mam pytanie:
    - co znaczy, że z Ubuntu jest prościej?

    Bo Ubuntu to prosta dystrybucja. Intuicyjna, nie wymagająca znajomości konsoli, architektury systemu do prostych zadan. Łatwo jest na niego przenieść z windowsa. A chodziło mi raczej o to że rozwijanie aplokacji na linuxa embedded kożystając z hosta linuxowego jest prostsze. A dlaczego:
    1. linux to linux wszystko sie na nim robi tak samo niezależnie od platformy(nie mówię o sprawach niskopoziomowych w kernelu)
    2. Kod pisany na system embeded można w 99% przypadków uruchomić bez żadnych albo z niewielkimi zmianami na hoście(dopada pracochłonne przerzucanie programu na target po każdej poprawce)
    3. gcc jest natywny na linuxa.
    Po długich walkach i próbach stworzenia stabilnego środowiska do budowania kernela i aplikacji linuxowych na windowsie stwierdziłem ze po prostu prościej jest zrobić to na linuxie i nie żałuje tej decyzji.
    @Kalvis
    Do programowania pod linuxem potrzeba zainstalować:
    -pakiet build-essential (gcc, make, binutils itp)
    -jeżeli będziesz kompilował kernel za pomocą polecenia menuconfig lub gtkconfig to trzeba zainstalować dodatkowo pakiety -dev do biblitek gtk oraz ncurses
    Aby kompilować kernel potrzebujesz(powinny być dostępne razem z modułem):
    -kompilatora pod daną architekturę + binutils(poszukac na sieci, albo samemu skompilowac go)
    -źródeł bootloadera, kernela, i aplikacji.
    Dokładnie jak to zrobić opisane jest w książkach które podałem kilka postów wyżej. Ogólnie niezależnie jaki jest system na którym rozwijamy aplikacje(host) i system docelowy (target) procedura postępowania jest taka sama, zmieniają się jedynie niektóre parametry w poleceniach, czy prefixy nazw narzędzi.
    Proponuje zajrzeć na forum.ubuntu.pl do działu programowanie tam jest krótki wstęp do programowania w linuxie.
  • #19
    eros81
    Level 14  
    Zamierzam sobie kupić ten moduł.

    Jak tam stabilność jego pracy??
    Macie z nim problemy??
    Jaka jest jego wydajność ??

    Uruchomiliście na nim jakieś ciekawe aplikacje które potrafią wykorzystać moc tego modułu??
  • #20
    marekos
    Level 16  
    Jakość tego modułu jest tragiczna zwłaszcza w porównaniu do oryginalnej płyty Atmela AT91SAM9260-EK, właściwie to nic na niej nie udało mi się uruchomić w między czasie powstała własna płyta z tym prockiem schemat na podstawie Atmela i działa rewelacyjnie. Problemy od początku były z NAND Flashem i systemem plików, a bez tego nie da się zrobić kroku do przodu. Support Propoxu na tym problemie się kompletnie wyłożył i nie potrafił dać żadnych rad co dalej, moduł powędrował do szuflady.
  • #21
    eros81
    Level 14  
    marekos wrote:
    Jakość tego modułu jest tragiczna zwłaszcza w porównaniu do oryginalnej płyty Atmela AT91SAM9260-EK, właściwie to nic na niej nie udało mi się uruchomić w między czasie powstała własna płyta z tym prockiem schemat na podstawie Atmela i działa rewelacyjnie. Problemy od początku były z NAND Flashem i systemem plików, a bez tego nie da się zrobić kroku do przodu. Support Propoxu na tym problemie się kompletnie wyłożył i nie potrafił dać żadnych rad co dalej, moduł powędrował do szuflady.

    Toś mnie przeraził
    To pierwsza taka opinia o tym module.
  • #22
    kafka
    Level 22  
    Czy wie ktoś jaką komendą w Sam-bie można zrestartować procka? Mam na myśli komendy samby typu FLASH::Init, FLASH::EraseAll (to są komendy z sam7). Powinna być taka sama niezależnie od procka. O ile istnieje.
  • #23
    belamy
    Level 10  
    eros81 wrote:
    marekos wrote:
    Jakość tego modułu jest tragiczna zwłaszcza w porównaniu do oryginalnej płyty Atmela AT91SAM9260-EK, właściwie to nic na niej nie udało mi się uruchomić w między czasie powstała własna płyta z tym prockiem schemat na podstawie Atmela i działa rewelacyjnie. Problemy od początku były z NAND Flashem i systemem plików, a bez tego nie da się zrobić kroku do przodu. Support Propoxu na tym problemie się kompletnie wyłożył i nie potrafił dać żadnych rad co dalej, moduł powędrował do szuflady.

    Toś mnie przeraził
    To pierwsza taka opinia o tym module.



    Bez obawy, nie jest tak źle a może nawet lepiej :)
    Mam dokładnie taki sam zestaw:
    - MMnet1001 z AT91SAM9260
    - EVBmm

    Działa bez żadnych problemów, może dlatego, że mam przejściówkę USB<->RS232 Prolific-a za 10zł ;-)
    Startuje od razu po podłączeniu zasilania, na terminalu RS232 wszystko wyświetla, całe bootowanie: AT91Bootstrap, u-boot i start OpenWRT.

    Właśnie wybieram środowisko RTOS albo Linux-a.
    Na razie żadnych problemów.

    Pozdrawiam.