1 嵌入式學習入門
1 嵌入式學習入門
1、提出三個要求:
建議安裝純linux系統,比如:
ubuntu,fedora,kali(黑客最愛)
2、建議安裝必要軟體:
明確linux系統安裝軟體方法:
網路安裝和本地安裝。
網路安裝:
自動從網路下載所有的軟體包進行安裝;
優點:自動檢查軟體之間的依賴,會自動安裝依賴檔案;
缺點:必須聯網。
ubuntu網路安裝命令:
sudo apt-get install 軟體名。
fedora網路安裝命令:
sudo yum install 軟體名。
本地安裝:
手動下載軟體包安裝。
缺點:不會檢查軟體依賴,如果軟體之間有依賴,安裝及其複雜。
優點:無需聯網安裝
ubuntu本地安裝命令:
sudo dpkg -i 軟體名.deb
fedora本地安裝命令:
sudo rpm -i 軟體名.rpm
以ubuntu網路安裝為例:
sudo apt-get install vim vimplus
注意:還需要新增配置檔案:.vimrc和.vim
sudo apt-get install ckermit minicom //linux系統下的兩款串列埠工具
注意:還需要新增kermit或者minicom的配置(具體配置上網自己查)
sudo apt-get install tftpd-hpa //tftp網路服務,用於檔案傳輸下載
注意:同樣需要配置tftpd-hpa網路服務,後續細講。
sudo apt-get install nfs-kernel-server //大名鼎鼎nfs網路服務,用於檔案傳輸
//nfs強於tftp服務
sudo apt-get install ctags cscope //linux系統下閱讀原始碼的兩款工具
sudo apt-get install wine //模擬器,可以用於安裝windows下的.exe可執行檔案
//類似虛擬機器
3、為什麼學習嵌入式
1)首先談談身邊的嵌入式產品
手機,投影儀,掃地機器人,無人機,智慧路由器,平衡車等,都屬於嵌入式。
要想知道內部如何實現?必須掌握嵌入式開發相關的技術。
2)嵌入式定義特點
嵌入式系統是以用於需求為中心,軟體和硬體可裁剪的,對效能、功耗、體積、成本有嚴格要求的計算機系統。
以iphone手機和老人機做一個對比
iphone手機 老人機
面向群體 年輕人 老人
WIFI功能 有 無
藍芽 有 無
攝像頭 有 無
效能 強大 比較弱
成本 高 低
結論 火 火
結論:依賴關係:
嵌入式產品的硬體依賴使用者需求;
嵌入式產品的軟體依賴硬體。
結論:開發設計內容,圍繞著硬體和軟體,這些內容的前提是搞清楚使用者的基本需求。
4、如何使用硬體和軟體
1)首先在上位機搭建嵌入式開發環境
如果是裸板開發,只需在windows下安裝裸板開發的工具即可,例如:keil5。
如果是跑linux系統的,必須做:
1.安裝純linux系統
2.安裝必要的軟體
3.安裝交叉編譯器
2)掌握基本的硬體資訊
粗看:用肉眼看看下位機基本的硬體資訊
CPU:看型號:X6818下位機CPU型號為三星的S5P6818(ARM架構)
記憶體:看容量和記憶體的基地址,X6818下位機記憶體型號為:H5TQ4G63AFR*2
一個容量為:4Gb=512MB
所以X6818下位機記憶體的容量為1GB
X6818記憶體的基地址為0x40000000
X6818有效記憶體儲存空間地址範圍:0x40000000~0x400000000+1GB-1
然後軟體上只要以指標的形式訪問記憶體空間即可!
例如:向記憶體起始地址寫入4位元組資料0x55555555
*(int *)0x40000000 = 0x55555555;
快閃記憶體:看容量和快閃記憶體的型別,X6818下位機快閃記憶體容量為8GB
嵌入式常用的快閃記憶體型別:
Norflash:看容量和基地址,它的訪問也是通過指標的形式訪問的
Nandflash:看容量即可,它的訪問形式通過Nand控制器來訪問
EMMC:和TF卡一樣,看容量即可,它的訪問形式通過EMMC控制器來訪問
X6818下位機使用的是三星的EMMC這類快閃記憶體。
外圍介面:哪些介面有哪些介面沒有,關鍵看使用者需求
比如:手機和路由器是否具有LCD顯示屏為例
手機必須具有LCD顯示屏介面
但是路由器就無需LCD顯示屏介面
切記切記:即使實際產品以下兩個介面用不到,但是在產品的研發階段,串列埠UART和網口必須要有,用於軟體的除錯,加快軟體開發的進度。產品釋出階段,可以將UART和網絡卡裁掉。
串列埠UART功能:用於連線上位機和下位機,理論上可以用於檔案傳輸下載或者下位機的軟體執行的列印資訊通過UART串列埠上傳到上位機顯示。
UART串列埠用於檔案傳輸速度很慢,例如:
比如UART傳輸速度為115200bps(一秒鐘傳輸115200個bit)
現在要通過UART從上位機下載100MB的軟體到下位機,請問需要多長時間:2小時
結論:串列埠UART一般用於列印,下位機軟體執行的列印資訊通過UART上傳到上位機,就這樣還是浪費CPU資源,所以下位機的軟體儘量少列印。
網口功能:用於實現上位機和下位機的檔案傳輸,速度非常快,當然也可以傳輸列印資訊。
細看:關鍵看兩個法寶:下位機硬體原理圖和下位機各個晶片的晶片手冊
切記:具體硬體外接的晶片具體分析!例如目前研究如何開關燈
那隻需看燈相關的原理圖和晶片手冊即可,其餘不看!
硬體原理圖:就是告訴你CPU和外接的晶片如何連線的
X6818有兩個原理圖:
resource.rar/硬體原理圖/x6818bv2.pdf(底板原理圖)
resource.rar/硬體原理圖/x4418cv3_release20150713.pdf(核心板原理圖)
晶片手冊:就是告訴你這個晶片是如何操作使用的(說明書)
X6818下位機所有的晶片手冊在resource.rar/Datasheet/
例如:
S5P6818處理器的晶片手冊:SEC_S5P6818X完整版.pdf
MMA8653三軸加速度感測器手冊:mma8653frc1.pdf
階段性小案例:將上位機和下位機連線起來
提示:需要連線三根線:
電源線
UART串列埠線
網線
5、掌控硬體資訊完畢,緊接著要向下位機部署(燒寫、安裝)軟體
明確:交叉編譯:程式碼的編輯編譯是在上位機完成,程式碼的執行在下位機。
理論上在下位機也可以編輯編譯程式碼,但是由於下位機的硬體資源的限制,速度相關上位機比較慢。
明確:大名鼎鼎的uboot軟體能夠提供tftp命令用於從伺服器上下載檔案
明確:S5P6818處理器的啟動流程:
上電以後,S5P6818處理器首先檢查SD0卡槽上是否有TF卡插入
如果有,S5P6818處理器自動執行TF卡上的uboot
如果沒有,S5P6818處理器然後再去執行EMMC上的uboot
如果EMMC上有uboot,S5P6818執行EMMC上的uboot
如果EMMC上沒有uboot,系統啟動失敗
總結:向下位機燒寫軟體的步驟。
上位機新增配置一個靜態IP(例如:192.168.1.8)
配置步驟:
右鍵點選ubuntu右上角的網路連線圖示(上下箭頭或者扇形)
->再點選"編輯連線"->將別人的配置資訊全部刪除->
點選"新增"->連線名稱指定為"TPAD"->在點選“IPV4設定"->
"方法"選擇為”手動“,->再點選"新增"
->IP地址為:192.168.1.8,子網掩碼:255.255.255.0
閘道器:192.168.1.1->最後點選儲存退出即可
注意:可以手動點選網路連線圖示,選中自己的配置TPAD
如果是虛擬機器,還需要配置網路的連線資訊:
點選虛擬機器軟體選單欄的“虛擬機器”->在點選設定->
選中網路介面卡->選擇為"橋接方式"->最後點選確定即可
如果是虛擬機器,還要注意虛擬機器linux的虛擬網絡卡橋接到實際的哪個網絡卡上,一定要確保橋接到和下位機連線的那個網絡卡上。
具體配置如下:
點選虛擬機器軟體選單欄的"編輯"->在點選虛擬網路編輯器
->橋接到具體的那個網絡卡(跟下位機連線)可以在網路鄰居中檢視
->確定以後選中橋接的網絡卡即可,點選應用確定即可
上位機還要做的事情:
1)安裝tftpd-hpa網路服務,用於檔案的傳輸下載
sudo apt-get install tftpd-hpa
2)配置tftpd-hpa網路服務,指定下載目錄
sudo vim /etc/default/tftpd-hpa //開啟配置檔案
將:TFTP_DIRECTORY="/var/lib/tftpboot"
修改為:TFTP_DIRECTORY="/tftpboot"
儲存退出
說明:也就是將下載目錄指定為/tftpboot目錄
3)建立下載目錄
sudo mkdir /tftpboot
4)修改下載目錄的組和使用者
sudo chown baby /tftpboot -R //將/tftpboot的使用者修改為baby使用者
sudo chgrp baby /tftpboot -R //將/tftpboot的組修改為baby組
注:具體看你使用者名稱。
5)重啟tftpd-hpa網路服務
sudo serivce tftpd-hpa restart