說到嵌入式,咱們首先想到的,就是它的複雜程度,LINUX,BSP,UBOOT,交叉編譯,寄存器配置,等等一系列的問題,甚至有的時候咱們對此一頭霧水,非常頭疼,不過咱們今天要說的就是關於NUC972的一系列的步驟,和解決它的難題。linux
1 NUC970 Linux BSP 簡介git
這包 BSP 支持了NUC970 系列芯片. 新唐科技的 NUC970 系列芯片是以 ARM926EJS 為核心的系統級單芯片. 包含了 16kB I-Cache 以及 16kB D-Cache 以及MMU 記憶體管理模塊. 最高支援到 300MHz 的頻率, 並且提供了豐富的外設接口周邊. 有USB 快速Host/Device, SDHC, 支援TFT LCD介面, 網路接口 和I2S audio介面, 有11 組UART…等. 並能夠由 NAND flash, SPI Flash 開機.
這包 Linux BSP 包含了如下內容:
Linux 3.10 內核源碼, 以及 NUC970 使用的驅動程式
GCC 4.8.4 交叉編譯器, 支持 EABI.
uClibc-0.9.33 庫文件
Binutils-2.24 交叉開發工具
演示個接口功能的範例程式源碼, 以及一些開源軟件
U-Boot 源碼, 以及 NUC970 使用的驅動程式
Windows 端燒錄程序 Nu-Writer, 以及所需的驅動
說明文檔shell
1.1 開發環境連線
在Linux 環境下, 基本的系統訊息以及 shell 環境的溝通都是透過串口來達成. 不論是U-Boot 或是Linux 均使用 UART0 來作為訊息溝通的接口. 在 U-Boot 環境下, 也支援了網口 TFTP 的傳輸. 另外新唐也提供了基於 Windows 平臺的 USB 介面燒寫工具. 如下是開發環境連線的示意圖. 如果使用虛擬機, 則只須要一臺 PC 便可網絡
1.2 開發板設置
NUC970 系列芯片支持不一樣的開機模式, 可從 SPI, NAND, eMMC 開機, 或是進入 USB ISP 模式. 這些設置是透過 PA[1:0] 的 jumper 控制. 另外, 因為複用腳位的關係, 開發版上會有些 jumper 須依不一樣系統需求來設置. 請參考開發版的文件來作系統相應的設置.工具
NUC970 Linux BSP 提供了基於 Linux 做業系統的交叉編譯環境. 新唐有在不一樣的 x86 Linux 環境測試了本 BSP, 包含了 Ubuntu, CentOS, Debian…等. 因 Linux 發行版眾多, 系統設置會有些許差異, 有時使用這需更改系統設置, 使開發環境順利執行,本人用的是UBUNTU 64位,推薦32位LINUX。
Linux 開發環境可選擇架設原生環境, 或是選擇架設於 Windows 做業系統中的虛擬機上. 關於如何安裝虛擬機,或者如何安裝LINUX,或者如何安裝虛擬機,請看我在Linux裏面發表的文章裏觀看,查閱。接口
多數的 Linux 發行版不會將全部的原件都安裝. 但有些元件在使用 BSP 的開發過程中是必須的. 另外有些元件可讓開發的過程更加順利. 如下列了一些Linux 安裝過程會省略, 但必須及建議安裝的原件.get
各個Linux 發行版的元件安裝介面不盡相同. Ubuntu 的使用者能夠使用 apt-get 命令或是Synaptic Package Manager 來安裝元件. 而 Fedora的使用者能夠使用 rpm 命令或是 Package Manager來安裝元件. 請參考所使用的 Linux 發行版文件來安裝缺乏的元件.同步
這一段卻是沒有什麼複雜的地方源碼
Linux BSP 包含了三個目錄. 各目錄的內容列在下表:虛擬機
請將 BSP 目錄中的壓縮包複製到 Linux 開發機器上. 並使用如下的命令解壓縮 : $ tar
在此目錄中有安裝腳本 install.sh. 此腳本須要管理者權限才能夠執行. 能夠選擇使用 「su」 命令切換到管理者來執行:
或是使用 sudo 來執行安裝腳本 (如果安裝的 Linux 沒有開放 root 權限, 例如 Ubuntu, 則能夠使用本方式來安裝 BSP)
本安裝腳本支援本地源碼解壓縮, 或是自網絡上的源碼庫複製最新版本. 如果選擇自源碼庫複製, 系統中須要預先安裝 Git 以及網路連線正常, 以便自Github 或是 OSChine下載最新的源碼. 如下為整個安裝過程:
如果使用的 Linux 開發環境以前已經安裝過新唐提供的交叉編譯工具, 安裝腳本會詢問是否須複寫編譯工具, 否則腳本並不會詢問使用者, 而是直接在 /usr/local/arm_linux_4.8目錄安裝編譯工具. 在第一種已安裝過編譯工具的情況下, 如果要複寫, 可按Y (或是 yes、y、YES), 然後按 Enter 鍵.
安裝完成交叉編譯工具後, 安裝腳本會詢問安裝 Linux 內核, U-Boot, 以及範例程序的絕對路徑. 下表列出了會裝在指定目錄中的項目.
安裝腳本會嘗試將安裝的目錄設置正確權限, 並將交叉編譯器的路經加至系統搜尋路徑 ($PATH)中. 但在有些 Linux 版本中, 可能發生無法正確設置的問題. 此時需麻煩使用者手動設置正確的權限並且將/usr/local/arm_linux_4.8/bin加到 $PATH 中.
請注意, 在安裝完成後, 使用者須先登出再登入, $PATH 的設定才會生效.
如果安裝過程選擇自網絡複製源碼, 之後使用者能夠至源碼倉庫以git pull 命令同步最新的更新. 如下列出各個源碼倉庫的鏈結. Git 的操做指令不在本文件的說明範圍, 但能夠至 https://git-scm.com/ 查詢基本的操做方式.