?
為啥要搞這個(gè)linux評(píng)估板?
小飛哥自畢業(yè)以來(lái),工作5年了,一直從事的都是嵌入式MCU層面的開(kāi)發(fā)工作,還從未涉足過(guò)linux開(kāi)發(fā)相關(guān)的領(lǐng)域,最近的一次應(yīng)該是翻過(guò)《鳥(niǎo)哥的linux私房菜》,學(xué)著敲過(guò)一些命令行,僅此而已...
?這不最近想看看linux開(kāi)發(fā)到底咋搞(好像又分應(yīng)用層、多BSP驅(qū)動(dòng)層等多個(gè)方向),對(duì)于習(xí)慣了MCU開(kāi)發(fā)的底層攻城獅來(lái)說(shuō),必須得是個(gè)點(diǎn)燈大師...
?最近有幸結(jié)識(shí)創(chuàng)龍科技的黃工,扒拉來(lái)了一塊niubi的A40i工業(yè)評(píng)估板,就在這塊板子上學(xué)習(xí)學(xué)習(xí)
TLA40i-EVM介紹
功能速覽
創(chuàng)龍科技 TLA40i-EVM 是一款基于全志科技 A40i 處理器設(shè)計(jì)的 4 核 ARM Cortex-A7 高性能低功耗國(guó)產(chǎn)評(píng)估板, 每核主頻高達(dá) 1.2GHz, 由核心板和評(píng)估底板組成。
評(píng)估板接口資源豐富, 引出雙路網(wǎng)口、 雙路 CAN、 雙路 USB、 雙路 RS485 等通信接口, 板載 Bluetooth、 WIFI、 4G(選配) 模塊, 同時(shí)引出 MIPI LCD、 LVDS LCD、 TFT LCD、HDMI OUT、 CVBS OUT、 CAMERA、 LINE IN、 H/P OUT 等音視頻多媒體接口, 支持雙屏異顯、Mali400 MP2 GPU, 1080P@45fps H.264 視頻硬件編碼、1080P@60fps H.264 視頻硬件解碼,并支持 SATA 大容量存儲(chǔ)接口。
核心板采用 100%國(guó)產(chǎn)元器件方案,并經(jīng)過(guò)專業(yè)的 PCB Layout 和高低溫測(cè)試驗(yàn)證,穩(wěn)定可靠,可滿足各種工業(yè)應(yīng)用環(huán)境。評(píng)估底板大部分元器件均采用國(guó)產(chǎn)方案, 方便用戶快速進(jìn)行產(chǎn)品方案評(píng)估與技術(shù)預(yù)研。
開(kāi)箱
拍照環(huán)境+技術(shù)比較渣...大家勉強(qiáng)看哈,包裝、板子是十分精美的
包裝盒
開(kāi)箱上板
?核心板
配件清單
?清單1-學(xué)習(xí)資料光盤:
?清單2-4G天線:
比較遺憾的是,不帶4G模組...
?清單4-讀卡器
?清單5-雙頭HDMI線
?清單6-OTG轉(zhuǎn)接線
?等等...配件齊全,基本調(diào)試夠用了
軟硬件參數(shù)
- 硬件參數(shù)
從硬件配置上看,有485、CAN、WiFi、4G、藍(lán)牙等,做一個(gè)工業(yè)網(wǎng)關(guān)、家居監(jiān)控、儀表等是綽綽有余的
- 軟件參數(shù)
開(kāi)發(fā)板測(cè)試
第一次接觸linux的板子,還是有一些發(fā)蒙的,好在創(chuàng)龍的開(kāi)發(fā)資料以及技術(shù)支持都非常給力,即使如此還是走了一些彎路,上來(lái)就編譯linux內(nèi)核去了...搞了兩天報(bào)了一堆錯(cuò),好在及時(shí)回頭,先從基本的搞起吧~
對(duì)剛接觸板子的小伙伴來(lái)說(shuō),還是按照官方提供的教程文檔,按照順序慢慢來(lái)
系統(tǒng)啟動(dòng)測(cè)試
使用附贈(zèng)的12v/2A電源適配器,連接開(kāi)發(fā)板的DC電源口,并使用MicroUSB數(shù)據(jù)線連接開(kāi)發(fā)板的串口到電腦,插入附贈(zèng)的TF卡,并將撥碼開(kāi)關(guān)調(diào)到SD卡啟動(dòng)模式。
接入電源,并使用 Micro USB 線連接 PC 機(jī)和評(píng)估板的 USB TO UART0 調(diào)試串口
默認(rèn)波特率率115200,使用終端調(diào)試助手mobaxterm打開(kāi)所在串口號(hào)
相當(dāng)于是板子的自檢功能,有些設(shè)備沒(méi)有插入,會(huì)報(bào)一些error,是不影響我們使用的
至此,系統(tǒng)啟動(dòng)完成,為了以后可以不插SD卡也能啟動(dòng),也可以將系統(tǒng)一鍵固化到板載的ROM中。
點(diǎn)亮板載LED燈
終于看到了一些能夠看懂得了...
接下來(lái)在命令串口輸入命令行進(jìn)行點(diǎn)燈測(cè)試,LED 設(shè)備節(jié)點(diǎn)為"/sys/class/leds/user-ledX/"目錄下的 brightness。
LED 燈默認(rèn)是亮的,接下來(lái)我們通過(guò)命令行控制亮滅
- 關(guān)閉LED1
echo?0?>?/sys/class/leds/user-led0/brightness
- 打開(kāi)LED1
echo?1?>?/sys/class/leds/user-led0/brightness
編寫LED控制代碼
上面介紹了通過(guò)命令控制LED開(kāi)啟、關(guān)閉,我如果想要流水燈效果怎么辦呢?
接下來(lái)寫一段代碼來(lái)實(shí)現(xiàn)流水燈的效果,主要還是看官方提供的demo吧
關(guān)鍵代碼
(1) 預(yù)定義 LED 數(shù)組。程序由此數(shù)組獲取 LED 信息,數(shù)組信息必須為系統(tǒng)已有 LED 信息,否則程序運(yùn)行報(bào)錯(cuò)。
/*?User-operable?LEDs?*/
static?char?*g_leds[]?=?{
????"/sys/class/leds/user-led0",
????"/sys/class/leds/user-led1",
????"/sys/class/leds/user-led2",
????"/sys/class/leds/user-led3"
};
(2) LED 亮滅操作和時(shí)間間隔。
????while?(!g_quit)?{
????????/*?Turn?on?LEDs?*/
????????for?(i?=?0;?i?/*?Set?the?LED?brightness?value?to?1?to?turn?on?the?led?*/
????????????snprintf(cmd,?64,?"echo?1?>?%s/brightness",?g_leds[i]);
????????????if?(system(cmd)?!=?0)?{
????????????????fprintf(stderr,?"Error:?Failed?to?turn?on?%s
",?g_leds[i]);
????????????????exit(EXIT_FAILURE);
????????????}
????????}
????????/*?Keep?the?LEDs?on?for?500?ms?*/
????????usleep(500?*?1000);
????????/*?Turn?off?LEDs?*/
????????for?(i?=?0;?i?/*?Set?the?LED?brightness?value?to?0?to?turn?off?the?LED?*/
????????????snprintf(cmd,?64,?"echo?0?>?%s/brightness",?g_leds[i]);
????????????if?(system(cmd)?!=?0)?{
????????????????fprintf(stderr,?"Error:?Failed?to?turn?off?%s
",?g_leds[i]);
????????????????exit(EXIT_FAILURE);
????????????}
????????}
????????/*?Keep?the?LEDs?off?for?500?ms?*/
????????usleep(500?*?1000);
????}
那么如何讓目標(biāo)板執(zhí)行這段代碼呢?
代碼編譯
參照官方文檔《2-2-linux應(yīng)用開(kāi)發(fā)手冊(cè)》中開(kāi)發(fā)案例說(shuō)明,環(huán)境搭建等,按照教程文檔來(lái)就可以啦
如需重新編譯 Linux 常用開(kāi)發(fā)案例,請(qǐng)將對(duì)應(yīng)案例 src 目錄拷貝至 Ubuntu 工作目錄下。請(qǐng)先確保已參考 Linux 系統(tǒng)使用手冊(cè)編譯過(guò) LinuxSDK,構(gòu)建好 A40i 處理器對(duì)應(yīng)的 GCC 編譯器。然后進(jìn)入 src 目錄執(zhí)行如下命令,使用 LinuxSDK 開(kāi)發(fā)包目錄下的 GCC 編譯器進(jìn)行案例編譯。編譯完成后,將在當(dāng)前目錄下生成可執(zhí)行文件。
Host#?CC=/home/你的系統(tǒng)名稱/A40i/lichee/out/sun8iw11p1/linux/common/buildroot/host/usr
/bin/arm-linux-gnueabihf-gcc?make
比如小飛哥的linux系統(tǒng)
將本案例 bin 目錄下的可執(zhí)行程序 led_flash 拷貝至評(píng)估板文件系統(tǒng),并在可執(zhí)行程序所在目錄執(zhí)行如下命令運(yùn)行程序,即可看到評(píng)估底板 LED 以 0.5s 的時(shí)間間隔進(jìn)行閃爍。同時(shí), 串口終端打印系統(tǒng)全部 LED 設(shè)備信息和程序當(dāng)前控制的 LED 設(shè)備信息。
具體拷貝過(guò)程參照教程文檔,本次也不做具體說(shuō)明了
可以看到,可執(zhí)行文件已經(jīng)拷貝到我們的開(kāi)發(fā)板系統(tǒng)中了,接下來(lái)運(yùn)行看看效果
可以看到,我們的兩個(gè)LED燈已經(jīng)閃爍起來(lái)了
至此,算是搭建起來(lái)了基本的操作環(huán)境,中間廢了不少功夫,但好在沒(méi)有遇到解決不了的問(wèn)題,還算比較順利吧,后面再慢慢與大家分享一些學(xué)習(xí)過(guò)程吧。
評(píng)論
查看更多