ARM9 a quattrova automatizace na mini2440

Quattro (http://quattro.haje.cz) napsal hezký tutoriál o rozjetí Angströmu na mini2440. Zkoušel jsem jej, ale jelikož jsem chtěl mini2440 použít na jeho automatizaci, která je napsaná na owfs a php, tak jsem musel vyřešit problém s instalací owfs. Owfs potřebuje pro svůj běh FUSE a další moduly které ve standardní instalaci nejsou dostupné, proto po dlouhých dnech pátrání a zkoušení jsem nakonec skončil u Debian Lenny s xorg. Nejprve jsem použil distribuci z  http://www.friendlyarm.net/forum/topic/1598 bohužel zde také v kernelu nebyl zkompilován modul FUSE a tak nastalo další zkoušení. Řešení se na sebe nedalo dlouho čekat a bylo rozhodnuto, že si musím zkompilovat vlastní kernel. Použil jsem postup ze stránek http://wiki.linuxmce.org/index.php/Mini2440 .

Takže jak na to?:

1. Připravíme si libtool

Tato nástroje slouží pro kompilaci jednotlivých částí pro mini2440. Nachází se na cd k mini2440 nebo na internetu.

Stáhnu si z internetu archiv, ten rozbalím, a nastavím cestu pro spouštění.

cd /opt

wget http://corewind2440.googlecode.com/files/arm-linux-gcc-4.3.2.tgz

tar xzvf arm-linux-gcc-4.3.2.tgz –C /

echo “export PATH=$PATH:/opt/Hiteg/4.3.3/bin” >> /toot/.bashrc

Otestuji, zda funguje.

arm-none-linux-gnueabi-g++ -v

2. Zkompilujeme si uboot ten bude potřeba k vytvoření uImage kernelu.

Na disk přeneseme zdrojáky:

cd /home

mkdir mini2440 ; cd mini2440

mkdir uboot ; cd uboot

git clone git://repo.or.cz/u-boot-openmoko/mini2440.git

Nastavíme cross compiling:

export CROSS_COMPILE=arm-none-linux-gnueabi-

nebo upravíme „.bashrc“ např.

export CROSS_COMPILE=arm-none-linux-gnueabi-

export PS1=”\[\033[1;34m\]\u \[\033[0m\]\w:\$: \[\033[0m\]”

#export PS1=”\u:\w\$>”

LS_OPTIONS=”–color=auto”

alias ls=”ls $LS_OPTIONS”

Příprava na kompilaci:

cd mini2440

make mini2440_config

Kompilace:

make all

3. Zkompilujeme si kernel, do kterého přidáme modul FUSE

cd /home/mini2440

mkdir kernel ; cd kernel

git clone git://repo.or.cz/linux-2.6/mini2440.git

cd mini2440

mkdir -p ../kernel-bin

Vygenerujeme .config pro mini2440

CROSS_COMPILE=arm-none-linux-gnueabi- ARCH=arm make O=../kernel-bin/ mini2440_defconfig

Přidáme si potřebné moduly v našem případě FUSE. Nachází se v menu File systems/FUSE suports. Tuto část označíme (M). Modul

apt-get install libncurses5-dev

cd ../kernel-bin

make ARCH=arm menuconfig

Provedu kompilaci kernel a modules:

cd ../mini2440

CROSS_COMPILE=arm-none-linux-gnueabi- ARCH=arm make O=../kernel-bin/

Vygeneruji uImage za pomoci mkimage:

cd /home/mini2440

uboot/mini2440/tools/mkimage -A arm -O linux -T kernel -C none -a 0x30008000 -e 0x30008000 -d kernel/kernel-bin/arch/arm/boot/zImage /home/mini2440/uImage

Kernel Moduly

Aby nám FUSE fungovaly musí se zkompilovat moduly a nahrát na SD kartu:

cd kernel

CROSS_COMPILE=arm-none-linux-gnueabi- ARCH=arm make O=../kernel-bin/ modules

CROSS_COMPILE=arm-none-linux-gnueabi- ARCH=arm make O=../kernel-bin/ INSTALL_MOD_PATH=.. modules_install

Po zkompilování se musí moduly nahrát na sd kartu z adresáře ../lib/modules/ do adresáře /lib/modules. Budu to blíže popisovat u nahrávání všech věcí na SD.

cp ../lib/modules/2.6.32-rc8/ /mnt/sd/lib/modules/ -r

Tím jsme vlastně ukončily veškeré věci, které je potřeba připravit pro rozjetí systému na mini2440. Takže slíbený popis přípravy SD. Předpokládám, že jste již nějakou kartu dělali, takže nebudu popisovat jednotlivé příkazy v fdisku, a napíši jen jak to má vypadat. Nehledě na to že Quattro již přípravu popsal.

Takže karta musí mít tři části. Např. u mě na /dev/sdb 2GB SD.

Device Boot      Start         End      Blocks   Id  Systém
/dev/sdb1               1          51      102748+   b  W95 FAT32
/dev/sdb2              52         827     1564416   83  Linux
/dev/sdb3             828         957      262080   82  Linux swap

Tyto části sformátujeme

mkfs.vfat /dev/sdb1
mkfs.ext3 /dev/sdb2
mkswap /dev/sdb3

Stáhneme root fs z prvního popisu nebo ode mne

cd /home/mini2440

wget http://kthxbai.geekinthefamily.com/whoo/archive.tar.gz

Připojíme si SD kartu a na ni nahrajeme rootfs a moduly.

mount /dev/sdb2 /mnt/sd

cd /mnt/sd

tar xzvf /home/mini2440/ archive.tar.gz

cd /home/mini2440/kernel/

cp lib/modules/2.6.32-rc8/ /mnt/sd/lib/modules/ -r

umount /mnt/sd

Připojíme si SD kartu a na ni nahrajeme uImage.

mount /dev/sdb1 /mnt/sd

cp /home/mini2440/uImage /mnt/sd/

umount /mnt/sd

Tím je karta připravena a můžeme se vrhnout na spuštění mini2440. Předpokládám, že uboot již máte nahraný, když jste si zkoušeli jiné kompilace, proto popíši jen na nastavení ubootu.

Spustíme si mini2440 a počkáme, až najede uboot

setenv bootcmd ‘mmcinit ; fatload mmc 0:1 0x31000000 uImage ; bootm 0x31000000’

setenv bootargs ‘noinitrd rootdelay=3 root=/dev/mmcblk0p2 console=ttySAC0,115200 rootwait mini2440=1tb’

saveenv

reset

po restartu najede již linux. Přihlásíme se jako root bez hesla.

pokud při bootu nahlásí

Internet Systems Consortium DHCP Client V3.1.1
Copyright 2004-2008 Internet Systems Consortium.
All rights reserved.
For info, please visit http://www.isc.org/sw/dhcp/
SIOCSIFADDR: No such device
eth0: ERROR while getting interface flags: No such device
eth0: ERROR while getting interface flags: No such device
Bind socket to interface: No such device
Failed to bring up eth0.

Spustíme

ifconfig -a

pokud reportuje eth3 nebo něco jiného tak to nastavíme v v /etc/network/interfaces

nano /etc/network/interfaces

Dále následuje instalace automatizace od Quattra, Bylo nutné upravit aplikaci, aby pracovala s SQLite a ne v MySQl. A také se ještě nepodařilo plnohodnotně rozjet OWFS. Prozatím funguje jen čtení a zápis teploty do databáze. Takže další popis instalace je shodný s instalací automatizace na webu http://quattro.haje.cz, s menšími úpravami.

apt-get update

apt-get upgrade

apt-get install php5-cli automake gcc g++ libtool libusb-dev libfuse-dev swig python2.4-dev tcl8.4-dev tk php5-dev make mc php5-gd phpmyadmin proftpd fuse-utils sqlite php5-sqlite -y –force-yes

Při instalaci proftpd je nutné vybrat, jak bude služba spouštěna. V našem případě vybereme samostatně
Při instalaci phpmyadmin budeme vyzváni k výběru webového serveru. Je nutné vybrat apache2

nainstalujeme OWFS

cd /home

wget http://quattro.haje.cz/images/stories/dom_reg.V/owfs-2.7p4.tar.gz

tar zxpf owfs-2.7p4.tar.gz

cd owfs-2.7p4

./configure

make && make install

modprobe fuse

pokud by zahlásilo chybu, že nemůže najít fuse.mo tak spustit

depmod -a

Otestujeme OWFS

zjistíme seriové porty – mini2440 má 3 ttySAC0,ttySAC1,ttySAC2 a owfserver spustíme na tom ke kterému přiojíme převodník

dmesg | grep tty

/opt/owfs/bin/owserver /dev/ttyUSB0 -p 3000

/opt/owfs/bin/owhttpd -s 3000 -p 3001

test v IE http://ip-mini2440:3001

reboot

nainstalujeme aplikaci topeni

připravíme adresáře pro aplikaci Topeni

mkdir /home/topeni

cd /home/topeni

wget  http://mini2440.rc-modely.net/automatizace.tar.gz

tar xzf automatizace.tar.gz

cd automatizace

chmod 755 *.sh

./install.sh

Tím je aplikace nainstalovaná a může se zkusit na adrese http://ipmini2440/topeni

Uživatelské jméno je admin a heslo 1

—————————————————————————————————

poznámky pod čarou

pokud by apt-get install hlásilo “Segmentation faulty tree… 50%” tak smazat cache

rm -r /var/cache/apt/*.bin

Pozor automatizace nejede na com1 protože na něj je přesměrovaná konzole. Musí se použít com2 nebo com3 které jsou na minikonektorech. Ale pozor, zde je výstup TTL takže připojit přes MAX232. Nebo použít USB převodník. Já jsem pro rychlost použil USB převodník s čipem pl2303 a aby jel na mini2440 tak jsem si musel do kernelu přidat driver.

Nakonec odkazy na moje soubory, se kterými teď funguji.

http://mini2440.rc-modely.net/archive.tar.gz

http://mini2440.rc-modely.net/2.6.32-rc8.tar.gz

http://mini2440.rc-modely.net/uImage.tar.gz

http://mini2440.rc-modely.net/automatizace.tar.gz

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *

*