(摘要)Embedded linux slides筆記(1)

什麼是Embedded Linux?

Embedded Linux就是應用於embedded system(嵌入式系統)的Linux, 由Linux kernel和其他open source軟體所組成。

廣義而言,非通用型的計算機系統都可以歸類為embedded system(ex:電話、機器人、工廠設備、感測器),由軟體和硬體所組成,用以進行特定的功能。與之相對的即為通用型計算機系統(ex: 個人電腦)。

Linux歷史簡介

1983年, Richard Stallman開始了GNU (為GNU’s Not Unix的縮寫,包含了程式的遞迴概念)專案,並成立了FSF(Free Software Foundation)推廣自由軟體的概念,並為此推出GPL(General Public License)程式碼授權條款,開發了gcc(編譯c語言的編譯器)、gdb、glibc(用c語言撰寫的函式庫)等與Unix相容的軟體。

1991年,Linus Torvalds開始執行Linux kernel project,一種 Unix-like

operating system kernel(採用了POSIX的協定進行開發,使得可以運行於Unix且符合POSIX協定的軟體也得以運行在Linux kernel) ,其採用GPL授權,Linux kernel搭配GNU軟體及其他開源軟體,組成了一個完整的作業系統Linux(也稱為GNU/Linux),。

GPL授權

GPL授權保證了終端用戶執行、學習、分享(複製)及編輯軟體之自由。

當使用者更改了GPL授權軟體的程式碼並重新發佈時,必須再提供程式執行檔的同時附上程式原始碼(故GPL授權的軟體屬於open source),且更改後的軟體也必須使用GPL授權。

GPL授權的軟體可以使用於商業用途(用於販售)。

Open Source(提供軟體的原始碼供大家檢閱、使用)的優點

  1. 提高了程式碼品質、可測試度
  2. 對於軟體有完整的掌控度,容易用於客製化應用
  3. 不須重製優良的既有程式和函式庫,可著重於新增附加程式及價值
  4. 降低軟體使用成本
  5. 有廣大社群的支持

建議學習的文字編輯器Vi/Vim

  1. vi基本指令
  2. 在Linux的terminal輸入$vimtutor,進行基本操作的練習

Linux操作的基本指令

  1. Linux基本指令

Linux常見應用領域

  1. 桌上型電腦
  2. 嵌入式系統
  3. 伺服器
  4. 行動裝置
  5. 手機

兩種類型的Embedded Linux

1.商業版( solutions provided and supported by vendors ): MontaVista, Wind River or TimeSys等。
2.社群版( community solutions )

選擇要執行Embedded Linux的硬體

須確認Linux kernel有支援該soc/board及其架構,且具有open-source bootloader。

使用official linux kernel所支援的硬體進行開發,可大幅降低開發時間與成本。

Embedded Linux 開發環境的作業系統

開發環境建議使用的OS(Operating System)為Linux( 任何優良且版本足夠新的Linux distrubution都可以, 例如:Ubuntu, Debian, Fedora, openSUSE,Red Hat, etc.)。

採用Windows or MAC OS X會有問題,因為Embedded Linux社群的開發者所設計、執行、測試的工具大多以運行在Linux為目標
此外,使用桌上型電腦Linux的經驗可類比到embedded Linux使用。

Embedded Linux開發環境的整體軟體架構

開發環境電腦(可稱為Host)包含了Complier、Debugger等其他開發工具。

Embedded System電腦(可稱為Target)由底層到上層依序包含了:

  1. Bootloader:由硬體設備所啟動,此程式主要用來載入、執行Linux kernel。
  2. Linux kernel:主要由C語言搭配少數的組合語言撰寫而成,用於對硬體進行控制,包含了CPU、process、memory、network stack、device driver的管理,並提供system call等服務供上層使用。
  3. C library:提供了kernel和user space application的溝通介面。
  4. Library:可供重複使用的程式模組
  5. application:供使用者使用的應用程式

完成Embedded Linux開發所需的三個要素

  1. Board Support Package development:包含了bootloader和想要安裝embedded linux的硬體的device driver。
  2. System integration:整合了所有元件(bootloader, kernel, third-party libraries and applications and in-house applications),此為Embedded linux slides的主要訓練目標。
  3. Development of applications:運作在該embedded linux的軟體。

Linux package management

Linux採用Package管理其該OS上的應用軟體、函式庫,也包含了與之相關的軟體版本、相依性。

不同的Linux Distribution可能採用不同的Package管理系統。

Package通常儲存在HTTP或FTP Server的repository。

建議從所採用的Linux Distribution官方伺服器取得Package。

Debian based Linux(Debian, Ubuntu等) 的package管理指令

可下載的官方Package list儲存位置:  /etc/apt/sources.list

$sudo apt-get update  //更新package list

$apt-cache search <keyword>  //用部份關鍵字查詢相關的package

$sudo apt-get install <package>  //安裝指定的package

$sudo apt-get remove <package>  //移除指定的package

$sudo apt-get dist-upgrade  //更新全部已安裝且具有更新檔的package

$apt-cache show <package>  //取得指定的package的資訊

資料來源

  1. Free Electrons-Embedded linux slides(p.1~51)

 

 

 

 

 

 

 

 

 

 

 

廣告

發表迴響

在下方填入你的資料或按右方圖示以社群網站登入:

WordPress.com Logo

您的留言將使用 WordPress.com 帳號。 登出 / 變更 )

Twitter picture

您的留言將使用 Twitter 帳號。 登出 / 變更 )

Facebook照片

您的留言將使用 Facebook 帳號。 登出 / 變更 )

Google+ photo

您的留言將使用 Google+ 帳號。 登出 / 變更 )

連結到 %s