前陣子小熊派發布了一款超高性價比的4G開發板(19.8元包郵),可是板子僅限量1000套。小熊派官方給我送了一塊,咱們一塊兒來學習學習:shell
板子作得小巧精緻,控制核心用的是移遠的EC100Y LTE Cat1無線通訊模組
,該模組可對全部用戶開放二次開發
;EC100Y LTE Cat1模組兩側座子/排針是E53接口,可接小熊派的E53拓展模塊,如:編程
小熊派4G開發板與其E53接口拓展模塊配合來使用就能夠作各類豐富的實驗。EC100Y LTE Cat1模組下方是一個SIM卡槽,支持全網通。SIM卡卡槽左側預留了幾個排針孔,連着兩個串口,可根據須要焊接排針來使用。板子頂部是一個小辣椒天線。板子左下角有一個攝像頭接口與一個音頻輸入/輸出接口。板子右下角是4個按鍵:BOOT按鍵、RESET按鍵、POWER按鍵、用戶按鍵。板子最下方是一個USB口。網絡
SIM卡插入一張手機卡,支持全網通,我這裏用的是移動4G卡。app
AT+CPIN? : 查詢SIM卡狀態 AT+CSQ : 查詢信號質量 AT+CGATT? : 查詢是否附着網絡
以上圖片是入網成功的狀況,若是不成功則須要檢查SIM卡有沒有插反、COM號有沒有選對等等。函數
OPENMCU
是一種以模塊做爲主處理器的應用方式
。這裏就是把移遠的EC100Y LTE Cat1無線通訊模組做爲主處理器的應用。工具
咱們主要須要關注的是ql-application
文件夾,通常的開發主要都是在這裏面添代碼。學習
一種方法是本身搭建相關編譯環境,另外一種方法是直接用SDK包裏面的編譯工具。SDK包中相關的工具在ql-cross-tool
中。爲了簡單省事,咱們直接使用SDK包給咱們提供的編譯工具。測試
圖片來自移遠官方文檔。ui
可見,固件打包須要用到一些鏡像,主要分爲四大塊:kernel鏡像
、bootloader鏡像
、app鏡像
、其它鏡像
。命令行
SDK包中有兩個編譯相關的批處理文件:build.bat
、build_all.bat
。其中:
build_all.bat:提供總體編譯的功能,即雙擊這個批處理文件就會執行上面四大塊鏡像的編譯及打包生成固件的過程。但通常咱們都只是修改APP相關的代碼,沒有必要所有編譯。
因此,SDK包中給咱們提供了build.bat批處理文件,咱們能夠在命令行指定一些參數來執行相應的過程,如:
build.bat bootloader命令:只編譯bootloader build.bat kernel命令 :只編譯kernel build.bat app命令 :只編譯app build.bat firmware命令 :生成固件包
由於咱們平時開發基本上只是修改了app,因此大多數狀況下都是隻須要這兩條命令:
build.bat app命令 :只編譯app build.bat firmware命令 :生成固件包
win7環境下在sdk路徑下快捷操做進入cmd窗口
的方法:
與上面操做相同,在win10環境下可在sdk路徑下進入Power shell窗口
。固然,win10下也能夠進入cmd窗口,而後再進入sdk路徑。其中,在Power shell窗口中運行的編譯命令與在cmd窗口中運行的編譯命令有點不同,在Power shell窗口中須要加上.\
,如:
執行這個編譯命令時,會自動找到ql-cross-tool
裏的編譯工具來編譯咱們的程序。
生成固件操做:
固件存放的路徑:
咱們並無編譯bootloader與kernel,那麼生成固件須要的bootloader鏡像與kernel鏡像又是從哪來?
其實,SDK包給咱們提供了一組出廠的鏡像,存放在路徑ql-sdk\ql-config\quec-project\aboot\images
下:
因此,當咱們執行完編譯app的命令,並執行生成固件包的命令時,大體過程以下:
當咱們須要恢復出廠設置的時候,能夠下載出廠自帶的那組鏡像,此時咱們須要先執行以下清除命令:
build.bat kernel/bootloader/app clean命令
分別清除這三大模塊編譯生成的一些文件,而後再打包生成固件。
sdk包中已經給咱們作好了一個hello例程:
通常printf都是重定向到串口,小熊派4G開發板也有引出debug串口的排針孔,咱們能夠焊接排針來使用;可是小熊派這裏給咱們提供了另外一種更方便的方法,從新封裝一個打印函數,打印信息經過USB口輸出。
還須要注意的是Makefile文件的修改。這裏須要修改兩個Makefile文件,一個是ql-sdk\ql-application\threadx\interface\init\example
下的Makefile文件:
另外一個是ql-sdk\ql-application\threadx\
下的Makefile文件:
編譯、生成固件前面已經介紹過了。下面看一下如何下載固件到板子裏:
打開aboot工具
,找到咱們編譯生成的.zip後綴的固件,點擊start:
下載成功,點擊back返回。而後按下板子的RESET鍵復位板子。
這裏須要隨意發送一串字符串觸發咱們的輸出,至於爲何要這樣,後續還需研究研究。另外,有些電腦可能識別不出這個USB串行設備
,那打印輸出的信息就沒辦法從USB口輸出。我有兩臺電腦,剛開始用另外一臺開發,發現一直識別不出這個USB串行設備
,各類重啓、重裝驅動的方法也都試過,仍是沒用。而後我換用另外一臺電腦,另外一臺電腦居然能夠識別。因此可能緣由有:
①電腦USB口輸出電流不足。小熊派這個USB口的輸入的電流有必定的要求,電腦的USB口輸出的電流不足板子可能就不正常;
②系統的問題。我一臺電腦裝的是win七、另外一臺電腦裝的是win10。裝win10的那臺電腦能夠正常識別這個USB串行設備
,win7的那一臺識別不了。
咱們建立一個example_led.c
文件,與上面的example_helloworld.c
放在同一個路徑下,並編寫以下代碼:
#include "ql_application.h" #include "ql_gpio.h" #include <stdio.h> /* led配置表 */ static quec_gpio_cfg_t led_gpio_cfg[] = { /*---引腳號-----------引腳方向---------引腳邊沿--------內部上下拉--------引腳電平---*/ {GPIO_PIN_NO_75, PIN_DIRECTION_OUT, PIN_NO_EDGE, PIN_PULL_DISABLE, PIN_LEVEL_LOW}, // 其它GPIO配置...... }; /* led測試任務 */ 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);
這裏須要注意的是:這裏的引腳號並非原理圖上標的(原理圖上標的是引腳名)。每一個引腳都有好幾種模式/功能,咱們須要查看《Quectel_EC100Y_QuecOpen硬件設計手冊V1.0.pdf》的功能複用表查看真正的引腳號:
這裏咱們建立了一個led配置表,這樣方便添加、修改LED的配置。建立表的形式有時候更清晰一些,關於表驅動的相關文章:
修改同目錄下的Makefile文件:
編譯、生成固件,下載固件,能夠看到LED閃爍的現象。