本教程是基于大白的BC26开发板来展开的。
文末有彩蛋!!!
开发板集成了:USB接口转双串口芯片、主串口和调试串口接口处有LED信号指示灯。用microUSB可以获取到BC26和基站通信的log数据。BC26所有1.8V的IO口都转换成了3.3V的电平,开发板留出了BC26的3个调试串口、所有GPIO口、I2C接口、SPI接口、2个GPIO控制的LED灯、电源指示灯、休眠唤醒接口、BC26电源启动接口、BC26复位接口、3.3V和5V电压输出接口、GND接口。
文章最下方有视频教程的链接。
把BC26开发板插入电脑的USB接口,在电脑设备管理器中查看COM口,如下图,Standard COM Port(COM60)是BC26的主串口,Enhanced COM Port(COM59)是BC26的debug串口。打开串口调试助手,选择Standard COM Port(COM60)作为AT指令输入的COM口。
1、首先查看内核软件版本:
ATI
Quectel_Ltd
Quectel_BC26
Revision: BC26NBR01A02
OK
我的内核版本是BC26NBR01A02,我这里故意把NB标红,是因为这个NB表示的是移远BC26的硬件版本号,如果您返回的是:BC26NAR01AXX,这个就表示您的BC26的硬件版本号是NA。请注意NA的硬件版本号是不允许烧录基于NB硬件版本的opencpu内核的,同样NB的硬件版本号也是不允许烧录基于NA硬件版本的opencpu内核的,否则会有未知bug。
2、烧录OpenCpu的内核程序
2.1打开FlashTool.exe软件,正确选择号串口COM口号Standard COM Port(COM60),打开串口后,因为我的硬件版本号是NB的,所以选择BC26 OpenCpu\BC26NBR01A02_BETA0704文件下的flash_download.cfg,这个是OpenCpu的内核程序。如果你的硬件版本号是NA的,请选择NA版本的opencpu内核 。
2.2点击下图中的Start按钮后,按下BC26开发板的电源按钮,启动BC26,紧接着按下复位按钮,就会开始下载了,如下图提示Download Flash .. 100%后就烧写成功了。
查看opencpu的内核软件版本:
ATI //查看内核版本号
Quectel_Ltd
Quectel_BC26
Revision: BC26NBR01A02_BETA0704
OK
3、代码编辑
大白用的是SublimeT Text作为代码编辑器,大白提供的文件中有安装包。
PS:SublimeText具有漂亮的用户界面和强大的功能,例如代码缩略图,python的插件,代码段等。还可自定义键绑定,菜单和工具栏。SublimeText 的主要功能包括:拼写检查,书签,完整的Python API ,Goto 功能,即时项目切换,多选择,多窗口等等。SublimeText 是一个跨平台的编辑器,同时支持Windows、Linux、Mac OS X等操作系统。
SublimeT Text创建工程教程
Sublime Text 可以很方便地管理多个工程。使用Sublime Text的Projects,可以将不同根目录的文件组织起来成为一个工程,而不用将所有的文件都放到一个根目录下面。
1. 创建工程
Project > Add Folder to Project
这时在sidebar中将出现刚刚添加的文件目录,如果还需要添加其他目录,则重复这一操作即可。
2. 保存工程
Project > Save Project As
点击保存后Sublime Text将自动生成两个文件:
project_name.sumlime-project:包含工程定义,该文件会被记录到版本控制里。
project_name.sublim-workspace:包含了用户的工程数据,例如打开的文件和修改等,该文件不会被记录到版本控制里。
4、代码编译
使用gcc-arm-none-eabi-4_8来编译程序。先安装gcc-arm-none-eabi-4_8,大白提供的文件中有安装包。安装完成后,进入下图路径中的文件,双击下图中的2个.exe文件,分别双击后,make编译指令就会生成。
然后双击下图中的MS-DOS图标,会弹出DOS窗口,下面就可以在这个DOS窗口中输入命令啦。
2个编译指令:Make clean、Make new。
Make clean:清除编译后生成的文件,如.cfg、.bin、.map、.log文件。
Make new:进行代码编译,编译后生成的文件如下图圈出的文件。有.cfg、.bin、.elf、.map、.log文件,其中.cfg文件就是下载到BC26CPU内部的执行文件,所有的代码 Worings和Errors都会保存到.log文件中,可以查看代码的错误地方。
如下图,大白程序上默认编译的是example_gpio.c文件的,如下图gcc_makefile文件中的__EXAMPLE_GPIO__,C_PREDEF=-D __EXAMPLE_GPIO__这句话相当于#define __EXAMPLE_GPIO__,在example_gpio.c中最开始部分就有判断是否宏定义了__EXAMPLE_GPIO__,如果已经定义了__EXAMPLE_GPIO__,才会执行后面的程序。
如果想执行其他的 .C文件可以在gcc_makefile文件中定义其他头文件名。比如我想执行example_multitask.c文件,我就要把之前的C_PREDEF=-D __EXAMPLE_GPIO__改为C_PREDEF=-D __EXAMPLE_MULTITASK__。大白提供的example文件夹中的.c文件中都是有proc_main_task主函数的,所以不能同时定义和执行2个或2个以上的头文件的。
选择刚才编译生成的.cfg文件,点击绿色的Start按钮后:
如果BC26还未启动,请紧接着按下BC26开发板的电源按钮,启动BC26;
如果BC26已经开机启动,请紧接着按下复位按钮。
就会开始下载了,如下图提示Download Flash .. 100%后就烧写成功了。
烧写成功后BC26处于关机状态,需要按一下电源按钮启动BC26,然后你的app程序就可以跑起来了。
我的demo程序就是让我的2个GPIO控制的LED灯以1Hz的频率闪烁,并且BC26的DEBUG串口会每隔0.5s输出一次:<--DaBaiOpenCPU: GPIO_Toggle loop -->的信息。看DEBUG串口输出的数据时,串口调试助手需要选择Enhanced COM Port(COM59)。
/***********************************
需要大白BC26开发板的点击打开链接
************************************/
可以加我们扣扣群 345323276 进行技术交流(备注:大白nbiot)或者在文章下面留言讨论,大白会及时回复。
或者:https://pan.baidu.com/s/1qCYfyAMHfJAn1bvoIadJUg