2009年1月30日 星期五

CuRT

第一步從cross compiler開始,由於我使用的是gentoo系統,所以先emerge crossdev這工具來產生cross compiler,再來就是使用工具產生arm的compiler.由於只需要compiler,而不需要其他的library所以使用了”-s1"這參數.
crossdev -s1 --target arm-unknown-linux-gnu
再來就是修改一下app/shell/Makefile,使用新產生出來的gcc.就可以成功編出image,並進行測試了.

參考文章:
  1. http://sites.google.com/site/embedded2009/introduction-to-curt-v1

2009年1月28日 星期三

QEMU使用心得

建立4G的映象檔給Linux使用,使用的檔案格式為raw格式
  1. qemu-img linux.img 4G
啟動時使用的指令,使用256MB的記憶體,從硬碟開機,使用本機時間,使用網路,而且網路是使用nat模式.
  1. qemu -m 256 -hda ./xp.img -boot c -localtime -net nic -net user
Use with VNC

使用vnc參數,會使用qemu變成一個vnc server,這時只要使用vnc client就可連線到機器上.其中":1"表示使用port 5901 (5900 + 1)來進行連線.這時可以先配合"-s -S"先暫停機器,再使用vnc連線上,再使用monitor mode啟動機器.
  1. qemu -hda linux.img -vnc :1
  2. vncviewer :1

Kernel GDB Debug

使用"-s"等待gdb連線到qemu,而"-S"會使機器保持未開機的狀態.
  1. 在目錄”/usr/src/linux/arch/x86/boot”建立一個空的img檔linux.img
  2. qemu -hda linux.img -kernel bzImage -s -S
  3. 在目錄"/usr/src/linux"執行gdb ./vmlinux
  4. 在gdb中使用指令來進行連線”target remote localhost:1234"
  5. 輸入"b start_kernel"來建立中斷點,輸入"c"開始執行.

映象檔相關

使用參數"snapshot",那麼所做的操作都不會記錄到映象檔中,在下次重開後,映象檔會回復原狀
  1. qemu -snapshot hda disk.img
建立可寫的備份映象檔,使用原始映象檔建立多個可寫的備份檔,當進行寫入操作時,只會對備份檔進行寫寫入,不會影響原始映象檔.
  1. qemu-img create -b disk.img -f qcow testdisk.img
  2. qemu -hda testdisk.img

QEMU Monitor Mode

監視模式是用於查看目前系統的資訊,光碟的存取和除錯使用.使用方式如下.
點選QEMU的執行視窗,使用"Ctrl + Alt + 2"進行監視模式,使用"Ctrl + Alt + 1"回到guest system.

畫面截圖
  1. screendump test.ppm
換光碟片
  1. 使用"info block"來取得光碟機名稱,例如"ide1-cd0"
  2. 指令"change ide1-cd0 /root/gentoo.iso"來載入光碟.
  3. 指令"eject ide1-cd0"來取出光碟.
系統操作
  1. "stop"暫停系統
  2. "cont"啟動系統
  3. "quit"離開系統
Create Root File System

安裝busybox,使用static library選項.使用"make menuconfig", "make", "make install"來進行安裝,預設會安裝在目錄"_install".建立image檔,格式化,並安裝busybox,最後建立dev files.相關指令如下
  1. dd if=/dev/null of=linux.img bs=1k count=10000
  2. mke2fs -F linux.img
  3. mkdir tmp
  4. mount -o loop linux.img tmp
  5. cp -a cp -a busybox-1.13.2/_install/* tmp
  6. mkdir tmp/dev
  7. cd tmp/dev
  8. mknode console c 5 1
  9. mknode mem c 1 1
  10. mknode null c 1 3
  11. mkdnoe random c 1 8
  12. mknode tty0 c 4 0
  13. mknode tty1 c 4 1
  14. mknode tty2 c 4 2
  15. mknode tty3 4 3
  16. mknode tty4 4 4
  17. umount tmp
  18. qemu -hda linux.img -kernel kernel -append root=/dev/hda