news 2026/7/7 6:07:26

(域格) 移芯平台SDK 实现 VSIM 初始化与 TCP 长连接休眠

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
(域格) 移芯平台SDK 实现 VSIM 初始化与 TCP 长连接休眠

1、开发环境准备(这里直接参考域格资料中心

2、VSIM 初始化模块

VSIM(虚拟 SIM 卡)初始化是网络连接的前提,需要完成 AON 电源配置、SIM 检测引脚初始化和 VSIM 状态同步。域格sdk内部集成了vsim卡得库得,只需要调api就能注册vsim。

static void vsim_init_once(void) { yopen_aon_power_on(); yopen_gpio_init(SIM_DET_PORT, GPIO_INPUT, FORCE_PULL_UP, LVL_HIGH); vsim_init(); while (vsim_status_progress() != 100) { yopen_rtos_task_sleep_ms(1000); } }

关键 API 说明:

API功能说明
yopen_aon_power_on()开启 AON 电源域AON(Always On)域保证休眠期间关键外设供电
yopen_gpio_init()初始化 SIM 检测引脚使用 GPI_1 引脚,上拉输入模式
vsim_init()初始化 VSIM 模块启动虚拟 SIM 卡服务
vsim_status_progress()获取初始化进度返回 0-100,100 表示完成

注意事项:

我这里用得优克联VSIM虚拟卡,sdk需要对应编译项目修改cmake 文件。有对应三个vsim得配置

# vsim 配置

#set(VSIM_NAME "VSIM_TGT")

#set(VSIM_NAME "VSIM_YSM")

set(VSIM_NAME "VSIM_UC")

3、TCP 长连接模块

TCP 连接建立包括域名解析、Socket 创建、绑定本地端口和连接服务器四个步骤。

static int tcp_connect(void) { int ret, socket_fd = -1; struct sockaddr_in local4, server_ipv4; struct addrinfo *addr = NULL; ret = lwip_getaddrinfowithcid(TEST_SOCKET_SERVER, NULL, NULL, &addr, 1); if (!addr) return -1; socket_fd = socket(AF_INET, SOCK_STREAM, IPPROTO_IP); if (socket_fd < 0) goto fail; memset(&local4, 0, sizeof(local4)); local4.sin_family = AF_INET; local4.sin_port = 1000; bind(socket_fd, (struct sockaddr *)&local4, sizeof(local4)); struct sockaddr_in *sin_res = (struct sockaddr_in *)addr->ai_addr; memset(&server_ipv4, 0, sizeof(server_ipv4)); server_ipv4.sin_family = addr->ai_family; server_ipv4.sin_port = htons(TEST_SOCKET_TCP_PORT); server_ipv4.sin_addr = sin_res->sin_addr; ret = connect(socket_fd, (struct sockaddr *)&server_ipv4, sizeof(server_ipv4)); if (ret < 0) goto fail; freeaddrinfo(addr); return socket_fd; fail: if (addr) freeaddrinfo(addr); if (socket_fd >= 0) close(socket_fd); return -1; }

关键 API 说明:

API功能说明
lwip_getaddrinfowithcid()域名解析参数 cid=1 指定使用 PS 域进行解析
socket()创建 SocketAF_INET + SOCK_STREAM + IPPROTO_IP
bind()绑定本地端口绑定端口 1000,便于服务端识别
connect()连接服务器连接到指定 IP 和端口

3、 休眠配置模块

休眠配置是实现低功耗的核心,需要按照 禁止休眠 → 设置深度 → 允许休眠 的顺序操作

yopen_autosleep_enable(YOPEN_NOT_ALLOW_SLEEP); yopen_set_sleep_depth(YOPEN_SLP_SLP1_STATE); yopen_rtos_task_sleep_ms(5000); yopen_autosleep_enable(YOPEN_ALLOW_SLEEP);

4、完整代码

适用于物联网低功耗场景,模块在休眠状态下保持 TCP 长连接,可被网络数据或按键唤醒。

void sleep_key_demo_thread(void *arg) { int socket_fd; yopen_nw_reg_status_info_s nw_status; vsim_init_once(); do { yopen_nw_get_reg_status(0, &nw_status); yopen_rtos_task_sleep_ms(1000); } while (!(nw_status.data_reg.state == YOPEN_NW_REG_STATE_HOME_NETWORK || nw_status.data_reg.state == YOPEN_NW_REG_STATE_ROAMING)); socket_fd = tcp_connect(); if (socket_fd < 0) { yopen_rtos_task_delete(NULL); return; } yopen_autosleep_enable(YOPEN_NOT_ALLOW_SLEEP); yopen_set_sleep_depth(YOPEN_SLP_SLP1_STATE); yopen_rtos_task_sleep_ms(5000); yopen_autosleep_enable(YOPEN_ALLOW_SLEEP); while (1) { yopen_rtos_task_sleep_ms(60000); } close(socket_fd); yopen_rtos_task_delete(NULL); } application_init(sleep_key_demo_thread, "SLEEP_KEY", 12, 4, NULL);
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/7 6:04:08

变电所配电监控系统:3D可视化,打造智慧配电管控新模式

一、方案概述 变电所是电力输配体系的核心枢纽&#xff0c;承担着电能转换、分配、输送的关键职能&#xff0c;广泛服务于工业厂区、商业综合体、市政建筑、工业园区等场景。传统变电所运维长期依赖人工巡检、纸质记录、事后处置的模式&#xff0c;存在监测滞后、隐患难防、运维…

作者头像 李华
网站建设 2026/7/7 6:03:56

大模型:长期记忆的智能判断逻辑 MD5组件

补齐短板&#xff1a;长期记忆的智能判断逻辑 在面试中&#xff0c;你需要展示你不仅知道“长期记忆和短期记忆的区别”&#xff0c;还要知道“如何设计一个系统&#xff0c;让 Agent 自动决定该记住什么&#xff0c;该遗忘什么”。下面是一个完整的设计方案和代码实现&#xf…

作者头像 李华
网站建设 2026/7/7 6:02:07

如何在Windows上免费创建虚拟游戏手柄:vJoy终极配置指南

如何在Windows上免费创建虚拟游戏手柄&#xff1a;vJoy终极配置指南 【免费下载链接】vJoy Virtual Joystick 项目地址: https://gitcode.com/gh_mirrors/vj/vJoy 想要在Windows电脑上体验专业游戏手柄的控制感&#xff0c;却不想购买昂贵的硬件设备&#xff1f;vJoy虚拟…

作者头像 李华
网站建设 2026/7/7 6:01:49

AI图像生成分辨率配置指南与最佳实践

1. AI图像生成分辨率配置的核心概念在AI图像生成领域&#xff0c;分辨率配置直接决定了输出图像的质量和适用场景。分辨率通常以像素为单位表示&#xff0c;如10241024&#xff08;1K&#xff09;、20482048&#xff08;2K&#xff09;等。高分辨率图像包含更多细节&#xff0c…

作者头像 李华
网站建设 2026/7/7 6:01:22

一文读懂IEC61000-4-6:电子设备射频传导抗扰度核心标准详解

在智能化、电子化全面普及的当下&#xff0c;手机、工控设备、智能家居、医疗电子等各类电子产品无处不在。但很多人不知道&#xff0c;我们日常使用的电子设备&#xff0c;时刻都在面临射频电磁干扰的考验。电台、基站、无线设备发出的射频信号&#xff0c;会通过线缆传导渗透…

作者头像 李华