小熊派4G開發板初體驗
阿新 • • 發佈:2020-07-04
## 開發板硬體資源介紹
前陣子小熊派發布了一款超高性價比的4G開發板(19.8元包郵),但是板子僅限量1000套。小熊派官方給我送了一塊,我們一起來學習學習:
![](https://s1.ax1x.com/2020/06/29/NWt7Of.jpg)
![](https://s1.ax1x.com/2020/06/29/NWtT6P.jpg)
板子做得小巧精緻,控制核心用的是`移遠的EC100Y LTE Cat1無線通訊模組`,該模組可對所有使用者開放`二次開發`;EC100Y LTE Cat1模組兩側座子/排針是E53介面,可接小熊派的E53拓展模組,如:
![](https://s1.ax1x.com/2020/06/29/NWtJyV.jpg)
小熊派4G開發板與其E53介面拓展模組配合來使用就可以做各種豐富的實驗。EC100Y LTE Cat1模組下方是一個SIM卡槽,支援全網通。SIM卡卡槽左側預留了幾個排針孔,連著兩個串列埠,可根據需要焊接排針來使用。板子頂部是一個小辣椒天線。板子左下角有一個攝像頭介面與一個音訊輸入/輸出介面。板子右下角是4個按鍵:BOOT按鍵、RESET按鍵、POWER按鍵、使用者按鍵。板子最下方是一個USB口。
## 開發板入網測試
### 1、SIM卡槽插入一張手機卡
SIM卡插入一張手機卡,支援全網通,我這裡用的是移動4G卡。
### 2、串列埠助手傳送AT指令進行測試
```c
AT+CPIN? : 查詢SIM卡狀態
AT+CSQ : 查詢訊號質量
AT+CGATT? : 查詢是否附著網路
```
![](https://s1.ax1x.com/2020/06/29/NWtGQ0.png)
![](https://s1.ax1x.com/2020/06/29/NWt3zq.png)
以上圖片是入網成功的情況,如果不成功則需要檢查SIM卡有沒有插反、COM號有沒有選對等等。
## 開發板OPENMCU開發
`OPENMCU`是一種`以模組作為主處理器的應用方式`。這裡就是把移遠的EC100Y LTE Cat1無線通訊模組作為主處理器的應用。
### 1、SDK軟體開發包
![](https://s1.ax1x.com/2020/06/29/NWtYLT.png)
我們主要需要關注的是`ql-application`資料夾,一般的開發主要都是在這裡面添程式碼。
### 2、生成韌體
#### (1)編譯環境
一種方法是自己搭建相關編譯環境,另一種方法是直接用SDK包裡面的編譯工具。SDK包中相關的工具在`ql-cross-tool`中。為了簡單省事,我們直接使用SDK包給我們提供的編譯工具。
#### (2)編譯流程
![](https://s1.ax1x.com/2020/06/29/NWtNeU.png)
圖片來自移遠官方文件。
可見,韌體打包需要用到一些映象,主要分為四大塊:`kernel映象`、`bootloader映象`、`app映象`、`其它映象`。
SDK包中有兩個編譯相關的批處理檔案:`build.bat`、`build_all.bat`。其中:
build_all.bat:提供整體編譯的功能,即雙擊這個批處理檔案就會執行上面四大塊映象的編譯及打包生成韌體的過程。但一般我們都只是修改APP相關的程式碼,沒有必要全部編譯。
所以,SDK包中給我們提供了build.bat批處理檔案,我們可以在命令列指定一些引數來執行相應的過程,如:
```c
build.bat bootloader命令:只編譯bootloader
build.bat kernel命令 :只編譯kernel
build.bat app命令 :只編譯app
build.bat firmware命令 :生成韌體包
```
因為我們平時開發基本上只是修改了app,所以大多數情況下都是隻需要這兩條命令:
```c
build.bat app命令 :只編譯app
build.bat firmware命令 :生成韌體包
```
win7環境下在sdk路徑下快捷操作進入`cmd視窗`的方法:
![](https://s1.ax1x.com/2020/06/29/NWtUwF.jpg)
與上面操作相同,在win10環境下可在sdk路徑下進入`Power shell視窗`。當然,win10下也可以進入cmd視窗,然後再進入sdk路徑。其中,在Power shell視窗中執行的編譯命令與在cmd視窗中執行的編譯命令有點不一樣,在Power shell視窗中需要加上`.\`,如:
![](https://s1.ax1x.com/2020/06/29/NWtao4.png)
執行這個編譯命令時,會自動找到`ql-cross-tool`裡的編譯工具來編譯我們的程式。
生成韌體操作:
![](https://s1.ax1x.com/2020/06/29/NWt0Y9.png)
韌體存放的路徑:
![](https://s1.ax1x.com/2020/06/29/NWtwFJ.png)
我們並沒有編譯bootloader與kernel,那麼生成韌體需要的bootloader映象與kernel映象又是從哪來?
其實,SDK包給我們提供了一組出廠的映象,存放在路徑`ql-sdk\ql-config\quec-project\aboot\images`下:
![](https://s1.ax1x.com/2020/06/29/NWtrS1.png)
所以,當我們執行完編譯app的命令,並執行生成韌體包的命令時,大致過程如下:
![](https://s1.ax1x.com/2020/06/29/NWtBWR.png)
當我們需要恢復出廠設定的時候,可以下載出廠自帶的那組映象,此時我們需要先執行如下清除命令:
```c
build.bat kernel/bootloader/app clean命令
```
分別清除這三大模組編譯生成的一些檔案,然後再打包生成韌體。
#### (3)實操:輸出helloworld實驗
sdk包中已經給我們做好了一個hello例程:
![](https://s1.ax1x.com/2020/06/29/NWtyy6.png)
一般printf都是重定向到串列埠,小熊派4G開發板也有引出debug串列埠的排針孔,我們可以焊接排針來使用;但是小熊派這裡給我們提供了另一種更方便的方法,重新封裝一個列印函式,列印資訊通過USB口輸出。
還需要注意的是Makefile檔案的修改。這裡需要修改兩個Makefile檔案,一個是`ql-sdk\ql-application\threadx\interface\init\example`下的Makefile檔案:
![](https://s1.ax1x.com/2020/06/29/NWthYd.png)
另一個是`ql-sdk\ql-application\threadx\`下的Makefile檔案:
![](https://s1.ax1x.com/2020/06/29/NWtISI.png)
編譯、生成韌體前面已經介紹過了。下面看一下如何下載韌體到板子裡:
開啟`aboot工具`,找到我們編譯生成的.zip字尾的韌體,點選start:
![](https://s1.ax1x.com/2020/06/29/NWtgeO.jpg)
![](https://s1.ax1x.com/2020/06/29/NWt6OK.jpg)
![](https://s1.ax1x.com/2020/06/29/NWt2wD.jpg)
下載成功,點選back返回。然後按下板子的RESET鍵復位板子。
![](https://s1.ax1x.com/2020/06/29/NWtfFH.png)
![](https://s1.ax1x.com/2020/06/29/NWtRTe.png)
這裡需要隨意傳送一串字串觸發我們的輸出,至於為什麼要這樣,後續還需研究研究。另外,有些電腦可能識別不出這個`USB序列裝置`,那列印輸出的資訊就沒辦法從USB口輸出。我有兩臺電腦,剛開始用另一臺開發,發現一直識別不出這個`USB序列裝置`,各種重啟、重灌驅動的方法也都試過,還是沒用。然後我換用另一臺電腦,另一臺電腦竟然可以識別。所以可能原因有:
①電腦USB口輸出電流不足。小熊派這個USB口的輸入的電流有一定的要求,電腦的USB口輸出的電流不足板子可能就不正常;
②系統的問題。我一臺電腦裝的是win7、另一臺電腦裝的是win10。裝win10的那臺電腦可以正常識別這個`USB序列裝置`,win7的那一臺識別不了。
#### (4)實操:LED實驗
我們建立一個`example_led.c`檔案,與上面的`example_helloworld.c`放在同一個路徑下,並編寫如下程式碼:
```c
#include "ql_application.h"
#include "ql_gpio.h"
#