小熊派4G開發(fā)板初體驗(yàn)
點(diǎn)擊上方「嵌入式大雜燴」,選擇「置頂公眾號(hào)」第一時(shí)間查看嵌入式筆記!
前陣子小熊派發(fā)布了一款超高性價(jià)比的4G開發(fā)板(19.8元包郵),但是板子僅限量1000套。小熊派官方也給我送了一塊,我們一起來學(xué)習(xí)學(xué)習(xí):
開發(fā)板硬件資源介紹
板子做得小巧精致,控制核心用的是移遠(yuǎn)的EC100Y LTE Cat1無線通信模組
,該模組可對(duì)所有用戶開放二次開發(fā)
;EC100Y LTE Cat1模組兩側(cè)座子/排針是E53接口,可接小熊派的E53拓展模塊,如:
小熊派4G開發(fā)板與其E53接口拓展模塊配合來使用就可以做各種豐富的實(shí)驗(yàn)。EC100Y LTE Cat1模組下方是一個(gè)SIM卡槽,支持全網(wǎng)通。
SIM卡卡槽左側(cè)預(yù)留了幾個(gè)排針孔,連著兩個(gè)串口,可根據(jù)需要焊接排針來使用。板子頂部是一個(gè)小辣椒天線。
板子左下角有一個(gè)攝像頭接口與一個(gè)音頻輸入/輸出接口。板子右下角是4個(gè)按鍵:BOOT按鍵、RESET按鍵、POWER按鍵、用戶按鍵。板子最下方是一個(gè)USB口。
開發(fā)板入網(wǎng)測試
1、SIM卡槽插入一張手機(jī)卡
SIM卡插入一張手機(jī)卡,支持全網(wǎng)通,我這里用的是移動(dòng)4G卡。
2、串口助手發(fā)送AT指令進(jìn)行測試
AT+CPIN? : 查詢SIM卡狀態(tài)
AT+CSQ : 查詢信號(hào)質(zhì)量
AT+CGATT? : 查詢是否附著網(wǎng)絡(luò)
以上圖片是入網(wǎng)成功的情況,如果不成功則需要檢查SIM卡有沒有插反、COM號(hào)有沒有選對(duì)等等。
開發(fā)板OPENMCU開發(fā)
OPENMCU
是一種以模塊作為主處理器的應(yīng)用方式
。這里就是把移遠(yuǎn)的EC100Y LTE Cat1無線通信模組作為主處理器的應(yīng)用。
1、SDK軟件開發(fā)包
我們主要需要關(guān)注的是ql-application
文件夾,一般的開發(fā)主要都是在這里面添代碼。
2、生成固件
(1)編譯環(huán)境
一種方法是自己搭建相關(guān)編譯環(huán)境,另一種方法是直接用SDK包里面的編譯工具。SDK包中相關(guān)的工具在ql-cross-tool
中。
為了簡單省事,我們直接使用SDK包給我們提供的編譯工具。
(2)編譯流程
(圖片來自移遠(yuǎn)官方文檔)
可見,固件打包需要用到一些鏡像,主要分為四大塊:kernel鏡像
、bootloader鏡像
、app鏡像
、其它鏡像
。
SDK包中有兩個(gè)編譯相關(guān)的批處理文件:build.bat
、build_all.bat
。其中:
build_all.bat:提供整體編譯的功能,即雙擊這個(gè)批處理文件就會(huì)執(zhí)行上面四大塊鏡像的編譯及打包生成固件的過程。但一般我們都只是修改APP相關(guān)的代碼,沒有必要全部編譯。
所以,SDK包中給我們提供了build.bat批處理文件,我們可以在命令行指定一些參數(shù)來執(zhí)行相應(yīng)的過程,如:
build.bat bootloader命令:只編譯bootloader
build.bat kernel命令 :只編譯kernel
build.bat app命令 :只編譯app
build.bat firmware命令 :生成固件包
因?yàn)槲覀兤綍r(shí)開發(fā)基本上只是修改了app,所以大多數(shù)情況下都是只需要這兩條命令:
build.bat app命令 :只編譯app
build.bat firmware命令 :生成固件包
win7環(huán)境下在sdk路徑下快捷操作進(jìn)入cmd窗口
的方法:
與上面操作相同,在win10環(huán)境下可在sdk路徑下進(jìn)入Power shell窗口
。當(dāng)然,win10下也可以進(jìn)入cmd窗口,然后再進(jìn)入sdk路徑。
其中,在Power shell窗口中運(yùn)行的編譯命令與在cmd窗口中運(yùn)行的編譯命令有點(diǎn)不一樣,在Power shell窗口中需要加上.\
,如:
執(zhí)行這個(gè)編譯命令時(shí),會(huì)自動(dòng)找到ql-cross-tool
里的編譯工具來編譯我們的程序。
生成固件操作:
固件存放的路徑:
我們并沒有編譯bootloader與kernel,那么生成固件需要的bootloader鏡像與kernel鏡像又是從哪來?
其實(shí),SDK包給我們提供了一組出廠的鏡像,存放在路徑ql-sdk\ql-config\quec-project\aboot\images
下:
所以,當(dāng)我們執(zhí)行完編譯app的命令,并執(zhí)行生成固件包的命令時(shí),大致過程如下:
當(dāng)我們需要恢復(fù)出廠設(shè)置的時(shí)候,可以下載出廠自帶的那組鏡像,此時(shí)我們需要先執(zhí)行如下清除命令:
build.bat kernel/bootloader/app clean命令
分別清除這三大模塊編譯生成的一些文件,然后再打包生成固件。
(3)實(shí)操:輸出helloworld實(shí)驗(yàn)
sdk包中已經(jīng)給我們做好了一個(gè)hello例程:
一般printf都是重定向到串口,小熊派4G開發(fā)板也有引出debug串口的排針孔,我們可以焊接排針來使用;但是小熊派這里給我們提供了另一種更方便的方法,重新封裝一個(gè)打印函數(shù),打印信息通過USB口輸出。
還需要注意的是Makefile文件的修改。這里需要修改兩個(gè)Makefile文件,一個(gè)是ql-sdk\ql-application\threadx\interface\init\example
下的Makefile文件:
另一個(gè)是ql-sdk\ql-application\threadx\
下的Makefile文件:
編譯、生成固件前面已經(jīng)介紹過了。下面看一下如何下載固件到板子里:
打開aboot工具
,找到我們編譯生成的.zip后綴的固件,點(diǎn)擊start:
下載成功,點(diǎn)擊back返回。然后按下板子的RESET鍵復(fù)位板子。
這里需要隨意發(fā)送一串字符串觸發(fā)我們的輸出,至于為什么要這樣,后續(xù)還需研究研究。
另外,有些電腦可能識(shí)別不出這個(gè)USB串行設(shè)備
,那打印輸出的信息就沒辦法從USB口輸出。
我有兩臺(tái)電腦,剛開始用另一臺(tái)開發(fā),發(fā)現(xiàn)一直識(shí)別不出這個(gè)USB串行設(shè)備
,各種重啟、重裝驅(qū)動(dòng)的方法也都試過,還是沒用。然后我換用另一臺(tái)電腦,另一臺(tái)電腦竟然可以識(shí)別。所以可能原因有:
① 電腦USB口輸出電流不足。小熊派這個(gè)USB口的輸入的電流有一定的要求,電腦的USB口輸出的電流不足板子可能就不正常;
② 操作系統(tǒng)的問題。我一臺(tái)電腦裝的是win7、另一臺(tái)電腦裝的是win10。裝win10的那臺(tái)電腦可以正常識(shí)別這個(gè)USB串行設(shè)備
,win7的那一臺(tái)識(shí)別不了。
(4)實(shí)操:LED實(shí)驗(yàn)
我們創(chuàng)建一個(gè)example_led.c
文件,與上面的example_helloworld.c
放在同一個(gè)路徑下,并編寫如下代碼:
左右滑動(dòng)查看全部代碼>>>
#include "ql_application.h"
#include "ql_gpio.h"
#include <stdio.h>
/* led配置表 */
static quec_gpio_cfg_t led_gpio_cfg[] =
{
/*---引腳號(hào)-----------引腳方向---------引腳邊沿--------內(nèi)部上下拉--------引腳電平---*/
{GPIO_PIN_NO_75, PIN_DIRECTION_OUT, PIN_NO_EDGE, PIN_PULL_DISABLE, PIN_LEVEL_LOW},
// 其它GPIO配置......
};
/* led測試任務(wù) */
static void led_test(void * argv)
{
/* 用戶LED引腳初始化 */
ql_gpio_init(led_gpio_cfg[0].gpio_pin_num, led_gpio_cfg[0].pin_dir, led_gpio_cfg[0].pin_pull, led_gpio_cfg[0].pin_level);
while(1)
{
ql_gpio_set_level(led_gpio_cfg[0].gpio_pin_num, PIN_LEVEL_LOW);
ql_rtos_task_sleep_s(1);
ql_gpio_set_level(led_gpio_cfg[0].gpio_pin_num, PIN_LEVEL_HIGH);
ql_rtos_task_sleep_s(1);
}
}
application_init(led_test, "led_test", 2, 2);
這里需要注意的是:這里的引腳號(hào)并不是原理圖上標(biāo)的(原理圖上標(biāo)的是引腳名)。
每個(gè)引腳都有好幾種模式/功能,我們需要查看《Quectel_EC100Y_QuecOpen硬件設(shè)計(jì)手冊(cè)V1.0.pdf》的功能復(fù)用表查看真正的引腳號(hào):
這里我們創(chuàng)建了一個(gè)led配置表,方便添加、修改LED的配置。創(chuàng)建表的形式有時(shí)候更清晰一些,關(guān)于表驅(qū)動(dòng)的相關(guān)文章:
C語言精華知識(shí):表驅(qū)動(dòng)法編程實(shí)踐
修改同目錄下的Makefile文件:
編譯、生成固件,下載固件,可以看到LED閃爍的現(xiàn)象。
以上就是本次的分享,關(guān)于小熊派4G開發(fā)板更多教程資料可查看小熊派B站視頻:
猜你喜歡
C語言、嵌入式應(yīng)用:TCP通信實(shí)例分析
一些不可不知的計(jì)算機(jī)網(wǎng)絡(luò)基礎(chǔ)
AT指令測試ESP8266通信模組并獲取天氣數(shù)據(jù)
最后
若覺得文章不錯(cuò),轉(zhuǎn)發(fā)分享、在看,也是我們繼續(xù)更新的動(dòng)力。
在公眾號(hào)內(nèi)回復(fù)更多資源,可免費(fèi)獲取嵌入式資料。期待你的關(guān)注~
免責(zé)聲明:本文內(nèi)容由21ic獲得授權(quán)后發(fā)布,版權(quán)歸原作者所有,本平臺(tái)僅提供信息存儲(chǔ)服務(wù)。文章僅代表作者個(gè)人觀點(diǎn),不代表本平臺(tái)立場,如有問題,請(qǐng)聯(lián)系我們,謝謝!