Skip to content

开发入门

代码简介

软件目录

目录 介绍
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进行编译:

USB描述符

编译成功后就会有如下显示:

USB描述符

选择工程编译

build.bat默认使用YM310_X90S.U62 demo作为默认参数,也支持通过添加参数,编译不同bsp_moduleproject项目,参数格式如下:

## 编译参数:
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描述符

USB驱动安装

win10 及以上系统,不用安装驱动;win7 及以下,需要安装 usb 转串口驱动,驱动文件usb_win7_driver.rar,可以找 FAE 提供。

软件下载

开发板通过 USB 连接 PC,按住下载键,并按下重启键,设备管理器会出现下图的下载端口:

USB描述符

FlashTools工具会自动识别该 USB 口,选择编译好的固件 XX_USB.ini 文件out\xxxx\YopenApp_USB.ini注意:不要选择 YOpenApp_UART.ini),点击Download进行下载,下载完成后,在下方日志窗口中会显示下载成功。

USB描述符

软件调试

log抓取

将设备通过 USB 或者串口连接到 PC,打开EPAT工具抓取 log。软件默认配置:开机初始化从DBG串口输出,USB 枚举后从 USB 口输出日志。如果需要修改配置可以通过yopen_log_port_set接口进行配置。EPAT工具操作步骤入下:

  • 1、选择 Device Communication

USB描述符

  • 2、设置端口为对应端口,波特率 3000000。

USB描述符

  • 3、确认 log 为播放状态

USB描述符

  • 4、更新 db 文件

USB描述符

  • 5、db 文件匹配成功,按钮变绿

USB描述符

log保存

抓取 log 后,可以通过保存功能将 Log 保存到 PC,以供后续问题分,log 相关内容会自动打包成一个压缩包。

USB描述符

log回放

打开 EPAT 工具,选择Selected From Local File进行本地播放,打开之前保存的 zip 文件即可。

USB描述符