Okrojona implementacja ext3 na uC

Potrzebuje napisać maluteńki bootloader na sporego ARMa.

Zadanie bootloadera to załadować *jeden* plik do pamięci RAM z nośnika SD.

SD musi być sformatowana w ext3/4.

Poszukuje przenośnej implementacji ext3/4 ktora ma minimalistyczne cechę: potrafi odczytać jeden plik z "/" filesystemu. Nic więcej nie potrzebuje.

Dla dociekliwych: ten plik to jądro linuxa.

Byc może warto wziąść uboota i dopisać kawałek, ale zanim to zrobie chciałbym powalczyć samodzielnie, przy okazji poznając bliżej cpu.

Googlowanie składa się z 99.9% szumu o tym jak zamontować w linuxie ext3/4. A ja tego nie chcę - chce minimalistyczną implementację. Czy ktoś takową widział?

Reply to
Sebastian Biały
Loading thread data ...

Może wystarczy Ci grub2

formatting link
i grub- core/fs/ext2.c do rozeznania się (umie też ext3/4). Niestety to nie jest gotowiec na uC.

Reply to
a...mx

Idąc tą drogą to u-boot ma ext2load który robi chyba to co chcesz i ma wersje na ARMa. Jak masz mozliwosc to chyba najlepiej skorzystac z u-boota, plus będzie taki, ze dostaniesz masę funkcji za free w tym, TFTP, obsługa USB, sieć itp.

pozdr. w.

Reply to
Wojciech Waga

Po godzinnym przygladaniu się źródłom u-boota stwierdzam że to taka sama sieczka jak Linux. Mam wewnatrzne opory aby grzebać w tym obleśnym kodzie w C z gąszczem goto w każdą stronę i udawaniem Linuxa :/

Sa jakieś inne bootoladery, uniwersalne, godne uwagi?

Reply to
Sebastian Biały

On 09/16/2012 09:09 PM, Sebastian Biały wrote: > Po godzinnym przygladaniu się źródłom u-boota stwierdzam że to taka sama > sieczka jak Linux. Mam wewnatrzne opory aby grzebać w tym obleśnym > kodzie w C z gąszczem goto w każdą stronę i udawaniem Linuxa :/ >

A Twoja platforma nie jest na liście wspieranej przez U-boota? Chodziło mi raczej o to, żeby go zainstalować i skonfigurować tylko.

pozdr. w.

Reply to
Wojciech Waga

Nie. To chińskie GT2440, posiada wlasny port U-Boota w jakiejś starej wersji. Mam źródła. Bez rzeźbienia się jednak nie uda tego przeportować, co było właśnie przedmitem analizy źrodel U-Boota.

Reply to
Sebastian Biały

Użytkownik "Sebastian Biały" napisał w wiadomości

A to nie dziala tak ze ten plik przy zapisywaniu ma ciagly obszar na dysku, i wystarczy tylko odszukac pierwszy sektor/blok, a dalej to juz czytamy kolejne ?

J.

Reply to
J.F

W ogolnym przypadku tak nie działa :) Przypadki szczególne mnie nie interesuja. Plik z kernelem jest normalnym plikiem w fs z dowolna fragmentacją. Musze mieć pełny support, ale z drugiej strony wystarczy samo read-only, nawet niewydajnie.

Reply to
Sebastian Biały

W mini2440 instalowali emdebiana dzieląc kartę SD na dwie partycje - kernel na vfat, właściwy system na ext3. Takie rozwiązanie odpada?

Reply to
Tomasz M.

Am 15.09.12 21:08, schrieb Sebastian Biały:

Tez kiedys szukalem i nie znalazlem niestety - skonczylo sie na pisaniu samemu. Obawiam sie, ze ty tez nie znajdziesz. Moze napisz wlasna implementacje na podstawie dokumentacji?

formatting link
pozdr, Michal

Reply to
Michal Schulz

Everyone falls the first time, right, Sebastian Biały?

Może udałoby Ci się wydłubać i dostosować procedury z tego? <

formatting link
>

Jeśli C++ jest akceptowalne...

Sławek

Reply to
Sławomir Szczyrba

Idealne rozwiązanie jest takie:

a) system szuka fs na mmc b) system szuka fs na usb c) system szuka fs na sieci d) robi to w/g ustalonej kolejności e) fs to ext2,vfat,ntfs

Kernel w pliku. Parametry dla jajka w pliku.

W ten sposób (toretycznie) nigdy nie bedę musiał flashować urzadzenia, bo zawsze mogę zapodać nowy kernel i bootparams z zewnatrz. A docelowo przy urządzeniu nie będzie osoby mającej pojęcie o czymkolwiek poza wsadzaniem karty w dziurkę.

Tymczasem uboot dysponuje wszystkim tylko nie tym co potrzebuje :/

Reply to
Sebastian Biały

Gdybym pisał bootloader to nawet wskazane - na złość reszcie świata :P

Reply to
Sebastian Biały

A nie wchodzi w grę 2 stage boot? Dorzucasz jakiś DATA FLASH po SPI (16Mb kosztuje piątaka) a na nim minimalny kernel. Bootloader w takiej sytuacji ładuje tego okrojonego kernela a on już "cywilizowanie" może załadować z dowolnego uradzenia i kexec.

Reply to
Michoo

Ej facet a ty w ogole poczytales manuala do uboota ? Chyba raczej w bardzo wielkim skrocie !

formatting link

Reply to
ZeNek

u-boot bez problemu obsluguje ext2 i ext3 wystarczy zerknac do manuala.

Reply to
ZeNek

Odkad pamietam to tak sie bootowalo systemy, ale to dawno bylo, byc moze nowe czasy stawiaja nowe wymagania.

A zrodelka do boot sektora (raczej bloku) do linuxa nie ma ? Przeciez on ma ten sam problem ...

J.

Reply to
J.F

Abosultnie żadnego zabijania dechami kernela w pamięci. Ja tam mam masę pamięci i zamierzam ją cała zmarnować. Chcę ladować kernel z zewnątrz. Nie dalej jak w zeszłym tygodniu w kernelu zabraklo mi nagle sterownika do serial portu na usb - z powodu że zapomniałem. Nie ma i już. Mam reflashować wszystkie urządzenia za pomocą niekumatej osoby zdalnie po drugiej stronie globu? Lepiej jednak wrzucić kilka plików na sd i jazda.

Reply to
Sebastian Biały

Ależ są. Tylko że:

a) zainicjuj cpu b) zainicjij mmc c) zainicjij usb d) zainicjij sieć e) zaladuj jajko f) odpal jajko

To jest roboty na kilka miesięcy aby to napisać od zera poprawnie. Z drugiej strony mogę wiąść fragmenty uboota czy innego armboota, ale one tez wymagają niesłychanej dłubaniny. Tak źle i tak niedobrze. Miałem nadzieie ja poprawienie uboota ale po zaponaniu się ze źrodłami to ja dziekuje - postoje, już wole sam napisać prymitywny bootloader.

Reply to
Sebastian Biały

Sebastian Biały napisal 2012-09-20 19:12:

Tylko ten pierwszy kernel byłby na sztywno. Zawierał by wszystkie potrzebne moduły potrzebne do aktualizacji - obsługę kart, sieć, lokalne i zdalne systemy plików. Jeśli aktualizacja nie jest potrzebna, to przez wspomniany wcześniej kexec wczytujesz docelowy kernel i się na niego przełączasz.

Reply to
Tomasz M.

ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.