智能家居項目(華清遠見)


環境搭建

一 pc機和嵌入式設備

1.pc機
[1]BIOS (硬件初始化:系統時鍾,內存(SDRAM/DDR2/DDR3/DDR4),啟動方式:USB 硬盤 光驅 ...)
[2]引導程序 (grub,lilo,...) =>加載操作系統
[3]OS (windows,Linux,Mac os)
[4]掛載文件系統(NTFS,FAT(16/32),EXT(2,3,4))
[5]應用程序

2.嵌入式設備(exynos4412)
[1]iROM固化代碼(基本硬件初始化,判別啟動方式(SD/USB/EMMC),
讀取存儲介質一部分數據到iRAM
)

[2]iRAM代碼運行bootloader第一階段(初始化系統時鍾,初始化內存,搬移bootloader到內存)
[3]內存中運行bootloader第二階段(初始化基本的硬件設備(串口,EMMC,SD),加載OS到內存)
[4]內存中運行操作系統(Linux,windows CE,Mac OS)
[5]掛載文件系統
[6]運行應用程序

bootloader = BIOS + 引導程序

二 Linux 解壓命令

tar -xvf xxx.tar.*
xxx.tar.gz -> tar -zxvf xxx.tar.gz
xxx.tar.bz2 -> tar -jxvf xxx.tar.bz2
xxx.tar.xz -> tar -Jxvf xxx.tar.xz

三 添加交叉開發工具鏈

交叉開發:在PC機完成代碼的編寫與編譯,在開發板運行編譯好的程序

export PATH=$PATH:交叉開發工具鏈絕對路徑

例如:
在/home/linux/.bashrc(針對當前的登陸用戶有效)或/etc/bash.bashrc(所有用戶都有效)文件中添加如下內容:

TOOL_CHAIN=/home/linux/workdir/15071/fs4412/gcc-4.6.4/bin
export PATH=$PATH:$TOOL_CHAIN

注意:
64bit ubuntu需要在線安裝32bit運行庫
sudo apt-get install lib32ncurses5
sudo apt-get install lib32z1​

四 sd卡燒寫u_boot

(1)mkuboot.sh -> 在燒寫一個uboot到sd卡
(2)通過撥碼開關從sd卡啟動
(2)在sd卡中新建一個sdupdate目錄
(4)將自己編譯好的u-boot-fs4412.bin拷貝到了sdupdate目錄
(5)從sd卡啟動,在啟動的uboot中,
輸入命令:(將bootloader寫到emmc)
(6)撥動撥碼開關從emmc啟動

五 用u_boot引導Linux內核

1.配置tftp服務(文件傳輸)
(1)安裝軟件包

離線方式安裝:
sudo dpkg -i *.deb

在線方式安裝:
sudo apt-get install tftp-hpa (客戶端程序)
sudo apt-get install tftpd-hpa (服務端程序)

注意:
lsb_release -a 查看ubuntu版本信息


(2)修改默認的配置文件 /etc/default/tftpd-hpa
TFTP_DIRECTORY="/home/linux/fs4412/tftpboot" 自己的tftpboot路徑

(3)重新啟動tftp服務
sudo /etc/init.d/tftpd-hpa restart

sudo service tftpd-hpa restart

測試:
tftp 127.0.0.1
tftp>get 下載的文件
tftp>quit

2.配置nfs服務(設置目錄為網絡上的共享目錄)
(1)安裝軟件包
sudo apt-get install nfs-kernel-server

(2)修改默認的配置文件 /etc/exports

自己電腦上需要共享的目錄路徑
/home/linux/fs4412/share *(rw,sync,no_root_squash)

(3)重新啟動nfs服務
sudo /etc/init.d/nfs-kernel-server restart

sudo service nfs-kernel-server restart


測試:
sudo mount IP:共享路徑 自己的掛載點目錄

例如:
sudo mount 127.0.0.1:/home/linux/fs4412/share ./nfs(自己電腦上當前目錄下的nfs子目錄)

撤銷:
sudo umount 掛載點目錄

六 u_boot常用命令

(1)設置開發板ip地址
setenv ipaddr ip地址


(2)設置tftp服務器端的ip地址
setenv serverip 服務器端的地址

開發板和ubuntu之間網絡通信(板子Ping ubuntu):
<1>板子IP地址和Ubuntu的IP地址的網絡號一樣
<2>虛擬機橋接模式
<3>無線網卡禁用
<4>防火牆關閉

-------------------------------------------------------------
還是沒有效果:
[1]網線有問題
[2]板子網卡芯片有問題
------------------------------------------------------------


開發板通過tftp從ubuntu下載程序:
<1>ubuntu已經安裝過tftp服務
<2>需要下載的文件已經存放在tftp服務指定的工作目錄下
<3>在開發板中需要設置serverip (ubuntu的IP地址)
------------------------------------------------------------
如果沒有效果:
[1]網絡問題
[2]ubuntu的tftp服務死掉----->重啟服務
------------------------------------------------------------



(3)保存設置好的環境變量
save

(4)引導Linux內核的命令
tftp 41000000 uImage
tftp 42000000 exynos4412-fs4412.dtb
tftp 43000000 ramdisk.img

bootm 內核在內存地址 ramdisk在內存地址 設備樹在內存地址
bootm 41000000 43000000 42000000

注意:
如果沒有ramdisk,第二個參數用"-"代替

(5)設置開發板啟動后,自動執行的命令(uboot 倒計時完成之后)
setenv bootcmd tftp 41000000 uImage\;tftp 42000000 exynos4412-fs4412.dtb\;tftp 43000000 ramdisk.img\;bootm 41000000 43000000 42000000


ipaddr : 設置板子IP
serverip: 設置tftp的服務端IP
bootcmd : u_boot倒計時之后,自動執行的命令
bootargs: 告訴操作系統掛載文件系統的方式
tftp : 下載文件
bootm : 啟動操作系統


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM