1. 程式人生 > >物聯網之系統移植一(概述及環境搭建)

物聯網之系統移植一(概述及環境搭建)

系統移植概述及環境搭建

主要內容

嵌入式基本概念和開發環境搭建

     目標:能搭建嵌入式開發環境,並分析失敗的原因(難點)

BootLoader

     目標:掌握啟動步驟

核心移植(難點)

     目標:掌握移植的思路和方法

        • 根檔案系統製作

嵌入式基本概念

嵌入式系統的應用領域

什麼是嵌入式系統

嵌入式系統的定義

嵌入式系統本身是一個相對模糊的定義

一般定義

以應用為中心、以計算機技術為基礎、軟體硬體可裁剪、適應應用系統,對功能、可靠性、成本、體積、功耗嚴格要求的專用計算機系統。

廣義上講

凡是帶有微處理器的專用軟硬體系統都可稱為嵌入式系統。

嵌入式系統的核心是定製

是根據市場需求對軟硬體進行定製,實現效能的最大化

通用嵌入式系統硬體組成部分

• 通用嵌入式系統硬體一般由一下部分組成

– 微控制器

– 晶振

– 記憶體(如:SRAM,SDRAM)

– 儲存器(如:ROM,FLASH,SD,微硬碟)

– 其他外圍裝置介面

– 輸入、輸出介面

通用嵌入式系統軟體組成部分

• 圖一為無os嵌入式系統組成圖

• 圖二為有os嵌入式系統組成圖

Linux 在嵌入式中應用的條件與前景

• 嵌入式系統越來越追求數字化、網路化和智慧化。這就要要求整個嵌入式系統必須是開放的、提供標準的API,並且能夠方便地與眾多第三方的軟硬體溝通。

• Linux是在GPL協議下開放原始碼的系統,核心可以定製剪裁、功能強大、支援多種檔案系統、網路功能及其強大、非常適合高階嵌入式系統。

• 更重要的是 linux 不僅僅支援X86體系結構的cpu,還支援眾多的體系結構的 cpu/mcu。

• Android 系統最初就是基於linux-2.6.23的。硬體基本要求 armv5 ARM926EJ-S 200Mhz 64M

• 另外 intel,amd 也在涉足嵌入式領域,聯想已經推出了基於atom控制器的mid產品,據悉蘋果也正在採用atom控制器開發產品。隨著intel,amd的處理器在嵌入式領域中的優化,智慧網路終端產品很快將大眾化。

• 相信linux在嵌入式領域的應用將更加廣泛。

嵌入式Linux核心結構

Android系統

嵌入式開發環境搭建

嵌入式Linux交叉開發環境硬體基本組成

• 開發主機(Host)

• 目標機(Target)

• 連線介質

開發板啟動流程

搭建嵌入式Linux開發環境的主要工作

• 準備開發主機、目標機(開發板)以及二者的連線介質

• 準備目標機程式碼

• 安裝交叉工具鏈

• 開發主機上安裝的軟體(為方便除錯)

• 終端軟體(putty、minicom)

• tftp服務

• nfs服務

• 目標機安裝(u-boot燒寫除錯)

   SD卡方式

    Fastboot方式 (成功後,板子有串列埠資訊輸出)

• 主機和目標機能聯通

• 網路自動 tftp 載入核心,並掛載nfs  rootfs 啟動

開發主機搭建

ubuntu環境

目標機搭建

連線之 TFTP 服務

TFTP  服務

― 使用條件是:

• 需要網路連線

• 主機端需要安裝 tftp 伺服器軟體

• 目標機需要實現tftp客戶端

― 優點:

• 傳輸速度快

• 可以將編譯好的核心下載到目標機,提高開發效率

― tftp  是用來下載遠端檔案的最簡單網路協議,它基於udp協議而實現。嵌入式 linux 的 tftp 開發環境包括兩個方面:

• 一是 linux 開發主機端的 tftp-server 支援,

• 二是嵌入式目標系統的 tftp-client 支援。

主機端tftp伺服器配置

l 1、檢查是否安裝tftp server

$dpkg   -s   tftpd-hpa

如果未安裝,安裝 tftp-server

$apt-get  install  tftpd-hpa  tftp-hpa

l 2、修改檔案vim /etc/default/tftpd-hpa,開啟tftp服務

# sudo  vi  /etc/default/tftpd-hpa

TFTP_USERNAME="tftp"

TFTP_DIRECTORY="/tftpboot"

TFTP_ADDRESS="0.0.0.0:69"

        TFTP_OPTIONS="-c  -s  -l"

主機端tftp伺服器配置

l 4、建立tftpboot目錄,啟動 tftp-server

$mkdir  /tftpboot

$chmod  a+w  /tftpboot

$service   tftpd-hpa   restart

l 5.  準備帶傳輸的檔案

$cp  u-boot-fs4412.bin  uImage exynos4412-fs4412.dtb   /tftpboot

l 6、本機自環測試

#tftp   127.0.0.1

tftp>get  <download file>

tftp>put  <upload file>

tftp>q

ls           //有看到獲取的檔案,表示該tftp服務是OK的

連線之 NFS 服務

主機端NFS伺服器配置

1、檢查nfs服務是否安裝

$ service nfs-kernel-server     如果為安裝需安裝  sudo apt-get install nfs-kernel-server

2、修改 /etc/exports 檔案為

# /etc/exports: the access control list for filesystems which may be exported

/nfs/rootfs  *(rw,sync,no_root_squash)

3、準備內容

$ sudo mkdir /nfs

$ sudo chmod 777 /nfs

$ cd /nfs

$ cp rootfs.tar.xz  .          它已製作好的根檔案系統

$ tar -xvf  rootfs.tar.xz

$ sudo chmod 777 rootfs

4、重啟 nfs 服務

$ sudo  /etc/init.d/nfs-kernel-server  restart

5、測試nfs服務是否安裝成功

$ sudo mount -t nfs localhost:/nfs/rootfs/  /mnt/

$ ls /mnt/   如果其中的內容和/nfs/rootfs中一致。 表示有掛載成功 

$ sudo umount /mnt