# yuge_cat1_opencpu **Repository Path**: yuge-info/yugecat1opencpu ## Basic Information - **Project Name**: yuge_cat1_opencpu - **Description**: 域格CAT1模块通用opencpu 支持KE7SA、KE7EU、A09、A19EU、A19EV、A19NA、A19NE、MV9、LV9、B19EU、B19EA等模块二次开发。 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 1 - **Created**: 2025-10-21 - **Last Updated**: 2026-04-09 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README **
当前SDK版本:V5.8.8
** ## 1. 概述 本文档介绍上海域格 Cat.1 通信模块的 OpenCPU SDK。OpenCPU 模式允许用户在模块上直接运行自定义应用程序(以下简称"应用"或"APP"),通过 SDK 提供的丰富接口访问网络、串口、GPIO、文件系统等系统功能,从而快速实现物联网终端产品的开发。 ## 2. SDK 特性 - **OpenCPU 本地应用运行**:支持 C 语言开发,应用直接在模块上运行 - **LTE 数据自动拨号**:集成 LTE 数据连接管理,简化网络配置 - **内置网络协议栈**:完整的 TCP/IP 协议栈,支持 HTTP、MQTT 等应用层协议 - **丰富的外设接口**:提供 UART、SPI、I2C、GPIO、ADC 等硬件接口访问 - **AT 命令支持**:内置 ATCMD 客户端和服务端,兼容传统 AT 命令开发模式 - **文件系统**:支持文件读写操作,便于数据存储和管理 - **OTA 升级机制**:支持固件远程升级,便于产品维护和功能更新 - **调试与日志**:完善的调试输出和日志记录功能 ## 3. SDK 目录结构 ```shell SDK_ROOT/ ├── core/ # OpenCPU core library and header files ├── doc/ # SDK documentation ├── fota/ # fota description ├── sample/ # API usage examples ├── tools/ # Build tools including Makefile utilities and compiler ├── build.bat # Build script for Windows ├── readme.md # Quick start └── ReleaseNotes.txt # ReleaseNotes ``` ## 4. 开发环境准备 - **操作系统**:Windows 10/11(推荐) - **获取SDK**:git clone https://gitee.com/yuge-info/yugecat1opencpu - **交叉编译工具链** 下载Arm GNU工具链,下载后解压到`tools`目录,并改名为`gcc-arm-none-eabi`。推荐下载地址: 文件第11行改成 "#if 0" //# if !(defined (_WINSOCK_H) || defined (_WINSOCKAPI_) || defined (__USE_W32_SOCKETS)) #if 0 - **模块固件包**:支持OpenCPU的固件包,烧录使用 - **烧录工具**:厂商提供的专用烧录工具 - **串口调试工具**:PuTTY、sscom 或类似串口终端软件 ## 5. 快速上手(创建最小可运行应用) ### 5.1 编译步骤 1. **打开命令行**:使用 CMD 或 PowerShell,进入 SDK 顶层目录(vscode等工具打开,使用终端编译也很方便)。 2. **编译示例**:执行 `build.bat -c 1605c -t socket -autopkg A09 sample\example_base` 命令,生成app.bin文件,并自动打包完整烧录固件在out目录下。 4. **烧录模块**:使用aboot工具将固件写入模块 V5.8.0及以后Git仓库移除aboot下载工具。下载地址: a). 打开tools\aboot\aboot.exe,切换到 Download 界面; b). Download界面选择固件包,点击start,等待烧录下载; c). 重启模块或者使用指令"AT$MYDOWNLOAD=1"使模块自动进入下载模式,即可通过USB进行下载。 **备注:Download界面不要勾选“Production mode”,勾选后烧录会擦除模块内IMEI、SN、以及射频校准参数。** 5. **调试测试**:通过串口连接模块调试端口或者使用CATStudio工具,观察启动日志并进行交互测试 ### 5.2 编译命令示例 ```shell 1. 编译 build.bat -c 1605c -t socket -autopkg A09 sample\example_base 2. 清空编译 build.bat -c 1605c -t socket -autopkg A09 sample\example_base clean 3. 指定芯片型号 "-c",用于指定芯片型号,:1603c、1605c、1605s、1606l、1606c、1606s 4. 指定编译类型 "-t",用于指定软件功能,:socket、usbnet、audio、sms、tiny、volte 1). socket: 支持socket, gpio, uart, i2c, spi, adc, powerkey, fota(仅支持http) ; 2). usbnet: 支持socket, gpio, uart, i2c, spi, adc, powerkey, fota(仅支持http), rndis/ecm ; 3). audio: 支持socket, gpio, uart, i2c, spi, adc, powerkey, fota(支持https), tts, mp3, ppp, rndis/ecm; 4). sms: 支持socket, gpio, uart, i2c, spi, adc, powerkey, fota(支持https), sms, ppp, rndis/ecm; 5). tiny: 支持socket, gpio, uart, i2c, spi, adc, powerkey, fota(支持https), ppp, rndis/ecm; 6). volte: 支持socket, gpio, uart, i2c, spi, adc, powerkey, fota(支持https), sms, ppp, rndis/ecm, volte; -- 1603c支持的编译类型:volte、audio -- 1605c支持的编译类型:socket、usbnet -- 1605s支持的编译类型:audio、sms、tiny -- 1606l支持的编译类型:socket、usbnet -- 1606c支持的编译类型:volte、audio -- 1606s支持的编译类型:volte 5. 指定模块型号自动打包 "-autopkg",用于指定自动打包的模块型号:KE7SA、KE7EU、A09、A19EU、A19EV、A19NA、A19NE、A19SA、A19JP、MV9、LV9、B09、B19EU、B19EA 6. 第三方库编译使用 mqtt 和 mbedtls 以源码形式开放,存放在core目录下,使用可以参照mqtt对应demo中的makefile。 ``` ## 6. 应用架构(参考sample\example_base) ### 6.1 程序入口 - **主函数**:`main()` 是应用的入口函数,通常仅进行必要的初始化操作 - **任务创建**:建议在 `main()` 中创建新的任务(Task)来处理用户业务逻辑 - **执行时机**:`main()` 在模块初始化阶段被调用,此时网络服务尚未可用,需要等待网络初始化完成,参照demo中`wait_network_ready()`函数。 ### 6.2 应用任务 - **任务函数**:`base_task()` 或其他自定义任务函数,用于运行用户业务逻辑 ## 7. 调试与日志 ### 7.1 日志输出 - **输出接口**:默认通过 UART 输出调试信息 - **启动日志**:模块启动时会输出 boot 日志,便于诊断启动过程 - **应用日志**:应用可通过 `Makefile`的`CFLAGS`定义日志输出 - `__LOG_UART__` 日志输出到调试串口 - `__LOG_ACAT__` 日志输出到CATStudio,需要匹配的MDB文件在: `tools\aboot\images\prebuilt\160x\cp_160x` ### 7.2 常见问题排查 #### 无启动日志 1. **检查串口连接**:确认连接的是调试串口(通常为 UART1) 2. **检查电平匹配**:模块调试串口为 1.8V 电平,需使用电平转换器或兼容的调试器 3. **检查波特率**:默认波特率为 115200bps,N-8-1(无校验,8 数据位,1 停止位) #### 无网络连接 1. **检查 SIM 卡**:确认 SIM 卡已正确插入且未被锁定 2. **检查天线连接**:确认天线已正确连接且阻抗匹配良好 3. **检查 APN 配置**:根据实际网络环境确认是否需要指定APN,现在大部分SIM卡不需要特殊配置APN,使用网络下发的APN即可。 ## 8. 开发注意事项 ### 8.1 可用存储 ```shell APP可用RAM空间 (1). 静态分配空间: 包含:代码区(.text)‌、常量区(.rodata)、‌全局静态区‌(.data,.bss) (2). 空闲Heap: 该空间app和系统共用,手动管理(如malloc/free)‌,最好控制剩余空间不要小于100KB,如使用RNDIS/ECM尽可能剩余更多以满足带宽需求。 APP可用ROM空间 (1). APP分区: 用于存放app.bin镜像的flash分区大小。 (2). NVM分区:文件系统分区,空闲空间用于存储系统文件以及app配置文件,以及存储app单独升级时的fota包,系统差分升级时文件系统可能会被擦除。 (3). APPNVM分区:默认都是12KB,用于存储app需要永久保存的参数(example_hal\hal_flash.c),系统差分升级时也不会擦除。 ----------------------------------------------------------------------------------------------- | project | APP静态空间 | 空闲Heap | APP分区 | NVM分区 | APPNVM分区 | ----------------------------------------------------------------------------------------------- | 1603c_volte (8MB RAM + 8MB Flash) | 384KB| 1600KB| 280KB| 380KB| 12KB| ----------------------------------------------------------------------------------------------- | 1603c_audio (8MB RAM + 8MB Flash) | 384KB| 1600KB| 180KB| 300KB| 12KB| ----------------------------------------------------------------------------------------------- | 1605c_socket(4MB RAM + 2MB Flash) | 256KB| 380KB| 168KB| 252KB| 12KB| ----------------------------------------------------------------------------------------------- | 1605c_usbnet(4MB RAM + 2MB Flash) | 160KB| 350KB| 156KB| 220KB| 12KB| ----------------------------------------------------------------------------------------------- | 1605s_audio (4MB RAM + 4MB Flash) | 512KB| 1200KB| 260KB| 260KB| 12KB| ----------------------------------------------------------------------------------------------- | 1605s_sms (4MB RAM + 4MB Flash) | 512KB| 1100KB| 400KB| 600KB| 12KB| ----------------------------------------------------------------------------------------------- | 1605s_tiny (4MB RAM + 4MB Flash) | 1024KB| 900KB| 600KB| 900KB| 12KB| ----------------------------------------------------------------------------------------------- | 1606l_socket(4MB RAM + 2MB Flash) | 128KB| 350KB| 160KB| 200KB| 12KB| ----------------------------------------------------------------------------------------------- | 1606l_usbnet(4MB RAM + 2MB Flash) | 64KB| 350KB| 140KB| 180KB| 12KB| ----------------------------------------------------------------------------------------------- | 1606c_volte (4MB RAM + 4MB Flash) | 128KB| 400KB| 260KB| 300KB| 12KB| ----------------------------------------------------------------------------------------------- | 1606c_audio (4MB RAM + 4MB Flash) | 320KB| 1200KB| 180KB| 220KB| 12KB| ----------------------------------------------------------------------------------------------- | 1606s_volte (8MB RAM + 8MB Flash) | 2048KB| 3000KB| 1500KB| 1700KB| 12KB| ----------------------------------------------------------------------------------------------- 备注:如果遇到RAM或者FALASH空间稍有不足的情况,可以联系FAE根据具体需求做适当的调整。 ``` ### 8.2 C 标准库支持 通过在 Makefile 中添加 `USE_LIBC=yes` 来启用 C 标准库。启用后可以使用标准 C 库函数,注意: - 内存管理函数(`malloc()`/`free()`)始终可用,由系统OS提供,不占用APP可用RAM - 可以不启用C 标准库,生成的应用Bin文件明显变小 - 启用 `USE_LIBC=yes` 时,应同时启用 `USE_NANO=yes` ### 8.3 生产模式检测 在生产环境中,必须检测模块是否处于生产测试模式(无需原厂使用自定义固件生产的可以忽略): - **检测方法**:通过 `dev_IsProductionMode()` API 进行判定 - **安全控制**:模块默认非生产模式,生产时通过USB发送AT*PROD=1进入生产模式,建议开机15s内不要进行重启、关机、禁用USB、飞行模式等操作。 - **模式切换**:重启后自动退出生产模式 ### 8.4 应用版本号管理 为便于生产管理和版本追溯,必须设置应用版本号(无需原厂使用自定义固件生产的可以忽略): - **设置方法**:通过 `dev_SetAppVersion()` API 设置版本号 - **读取方法**:可通过 AT 命令 `AT+APPVER` 读取已设置的应用版本号 - **版本格式**:可以使用语义化版本号(如 "1.0.0"),提供固件给原厂生产时用于区分版本号 ### 8.5 版本发布流程 1. **编译生成**:编译生成 app.bin 文件 2. **固件打包**:自动打包 *.zip 文件在 out 目录下 3. **版本归档**:提供固件给原厂生产时需要提供: - *.zip 文件 - *_MDB.txt 文件 (原厂生产时校准测试需要使用,存放在 `tools\aboot\images\prebuilt\160x\cp_160x` 对应目录下) ### 8.7 其他注意事项 ```shell 1. 参照《Gitee仓库订阅指南.pdf》通过邮箱或者微信订阅仓库,SDK如有重大更新需要通过到客户,会通过邮件或者微信及时通知。 2. 关注下《开发注意事项.pdf》中的注意事项。 3. 关注下《ReleaseNotes.txt》中的更新记录。 ```