jollen 發表於 September 16, 2006 1:02 AM
這星期四五都在把玩公司的 PowerPC 板子,目標是 build BIOS (U-Boot)、kernel (2.6) 與基本的 root filesystem。因此就來把這二天建立 root filesystem 的心得簡單整理一下與大家分享。 PowerPC 是定義在 large-scale 的嵌入式系統,因此與一般的 small-scale embedded system 有幾個技術面的差異,若以 embedded Linux 的角度來看,幾點主要差異是: (1) large-scale ES 通常都有 mass storage (eg. HD) 或利用 NFS/BOOTP/PXE 來開機後由 NFS server mount 完整系統,所以開機時只要先提供 NFS...
jollen 發表於 September 18, 2006 5:35 PM
PowerPC 再衝吧!整理一下這次 porting PowerPC 網路卡 driver 的重點。今天先就架構面的重點做整理。 要了解以下內容,您至少要對以下主題有基本的認知: (1) U-Boot 如何使用 CONFIG_* 定義 driver,要把 networking 相關的 driver 打開。 (2) U-Boot 的開機與 Board-Level 初始化流程 (3) U-Boot 的 BSP 架構實作方法 (extern) (Jollen 的 U-Boot 學員可參考講義 Lecture 3 & Lecture 4) Jollen 的任務是將...
jollen 發表於 September 25, 2006 11:21 PM
從事系統程式工作的朋友大都聽過 Open Firmware 的標準,因為工作上的需要,允許 Jollen 可以花一點時間整理 Open Firmware 的資源。至於為什麼要來讀 Open Firmware,就要由 x86 的 VGA 說起了。 從以前我們做過的 PowerPC + x86 VGA 專案,以至於對 LinuxBIOS 玩票性質的研究,都能推導到一個未來 (也是現在) 值得投資的主題,那就是 Open Firmware。Jollen 最近發現在 OpenBIOS 的專案網站中,出現了一個 FCode Suite 的套件,這是 IBM 的 David Paktor 老兄在八月份 (2006) 丟到...
jollen 發表於 November 29, 2006 3:57 PM
最近有些朋友在問 PReP / CHRP / OpenFirmware 的關係,老實說這真的有點混亂,特別是 PReP / CHRP 是歷史所留下的遺跡,所以就用最簡潔的方式大概說明一下吧。 PReP(PowerPC Reference Platform)是最早的 PowerPC reference design,PReP 規格並沒有風行,原因是 IBM 是以「一言堂」的模式來制定這項規格。PReP 之後則是 CHRP(Common Hardware Reference Platform)的第二代 PowerPC reference design 規格,CHRP reference design 制定了作業系統支援的規格。CHRP 的另外一個重要內容則是定義 OpenFirmware 的標準。 OpenFirmware(也稱為 OpenBoot)的角色等於 PC 的 BIOS,也就是開機時期的軟體。OpenFirmware...
jollen 發表於 January 29, 2007 4:14 PM
U-Boot 在 board/ 目錄下存放個別板子的支援程式碼(board support codes、board support package),並且是一張板子一個目錄。有時,基於一些理由,我們會想到新增一個新的 board 目錄來存放我們的 BSP。例如,以 Jollen-Kit!(JK2410)為例,JK2410 是基於 SMDK2410 所發展,若將 U-Boot 設定為 'smdk2410_config',也能支援我們的 JK2410。但是,我們會想要另外增加一個 <U-Boot>/board/jk2410/ 目錄,來擺放 JK2410 的程式碼,即便 <U-Boot>/board/smdk2410/ 與 <U-Boot>/board/jk2410/ 裡的程式碼是 100% 相同的。 有這樣需要的幾個具體理由是: 練習 U-Boot 移植。 避免修改到原始的 BSP 程式碼。 門面問題,讓 U-Boot 也能有專屬於我們板子的支援,而不是基於其他的板子。 將來會正式釋出...
jollen 發表於 January 30, 2007 11:41 PM
關於 U-Boot 的程式進入點,我以 SMDK2410 平臺為例來說明。首先,在每張 board 的目錄下,都會有一個 linker script,程式的整體進入點可以閱讀此檔案得知。以 SMDK2410 來說,我們應該由 <U-Boot>/board/smdk2410/u-boot.lds 檔案看起,以下是其內容節錄: ENTRY(_start) SECTIONS { . = 0x00000000; . = ALIGN(4); .text : { cpu/arm920t/start.o (.text) *(.text) } 在 linker script 的 SECTIONS 命令區塊中,.text section 一開始被放進 <U-Boot>/cpu/arm920t/start.o 檔,所以能了解到此檔案是整個 U-Boot...
jollen 發表於 April 19, 2007 11:32 PM
這二天跟幾個朋友聊技術,大家似乎都對 qemu 如何模擬週邊硬體都很感興趣,特別是原理的部份,雖然我只簡單帶過幾句話,不過還是簡單紀錄一下,也能跟大家分享。 關於「qemu 怎麼模擬週邊硬體」,看似神秘,不過,先三不一沒有來澄清觀念: - 不是模擬硬體的 waveform - 不是模擬硬體的 timing - 不是模擬硬體的 schematics - 沒有對硬體的行為做完整模擬 那麼,qemu system emulator 倒底模擬週邊硬體什麼東西? - 反應 driver (如 U-Boot 或 Linux device driver) 對 I/O port 或 I/O memory 的 read/write - 保存與更新硬體狀態,並在 driver...