Elektroda.pl
Elektroda.pl
X

Search our partners

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

[At91sam9260] - Wgrywanie plikow z poziomu u-boota

bimbarabam 22 Jul 2012 15:32 1713 13
  • #1
    bimbarabam
    Level 14  
    Witam!



    Mam taki problem mam sobie płytkę Propoxu MMnet1001, której jest zamontowana na module EVBmm tejże firmy. Pewnego dnia potrzebowałem przekompilować jądro, co zrobiłem i po wgraniu nowego obrazu miałem komunikat przy starcie systemu, że jądra nie znaleziono. Stwierdziłem że wgram obraz starego jądra z poziomu u-boota przez tftp, jednak dostawałem cały czas błąd:
    Quote:
    macb0: link up, 100Mbps full-duplex (lpa: 0x45e1)
    Using macb0 device
    TFTP from server 192.168.1.2; our IP address is 192.168.1.8
    Filename 'uImage-prog'.
    Load address: 0x22000000
    Loading: T T T T T T T T T T ####T T ######T #T T ###T ####T ######T ##T
    ###T ##
    #T ##T #####T #####T ##T ##T ######T #####T ##T ##T #####T #####T ##
    Retry count exceeded; starting again
    macb0: link up, 100Mbps full-duplex (lpa: 0x45e1)
    Using macb0 device
    TFTP from server 192.168.1.2; our IP address is 192.168.1.8
    Filename 'uImage-prog'.
    Load address: 0x22000000
    Loading: T T T T T T T T T T ####T #T ####T ##T ##T #####T #####T #T ####T
    #####
    #T ###T ####T #####T ##T ###T ####T #####T ##T ##T #####T #####
    Retry count exceeded; starting again

    I tak leci w nieskonczonosc, tak jakby non stop zrywało mi polączenie. Myślałem, że tftp jest po prostu źle skonfigurowane, ale zauwazyłem że małe pliki są pobierane bez żadnego problemu (tj po pare - paredziesiat kilobajtow). Podczas gdy, uImage (1.5MB) już nie da się pobrać z w.w. przyczyny. Stwierdziłem, że zainstaluje cały system od początku i znów utknąłem w punkcie pobierranie przez tftp z poziomu u-boot. Czy ktoś z was spotkał się może z tym problemem?

    Pozdrawiam
  • #2
    mickpr
    Level 39  
    Nigdy nie używałem tej płytki, ale miałem nieco do czynienia z UBOOT-em.
    Skoro małe pliki wczytuje bez problemu ... hmmm
    Może podziel ten plik na 2 i wczytaj oddzielnie?
    Może masz zablokowany zapis - w pewnym obszarze NAND Flash?

    Podaj komendy jakimi wczytujesz kernel ...
    Podaj (skrótowo) mapę pamięci, gdzie co leży, gdzie uboot, gdzie RAM itd...
    A może to problem z samym serwerem TFTP - podłącz się z innego miejsca (komputera) jakimś klientem i pobierz ten "kernel" (dla wyeliminowania tego błędu).
  • #3
    bimbarabam
    Level 14  
    Mam taki automatyzny skrypt ktory wgrywa system plikow, obraz jadra etc. Chwilowo mam tylko U-boot i at91boot bo reszty nie jestem w stanie dociagnac ze wzgledu na wlasnie tftp.
    Ogolnie partycje na flashu wygladaja tak:
    Quote:

    0x00000000 - 0x0003ffff bootstrap
    0x00040000 - 0x0007ffff u-boot
    0x00080000 - 0x001fffff u-boot enviroment
    0x00200000 - 0x007fffff kernel
    0x00800000 - 0x3fffffff filesystems


    Probowałem pobierać tego kernela z innego komputera, innego OS i innego serwera tftp i nic.
  • #4
    mickpr
    Level 39  
    AT91Boot to taki bootloader pierwszego poziomu? czy raczej zamiennik U-boot?
    Ja widzę jedną niezgodność - ładujesz kernel
    bimbarabam wrote:
    Load address: 0x22000000

    (Ładujesz do RAM?)

    A w mapie pamięci masz:
    bimbarabam wrote:
    0x00200000 - 0x007fffff kernel


    Skrypt jest istotny (jak możesz to go podaj). Również istotne może być "zdjęcie blokady" zapisu (protect off), gdyż możliwe, że część NAND Flash masz zablokowane (jeśli pomyllisz adresy skasujesz sobie u-boota w tym przypadku (bez zabezpieczenia przed zapisem) - po to ono właśnie jest).

    Pokaż efekt działania komendy flinfo.
    Spróbuj wgrać kernel pod inny adres (do RAM-u), dopiero potem skopiuj do NAND.

    Niepokojące są te literki T na zmianę z # - jakby były błędy odczytu z samej sieci ?

    Czy masz JTAG-a który "widzi" twój NAND -Flash?
    Jeśli tak - to może w ten sposób wgraj.
  • #5
    bimbarabam
    Level 14  
    To jest to z flinfo
    Quote:
    DataFlash:AT45DB321
    Nb pages: 8192
    Page Size: 528
    Size= 4325376 bytes
    Logical address: 0xD0000000
    Area 0: D0000000 to D00041FF (RO) Bootstrap
    Area 1: D0004200 to D00083FF Environment
    Area 2: D0008400 to D0041FFF (RO) U-Boot
    Area 3: D0042000 to D0251FFF Kernel
    Area 4: D0252000 to D041FFFF FS


    Gdzies czytalem, ze te literki T, to jakies tam pierdoly zwiazane z duplexem i można to olać

    A ten skrypt sciaga najpierw powiedzmy uImage pod adres 0x22000000, a potem zapisuje na własciwej partycji
    Code:
    nand write 0x22000000 0x20000 0x600000
  • #6
    mickpr
    Level 39  
    Czyli pobierasz do RAM-u i potem do Flash.

    1. Spróbuj pobrać pod inny dostępny adres RAM (pusty).
    2. Szukaj uszkodzenia w serwerze TFTP raczej.
    Może ściągnij inną wersję. Ja bym na to stawiał.
  • #7
    bimbarabam
    Level 14  
    probowalem roznych klientow pod linuksem - tftp i atftp oraz tftpd pod windowsem i nic to nie zmienia. Potem sprobuje w inne miejsce skopiowac i napisze co i jak
  • #8
    mickpr
    Level 39  
    A do jakiej wielkości pliku wczytujesz go bez problemu?
  • #9
    bimbarabam
    Level 14  
    z tego co kojarze jescze setki kilobajtow to byly ze sie nie burzył.
  • #10
    mickpr
    Level 39  
    To podziel sobie kernel na fragmenty, wczytaj je i skopiuj już całość do Flash.
    Potem będziemy się zastanawiać - co jest grane z tym ładowaniem.
  • #11
    bimbarabam
    Level 14  
    A czym przykładowo mogę podzielić to na fragmenty?
  • #12
    mickpr
    Level 39  
    Np tym: http://www.filesplitter.org/
    http://www.hydrogenaudio.org/forums/index.php?showtopic=66386

    Potem wczytaj kolejne części (jedna za drugą).
    W u-boot jest też jakaś komenda do liczenia CRC z danego obszaru - policz CRC przed władowaniem całego pliku i po.. (z U-boot-a) czy się zgadzają.
    W ten sposób będziesz pewny, że wszystko ładnie się połączy.
    Potem zapis z RAM do flash. (chyba cp.b .....)
  • #13
    bimbarabam
    Level 14  
    Zacząłem używać windowsowego tftpd32 i co jakiś czas tam załapie ten plik i ściąga poprawnie - czemu tylko raz na jakiś czas - nie wiem. Więc teoretycznie jakby komuś się przydarzył podobny problem, to można sprobować zmienić klienta. Mam takie dalsze pytanie - czy wiecie jak ustawić w tym tftpd32 konkretny adres serwera? Konkretnie potrzebuję, żeby tftp który stoi na moim komputerze miał adres 192.168.1.20, bo skrypty, które wcześniej wgrywam na moją płytkę chcą ściągać właśnie z tego adresu.
  • #14
    bimbarabam
    Level 14  
    Witam znalazlem "rozwiazanie problemu". Otoz problem wynikał z rodzaju polaczenia z siecia. Serwer tftp, z którego pobierałem pliki na płytke był na moim laptopie i myślałem, że wystarczy tylko to, zeby plytka i lapek byly w sieci lokalnej i siebie widzialy nawzajem. Gdy pisalem do was z tym problemem laptop łączył się z routerem bezprzewodowo, a plytka szla normalnie po kablu i co chwile przy pobieraniu pliku polaczenie bylo zrywane i nie moglem sciagac wiekszych rzeczy na plytke. Gdy jednak podlaczylem lapka tez po kabelku, a nie bezprzewodowo wszystko działa perfekcyjnie :). Nie wiem skad to dokladnie wynika i sorry ze po tak dlugim czasie to odkopuje, ale mam nadzieje ze komus moze kiedys to pomoze :D