Archive

Posts Tagged ‘sd’

PSTK projekt pt.5 - samba

January 1st, 2009 No comments

Danes je 1.1. 2009, ura je skoraj 6.00 zjutraj in končno se je skompajlala samba :)

Kaj je bilo potrebno za to narest?

  • SSL - V samem uClinux-dist-u obstaja možnost da med konfiguracijo izbereš da bi rad imel tudi ssl.... A tako kot v prešnji (in naslednji) verziji mapa openssl kaže na libssl mapo, a le-ta je prazna.  V to mapo treba skopirat source za openssl-0.9.8c, in popatchat z patchi, ki se nahajajo na arhivu neke neuradne mailing liste1. Potem treba v konfiguraciji vklopiti libssl in z malo sreče se zadeva (ssl) skompajla.
  • Potem pa vključimo še podporo za sambo... vtipkaš 'make' čakaš, čakaš, čakaš... po tem ko je kernel, busybox in še kaj zraven skompajlanega, configure skripta od automake ugotovi da c compilerne zna sproducirati binaryja. Očitno arm-linux-gcc sprejema druge 'ukaze' kot 1686-pc-linux-gnu-gcc, skripta tega ne ve, in prijavi napako.
    V "uClinux-dist/user/samba/source" se nahaja file "configure", v katerem se okoli 2900-e vrstice nahaja nek malo večji if stavek, katerega 'else' nastavi spremenljivko "ac_file=''", torej na 'prazno'. torej takoj za tem elseom (in seveda "fi"-jem) treba napisat " ac_file='a.out' ". To naj bi popravilo zadevo... a je očitno ne... Tukaj je potem potreben še precej grd hack: nekaj vrstic nižje (L2927) se v čudno razvrščenih oklepajih nahajata dva "exit 77;". Namesto exita sem tu napisal "echo 'bla'; "2
  • Spet kompajlaš... in zadeva crkne pri kompajlanju "libaddns" (del sambe).  Bla bla... grd error.. nekaj narobe v "../include/talloc.h". Potem sem pogledal v uClinux-dist tanov (torej 2008, za katerega še ni EmbeddedArtists patchev), in videl da tam tega fajla sploh ni, ker se en podoben nahaja v "../lib/talloc/talloc.h", zato sem prvega (iz mape "include") izbrisal.  (Preden sem to ugotovil sem poskušal tudi z prepisom "libaddns" mape z vsebino iz novejšega uCdist-a, a mislim da to ni uplivalo na nič, ker mislim da je libaddns ostal nespremenjen).

Samba se po tem avtomagično skompajla, in romfs iz 3.5mb naraste na 8.1mb. Pri poskusu boota z sd kartice (ker ima nand_boot še večje probleme.. o tem kdaj drugič) pa zadeva poklekne pod velikostjo. Tako da bom sedaj (torej po tem ko grem spat, se zbudim, in ko se stemni), poskušal vse skupaj zakrpati še z gršim hackom :D *evil look*
Ravnokar se kompajla image brez sambe z "chroot"-om, image s sambo pa se nahaja na usb ključku, kmalu se pa bo na sd_micro/tf kartici :)

Če mi uspe, bom napisal... če ne.. back to the drawing board!

ps: nevem če sem že pisal o tem, ampak ta plošča ma eno precej zanimivo (pa čeprav slabo) lastnost. Ker se na začetku pomnilnik nahaja boot loader, ki je lokacijsko 8v spominu) ločen od slike kernela in romfsja, bi človek pričakoval da je tudi njegovo delovanje 'ločeno' od ostanka podatkov na čipu... A žal ni tako. Funkcija mmc_init, ki inicializira sd/mmc kartico, dela SAMO, če je na čipu _delujoč_ sistem... Torej, po tem ko se ni hotlo zbootat z 8mb velkim romfsjem s sambo (pa čeprav je sam kernel ostal isti kot prej), noče več incializirat sd kartice, tako da je za upload slike potrebno uporabiti ymodem protokol prek minicoma na borih 38.400bps. It feels like being on dialup again :)

  1. ne najdem zdej linka od liste, ampak sem našel patche - openssl-0_9_8c-uclinux-disttar.tar.gz
  2. jaz sem zamenjal samo drugi 'exit',  a tudi če sta oba ponovem samo 'echo' mislim da ne bi smelo biti problemov

PSTK projekt pt.1

December 2nd, 2008 No comments

Pri procesorskih sistemih (predmet na faksu) mormo ta semester (namesto ustnega izpita) narest en projekt. S kolegom bova delala z uClinuxom na LPC2468.  Torej namesto dveurnega lotanja senzorja na š-arm in deset vrstic kode, bo očitno potrebno več dela.

Sej ploščica je čist luštna... ma use kar človk rab... od SD card readerja, ethernet priključka, serijskih priključkov itd. Toda kako to izgleda v praksi. Prvo priklopiš na računalnik, in pojavi se serijski interface... simpl... povežeš se na njega s 'screen'-om in kar naenkrat se prižgejo tri lučke (ena tudi za reset) in ploščica ne dela nič. Kake 4 ure kasneje, ko se registriraš na prozvajalčevi strani, izveš da moraš premakniti dva jumperja. Potem ko že nekaj dela, se hočeš prek telneta povezati na ploščico... in ne pusti, ker so vsi omrežni porti v uporabi (ja telnetd ma probleme). Kaj potem? Gremo updateat uClinux na ploščici...

In tukaj se težave šele začnejo... Dam notri kartico... sledim navodilom... 'mmcinit', potem skopiraš podatke v flash, malo prestaviš, resetiraš... in moralo bi delati... pa dela? Seveda ne... zadeva se sploh ne zboota... Ok, kaj zdaj? Nov image in še enkrat? Gremo probat... 'mmcinit' in zadeva se ustavi. Noče več prebrati sd kartice. Ok... ena ura igranja s karticami pozneje, se odločim da bom postavil tftp server na laptopu in probal presneti image prek mreže... mine pol ure.. server stoji.. poženem 'tftpboot'.. in dobim lep error "emac: phyInit wrong id2 (161b != 161a)", ki se ponovi pri vsaki operaciji ki ima kakršnekoli veze z mrežo. Torej tudi mreža ne dela.

Last resort? Prek minicoma in kermita pošljem file (zelo zelo počasi - 38.400bps).. in potem zapišem v spomin... in kaj se zgodi?

NAND read: device 0 offset 0x0, size 0x200000
 2097152 bytes read: ERROR
NAND read: device 0 offset 0x200000, size 0x400000
 4194304 bytes read: OK
## Starting application at 0xA0008000 ...

in mrtvo stoji...

Kaj zdaj? Nevem še... jutr treba ob desetih bit že na faksu... grem spat!