物聯網之系統移植一(概述及環境搭建)
系統移植概述及環境搭建
主要內容
• 嵌入式基本概念和開發環境搭建
目標:能搭建嵌入式開發環境,並分析失敗的原因(難點)
• 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