在root filesystem中,裡面的/etc/init.d/rcS新增
mount /dev/sda1 /CF
chroot /CF
./init
即可不須透過手動-->rootfs-->Android可自動執行
印象中不是我去實作的,所以此筆記待確認
2009年12月22日
2009年11月18日
android kernel設定 待解說
ARM System Type ->pxa2xx/pxa3xx-based
/*ARN cpu for pxa2xx and pxa3xx*/
Intel Implementations ->PXA3XX form factor platform (aka littleton)
/*Intel平台for pxa3xx (又名 littleton)*/
Thumb Instruction -> support thumb user binaries
/*對於儲存系統資料匯流排為16位的應用系統,ARM體系提供了Thumb指令集
7.ARM指令與Thumb指令的區別
答:在ARM架構中,ARM指令集中的指令是32位的指令,其執行效率很高。對于儲存系統資料匯流排為16位的應用系統,ARM體系提供了Thumb指令集。Thumb指令集是對ARM指令集的一個子集重新編碼得到的,指令長度為16位。通常在處理器執行ARM程式時,稱處理器處于ARM狀態;當處理器執行Thumb程式時,稱處理器處于Thumb狀態。Thumb指令集并沒有改變ARM體系地層的程式設計模型,只是在該模型上加上了一些限制條件。Thumb指令集中的資料處理指令的運算元仍然為32位,指令定址位址也是32位的。
http://tw.myblog.yahoo.com/blue-comic/article?mid=542&prev=546&next=533&l=f&fid=20
*/
ARM EABI ->use the ARM EABI to compile the kernel
ABI
ABI,application binary interface,應用程式和作業系統的"low-level interface"。意思是,ABI有一套規則,如果遵循這個規則產生出的object,就能在相對應的系統上正確的運作。這個規則包括了data type的size,alignment,calling convention,function參數傳遞與回傳值,system call的調用等。很明顯的,這跟平台很有關係。比如說,不管用哪一個compiler,只要能生出符合ELF格式的binary,就可以在Linux上跑,或呼叫其library。
而EABI,embedded-application binary interface則規定了embedded software program的規則。跟一般的作業系統的主要差異為: 應用程式可以使用privileged instruction,dynamic linking不是required,更簡潔的stack frame用以省下memory。
ARM EABI
而arm 的EABI有些改進,特別是floating point的運算。現在的arm應該都有實作FPA(Floating Point Accelerator),但如果compiler使用了FPU來做floting的運算,且CPU沒有FPU時,就會產生exception。其panelty會是將指令轉為software的floating運算,當然系統也就變慢了。所以支援EABI的kernel與Cross-compiler,加上支援有實作FPA的arm,performance就會好很多。
http://kezeodsnx.pixnet.net/blog
boot option ->
/*沒差啦~這是kernel的開機設定*/
floating point emulation->NWPPE math emulation
userspace binary formats->kernel support for ELF binaries
power management support
sysfs interface->?
networking ->TCP/IP networking
screen resolution ->Horizonta 640 / vertical 480
input event->event interface
keypad driver->pxa27x/pxa3xx keypad support
touchschreen driver ->WM9713 Touchscreen interface support
serial port driver ->PXA serial port support和console on pxa serial port
network file system->NFS client support
->NFS client supprot for NFS version
->NFS client support for NFS version4 (EXPERIMENTAL)
->root file system on NFS
save an alternate configuration file
/*ARN cpu for pxa2xx and pxa3xx*/
Intel Implementations ->PXA3XX form factor platform (aka littleton)
/*Intel平台for pxa3xx (又名 littleton)*/
Thumb Instruction -> support thumb user binaries
/*對於儲存系統資料匯流排為16位的應用系統,ARM體系提供了Thumb指令集
7.ARM指令與Thumb指令的區別
答:在ARM架構中,ARM指令集中的指令是32位的指令,其執行效率很高。對于儲存系統資料匯流排為16位的應用系統,ARM體系提供了Thumb指令集。Thumb指令集是對ARM指令集的一個子集重新編碼得到的,指令長度為16位。通常在處理器執行ARM程式時,稱處理器處于ARM狀態;當處理器執行Thumb程式時,稱處理器處于Thumb狀態。Thumb指令集并沒有改變ARM體系地層的程式設計模型,只是在該模型上加上了一些限制條件。Thumb指令集中的資料處理指令的運算元仍然為32位,指令定址位址也是32位的。
http://tw.myblog.yahoo.com/blue-comic/article?mid=542&prev=546&next=533&l=f&fid=20
*/
ARM EABI ->use the ARM EABI to compile the kernel
ABI
ABI,application binary interface,應用程式和作業系統的"low-level interface"。意思是,ABI有一套規則,如果遵循這個規則產生出的object,就能在相對應的系統上正確的運作。這個規則包括了data type的size,alignment,calling convention,function參數傳遞與回傳值,system call的調用等。很明顯的,這跟平台很有關係。比如說,不管用哪一個compiler,只要能生出符合ELF格式的binary,就可以在Linux上跑,或呼叫其library。
而EABI,embedded-application binary interface則規定了embedded software program的規則。跟一般的作業系統的主要差異為: 應用程式可以使用privileged instruction,dynamic linking不是required,更簡潔的stack frame用以省下memory。
ARM EABI
而arm 的EABI有些改進,特別是floating point的運算。現在的arm應該都有實作FPA(Floating Point Accelerator),但如果compiler使用了FPU來做floting的運算,且CPU沒有FPU時,就會產生exception。其panelty會是將指令轉為software的floating運算,當然系統也就變慢了。所以支援EABI的kernel與Cross-compiler,加上支援有實作FPA的arm,performance就會好很多。
http://kezeodsnx.pixnet.net/blog
boot option ->
/*沒差啦~這是kernel的開機設定*/
floating point emulation->NWPPE math emulation
userspace binary formats->kernel support for ELF binaries
power management support
sysfs interface->?
networking ->TCP/IP networking
screen resolution ->Horizonta 640 / vertical 480
input event->event interface
keypad driver->pxa27x/pxa3xx keypad support
touchschreen driver ->WM9713 Touchscreen interface support
serial port driver ->PXA serial port support和console on pxa serial port
network file system->NFS client support
->NFS client supprot for NFS version
->NFS client support for NFS version4 (EXPERIMENTAL)
->root file system on NFS
save an alternate configuration file
2009年11月12日
inittab和rcS初探
本來只是想說要看pxa300啟動時跑的畫面的,結果...
BusyBox v1.01 (2006.08.31-08:53+0000) Built-in shell (ash)
Enter 'help' for a list of built-in commands.
Processing /etc/profile... Done
找到了/etc/profile
E:\cygwin\home\Jim\300\rel\target\rootfs_from_rootfs_tar_gz\etc\profile
後來又想到之前提過的init和rcS檔,所以就翻了一下學長論文,其中提到
於是就跑去研究了一下busybox,inittab的語法(和pc上的busybox不太一樣)
Understanding Busybox Inittab
http://linuxembedded.blogspot.com/2006/11/understanding-busybox-inittab.html
BusyBox init 详解
http://blog.chinaunix.net/u3/100239/showart_2035495.html
busybox的init初始化进程
http://linux.chinaunix.net/techdoc/net/2009/02/11/1061665.shtml
其實在busybox的目錄下就有一個inittab範例,說明都寫得很詳細了
E:\cygwin\home\Jim\300\rel\target\rootfs_from_rootfs_tar_gz\etc\inittab
E:\cygwin\home\Jim\release-sourceforge\android-pxa270\rootfs\rootfs_from_tiny_rootfs_tgz\etc\inittab
E:\cygwin\home\Jim\release-sourceforge\android-pxa270\rootfs\rootfs_from_tiny_rootfs_tgz\etc\init.d\rcS
BusyBox v1.01 (2006.08.31-08:53+0000) Built-in shell (ash)
Enter 'help' for a list of built-in commands.
Processing /etc/profile... Done
找到了/etc/profile
E:\cygwin\home\Jim\300\rel\target\rootfs_from_rootfs_tar_gz\etc\profile
echo
echo -n "Processing /etc/profile... "
export QTDIR="/usr/qpe"
export PATH="/usr/local/bin:/usr/bin:/bin:/usr/local/sbin:/usr/sbin:/sbin"
export LD_LIBRARY_PATH="/usr/local/lib:/usr/lib:/lib:/usr/qpe/lib:/lib/lib"
export HOSTNAME="$(hostname)"
export OLDPWD=/root
export HOME=/root
後來又想到之前提過的init和rcS檔,所以就翻了一下學長論文,其中提到
Linux kernel 在執行完系統初始化設定(包含設置記憶體、Scheduler、中斷向量表 載入驅動程式等等) 之後,會將控制權以 kernel thread 的形式轉移給 user space的第一個程式:init 在 Embedded Linux 的環境下,init 一般包含於 busybox 中 當Linux kernel將控制權轉移給init時,init會讀取/etc下的相關檔案,一般是讀取/etc/inittab,再由/etc/inittab引入/etc/init.d/rcS等相關檔案執行系統環境的設定及初始化的動作,包含掛載檔案系統、執行相關應用程式及產生shell讓使用者可以透過特定指令與作業系統互動;busybox透過以上的流程來完成系統最後的相關設定。
於是就跑去研究了一下busybox,inittab的語法(和pc上的busybox不太一樣)
Understanding Busybox Inittab
http://linuxembedded.blogspot.com/2006/11/understanding-busybox-inittab.html
BusyBox init 详解
http://blog.chinaunix.net/u3/100239/showart_2035495.html
busybox的init初始化进程
http://linux.chinaunix.net/techdoc/net/2009/02/11/1061665.shtml
其實在busybox的目錄下就有一個inittab範例,說明都寫得很詳細了
E:\cygwin\home\Jim\release-sourceforge\android-pxa270\app\busybox-1.6.1\examples\inittab用pxa300的inittab和學長的tiny rootfs的inittab比較過後,發現長得差不多
E:\cygwin\home\Jim\300\rel\target\rootfs_from_rootfs_tar_gz\etc\inittab
::sysinit:/etc/init.d/rcS ttyS0::respawn:-/bin/sh #ttyS2::respawn:-/bin/sh #tty1::respawn:-/bin/sh #tty2::respawn:-/bin/sh ::ctrlaltdel:/bin/umount -a -
E:\cygwin\home\Jim\release-sourceforge\android-pxa270\rootfs\rootfs_from_tiny_rootfs_tgz\etc\inittab
::sysinit:/etc/init.d/rcS ::respawn:-/bin/sh #::once:-/bin/sh #ttyS0::respawn:-/bin/sh #ttyS2::respawn:-/bin/sh #tty1::respawn:-/bin/sh #tty2::respawn:-/bin/sh ::ctrlaltdel:/bin/umount -a -看完後,摸摸腦袋,還是不太了解,總之inittab之後要執行的就是rcS啦,到時候會把要開機所做的事情都放在那邊,設定路徑等等的...
E:\cygwin\home\Jim\release-sourceforge\android-pxa270\rootfs\rootfs_from_tiny_rootfs_tgz\etc\init.d\rcS
#! /bin/sh
# Set the path
PATH=/bin:/sbin:/usr/bin:/usr/sbin
export PATH
hostname -F /etc/HOSTNAME
# mount proc and devpts filesystem
/bin/mount -a
mount -o remount,rw /dev/root /
if [ -n "$IN_INITLOG" ]; then
IN_INITLOG=
fi
if [ ! -f /etc/HOSTNAME ]; then
echo ${HOSTNAME} > /etc/HOSTNAME
fi
touch /var/log/wtmp
chmod 0664 /var/run/utmp /var/log/wtmp
# Delete stale subsystem files.
rm -f /var/lock/subsys/*
# Delete stale pid files
rm -f /var/run/*.pid
# Load modules
if [ -f /etc/rc.d/rc.modules ]; then
/etc/rc.d/rc.modules
fi
/etc/init.d/rc.local
訂閱:
文章 (Atom)
NO-CARRIER 網卡無法啟動
工作時,由於想要啟動linux OS的網卡, 發現某張新設定的網卡一直無法啟動,就算下指令UP了,但是也沒有順利啟動 所以爬文後,想要確認該網卡的status, 發現某行為: eth0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu...