开发入门
代码简介
软件目录
目录 | 介绍 |
---|---|
api | 功能 api 接口 |
bsp | 底层代码,适配不同硬件(一般不需要了解) |
components | 功能组件,例如 http,mqtt,json 等 |
demo | 样例代码,api 或者功能组件的代码样例 |
doc | 帮助文档,api 文档或者工具使用说明等 |
project | 工程构建文件,每个文件表示一个代码工程 |
out | 中间文件,编译自动产生 |
tools | 工程构建过程中使用的工具或脚本集合 |
系统启动流程
系统启动后,首先执行 RomeCode,检查是否需要进入下载模式,如果没有进入下载,就跳入正常程序执行。正常程序依次执行三个部分:
- 1、bootloader
- 2、bsp
- 3、app
其中 app 为 yopen 应用程序,入口函数app_main
位于bsp\EC7XX\app_main.c
文件中,这部分逻辑默认启动了位于Image$$LOAD_APP_TABLE
区域的多个 demo 程序。可以根据自身需求做修改,但不能在这个函数中执行阻塞操作,这样会造成整个系统阻塞。建议在这里做一些初始化程序,然后创建 task,再做相应业务。
static void applicationsStartup(void)
{
u32 appRegItemNum = (appRegItem_t *)(&(Image$$LOAD_APP_TABLE$$Limit)) - (appRegItem_t *)(&(Image$$LOAD_APP_TABLE$$Base));
appRegItem_t * appRegTable = (appRegItem_t *)(&(Image$$LOAD_APP_TABLE$$Base));
u32 itemIdx = 0;
for(; itemIdx < appRegItemNum; itemIdx++)
{
yopen_task_t appTaskRef = NULL;
yopen_rtos_task_create(&appTaskRef, appRegTable[itemIdx].stack_size_byte, YOPEN_APP_TASK_PRIORITY, appRegTable[itemIdx].app_name, appRegTable[itemIdx].app_entry, appRegTable[itemIdx].arvg);
}
}
int app_main(void *argv)
{
applicationsStartup();
return 1;
}
主工程文件
主工程文件位于project
目录下的xx.cmake
文件,这个文件作为 cmake 的主要配置文件,告知 cmake,该工程需要的相关配置,下面是demo.cmake
工程文件:
#####################################
#### 宏定义
#####################################
# add_compile_definitions(DEFINE_MACRO_TEST
# PAHO_MQTT_STATIC
# NO_PERSISTENCE
# HIGH_PERFORMANCE
# )
#####################################
#### 编译模块
#####################################
add_subdirectory(demo)
add_subdirectory(bsp/${YOPEN_BSP})
#####################################
#### 头文件
#####################################
# target_include_directories(${target} PRIVATE dir)
主要包含三个部分:
目录 | 介绍 |
---|---|
宏定义 | 全局宏定义,各个模块的宏定义也可以在各个模块中添加。 |
编译模块 | 工程需要参加编译的模块,其中bsp/${YOPEN_BSP} 为必选模块,每个模块就是一个目录,对应目录下需要包含CMakeLists.txt 文件。 |
头文件 | 全局依赖的头文件,各个模块也可以添加自己需要依赖的头文件。 |
demo介绍
demo | 介绍 | 主要功能 |
---|---|---|
demo_adc.c | ADC功能 | ADC0 获取的电压值ADC1 获取的电压值ADC TEMP 获取温度值ADC VBAT 获取供电电压 |
demo_datacall.c | PDP功能 | 获取默认PDPPDP激活 |
demo_debug.c | 调试相关接口代码示例 | 设置log等级获取log等级获取heap使用情况设置/获取 死机调试状态 |
demo_dev.c | 设备信息获取 | 获取IMEI获取SN获取版本号设置飞行模式 |
demo_fota.c | fota功能 | 通过http服务器,获取差分固件,并完成升级重启 |
demo_fs.c | 文件系统功能 | 打开、关闭文件文件读写文件重命名文件是否存在 |
demo_gpio.c | gpio功能 | GPIO2输入、输出、中断GPI_1(wakeup1)中断 |
demo_hello.c | 一秒输出一次日志 | |
demo_i2c.c | I2C功能 | 通过I2C0 读取 AHT10温度传感器 温度 |
demo_nw.c | 网络功能 | 获取网络状态获取CSQ、RSQP、RSRQ等信号强度获取当前小区信息获取临小区信息手动选网 |
demo_os.c | 操作系统接口功能 | semaphore使用queue使用timer使用task使用 |
demo_power.c | 低功耗功能 | 低功耗功能演示,重复循环:5分钟休眠,工作10秒。可以通过代码配置sleep1、sleep2休眠 |
demo_pwm.c | pwm功能 | pwm功能 |
demo_rtc.c | 系统时间 | 获取系统时间设置系统时间 |
demo_sim.c | SIM功能 | 获取SIM卡状态获取IMSI、ICCID、phoneNumber |
demo_socket.c | socket功能 | 连接tcp服务器,进行数据收发 |
demo_spi.c | SPI功能 | SPI0 通道数据收发 |
demo_uart.c | UART功能 | UART1 数据回显UART2 数据回显 |
demo_usb.c | usb功能 | usb禁用、使能usb插拔检测 |
demo_usbnet.c | USB网卡 | 设置USB网卡类型(RNDIS、ECM切换) |
demo_tts.c | tts功能 | 播放tts文本 |
demo_ril | ril功能 | 通过虚拟通道处理AT指令 |
代码编译 {#代码编译}
编译环境依赖两个工具,需要提前安装好:
- 1、python3(已经验证过的版本 python3.12.5、3.8.5,其他版本如有问题请反馈 FAE)
- 2、arm-gcc 交叉编译器
将提供的 arm-gcc 交叉编译器复制到 C 盘,修改gcc-arm-none-eabi-10-2020-q4-major
文件名为gcc
,确保 CMake 可以通过c:\gcc\bin\arm-none-eabi-gcc
访问到编译。目录结构如下:
C:\gcc\bin\arm-none-eabi-gcc.exe
相关安装步骤和细节,也可以参考工程下的[README.MD](../README.md)文件中的内容。
默认编译
准备好编译环境后,就可以通过命令行运行build.bat
进行编译:
编译成功后就会有如下显示:
选择工程编译
build.bat
默认使用YM310_X90S.U62 demo
作为默认参数,也支持通过添加参数,编译不同bsp_module
和project
项目,参数格式如下:
## 编译参数:
build.bat [bsp_module] [project]
## 举例:
build YM310_X09C.S60 demo
build YM310_X09S.U62 demo
- 可选
bsp_module
:
bsp_module | 对应脚本(bsp/EC7XX 目录) | 功能描述 | 适用模组型号 |
---|---|---|---|
YM310_X09C.S60 | YM310_X09C.S60.cmake | 基础数传 | YM310_X09ACNCX / YM310_X09ACNCL |
YM310_X09C.S61 | YM310_X09C.S61.cmake | 在 YM310_X09C 基础上,增加了 USB 口基础 AT 指令支持 | YM310_X09ACNCX / YM310_X09ACNCL |
YM310_X09S.U62 | YM310_X09S.U62.cmake | YM310_X09C.S61基础上,增加USB网卡,WIFI SCAN, SMS等功能,FLASH空间更大 | YM310_X09ACNSX / YM310_X09ACNSL |
- 可选
project
:
project | 对应脚本(project 目录) | 功能描述 |
---|---|---|
demo | demo.cmake | yopen 提供的 api 接口的使用示例 |
mbedtls | mbedtls.cmake | mbedtls 功能组件 |
mqtt | mqtt.cmake | mqtt 功能组件 |
软件下载{#软件下载}
开发板
USB驱动安装
win10 及以上系统,不用安装驱动;win7 及以下,需要安装 usb 转串口驱动,驱动文件usb_win7_driver.rar
,可以找 FAE 提供。
软件下载
开发板通过 USB 连接 PC,按住下载键,并按下重启键,设备管理器会出现下图的下载端口:
FlashTools
工具会自动识别该 USB 口,选择编译好的固件 XX_USB.ini 文件out\xxxx\YopenApp_USB.ini
(注意:不要选择 YOpenApp_UART.ini),点击Download
进行下载,下载完成后,在下方日志窗口中会显示下载成功。
软件调试
log抓取
将设备通过 USB 或者串口连接到 PC,打开EPAT
工具抓取 log。软件默认配置:开机初始化从DBG串口
输出,USB 枚举后从 USB 口输出日志。如果需要修改配置可以通过yopen_log_port_set
接口进行配置。EPAT
工具操作步骤入下:
- 1、选择 Device Communication
- 2、设置端口为对应端口,波特率 3000000。
- 3、确认 log 为播放状态
- 4、更新 db 文件
- 5、db 文件匹配成功,按钮变绿
log保存
抓取 log 后,可以通过保存功能将 Log 保存到 PC,以供后续问题分,log 相关内容会自动打包成一个压缩包。
log回放
打开 EPAT 工具,选择Selected From Local File
进行本地播放,打开之前保存的 zip 文件即可。