小熊派4G开发板初体验
开发板硬件资源介绍
前阵子小熊派发布了一款超高性价比的4G开发板(19.8元包邮),但是板子仅限量1000套。小熊派官方给我送了一块,我们一起来学习学习:


板子做得小巧精致,控制核心用的是移远的EC100Y LTE Cat1无线通信模组,该模组可对所有用户开放二次开发;EC100Y LTE Cat1模组两侧座子/排针是E53接口,可接小熊派的E53拓展模块,如:

小熊派4G开发板与其E53接口拓展模块配合来使用就可以做各种丰富的实验。EC100Y LTE Cat1模组下方是一个SIM卡槽,支持全网通。SIM卡卡槽左侧预留了几个排针孔,连着两个串口,可根据需要焊接排针来使用。板子顶部是一个小辣椒天线。板子左下角有一个摄像头接口与一个音频输入/输出接口。板子右下角是4个按键:BOOT按键、RESET按键、POWER按键、用户按键。板子最下方是一个USB口。
开发板入网测试
1、SIM卡槽插入一张手机卡
SIM卡插入一张手机卡,支持全网通,我这里用的是移动4G卡。
2、串口助手发送AT指令进行测试
AT+CPIN? : 查询SIM卡状态
AT+CSQ : 查询信号质量
AT+CGATT? : 查询是否附着网络


以上图片是入网成功的情况,如果不成功则需要检查SIM卡有没有插反、COM号有没有选对等等。
开发板OPENMCU开发
OPENMCU是一种以模块作为主处理器的应用方式。这里就是把移远的EC100Y LTE Cat1无线通信模组作为主处理器的应用。
1、SDK软件开发包

我们主要需要关注的是ql-application文件夹,一般的开发主要都是在这里面添代码。
2、生成固件
(1)编译环境
一种方法是自己搭建相关编译环境,另一种方法是直接用SDK包里面的编译工具。SDK包中相关的工具在ql-cross-tool中。为了简单省事,我们直接使用SDK包给我们提供的编译工具。
(2)编译流程

图片来自移远官方文档。
可见,固件打包需要用到一些镜像,主要分为四大块: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命令
分别清除这三大模块编译生成的一些文件,然后再打包生成固件。
(3)实操:输出helloworld实验
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口输出的电流不足板子可能就不正常;
②系统的问题。我一台电脑装的是win7、另一台电脑装的是win10。装win10的那台电脑可以正常识别这个USB串行设备,win7的那一台识别不了。
(4)实操:LED实验
我们创建一个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闪烁的现象。
小熊派4G开发板初体验的更多相关文章
- 小熊派IoT开发板系列教程正式发布——免费学习
[摘要] 小熊派开源社区针对小熊派IoT开发板首次规划了小熊派未来的系列教程.从基础到进阶的设计,可适应具有不同基础的开发者,通过该系列教程的学习,开发者能够轻松掌握IoT产品的开发.该系列教程包括单 ...
- 迅为iTOP-4418嵌入式开发板初体验
iTOP-4418开发板预装 Android4.4.4 系统, 支持9.7 寸.7 寸.4.3 寸屏幕. 参数:核心板参数 尺寸 50mm*60mm高度 核心板连接器为1.5mmCPU ARM Cor ...
- MEF 插件式开发 - WPF 初体验
原文:MEF 插件式开发 - WPF 初体验 目录 MEF 在 WPF 中的简单应用 加载插件 获取元数据 依赖注入 总结 MEF 在 WPF 中的简单应用 MEF 的开发模式主要适用于插件化的业务场 ...
- 开发实践丨用小熊派STM32开发板模拟自动售货机
摘要:本文内容是讲述用小熊派开发板模拟自动售货机,基于论坛提供的工程代码,通过云端开发和设备终端开发,实现终端数据在的华为云平台显示. 本文内容是讲述用小熊派开发板模拟自动售货机,基于论坛提供的工程代 ...
- ASP.NET2.0组件控件开发视频 初体验
原文:ASP.NET2.0组件控件开发视频 初体验 ASP.NET2.0组件控件开发视频 初体验 录了视频,质量不是很好,大家体验下.我会重新录制的 如果不清楚,可以看看http://v.youku. ...
- x86 版的 Arduino Intel Galileo 开发板的体验、分析和应用
1.前言 在今年(2013)罗马举办的首届欧洲 Make Faire 上,Intel 向对外发布了采用 x86 构架的 Arduino 开发板:Intel Galileo.这无疑是一个开源硬件领域的重 ...
- [6818开发板]八核开发板|4G开发板|GPS开发板|嵌入式开发平台
IMX6开发板(基本型):960元 IMX6开发板(豪华型):1460元 S5P4418 核心板可以无缝支持核心系统S5P6818,并保持底板设计不变,将兼顾更高端 的应用领域,为项目和产品提供更好的 ...
- TMDXEVM6678L EVM开发板初使用(1)
1. 板子上电风扇转个不停,震动很大. 2. 有点懵逼,第一步干啥,首先安装板子的软件开发包,资料下载地址http://www2.advantech.com/Support/TI-EVM/6678le ...
- 迅为4412全新升级版|3G开发板|4G开发板
iTOP-Exynos4412开发板采用 Exynos4412的主芯片,具有更高的主频和更丰富外设,配置 2GB 双通道 DDR3的内存及 16GB 存储,支持3G/G模块.GPS模块.陀螺仪.HDM ...
随机推荐
- java实现复制网站内容
复制网站内容 复制代码 本程序将网站"www.baidu.com"首页的内容复制保存在文件test.html中.写了如下代码,请完善之: import java.net.*; im ...
- java实现第七届蓝桥杯机器人塔
机器人塔 X星球的机器人表演拉拉队有两种服装,A和B. 他们这次表演的是搭机器人塔. 类似: A B B A B A A A B B B B B A B A B A B B A 队内的组塔规则是: A ...
- 在树莓派3b or 3a or 4a or 4b上搭建OpenWebRX
OpenWebRx OpenWebRX 项目提供了搭建WebSDR的解决方案,该项目基于 Python 编写,除了完全开源外,官方还提供了完备的技术文档.您只需要一台电脑或是树莓派,一个SDR设备和网 ...
- 2.Redis 控制短信重发
需要两个缓存 key名称 phone-busy,缓存1分钟key名称 phone-send-count,缓存1天,每成功发送一条+1 发送的时候流程如下: 判断phone-busy是否存在,存在直接报 ...
- 01 . Docker原理部署及常用操作命令
Docker的来源及构造: 容器是一种基础工具:泛指任何用于容纳其他物品的工具,可以部分或完全封闭,被用于容纳,储存,运输物品: 物品可以被放置在容器中,而容器可以保护内容物: 人类使用容器的历史有十 ...
- <Android> Location Service 分析
由于各种原因,老师希望我学习Android系统源码以应对可能参与的项目.我只好深入曹营,刺探军情了. 定位服务是手机上最常用的功能之一,据说也是相对比较简单的服务,所以从这里入手.其他系统服务的架构都 ...
- ArchLinux的安装
ArichLinux安装教程 Arch Linux 于 2002 年发布,由 Aaron Grifin 领头,是当下最热门的 Linux 发行版之一.从设计上说,Arch Linux 试图给用户提供简 ...
- 解决GITLAB无法启动runsv no running
可以先尝试用 systemctl start gitlab-runsvdir.service 如果冻结不动的话,就需要查看系统服务项了 systemctl -t target 如果系统正常的话,所有任 ...
- c常用函数-strchr和strrchr
strchr和strrchr strrchr函数用于查找指定字符在一个字符串中最后一次出现的位置,然后返回指向该位置的指针 strchr函数用于查找指定字符在一个字符串中第一次出现的位置,然后返回指向 ...
- 深入理解Java虚拟机学习笔记(二)-----垃圾收集器与内存分配策略
写在前面 本节常见面试题: 如何判断对象是否死亡(两种方法). 简单的介绍一下强引用.软引用.弱引用.虚引用(虚引用与软引用和弱引用的区别.使用软引用能带来的好处). 如何判断一个常量是废弃常量 如何 ...