# yopen
**Repository Path**: yuge-info/yopen
## Basic Information
- **Project Name**: yopen
- **Description**: 该开源项目用于YM310_X09系列模块二次开发,针对AT软件无法满足要求,或者想省去MCU单片机的客户而设计的
- **Primary Language**: Unknown
- **License**: MIT
- **Default Branch**: main
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 8
- **Forks**: 3
- **Created**: 2025-03-12
- **Last Updated**: 2025-12-10
## Categories & Tags
**Categories**: hardware
**Tags**: None
## README
# 项目介绍
该开源项目用于YM310_X09/X19系列模块二次开发,针对AT软件无法满足要求,或者想省去MCU单片机的客户而设计的。
# 如何开发
## 环境准备
* windows环境(建议win10或以上)版本
* 安装python3
* arm-gcc交叉编译器
* YM310_X09/X19系列模组以及USB线等硬件环境
## 开发工具
* 固件下载工具([FlashTools](bsp/EC7XX/kernel/PLAT/tools/FlashTools_V4.1.16_041028.zip))
* 抓日志工具([EPAT](bsp/EC7XX/kernel/PLAT/tools/EPAT_V1.3.265.576.zip))
## 安装交叉编译器
* 下载交叉编译器gcc-arm-none-eabi-10-2020-q4-major,[ARM官方下载链接](https://armkeil.blob.core.windows.net/developer/Files/downloads/gnu-rm/10-2020q4/gcc-arm-none-eabi-10-2020-q4-major-win32.zip)。
* 编译器解压到C盘,修改`gcc-arm-none-eabi-10-2020-q4-major`文件名为`gcc`,确保CMake可以通过`c:\gcc\bin\arm-none-eabi-gcc`访问到编译,目录结构如下:
```
C:\gcc\bin 的目录
2024/07/31 12:15 780,288 arm-none-eabi-addr2line.exe
2024/07/31 12:15 802,304 arm-none-eabi-ar.exe
2024/07/31 12:15 1,377,792 arm-none-eabi-as.exe
2024/07/31 12:15 2,112,512 arm-none-eabi-c++.exe
2024/07/31 12:15 777,728 arm-none-eabi-c++filt.exe
2024/07/31 12:15 2,110,464 arm-none-eabi-cpp.exe
2024/07/31 12:15 34,304 arm-none-eabi-elfedit.exe
...
```
## 编译
打开cmd命令行,运行`build.bat`脚本,编译成功会显示如下字段
```bash
#######################################################################
## ######## ### ###### ######
## ## ## ## ## ## ## ## ##
## ## ## ## ## ## ##
## ######## ## ## ###### ######
## ## ######### ## ##
## ## ## ## ## ## ## ##
## ## ## ## ###### ######
#######################################################################
build successfully
[100%] Built target YOpenApp
```
## 选择工程编译
`build.bat`脚本支持通过添加参数,编译不同`bsp_module`和`project`项目,参数格式如下:
```bash
## 编译参数:
build.bat [bsp_module] [project]
## 举例:
build YM310_X09C.S60 demo
build YM310_X09S.U62 demo
```
* 可选`bsp_module`:
|bsp_module | 对应脚本(bsp/EC7XX目录) | 功能描述 | 硬件系列|
|:----------- | :----- | :--------------------- | :--------------------- |
|YM310_X08C.S60|YM310_X08C.S60.cmake|基础数传|X08C系列|
|YM310_X08C.S61|YM310_X08C.S61.cmake|YM310_X08C.S60基础上,增加了USB口以及基础AT指令支持|X08C系列|
|YM310_X08C.W60|YM310_X08C.W60.cmake|YM310_X08C.S60基础上,增加WIFISCAN功能|X08C系列|
|YM310_X09C.S60|YM310_X09C.S60.cmake|基础数传|X09C系列|
|YM310_X09C.S61|YM310_X09C.S61.cmake|YM310_X09C.S60基础上,增加了USB口以及基础AT指令支持|X09C系列|
|YM310_X09C.W60|YM310_X09C.W60.cmake|YM310_X09C.S60基础上,增加WIFISCAN功能|X09C系列|
|YM310_X19C.S60|YM310_X19C.S60.cmake|基础数传|X19C系列|
|YM310_X19C.S61|YM310_X19C.S61.cmake|YM310_X19C.S60基础上,增加了USB口以及基础AT指令支持|X19C系列|
|YM310_X19C.W60|YM310_X19C.W60.cmake|YM310_X19C.S60基础上,增加WIFISCAN功能|X19C系列|
|YM310_X08S.U62|YM310_X08S.U62.cmake|YM310_X08C.S61基础上, USB网卡,WIFI SCAN, SMS等功能,FLASH空间增加2MB|X08S系列|
|YM310_X09S.U62|YM310_X09S.U62.cmake|YM310_X09C.S61基础上, USB网卡,WIFI SCAN, SMS等功能,FLASH空间增加2MB|X09S系列|
|YM310_X19S.U62|YM310_X19S.U62.cmake|YM310_X19C.S61基础上, USB网卡,WIFI SCAN, SMS等功能,FLASH空间增加2MB|X19S系列|
|YM310_W09C.A60|YM310_W09C.A60.cmake|全功能|W09C系列|
|YM310_W09S.A60*|YM310_W09S.A60.cmake|全功能+VOLTE通话|W09S系列|
* 可选`project`:
|project | 对应脚本(project目录)| 功能描述 |
|:----------- | :------ | :--------------------- |
|demo|demo.cmake|yopen提供的api接口的使用示例|
|mbedtls|mbedtls.cmake|mbedtls功能组件|
|mqtt|mqtt.cmake|mqtt功能组件|
|ai_xxx|ai_xxx.cmake|ai功能组件|
|aliyun|aliyun.cmake|接入aliyun|
|audio_loop|audio_loop.cmake|音频循环播放|
|gps|gps.cmake|GPS定位|
|httpclient|httpclient.cmake|http客户端demo|
|lbs|lbs.cmake|基站定位|
|lcd|lcd.cmake|lcd显示|
|lwm2m|lwm2m.cmake|lwm2m协议demo|
|mqtt|mqtt.cmake|mqtt协议demo|
|norflash|norflash.cmake|norflash驱动|
|ntp|ntp.cmake|ntp协议demo|
|opus|opus.cmake|opus音频编码解码|
|pipe|pipe.cmake|读写管道demo|
|player|player.cmake|音频播放demo|
|recorder|recorder.cmake|录音demo|
|sd|sd.cmake|sd卡驱动|
|ui|ui.cmake|ui组件|
|websocket|websocket.cmake|websocket协议demo|
|wifilocate|wifilocate.cmake|wifi定位|
|ws2812|ws2812.cmake|ws2812 led驱动|
## 下载固件
通过`FlashTools`工具下载`out\YOpenApp.binpkg`文件,相关下载操作步骤参考`FlashTools`工具说明
## 查看运行效果
通过`EPAT`日志工具,抓取`demo_hello`工程运行日志,可以看到运行结果如下:一秒打印一次`hello _demo_thread cnt-x`

# 工程介绍
工程代码用cmake进行构建,make进行编译,工程相关配置可以参考`project\demo_hello.cmake`工程文件。
## 代码目录介绍
|目录 | 介绍 |
|:----------- | :---------------------:|
|api|功能api接口|
|bsp|底层代码,适配不同硬件(一般不需要了解)|
|components|功能组件,例如http,mqtt,json等|
|demo|样例代码,api或者功能组件的代码样例|
|doc|帮助文档,api文档或者工具使用说明等|
|project|工程构建文件,每个文件表示一个代码工程|
|out|中间文件,编译自动产生|
|tools|工程构建过程中使用的工具或脚本集合|
## 入口函数
应用代码入口函数`app_main`位于`bsp\EC7XX\app_main.c`文件中。
## API接口
接口声明在`api`目录头文件中,详细说明在[Open_API文档中](doc/YOpen_API.chm)。
## 可用空间
|bsp_module | project| RAM* | ROM* | FS|FOTA|
|:----------- | :----- | :----- | :--------------------- | :--------------------- |:--------------------- |
|YM310_X09C.S60
YM310_X19C.S60
YM310_X08C.S60|demo|334KB| 330KB |48KB|192KB|
|YM310_X09C.S61
YM310_X19C.S61
YM310_X08C.S61|demo|331KB|154KB|48KB|192KB|
|YM310_X09S.U62
YM310_X19S.U62
YM310_X08S.U62|demo|328KB|813KB|976KB|464KB|
|YM310_W09C.A60|demo|3416KB| 766KB |848KB|272KB|
> 注意:
* RAM空间为实际malloc可用空间。所以不能全部用完,否则会导致malloc失败,出现系统异常
* ROM空间为实际代码剩余空间
* ROM和RAM大小统计,均基于`project/demo`项目,不同project会有差异。
## 如何添加自己的代码工程
添加之前需要简单了解CMake的基本语法,相关添加步骤可以参考doc目录下的[增加mqtt工程.md](doc/增加mqtt工程.md)文件。
# 开发指南
详细开发指南参考:[doc/YOPEN 开发指南](doc/YOPEN%20开发指南.pdf)