Splash Screen

August 22, 2007

最近, 開始改了一些東西, 改了開機畫面, 顯示的方法是用gzip壓縮的raw framebuffer bitmap [參考1]. 但因為flash的限制, 我們做出來的檔案大小不能超過0x5000.

然後再使用dfu-util方式傳到nand flash

#./dfu-util -a 4 -D splash.gz

然後開機起來, 就能看到結果嚕 🙂

Advertisements

OpenEmbedded 介紹(二)

July 18, 2007
  • 若要增加套件到openembedded repository, 我們要增加的套件是在/home/willie/packages, 而原本OpenMoko放的套件是在/home/moko/openembedded/packages目錄

我們可以在/home/moko/openembedded/conf/bitbake.conf加上一些設定值

		BBFILES := "/home/moko/openembedded/packages/*/*.bb"
		BBFILES += "/home/willie/packages/*/*.bb"

  • 若要新增硬體(machine), 可以到/home/moko/openembedded/conf/machine/下面新增一個xxx.conf, 可自行編輯所需的設定擋

例如:NEO1973手機的設定檔名稱就是fic-gta01.conf,所有機器鄉關設定都會在此設定

  • 若是要新增distribution的話, 是在/home/moko/openembedded/conf/distro/下面新增conf檔

例如: OpenMoko的distribution的conf檔

#
# Header
#
DISTRO_NAME = “OpenMoKo”
DISTRO_VERSION = “.dev-snapshot-${DATE}”
#DISTRO_TYPE = “release”
DISTRO_TYPE = “debug”require conf/distro/include/openmoko.inc# Toolchain
PREFERRED_VERSION_gcc ?= “4.1.1”
PREFERRED_VERSION_gcc-cross ?= “4.1.1”
PREFERRED_VERSION_gcc-cross-initial ?= “4.1.1”
PREFERRED_VERSION_binutils ?= “2.17.50.0.5”
PREFERRED_VERSION_binutils-cross ?= “2.17.50.0.5”
PREFERRED_VERSION_linux-libc-headers ?= “2.6.18”
# 2.5 has less bugs, but crashes dropbear :/
PREFERRED_VERSION_glibc ?= “2.4”
PREFERRED_VERSION_glibc-intermediate ?= “2.4”

PREFERRED_VERSION_lmsensors-apps ?= “2.10.1”

Read the rest of this entry »


Openembedded 介紹(一)

July 12, 2007

Openmoko distribution 是用Openembedded來建立, Openembedded是用Bitbake來做套件上管理與cross compile的建立. 而Bitbake是用.bb .bbclass .conf 來進行設定與管理

優點:

  1. 可以crosscompiler建立embedded system
  2. 能夠包裝成ipk, deb, rpm, tar
  3. 能run tasks 在qemu上

Read the rest of this entry »


OpenMoko Booting Process — Upstart

July 5, 2007

Upstart是為了要替換傳統/sbin/init daemon處理在開機過程中的tasks和services, 或是在關機過程中. 原本Upstart是為了在Ubuntu上開發, 後來是用於all linux distribution上也能使用

特色:

  • Tasks或是Services都是被Events所觸發
  • Events是被tasks所產生, Services是被叫起或結束
  • 可接收別的process所發出Events
  • 若是服務因不正常被中止, 是可再生
  • 可與init daemon雙向溝通, 便即時得知什麼工作還在runing, 什麼工作已經死掉

Read the rest of this entry »


OpenMoko Booting Process

July 4, 2007

往往開發embedded linux device的開發者都會面臨到一個大問題就是開機過程太久, Linux在開機時會將一連串的程序叫起並啟動, 所以會花許久的時間等待所有程序被一一叫起, 在這邊介紹兩種方法可以平行處理初始化的程序.

Read the rest of this entry »


OpenMoko Uboot 介紹(二)

July 3, 2007

在前一篇已經介紹Uboot的重要性了, 接著介紹如何編譯和在power on後進入Openmoko Uboot

1. 請先參考 Openmoko wiki的網頁使用MokoMakefile的方式, 在自己的電腦build整個project, openembedded 是個強大的工具讓開發者能使用不同種類的硬體架構, 利用bitbake的技術和version control的軟體monotone來完成編譯映像擋, 若build成功後, 會在/home/moko/build/tmp/deploy/images/下面會看到uboot, rootfs, uImage, 還有dfu-util, openocd, sjf2410的tools.

2.接下來,如果我們要編譯Uboot的話,要到/home/moko/build/tmp/work/armv4t-linux/uboot/git/目錄下面進行編譯.

3.若要download image時, 使用dfu-util的方式

#tmp/dfu-util -a 1 -D uboot.bin

4. 若要進去Uboot的console的話, 首先要先按下911按鍵再按下power key, 在Boot Menu中若是要選擇USB的方式連到neo1973, 就選擇Set console to USB, 若是要選擇serial的方式連接, 就選擇Set console to serial.

5. 在Host端用minicom的方式, boud rate設成115200, hardware/software flow control選擇無, 即可與neo1973做連結, 即可進去neo1973設備的uboot console

6. Uboot內有幾個可用的commands, 可下help能可看到在uboot中支援哪些commands及所屬的功能

這些command除了可以驗證週邊硬體以外也能夠驗證SDRAM或是Flash的功能是否正常

接下來會再介紹Openmoko再uboot project中改變了哪些source code patch 🙂


OpenMoko Uboot 介紹(一)

July 2, 2007

Das U-boot (the Universal Boot Loader) —
越來越多的embedded linux device出現在這市場上, Uboot可以想成是在開機過後馬上會被執行的程式. 像桌上型電腦在BIOS會先initial硬體週邊後, 會去執行lilo或是grub程式, 通常是長駐在硬碟的MBR上, boot loader會將系統資訊(system information)傳給kernel再執行kernel部份, 並將硬碟的partition傳遞給kernel.

在embedded system裡面是比較複雜些, 因為沒有BIOS先執行初始化的系統設定, 像類似microprocessors, memory controllers, 和不同硬體週邊.

Uboot的主要功能

  • 初始化硬體, 特別是memory controller
  • 提供boot的參數(system information)給linux kernel
  • 啟動linux kernel

還有一些附加性功能

  • 讀寫任意memory的位址
  • 透過serial line或ethernet可將binary image上傳到device memory位址
  • 從memory上拷備binary image到flash上, 完成更新binary image動作

官方資源: