ML307R SDK开发--OpenCPU应用程序开发学习笔记(1)

1:前言

        先了解一下什么是OpenCpu,OpenCPU是一种以模块作为主处理器的应用方式。这种方式可以简化用户对通信终端的开发流程,精简硬件结构设计,从而满足客户对成本、功耗、安全性等方面的需求。

        举个最简单的例子,在做mcu+4G模块相关开发的时候是mcu通过串口向4G模块发送AT指令然后4G模块返回响应。

        而有了OpenCpu的出现就不需要再有mcu这个东西了,直接在模组内进行开发

       这样就可以大大的优化了产品设计的大小和开发流程。

         此为博主个人学习笔记记录内容,相关资料信息内容均为公开资料,如有需要评论区见。

        本文在Windows7/Windows10 X64环境下,我在Windows11上试了一下也没出现报错。

        使用的模组系列型号:ML307R

        模组子型号:ML307R-DC

2:SDK开发包

        OpenCPU SDK开发包内含交叉编译器,必要的库文件和头文件以及示例程序等;解压后的文件内容图:     

SDK开发包文件说明:

custom存放用户空白工程,自己开发程序存放路径
doc存放参考文档
examples存放示例程序
include存放头文件
out存放编译生成的中间文件、版本文件、固件生成后存放的位置。
prebuild存放厂商提供的库文件、中间文件等
src存放cmiot库源码
tools存放交叉编译链、脚本工具、配置文件等

对于这个模组的硬件属性我在这就做简单的介绍:

模组主要应用接口包括:
▪ POWER接口
▪ UART接口
▪ USIM接口
▪ GPIO接口
▪ RF接口
▪ USB接口
▪ ANALOG接口
▪ SPI接口
▪ IIC接口
▪ AUDIO接口
▪ CONTROL接口
▪ LCD接口
▪ KEYPAD接口
▪ GND接口
▪ RESERVED接口

        引脚定义类型、状态以及参数

AI

模拟输入信号

信号类型

AO

模拟输出信号

AIO

模拟输入输出双向信号

DI

数字输入信号

DO

数字输出信号

DIO

数字输入输出双向信号

PI

电源输入信号

PO

电源输出信号

IO

输入输出双向信号

SI

施密特输入信号

OD

开漏输出信号

OC

开集输出信号

BOD

开漏输入输出双向信号

BOC

开集输入输出双向信号

RF

射频信号

OL

输出低电平

默认状态

OH

输出高电平

Z

高阻态

Float

浮空

PU

默认上拉

PD

默认下拉

VIH

高电平输入电压

参数

VIL

低电平输入电压

VOH

高电平输出电压

VOL

低电平输出电压

详细的硬件设计要求查看硬件手册,有需要评论区。

3:编译环境

3.1:编译环境要求

        OpenCPU SDK开发包,仅支持在Windows 7/Windows 10 X64环境下开发和编译,需预安装python3.7以上版本,安装完python后,打开命令行执行

pip install scons

安装scons工具。

        想要知道自己电脑安装的python版本是多少符不符合要求,在终端输入命令即可查看

python --version

安装scons工具直接输命令就行了

pip install scons

3.2 搭建编译环境

        OpenCPU SDK开发包自带交叉编译工具,使用前解压开发包至任意非中文路径下即可进行编译。请注意解压路径不能包含中文、空格及“&”符号。

        其实就是在解压后的SDK包里面不能有中文和其他符号就行了。

3.3 编译SDK

        SDK编译命令为scons
        执行以下步骤编译SDK:
                1. 确认模组硬件版本。
                2. 在SDK根目录下,打开命令行执行scons -c清除历史编译信息。
                3. 执行scons启动编译。
        如无编译错误,可在out/image/目录下获取编译生成的软件版本。

4:SDK开发流程

 4.1:用户入口函数

个人开发保存的位置在上面提到的custom文件夹中

用户入口函数cm_opencpu_entry()会在系统初始化过程中被调用;用户可在此函数中执行必要的初始化、用户线程创建等操作。就在custom\custom_main\src里面的custom_main.c里面。

4.2 示例程序说明

        OpenCPU程序示例覆盖大部分API,用户通过cm_demo_main.c中的命令数组可获取API示例程序的入口函数;通过串口发送命令即可测试示例代码。
        测试示例代码前需下载默认的demo版本固件至模组中。
        参照以下步骤完成示例代码测试:
1. 模组开机。
        开机后,串口会打印如下信息。不同型号模组及OpenCPU SDK版本打印信息存在差异,请以实际为准。


CM OpenCPU Starts
Compile Time:20211109172220
Boot Cause:6
SDK VERSION:ML302_OpenCPU_Standard_1.0.0.202111091716_release
BASELINE VERSION:8910_Module_V1_4_W21.31.2__20210810_1531
fs total:1441792,remain:339000
heap total:2864576,remain:1581472
sim ready
waiting for network...
[NET_REGISTER]:state:7
[NET_REGISTER]:PDP not ready
[NET_REGISTER]:state:2
[NET_REGISTER]:SIM ready
[NET_REGISTER]:state:3
[NET_REGISTER]:Attaching
[NET_REGISTER]:state:5
[NET_REGISTER]:Attach success
[NET_REGISTER]:state:8
[NET_REGISTER]:PDP ready
network ready
Now:2021-12-9:17:21:52,Tuesday
SN:92588066126970
IMEI:352273017386340
IMSI:460047933913534
ICCID:89860459112190003534
cm_test_asocket_init
please input cmds:


2. 按如下命令格式,通过串口输入命令,执行测试。
        CM:FUNC:PARAM1:PARAM2:PARAM3......
        ▪ FUNC代表命令名称,可在cm_demo_main.c的命令数组中查询;
        ▪ PARAM代表参数,参数间以冒号(:)分隔。

4.3 添加源文件

        添加源文件主要是在custom/路径下添加源文件和将custom路径加入头文件搜索路径为例说明操作步骤。
        添加流程:

        1. 打开custom/SConscript
        2. 在ram_source_fles列表中增加的源文件,其代码段运行于内存中;若模组支持XIP模式,则可在flash_source_fles列表中增加以XIP模式运行的源文件,代码段运行于Flash中。
        3. 在public_incs列表中增加公共头文件,private_incs列表中增加私有头文件。
        4. 可在cpp_defnes列表中添加模块私有的宏定义,仅对本模块生效

Sconscript内容:

4.4 添加库文件

        本节以在prebuild/libs路径下添加libxxx.a库文件为例说明操作步骤。
        参照以下步骤添加库文件:
                1. 打开tools/scons/EnvironConfig.py。
                2. 在BuildConfg->LIBS列表中添加xxx变量。
                3. 在BuildConfg->LIBPATH列表中添加libxxx.a的存放路径。

4.5 制作库文件

制作流程:

        1. 确定需要打包的目标文件,如out\obj\examples\adc\src\cm_demo_adc.o和out\obj\examples\mqtt\src\cm_demo_mqtt.o。
        2. 在命令行环境下,进入SDK根目录,选择SDK中的ar工具,执行打包命令。如"tools/toolchain/gcc-armnone-eabi/bin/arm-none-eabi-ar.exe" qc liboc_demo.a out/obj/examples/adc/src/cm_demo_adc.o out/obj/examples/mqtt/src/cm_demo_mqtt.o。
根目录下生成liboc_demo.a库文件,该文件可替代上述两个目标文件参与编译链接。

5:驱动安装

驱动在压缩包里面的ASR_Drivers文件夹里面

直接运行就可以了。

固件下载就不做具体介绍了,每一个的工具都有不同,有可用的就可以了。

6:SDK API简介

        SDK中API含操作系统接口、网络接口、模组基础功能接口和硬件外设接口等,详细信息请参见该型号对应
的API资料。
        下表为OpenCPU SDK支持的模块,不同SDK发布版本在API的支持范围上有细微差别,请以实际发布版本
为准。

接口模块

接口模块描述

参考文件

ADC

ADC功能

cm_adc.h

ALARM

闹钟功能

cm_alarm.h

ASOCKET

异步socket功能

cm_asocket.h

ASOCKET_DNS

异步DNS解析接口

cm_async_dns.h

AUDIO

音频功能

cm_audio_common.h/cm_audio_pl
ayer.h/cm_audio_recorder.h

BLE

BLE功能

cm_ble.h

CAMERA

CAMERA功能

cm_camera.h

DM

DM功能

cm_dm.h

ELOOP

Event Loop功能

cm_eloop.h

ETIMER

etimer功能

cm_etimer.h

FILE_SYSTEM

文件系统

cm_fs.h

FTP

FTP功能

cm_ftp.h

GNSS

GNSS功能

cm_gnss.h

GPIO

通用IO接口

cm_gpio.h

HTTP

HTTP功能

cm_http.h

I2C

I2C接口

cm_i2c.h

IOMUX

IOMUX功能

cm_iomux.h

KEYPAD

矩阵键盘接口

cm_keypad.h

LBS

LBS功能

cm_lbs.h

LCD

LCD功能

cm_lcd.h

MEM

内存管理功能

cm_mem.h

MQTT

MQTT功能

cm_mqtt.h

NTP

NTP功能

cm_ntp.h

OS

操作系统接口

cm_os.h

OTA

通用ota功能

cm_ota.h

PM

PM功能

cm_pm.h

PWM

PWM功能

cm_pwm.h

QR

QR功能

cm_qr.h

SD

SD功能

cm_sd.h

SIM

SIM功能

cm_sim.h

SPI

SPI接口

cm_spi.h

SSL

SSL功能

cm_ssl.h

SYS

模组基础功能

cm_sys.h

TTS

TTS功能

cm_tts.h

UART

串口接口

cm_uart_h

USB

USB虚拟串口通信功能

cm_usb.h

VIRT_AT

虚拟AT功能

cm_virt_at.h

WIFI_SCAN

Wi-Fi扫描功能

cm_wifi.h

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值