开发入门¶
代码简介¶
软件目录¶
| 目录 | 介绍 | 
|---|---|
| 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: 
- 可选
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 文件即可。
