more: Jollen 的 Embedded Linux 教育訓練

Jollen's Blog「Embedded Linux: Platforms and Applications」裡的所有文章!

  

uClinux-dist 使用教學:使用 GDB/ARMulator 來做測試

jollen 發表於 February 26, 2004 1:40 PM

一開始執行 GDB/ARMulator 時,指定 kernel 做為執行檔: # /usr/local/bin/arm-elf-gdb linux.2.0.x GNU gdb 5.0 Copyright 2000 Free Software Foundation, Inc. GDB is free software, covered by the GNU General Public License, and you are welcome to change it and/or distribute copies of...

uClinux-dist 使用教學:安裝 uClinux 的 GNU ARM toolchain

jollen 發表於 February 26, 2004 1:40 PM

由 uClinux 網站下載 GNU armtools: http://www.uclinux.org/pub/uClinux/m68k-elf-tools/ 請下載此檔案: http://www.uclinux.org/pub/uClinux/m68k-elf-tools/arm-elf-tools-20030314.sh 下載完成後,直接執行 arm-elf-tools-20030314.sh 即可安裝: # sh arm-elf-tools-20030314.sh uClinux 所提供的 GNU armtools 會安裝於 /usr/local 目錄下。 FLAT 格式的轉換工具 uClinux 所提供的 GNU armtools 也有一個用來處理 FLAT 格式轉換的工具,因此我們會有以下 2 個執行檔: ˙ /usr/local/bin/arm-elf-ld:呼叫arm-elf-ld.real並協助我們將檔案轉換成FLAT格式。 ˙ /usr/local/bin/arm-elf-ld.real:真正的linker。 使用 uClinux 的 toolchains...

uClinux-dist 使用教學:編譯 uClinux-dist 與常見問題

jollen 發表於 February 26, 2004 1:40 PM

編譯 uClinux-dist 完成 kernel 與 filesystem 設定後,在命令模式執行編譯命令: # make dep # make 進行 kernel 與應用程式的跨平臺編譯。在編譯之前,請檢查跨平臺編譯工具組(如GNU armtools)是否已安裝,同時在環境變數 PATH 的搜尋路徑裡也要能找到相關的程式。 uClinux-dist 會幫我們製作 root filesystem 的映像檔(image file),最後編譯完成的 kernel 與 root filesystem 映像檔會存放於 image/ 目錄下。編譯成功後會得到 4 個主要的檔案如下: ˙ images/linux.text:kernel的.text節區。 ˙ images/linux.data:kernel的.data節區。 ˙ images/romfs.img:filesystem的映像檔。 ˙...

uClinux-dist 使用教學:uClinux-dist 的使用

jollen 發表於 February 26, 2004 1:40 PM

uClinux-dist 基本操作 將uClinux-dist-20030909.tar.gz解壓後,執行: # make menuconfig 進入文字選單設定介面(圖1)。 圖1 uClinux-dist的設定主選單 進入「Target Platform Selection」選單,開始設定target端平臺的參數(圖2)。 圖2 選擇 Vendor/Product 在 uClinux-dist 裡已經預先建立許多平臺的參數資料,因此我們可以在「Vendor/Product」選單裡選取我們的硬體平臺,並使用 uClinux-dist 的預設參數。 在這裡我們選擇「GDB/ARMulator」來配合後面的章節進行實作(圖3)。 圖3 在Vendor/Product選項中找到 GDB/ARMulator平臺 接著在「kernel Version」選單中選則 Linux kernel 版本,在這裡我們選擇「linux-2.0.x」(圖4)。 圖4 使用linux-2.0.x 再來是有關filesystem的設定。在「Libc Version」裡,選擇「uC-libc」做為標準C程式庫(圖5)。 圖5 使用uC-libc 回到「Target Platform Selection」主選單,選擇「Customize kernel Settings...

uClinux-dist 使用教學:uClinux 與 uClinux-dist 介紹

jollen 發表於 February 26, 2004 1:40 PM

uClinux 介紹 uClinux 唸做「you-see-linux」,是由字置詞「u」(micro之意)與「c」(control之意)所組成的複合字。由 uClinux 的名稱可以知道,這是將Linux 移植到控制用微控制處理器上的 Linux kernel。 目前 uClinux 已經將 Linux kernel 的移植(porting)到許多不同的處理器架構上,uClinux 目前移植的 kernel 最新版本為: kernel 2.0.39、kernel 2.4.32 與 kernel 2.6.17。 uClinux 所支援的處理器有:M68k、ColdFire、ARM、Sparc、NEC v850、H8/300、OPENcores OR1000、Altera NIOS and Xilinx Microblaze。 uClinux 本身是 Linux kernel 的移植,許多情況下我們都可以直接使用廠商提供事先編譯完成的 uClinux。若想要自行編譯給 ARM 使用的...

最小化 Linux 觀念與實施方法

jollen 發表於 March 5, 2004 11:04 AM

本文說明最小化Linux的觀念以及實施的方法,這是 Embedded Linux / x86 課程的先備知識,透過這篇文章的說明,同學可以了解到最小化一個 Linux 所應實施的步驟,以有效學習 Embedded Linux 課程。 作者/陳俊宏 www.jollen.org以觀念寫成的步驟 1. 準備 host computer 一開始我們必須建立一個工作平臺 (即實驗電腦 - host computer),也就是在 IBM PC 上安裝 Linux distribution。建議使用的 Linux distribution 為 Red Hat Linux 6.2 以上的版本,因為我們並不需要使用到 kernel 2.4 的版本,因此選擇安裝 Red Hat...

Embedded Linux 的系統管理,#2: /etc/fstab 與 /etc/inittab

jollen 發表於 September 4, 2005 11:06 AM

介紹 2 個重要的系統設定檔,這 2 個設定檔是最小化 Linux 能順利啟動的關鍵。 作者/陳俊宏www.jollen.org/etc/fstab 的用途 /etc/fstab 是設定分割區與 mount 目錄關係的檔案,開機時會依這個檔案的內容 mount 檔案系統,mount 檔案系統的命令為: linux# mount -av 會依 /etc/fstab 的內容 mount 進除了 root 以外的所有檔案系統。 root 是在開機時由核心所 mount 進來的。root 先由核心 mount 成 read-only,然後由使用者手動 remount 成 read-write。 /etc/fstab 設定格式 一個簡單的...

Embedded Linux 的系統管理,#1: 重要設定檔

jollen 發表於 April 24, 2006 3:26 PM

學習 Embedded Linux 需要一定的 Linux 系統管理能力,Jollen 所設計的「Embedded Linux / x86」便是在教授這樣的主題。本系列文章是要給來上Embedded Linux / x86 課程的學員在家先修的。 作者/陳俊宏www.jollen.org重要設定檔 為了能更了解 Linux 整個系統,學習 Linux 的第一步,必須先把幾個常用的設定檔研究一下。底下整理出幾個常用檔案。 系統管理相關設定檔 □ /etc/passwd 使用者帳號檔案。 □ /etc/shadow 儲存只有 root 才能讀取的帳號資訊,例如編碼過的密碼字串。 □ /etc/group 使用者群組檔案。 系統的定時裝置,可以讓系統在特定的時間或時間間隔執行指定的工作。 □ /etc/inittab (must have!) 設定開機時要啟動的 service 與...

Embedded Linux 的系統管理,#3: initial scripts

jollen 發表於 April 24, 2006 3:53 PM

initial scripts 是在開機時自動執行的 script,本文說明 Red Hat Linux 的 init script 概念,在我們的 Embedded Linux / x86 以及 Embedded Linux / ARM9 的課程中,同學會看到 /etc/inittab 配合 init script 的實作方法。 作者/陳俊宏www.jollen.org/etc/rc.d/ 概念 請同學參照 Red Hat Linux 的系統檔案來閱讀本文,我們的課程實作與 Red Hat Linux 的 init script 寫法頗有差異,但研讀...

Embedded Linux 的系統管理,#4: 網路設定

jollen 發表於 April 24, 2006 4:20 PM

課程專案中,我們會在載入網路卡驅動程式後,再手動設定網路組態。在 Embedded Linux 系統中,我們會以命令列方式來設定網路的組態。 作者/陳俊宏www.jollen.orgifconfig 指令 ifconfig 指令是Linux網路組態設定的主要系統管理命令。以下我們說明如何手動設定這些網路組態: IP gateway netmask DNS broadcast 設定 IP 例如,要將系統的 IP 設定為 59.120.22.215,則執行以下命令: linux# ifconfig eth0 59.120.22.215 同時請將 loopback device 也加上去: linux# ifconfig lo 127.0.0.1 直接執行 'ifconfig' 不加任何參數的話,可以看到目前的網路組態設定: eth0 Link encap:Ethernet HWaddr 00:13:D4:C4:0D:EDinet addr:59.120.22.215...

嵌入式Linux的Web Application Framework

jollen 發表於 September 19, 2006 9:37 PM

今天在survey與初步build所謂的"a web application framework in an embedded Linux system",這是8月份在LinuxDevices.com的一篇文章介紹的題目。Web-application或者是"Application Web化"是近幾年來非常明顯的一個趨勢,思考 Embedded System 的 Web Application (Embedded Web Applications ?) 是一個頗為有趣的主題,也有許多的 paper 在討論這個題目。 目前嵌入式Linux上的web application與desktop (PC) 的web application並無太大差異,許多文件也是只以"embedded web server"做為核心的出發點,這篇在linuxdevices.com上看到的文章也是。不過這篇文章倒值得對這個題目有興趣的朋友一讀。 作者開場白就點出了這個題目的主軸: As devices are increasingly more networked, an embedded web server...

Embedded Linux 系統性的教學看法

jollen 發表於 September 22, 2006 10:59 PM

依照建立 "root filesystem" 的方法,我們可以區分以下 4 大類型 (Jollen 個人看法,僅供參考): 1. Embedded Linux Distribution. 2. Hand-made. 3. Build system. 4. Metadata build system. Embedded Linux Distribution 比如像是 Debian for ARM 這類型的 pre-built Linux distribution for embedded Linux 其實是不太實用的,除了 large-scale 的應用或是教學用途 (eg. PeeWeeLinux)...

QEMU 虛擬機器

jollen 發表於 September 28, 2006 11:38 PM

QEMU 是一個可以模擬 x86、x86_64、ARM、、SPARC、SPARC64、PowerPC、PowerPC64、MIPS、m68k 與 SH-4 處理器的 open source 軟體。簡單說,QEMU 就是一套虛擬機器 (virtual machine) 的軟體。 QEMU 提供二種模擬模式:(1) Full system emulation;(2) User mode emulation。Full system emulation 模擬完整的系統,即處理器與週邊;user mode emulation 則是能在不同的處理器平臺上執行其它處理器平臺的程式。 以下是引用自 QEMU 官方的介紹: QEMU is a generic and open source processor emulator which...

Embedded Linux 是程式?是一台裝置?還是什麼?

jollen 發表於 September 30, 2006 11:29 AM

Embedded Linux 倒底是什麼東西啊?最早 Jollen 的書曾經節錄國外專欄的解釋,企圖以最簡單的方式來定義「Embedded Linux」:Embedded Linux is a software platform for embedded system。因此,Embedded Linux 是一種「特殊的應用方法」,並不是一個程式。 今天在 LinuxDevices.com 的 forum 看到一則 post,原始發問者顯然誤解了 Embedded Linux 的意思,不過有位好心人很邁力地解釋 "regular Linux" 與 "embedded Linux" 的觀念,他的開場白寫的真的很不錯: 'Embedded Linux' is not an application program, it is...

嵌入式系統開發導論 (刊載於 Run! PC 8 月份)

jollen 發表於 September 30, 2006 12:00 PM

超熱門美食:嵌入式系統 什麼是「嵌入式系統」?這個熱到不行的題目倒底是什麼東西!嵌入式系統已經是全球科技業的共通話題了,就讓我們來簡單說明什麼叫「嵌入式系統」(Embedded Systems)吧。 美國工程師協會所定義的...嗯!看到這句話大家大概又要傻眼了,怎麼每個人解釋嵌入式系統都要搬出美國工程師協會的定義來交差呢!這真的是落伍啦。嵌入式系統不過是廣義還是狹義的定義,肯定都是包山包海的又臭又長。 我們這裡所要講的嵌入式系統目標是鎖定在熱門的「嵌入式作業系統平臺技術」(Embedded OS),所以如果我們再繼續縮小主題的話,沒錯!題目就只剩下 WinCE、Symbian 與 Linux 了! 如果以學習熱度來講的話,WinCE與 Embedded Linux 絕對是不「二」主題。所以我們要講的嵌入式系統就是Windows Mobile與Embedded Linux。本文將會明確鎖定幾個主題,並給予一個學習的方向,讓有志進入嵌入式系統領域的朋友能抓住主要的幾個主題。 功能導向的系統 言歸正傳,所謂的嵌入式系統簡而言之是一種「執行部份特定功能」的系統,實作上並不限定技術範疇,只要能將特定的功能(function)「嵌入」到目標裝置(target device)裡,包含這些功能的整體系統(或平臺)即是「嵌入式系統」。 一部目標裝置裡頭,可能會有數十個甚致數百、數千個嵌入式系統,每個「系統」均負責執行一項專責的功能。 由於目前的目標裝置都必須嵌入甚為複雜的功能,所以「嵌入式作業系統」成為嵌入式系統不可或缺的要素。例如,一支完全沒有生命力的「手機硬體」,在嵌入Windows Mobile與application後,就變成可以聽MP3、跟女朋友聊天、看MTV與使用各種功能的活力裝置了!有了完整的嵌入式系統技術,任何目標裝置都會因為嵌入式系統的注入,而產生生命,充滿活力! 目標裝置導向的系統 由於嵌入式系統是功能導向的系統,因此必須設計、選擇或購買正確(或適合)的目標裝置,才能開始實作並嵌入「嵌入式系統」。因此,嵌入式系統的技術是以功能與目標裝置為分類的一種技術。 例如,與PDA相關的目標裝置(即硬體)、與MP3撥放器相關的目標裝置、與3G手機相關的目標裝置等等;使用這些目標裝置所開發的特定功能系統,便是PDA的嵌入式系統、MP3音樂撥放的嵌入式系統、3G手機的嵌入式系統。 附帶值得一提的是,由於嵌入式系統的目標裝置,在硬體規格或架構上往往重疊性很大,所以很多SOC的廠商都會推出所謂的「公板」或「參考設計」(Reference Design),下游的開發者往往只要把公板做部份修改或小量的客製化,即可滿足自己的需求。 使用嵌入式作業系統 因為以功能為導向,因此當要嵌入的功能很複雜或非常多樣化時,使用嵌入式作業系統才能解決許多技術面的問題。有了嵌入式作業系統,「功能的實作」往往只是在「寫程式」,所以最終可以把嵌入式系統變成軟體開發的工作。 目標裝置 (Target Device) 的特性 嵌入式系統大多數都不使用標準的IBM PC硬體,而且有些嵌入式系統的目標裝置都是很特殊的。不過,我們可以將嵌入式系統目標裝置(target device)的主要硬體差異做一個說明。 我們透過與IBM PC的差異比較來做解釋。 嵌入式系統使用SOC(System-on-Chip)的處理器,這些SOC都是專為嵌入式系統或是手持行動裝置設計的,因此具備低功率、低耗電與面積小的特色。 在RAM方面,嵌入式系統的RAM大多在2MB到128MB之間,並且都是屬是SRAM/SDRAM的技術。很少使用IBM...

Linux smartphone 之路

jollen 發表於 September 30, 2006 12:48 PM

相較於Microsoft的Windows Mobile的成功,過去的Linux smart phone 之路顯然有點坎坷。雖然大敵在前,但是Linux開發社群對Linux手機的熱情絲毫未減。終於,去年(2005)年,由11家Linux與處理器大家共同成立的Linux手機標準論壇(Linux Phone Standards Forum – LiPS)提出具體的Linux smart phone架構圖。 LiPS發起廠商共有11家大廠,分別是:ARM Ltd., Cellon, Esmertec, France Telecom/Orange, FSMLabs, Huawei, Jaluna, MIZI Research, MontaVista, Open Plug, and PalmSource。最近又加入了Texas Instruments、ZTE、Telecom三家大廠。 圖: LiPS 的工作範圍(kernel 部份是OSDL的任務) (Source: LinuxDevices.com / LiPS) LiPS的主要任務為「標準化(standardizing)Linux手機」,並提出可行的Linux手機OS架構。更明確來說,LiPS在標準化「Linux手機的middleware層」,middleware提供電話功能的API、GUI、裝置管理功能、相關的安全性管理、電話簿功能。今年下半年將可以看到LiPS釋出的第一版Linux手機規格! 除了LiPS外,OSDL(Open Source Development...

嵌入式OS的重要共通議題

jollen 發表於 September 30, 2006 1:39 PM

學習WinCE與Embedded Linux的重要課程是「系統程式」(system software)的觀念,不管是WinCE還是Embedded Linux,有幾個核心的系統程式或作業系統基礎,絕對是要用力研究的。 第一個是process的觀念,process是執行中的程式,如何控制process(生成與刪除)、非同步的signal處理等;第二個是process synchronization的觀念,process是concurrent(同步)在執行,所以會產生race condition(競賽問題)問題,解決race condition現象的方法、semaphore、monitor、mutual exclusive、locking等,是這個觀念主題的重點。 第二個是thread的程式設計方法與thread同步的方法,配合multi-threaded所實作的event-driven軟體架構,還有更進階的event manager的做法,是這個部份的重點。 因此,有志進入嵌入式系統領域的讀者,可以直接由WinCE或Embedded Linux技術切入,首先當然要以軟體層的學習為主,並且加強作業系統與系統程式這二門學科的能力,接著把最好的一道菜—驅動程式—徹底學通後,絕對能在嵌入式系統領域有所發揮。 -- 作者/陳俊宏 (jollen) 部份原文刊載於 Run! PC 雜誌 8 月號 歡迎任意轉貼引用.但請務必註明出處...

嵌入式 Linux 應用: Mesh Networking 演講稿 (精簡版部份內容)

jollen 發表於 October 2, 2006 11:58 PM

#2: 今天 Jollen 要介紹的題目是 "Mesh Router",實作平臺是 Kendin KS8695P 與 embedded Linux 系統。我們在 Kendin KS8695P (ARM9) 的平臺上嵌入 embedded Linux 系統,透過此平臺與 mesh wireless 的 embedded Linux 系統,將能實作出 mesh networking 的系統。 今天我們的重點 (Lecture 8) 是介紹 open source 解決方案與 mesh networking;同時我們也會做一個簡單的 demo。 簡報下載 #3:...

Library Dependency 的議題要點

jollen 發表於 October 3, 2006 5:57 PM

在建立 embedded Linux 系統 (root filesystem) 時,程式庫相依 (library dependencies) 的議題是相當重要的一個題目。 當 root filesystem 缺少必要的 library 時,程式當然是無法執行的,甚致系統也會無法順利啟動。依據 Jollen 在「Embedded Linux / ARM9 開發實戰」的課程所提的幾個觀念,我們可以了解到在建構 embedded Linux 系統時,應具備的正確觀念與基本能力。 我們把「如何找出所需的 library」方法整理出 3 項的基本要點,依照這 3 種基本款來加入 library 將能解決幾乎所有的 library dependency 問題,這 3 種項基本要點為: (1) 先利用...

Embedded Linux 的系統管理,#5: './configure' 與 Software Stack

jollen 發表於 October 15, 2006 12:01 PM

'./configure' 的設定決定 root filesystem 的架構(architecture),即 software stack 的設計。以我們「Embedded Linux 的系統管理 (x86)」課程舉出的 Nano-X project 案例來說,我們可以規劃出 2 種架構: 1. 典型的 Desktop (PC) 使用的架構 - ffplay + SDL + x11。 2. 讓 ffplay 在 Nano-X 介面裡撥放影片 - ffplay + SDL + Nano-X。 其中第...

GNU gv 設定與使用心得

jollen 發表於 October 23, 2006 4:23 PM

GNU gv 是用來讀取 PostScript 與 PDF 格式文件的利器,GNU gv 其實只是一個前端界面 (front-end),實際上 GNU gv 是由 ghostview 1.5 衍生而來的,並且使用 ghostscript 來直譯文件。 GNU gv 的官方網站:http://www.gnu.org/software/gv/ gv 的使用 我們可以在 X Window System 底下直接下命令,例如: linux# gv Trans.PS.gz 這是利用 gv 觀看 Trans.PS.gz 文件的範例,特別的是,經由 gzip 壓縮過的 PostScript 或...

PowerPC 的無硬碟刀峰伺服器

jollen 發表於 October 31, 2006 1:29 PM

一個有趣的應用。這是利用 IBM PowerPC 750GX 處理器,搭載 Tundra Tsi108 北橋,製作出無硬體的 server board,掛載(mount)在一個背板(backbone)後,就成為一台小型的分散式計算伺服器。以下是這台「diskless-blade server」的照片。 基本上這是一個 computation platform,因此需要軟體「分散式計算技術」的支援。不過不拿這個可怕的題目來討論,基本上 Linux 要有一個無硬碟的計算環境,最簡單的方法是「NFS」。 (一台機器可安插 4 片 diskless server board,可做為小型的伺服器或計算平臺。) NFS 果然是萬用解決方案,像是這種異質性平臺(host v.s. target、client v.s. server),利用 NFS 來掛載(mount)host(或server)端的 Linux distribution 到 target(或 client)端來做計算,是最簡單的方法。 唯一需要具備的能力是: 1. NFS 的設定:/etc/exports。 2....

「Mobile 2.0 的思考」與第一隻採用 OpenMoko 的 Linux Smartphone

jollen 發表於 November 8, 2006 8:37 PM

這隻手機是由台灣的大眾電腦所開發(真是一個好消息),原始的報導在 LinuxDevices.com 上,詳情可點閱這篇文章「Cheap, hackable Linux smartphone due soon」。 Neo1973(代號:FIC-GTA001) 是「completely open, Linux-based, GPS-equipped, quad-band GSM/GPRS phone」,沒錯,這是一隻「PHS 手機」。預計上市的時間是今年(2006)的 12 月中,並在明年的 1 月份銷售。 Neo1973 採用 Samsung S3C2410 平臺,並且是第一隻採用「OpenMoko」平臺的 Linux 智慧型手機,此外,更採用「apt-get-lke」的 software manager。不管正著看還是反著看,都很符合 Linux 玩家的習慣(與期望)。 非常期待他的問世,到時一定要去帶一隻回家「hack hack」一番。 Sean Moss-Pultz(Neo1973 的 PM,大眾電腦),在 Amsterdam(阿姆斯特丹)所舉行的「Open Source...

Novell 宣佈釋出 Mono 1.2:Linux 執行 .NET 程式的解決方案

jollen 發表於 November 13, 2006 12:04 AM

前幾天大家或許都看到 Microsoft/Novell 宣佈要作作開發 Linux 軟體的新聞了。就在 2 天前,Novell 在 Microsoft 的 TechEd Developers Conference & Expo(Barcelona Spain)宣佈推出 Mono 1.2。 Mono 是一套可以讓 Linux 與 Unix 使用者執行 Microsoft .NET 程式的軟體,在 LinuxWatch 的報導中提出 1.2 版是一個重要的里程碑,節錄原始報導如下: Mono 1.2 enables Linux and Unix users to use...

Sun Microsystem 釋出 GPLv2 Java 實作:與我的有感而發

jollen 發表於 November 14, 2006 9:07 PM

Sun Microsystems 在今天宣佈,將要以 GPLv2 釋出他的 Java 實作。 這二年可以看到非常多的廠商或是專案加入 open source community 的陣營,而 Sun 的 Java 實作超過 10 年的發展,過程真是非常的精采,最終也提出 GPLv2 的版本,有點小意外,但我想可能也不出大家所預期的可能結果。 Sun 的 Java 實作最終還是選擇以 GPLv2 釋出新版本,並且也不意外地引發「Is Java's move to GPL too late?」的討論。在這 10 幾年的精采發展過程中,Java 也曾回拒 open source 的想法與建議,最終仍然無法抵擋一個潮流與趨勢。 與其說 Sun...

MontaVista 推出 Dev Rock 5 嵌入式 Linux 開發工具之《殺手級 IDE 快快出現!》

jollen 發表於 November 16, 2006 11:08 PM

Embedded Linux 的開發工具一日千里,主意不錯而且發展速度快,顯現的是未來「bring Linux to devices」的工作將更快速(快但是不見得輕鬆),這也將會構成 embedded Linux 將來市佔率(使用 Linux 做為 device OS 解決方案的比率)能大幅並快速提升的要素之一:「快速平臺與軟硬解決方案」 (rapid prototyping platform and SW/HW solutions)。 由此可大膽推測,embedded Linux 後期的生態環境正在快速形成當中,或許再過 2~3 年,就會有殺手級的 embedded Linux 的開發工具(IDE)出現。倘若如此,developer 現在一個很重要的工作就是僅快去學習研究 embedded Linux 的基礎原理;未來才能善用工具,而不是只會用工具。 embedded Linux 的開發工具逐漸成形了,會這麼說是因為今天看到一則新聞: 「MontaVista launches Dev Rocket 5...

Debian ARM 爆起:思考社群發展模式的關鍵二個因素

jollen 發表於 November 29, 2006 9:18 AM

Debian ARM 已成為 Debian 數十種平臺的 distribution 中的第三大。由 Debian 的 popularity-contest 統計資料來看,Debian ARM 已經超越 PowerPC 成為第三大的 Debian 架構分支。詳細報導在此。 讓 Debian ARM 成為第三熱門的 Debian 版本的功臣就是今年大大有名的 NSLU2 計畫,如果您還不曉得 NSLU2 的名號,可以到NSLU2 的官方網站瞧瞧。當初 NSLU2 計畫發起時,便立下這樣的志願(節錄自 LinuxDevices.com 的報導): to have the Linksys NSLU2 become a fully...

TimeSys 十二月份的 Webinar

jollen 發表於 December 1, 2006 3:48 PM

TimeSys 是一家「供應現成 RFS」的服務公司,他們每個月都會有幾場 Webinars 的活動,本月份(12月份)的 Webinars 一共三場: 1. Linux Boot-Up:了解由 bootloader 開機到 user-space 模式,並執行 user program 的過程。 2. Hello World, from an Embedded Perspective:怎麼把 "Hello World" 做 cross compilation 後放到 RFS。 3. Survey of Linux Filesystems:介紹 embedded system 使用的 filesystem,以及建立...

簡易的 initramfs 製作方式

jollen 發表於 December 19, 2006 1:10 AM

Linus 本人在 Linux 2.6 時代所提出的 "initramfs" 是一種更好的 "root=" 做法。在這裡先不對 initramfs 做詳細介紹與原由說明,不過,簡單來說,initramfs 就是「kernel 2.6 的 initrd」。Initrd(initial ramdisk)即 /dev/ram0,是一種普遍使用在 embedded Linux 的觀念;embedded Linux 利用 initrd 來載入 root filesystem(或是 bootstrap root filesystem 後再以 NFS 掛進完整 RFS)。 本日記介紹製作 Linux 2.6 的 initramfs 簡易方法。假設 RFS...

使用 genext2fs 的 '-D'(device file table)來建立 root filesystem

jollen 發表於 December 19, 2006 6:50 PM

本文只適合「Embedded Linux / x86: 基礎能力與系統管理」的學員、對 root filesystem 建立有基本概念的朋友,或是「Embedded Linux 嵌入式系統實作演練, 2e」的讀者。 本日記介紹更方便的 nano-X 專案建立方式,以下做法使用的 shell script 並「不是」Jollen 原創,而是 Jollen 的恩師「Joe」貼心提供給學員使用的。目前 Joe 老師在大學主持嵌入式 Linux 實驗室,上過 Joe 老師課的同學仍然可以寫 email 跟他請教問題。 步驟 1. 利用 gennanox 來產生主要的目錄(骨幹): # sh ./gennanox generating fstab generating group...

Hiker:另一個 GTK+ based 的 Linux mobile phone application framework

jollen 發表於 December 25, 2006 8:28 PM

本年度與明年度的既定工作之一是「survey of application framework for Linux mobile phones」以及「what are they target」。今天是歡樂的 Christmas,不過是要工作的一天;去年與前年的耶誕節正好遇到假日都是放假。但是也有許多公司今天很人性化的放了一天假,結果就在閒逛網站時,又瞄到一則新聞「Framework aims to commercialize mobile Linux apps」。 如果我的國文造詣還可以的話,以「雨後春筍」來形容「Linux application framework for mobile devices」應該是挺合適的;今年(2006)如果要寫 Linux 年度大事記的話,這個主題絕對是前 10 名的。 本週是2006年最後一週,也是為2007年做準備的最後一週,輕鬆一下也是不錯的。 回歸正題 另一個以 GTK+ 為基礎的 Linux mobile devices 的「application framework」也釋出了,這個 application framework...

Embedded Linux 2006 十大回顧!

jollen 發表於 December 25, 2006 9:05 PM

LinuxDevices.com 推出「Embedded Linux 2006 十大回顧」!內容提到今年 10 個主要的 embedded Linux 發展趨勢(以下是簡要翻譯,請閱讀原文有很完整的說明): 1. Linux 也有自己的手機囉! 2. 許多廠商開始提供完整("complete")的 mobile phone software stacks 了,參賽者有 Trolltech, a la Mobile, Cellunite, Aplix, Access!(Jollen 編註:事實上 2006 年出現在地球上的 mobile phone software stack(application framework)不只於此) 3. 關鍵性的 embedded Linux 開發工具!(Jollen...

一個防止程式被玩耍的小技倆

jollen 發表於 January 4, 2007 1:51 AM

今天在分享自己實作上的經驗時,聊到「如何防止程式被人家玩了!」。我們所要實現的想法很簡單,就是設法防止「執行檔」被 Linux 下的「標準程式工具」給把玩了!例如: 防止被 "objdump" 工具讀取 防止被 "objdump –d" 做反組譯 防止被 gdb 除錯 防止 symbol table 被 nm 讀出 防止被其它的標準程式工具(GNU bintuils,如 file 等)所操作 我分享了一個簡單的方法,這個方法在以往「Linux Systems Programming」的課或多或少也曾向同學介紹過;不過,大家要知道的是,這只是一個有趣的小東西,或者說是一個「小手段」,任何高手級的 Linux 玩家,大概只要不到一小時就能輕易 反擊這個做法。 實測 就拿 "tar" 指令來看,以下是正常的操作: # objdump -d /bin/tar /bin/tar: file format...

應用在 Embedded Linux 場合的 Busybox 有了 "CONFIG_DESKTOP"

jollen 發表於 January 5, 2007 12:05 AM

Busybox 於 2006-12-14 釋出 1.3.0(stable)版,並於 2006-12-27 釋出 1.3.1(stable)更新。不過,吸引我的並不是這個平凡的版本更新資訊,而是看到以下這段文字: This release has CONFIG_DESKTOP option which enables features needed for busybox usage on desktop machine. 'CONFIG_DESKTOP' 的出現,讓原本是應用在 Embedded Linux 場合的 Busybox,也開始支援 Desktop Linux 的應用了。於是,我心裡浮現出以下的感想... Busybox 原先的設計理念是基於「簡化的系統工具」與「簡單化的指令集」,並朝 footprint 的目標而發展;當初由於 target device 硬體環境的貧乏(如 RAM...

Embedded Linux 測試:Bootstrap root filesystem(x86)階段《程式執行測試》

jollen 發表於 January 17, 2007 3:43 PM

本文是單純實作時的測試方法說明,「Bootstrap root filesystem」的做法、步驟、概念與隱含的觀念請自行參考相關文件。 前情提要:由 Busybox 開始 這個階段的實作「提要」如下。 我們到 Busybox 官方網站下載原始碼:http://busybox.net/downloads/busybox-1.3.1.tar.bz2。如果您是初次「把玩」open source package,必須了解一個重要的概念:對任何的 open source 套件而言,以下二份文件是必讀的: README INSTALL 大多數的套件都包含以上二個檔案,並且許多重要的資訊都寫在這二份文件檔裡。將 Busybox 套件解開後,先檢查以下的 utility 是否有勾選: init process shell(請優先選用 ash) 並且將安裝路徑(install prefix)設定到事先建立的 root filesystem 空目錄。接著進行編譯,在編譯過程中可能會產生一些錯誤,請先把產生錯誤的選項取消,試著將 Busybox 編譯出來後並安裝至 root filesystem 目錄下。 我要怎麼測試此階段 root filesystem 的正確性?...

SD/SDIO 的開發板

jollen 發表於 January 19, 2007 3:49 PM

Jinvani Systech 推出 SD/SDIO 的發展平臺,特別的是,這是一張 PCI-based 的 host controller 卡!相當的有用處,詳見 LinuxDevices.com 上的新聞全文 [http://www.linuxdevices.com/news/NS7542044278.html]。 我以「相當的有用處」來形容這個發展平臺的理由是,在 SD/SDIO 相關的專案裡頭,host controller 的發展與移植並非首要的工作,重點工作反而是: 1. 基於 SD/SDIO 週邊介面卡的 device driver,例如 WiFi card、Bluetooth、GPS modem、SD memory 等。 2. SD/SDIO card 的相關應用程式,例如數位相框軟體(基於 SD memory card)等。 因此,如果可以在 host 端(x86)插上一張這種卡,事情就美妙許多了,因為可以減化部份應用程式的測試工作,同時也能加速...

製作 ARM9 的 Bootstrap Root Filesystem

jollen 發表於 January 23, 2007 6:25 PM

更新「Building ARM9 Bootstrap Root Filesystem」教學文件,在此提供與各位朋友分享,並請多多指正,以讓文件內容更加完善。以下文件以 MS-Word 轉檔,請多見諒。 《Jollen的Root Filesystem建置技術系列》 製作ARM9的Bootstrap Root Filesystem  作者/陳俊宏 http://www.jollen.org 更新日期:2007/1/23  在「完整註明出處」的前提下(註明方式說明),您能立即擁有轉貼與引用的授權,且毋需知會作者。  目的  製作 bootstrap root filesystem(base root filesystem)以提供一個最簡單、陽春且可開機的環境;製作完成的系統可開機到shell模式,並可使用 busybox 提供的指令。  準備工作  首先,您必須準備一台 host 開發環境,並安裝好 cross toolchain;接著,由於本文是做實機測試,因此,如果您沒有 ARM9 開發板,可以考慮使用 Qemu 來做模擬測試。  以下的操作示範,只節錄重點指令片段,您可能必須根據自己的整體實作流程,來微調指令的順序,或是參數等。  Step 1:建立工作目錄  建立一個專用的工作目錄,命名為 arm9.so-busybox/: ...

Embedded Linux / ARM9 課程的範例:root filesystem

jollen 發表於 February 7, 2007 5:30 PM

提供 Jollen 的 Embedded Linux / ARM9 課程的範例,本課程重心放在 root filesystem 的建構技術與觀念解說。第 1~2 天的課程實作產出範例如下: arm9.so-busybox.tar.bz2 arm9.so-hello.tar.bz2 jk2410_pkgs_ports-20070204.tar.bz2 第一份是「bootstrap root filesystgem」的製作、第二份是 cross compile「Hello World」for ARM9 的實例、第三份是 madplay project 與 nano-X project(MP3 player 與 AVI player)的實例。 第一份範例的內容可參考 Jollen 的「製作 ARM9 的 Bootstrap Root...

Embedded Linux 測試:Full root filesystem for ARM9 階段《NFS Mount》

jollen 發表於 February 12, 2007 4:11 PM

Bootstrap root filesystem 是一個基本且可開機的 root filesystem,針對 ARM9 的 root filesystem 建構與開發,要如何有效率的進行測試與發展是必修的一門功課。傳統的 Embedded Linux 應用,大多是以 NFS 的方式來測試 target device 的完整 root filesystem(full root filesystem);另外還有一種較「先進」的測試方式是使用 sshfs 的方式來進行,可參考 Jserv 兄的 blog「sshfs 在 Embedded Linux 開發的應用」。 以 NFS 進行 Embedded Linux 的開發測試,主要是針對 target device...

OpenMoko 釋出原始碼了

jollen 發表於 February 17, 2007 6:08 PM

OpenMoko 於台北時間 2007-02-15 正式開放原始碼下載!如果您還不曉得 OpenMoko 專案的重要性,可先行閱讀以下幾則消息: OpenMoko 準備舉旗進攻了 「Mobile 2.0 的思考」與第一隻採用 OpenMoko 的 Linux Smartphone OpenMoko 是史上頭一遭完全開放原始碼的 Linux 手機,OpenMoko 專案強調 100% 的開放與社群;隨著這個專案的正式問世,未來的 Linux mobile phone 生態想必將會出現大變化。以下是 OpenMoko announce 的 mail,為了見證這重要的歷史時刻,我將收到的 mailing-list 全文刊載: 日期: Wed, 14 Feb 2007 18:02:37 +0100 寄件者:...

OpenMoko 的 gsmd:Linux 手機的 GSM Modem 通訊程式

jollen 發表於 February 24, 2007 10:38 PM

Linux 手機是 Embedded Linux 的重要應用項目之一,要能具備「手機」的功能,最基本的規格之一當然就是要支援 GSM(Global System for Mobile Communications)標準,也就是我們稱之為 2G 的行動電話標準。 GSM 系統使用一種稱之為 GSM modem 的裝置(也就是我們耳熟能詳的「數據機」)來做電話的「外撥(dial out)」與「接聽(answer)」功能。因此,Linux 手機要能打電話與接聽電話,必須將 target device 外接 GSM modem,並透過 GSM modem 的指令集(AT command)來對 GSM modem 下撥號或接聽指令。 GSM modem 與 target device 是以 UART(RS-232)介面連接,因此需要一個與 GSM modem...

qemu-neo1973 / openmoko-emulator / jk2410-emulator

jollen 發表於 April 8, 2007 11:31 PM

[OpenMoko] 將 [GTA01] 硬體模擬功能加入到 qemu 裡了。這是由 OpenMoko 與 OpenedHand 所貢獻的 patch,稱為 qemu-neo1973,可由 OpenMoko 的 svn 下載 [http://svn.openmoko.org/trunk/src/host/qemu-neo1973/]。此外,[OrzLab] 日前也提供一份 "openmoko-emulator" 的模擬器,這是 qemu-neo1973 的分支版本,由 OrzLab 負責維護,並且也對 qemu 本身做了瘦身的動作。其它訊息可延伸閱讀 OrzLab 的 blog: OpenMoko/Neo1973硬體模擬 另外,我也將 OrzLab 所維護的 openmoko-emulator 另外再做了一個分支稱為 "jk2410-emulator",也就是 Jollen-Kit! 開發板(JK2410)的模擬器。以下是初步的模擬畫面,上圖是 LCD panel,下圖是...

分享一下最近修改 jk2410-emulator 的心得

jollen 發表於 April 10, 2007 10:03 PM

來分享一下最近修改 jk2410-emulator 的心得,簡單紀錄重點,不過應該對有志研究 qemu 的 developer 有些啟發作用;OrzLab 有意舉辦 qemu 的讀書會,到時一定要跟大家多多請教,了解這個模擬器的明日之星。 對於 qemu internal 的研究,我還算是新手,幾天前從 jserv 那拿來了 openmoko-emulator 後,再參照 qemu-neo1973,做了一些小修改。最近在研究 qemu PC emulator,由於 qemu 可以研究的地方真的很多,像是: - dynamic translator(解譯 target CPU opcode 的核心) - accelerator(kqemu) - translation cache - MMU emulation -...

小聊 qemu 的 CPUState

jollen 發表於 April 11, 2007 8:16 PM

今天繼續來聊 qemu 的內部實作。在 qemu 裡頭,有一個 object 叫做 CPUState,這是一個重要的 qemu data structure,其實作如下(cpu-all.h): #elif defined(TARGET_ARM) #define CPUState CPUARMState ... 我們以 ARM 做為 target,再找到 target-arm/cpu.h: typedef struct CPUARMState { /* Regs for current mode. */ uint32_t regs[16]; /* Frequently accessed CPSR bits are...

再聊 CPUState、qemu 的 gdbserver

jollen 發表於 April 18, 2007 12:06 AM

前一則日記「小聊 qemu 的 CPUState」提到: 相關應用,例如,我們只要觀察 r15(pc)暫存器的值,就可以知道現在這台機器的程式執行位置。實際上的應用,像是 qemu 所實作的 gdbserver 即是透過此 object 的資訊,來回覆 gdb client 的命令。 以下展示實際的操作畫面。 下圖是利用 jk2410-emulator 模擬 Jollen-Kit! Pro. 的開機畫面,使用的 kernel 是 2.6.20.4: 在 kernel 檢查 root filesystem 是否為 initramfs 的時候,我們啟動了 gdb client,並透過 socket 連到 qemu 的 gdbserver;為了方便進行...

GNOME Mobile Platform

jollen 發表於 April 23, 2007 6:07 PM

近期 Embedded Linux 的發展與應用,不斷出現許多新興社群;前幾日在 Embedded Linux Conference, Santa Clara, USA(April 19, 2007)上出現一則令人興奮的消息: The GNOME Foundation announced today the creation of the GNOME Mobile & Embedded Initiative (GMAE), and a software platform for user experience development across a wide range of...

Ubuntu Mobile and Embedded 後續報導

jollen 發表於 May 11, 2007 12:18 AM

繼前一則日記「Ubuntu Mobile and Embedded」紀錄了 Ubuntu 將發展 "Mobile and Embedded" 的 Linux distrio 專案後,後續追蹤 LinuxDevices.com 上的二則新聞如下: - Ubuntu eyes mobile Linux devices 「The Ubuntu Mobile and Embedded Project」將在今年 10 月份與 Ubuntu 7.10 同步推出 Mobile and Emedded 的 Linux distro,但是這個特殊版本並非是要給 Linux mobile...

Embedded Linux 應用的痛處: OpenEmbedded

jollen 發表於 May 15, 2007 12:18 AM

日前與 [jserv] 兄聊天時談論到 OpenMoko 的 build system,我們都一致覺得基於 OpenEmbedded 的 OpenMoko build system 太過於複雜,雖然 OpenEmbedded 目前是一套頗流行的 meta data build system,但是對一些想要了解 OpenMoko 的朋友來說,這反而是一個無形的門檻。 今天在 [OrzLab] 上看到 jserv 將 OpenEmbedded 的 'repository' 轉成 Subversion 系統的做法,全文可參閱 [轉換OpenEmbedded的repository為Subversion系統]。OpenEmbedded 原本採用的是 [monotone] 版本管理系統,現在將 OpenEmbedded 的版本管理系統轉換成 SVN 後,就可以延續以往...

開放原碼架構設計:D-BUS 觀念小談

jollen 發表於 May 24, 2007 11:04 AM

近期以來,因為工作上的需求,花費許多時間在開放原碼的架構設計上;最近已經將相關的作業都準備的差不多了,我想,可以跟大家分享一些架構設計的小觀念。 首先,先由 [D-BUS] 介紹起。使用 D-Bus 來取代傳統的 IPC,並與外部工具(eg. mjpegtools)做整合。 D-BUS 本身屬於 low-level 的 library(libdbus),實務上,我採用了 glib binding 來實作程式,以簡化工作: http://dbus.freedesktop.org/doc/dbus-glib/index.html D-BUS 是一種 'message bus',未來將取代傳統 IPC 的使用。傳統 IPC 實作,必須將程式架構成 monolithic process,因此在 process 的行為控制,以及 application 間的整合上,都很一定的難度,非常不易於實作「系統」。 引進 D-BUS 技術後,傳統的 monolithic process 被區分為「pieces of D-BUS services」,每個服務,都可以透過「D-BUS...

Ubuntu Mobile and Embedded 計畫近況

jollen 發表於 June 8, 2007 10:34 AM

前陣子所注意的「Ubuntu Mobile and Embedded」計畫,最近又有了新發展。在前次的日記中提及 Ubuntu Mobile and Embedded 是針對 MID(Mobile Innteret Devices)應用所發起的計畫,並且 Uuntu Mobile and Embedded 也會與 Intel 合作推出 Nokia N800 web tablet 產品線。 今天在 Linuxdevices.com 上再度看到 UME(Ubuntu Mobile and Embedded)的新消息了:「Ubuntu's mobile and embedded project advances」。關於此 project 的最新情況,引述一段報導原文如下: UME is...

KDrive 與 Embedded Linux

jollen 發表於 June 8, 2007 12:38 PM

KDrive 也被叫做 TinyX,故名思意,這是一個小型的 X server 實作,主要是針對 embedded Linux 的應用所實作的版本。 有別於 xorg-server 裡的其他 X server,KDrive 並不基於以往的 XFree86 程式碼,而是由 Keith Packard 所實作的新版本;目前,KDrive 已被應用在許多 embedded system 的專案中。例如,OpenMoko 的 framework 就是使用 KDrive。 KDrive 另外一個特色是,他並不是像典型的 X server 是在動態時期去載入一些設定,而是在編譯時間就做好參數的設定。 Xorg-server 從 7.1 開始,已經將 KDrive 整合進來,只要下載 xorg-server...

關於 Mobile Device 的美工圖

jollen 發表於 June 19, 2007 11:37 PM

在為數眾多的 smart phone 產品中,都採用 QVGA(240x320)規格的 TFT-LCD panel,而這些 panel 都是 6x6x6 的 RGB 格式。因此,許多專為 mobile device 所發展的 rendering/text library 都會建議以此格式(6x6x6 RGB)來進行圖形介面與 art work 的設計。 比較另人好奇的地方是,6x6x6 的 RGB 格式要怎麼與 Linux kernel 的 framebuffer 驅動程式做對應。對 linux framebuffer 驅動程式有經驗的朋友都曉得,Linux framebuffer 驅動程式的 pixel format 為...

OpenMoko 的 UI application 分為三大類

jollen 發表於 June 25, 2007 11:05 PM

OpenMoko 將手機應用程式以 UI 為導向,並依程式的控制方式,將 application 區分為以下三大類: * finger application * stylus application * panel application Finger application 是以手指觸控為導向的應用程式,比如撥號界面。Stylus application 是以筆尖觸控為主的應用程式,例如最典型的 stylus application 為手寫辨試界面。Panel application 則是「嵌」在狀況欄與程式列的應用程式,例如電池計量圖示。 過往的 X 環境(lagecy X)並不適合 mobile device 直接使用,特別是對 mobile phone 而言。由於 UI & user experiments 是手機的重頭戲與特色賣點(unique...

Mobile Linux Initiative:專注 Intel 平臺的 Mobile Linux 開發社群

jollen 發表於 July 25, 2007 6:52 PM

一個以 Intel-based 平臺為主的 mobile Linux 開發機構日前公開了。這是一個專注於 Linux kernel、UI framework、browser、multimedia framework 以及 embedded linux image creation tools 為主的開發「社群」。可參閱 LinuxDevices.com 上的報導全文: http://www,.linuxdevices.com/news/NS9302797289.html Mobile Linux initiative 的官方網站: http://www.moblin.org/ Mobile Linux initiative 所提供的社群開發資源包含:documentation、mailing lists、bugzilla 以及 IRC 頻道。 Mobile Linux initiative 的 UI framework 方面採用...

CIC 演講「Embedded Linux 開發環境」簡報下載

jollen 發表於 September 17, 2007 12:26 PM

上週五受邀至 CIC(晶片系統設計中心)與大家分享「Embedded Linux 開發環境」的題目。本次講題主要分為二個階段,第一階段介紹主要的開發工具,例如:gcc、gdb 等,除了整理必要的幾個工具外,也針對部份工具介紹了重要的使用觀念,以及分享過去的實作經驗。 第二階段則是列出幾個目前主要的 Embedded Linux 發展環境,以及常用的系統分析工具。本次講題針對的對象是 Linux 開發工具初學者,在此提供簡報電子檔 [Embedded_Linux_Toolchains_Intro_v0.1.pdf] 供 CIC 以及有興趣的朋友參考。...

Top | 授權條款 | Jollen's Forum: Blog 評論、討論與搜尋
Copyright(c) 2006 www.jollen.org