自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

tecoes的博客

本博客仅仅是作者对学习的一个记录,转载自网络的文章,如果有侵犯的权益请联系作者做一个声明~~~

  • 博客(628)
  • 收藏
  • 关注

原创 http错误码来自底层SDK的哪个头文件里面定义的

底层 API 头文件是 qurl_api.h:27-126,这里声明了 qurl_global_init()、qurl_core_create()、qurl_core_setopt()、qurl_core_perform() 等函数,返回类型都是 qurl_ecode_t。qurl_ecode_t 类型本身定义在 qurl_def.h:28。错误类型 typedef:qurl_def.h。返回这些错误的 API:qurl_api.h。错误值定义:qurl_code.h。主要看 qurl_code.h。

2026-03-16 14:50:39 9

原创 根目录下target.config跟customer.config脚本啥区别

B[target.config](http://_vscodecontentref_/9) + 根目录 [target.config](http://_vscodecontentref_/10) -> 最终 BINARY_TOP_DIR/target.config。不再拷贝 project 里的 target.config,直接使用 UniRTOS 根目录下的 target.config。先把 system.config + modem.config 合成一个临时 target.config。

2026-03-12 17:07:20 203

原创 英语中多介词的翻译

继上一篇介绍介词短语做后置定语还是后置状语问题后(),今天继续分析下句子中存在多个介词短语的句子成分分析。

2026-03-12 10:14:24 228

原创 If ConPTY is broken on this machine, disabling it often restores terminal,这句中on this machine是什么句子成分

表格。

2026-03-09 14:13:47 369

原创 vscode打不开终端窗口

vscode工具,创建新终端,按回车不出现命令行通过AI工具各种排查还是无法解决,看来AI智能也不是万能的。无意间关掉vscode,通过管理员权限启动,发现就可以正常打开终端窗口了,但是默认的是cmd.exe,不是powershell,用的不大习惯。修改工程下的.vscode隐藏文件夹里面的settings.json配置文件。

2026-03-07 16:29:20 386

原创 原理图网络编号的作用

在画原理图时,,但它们在电路设计中各司其职,配合使用。

2026-03-02 11:27:10 274

原创 AT9880B GNSS 芯片 的引脚功能

【代码】AT9880B GNSS 芯片 的引脚功能。

2026-03-02 10:07:48 750

原创 git log查看版本的提交信息

如果你想完全控制显示的列(例如只要哈希值和标题),可以使用--pretty。# 使用预定义的格式git log --pretty=short # 简短git log --pretty=full # 完整git log --pretty=oneline # 单行# 自定义格式 (%H: 完整哈希, %h: 短哈希, %an: 作者名, %ar: 相对时间, %s: 标题)我想做什么推荐命令随便看看历史看分支合并情况看某个文件谁改过git log --oneline -- 文件名看最近 3 次提交。

2026-02-28 09:45:40 290

原创 C语言中高效处理JSON数据

cJSON 是一个轻量级、开源的 C 语言 JSON 解析器和生成器,由 Dave Gamble 开发。它仅依赖标准 C 库,代码简洁、易于集成,非常适合用于嵌入式系统或对性能要求较高的场景。通过 cJSON,你可以轻松地将 JSON 字符串转换为 C 结构,或将 C 数据结构序列化为 JSON 字符串。通过本教程,你已经掌握了cJSON库使用教程的核心内容,包括如何解析和生成 JSON 数据。无论你是做C语言JSON解析、开发嵌入式设备,还是学习cJSON入门指南,cJSON 都是一个强大而简单的工具。

2026-02-27 09:39:03 575

原创 https post请求报了400 bad request错误

现象:你在 demo 启动前打印的请求头显示为一行:Accept: */*Content-Type: application/json(缺少行间 CRLF),但在代码里 DEMO_LBS_HTTPS_HEADERS 是用 \r\n 正确分行的。请求体格式(JSON)不满足服务端 API 要求(字段缺失 / 字段类型错误 / 转义问题),服务端在语义层返回 400。

2026-02-26 09:52:43 444

原创 ThinkBook 15 G2 ITL vs ThinkPad P16v 2025

表格维度结论性能差距P16v 全面领先,CPU多核性能约3-4倍,显卡约2-3倍价格差距P16v 约是 ThinkBook 的2.3倍定位差异ThinkBook=中小企业商务本,P16v=专业移动工作站您的设备状态已使用约5年,适合轻度办公,专业任务建议升级企业建议分层管理:专业岗换P16v,轻度岗可继续用ThinkBook。

2026-02-21 23:41:20 728

原创 LVGL定时器中几个问题

lv_timer_ready() 不会调用 lv_timer_handler(),它只是改了 timer1 的内部时间戳(last_run),让 timer1 在“下一次 lv_timer_handler() 执行时”被判断为“已经到期”,从而立刻执行一次回调。会影响是正常的,因为 lv_timer_get_idle() 统计的不是“某一个 timer 的空闲”,而是 整个 LVGL 定时器系统(更准确说:lv_timer_handler() 这条处理链)在最近一段时间内的空闲百分比。

2026-02-21 23:16:10 835

原创 LVGL 事件冒泡机制

你把回调用 lv_obj_add_event_cb(obj1, my_event_cb, LV_EVENT_ALL, label);你代码里把 lv_event_get_current_target(e) 存到 parent 变量,其实更准确叫 “current_target/当前目标”,它在这里是 obj1,不一定是 lv_event_get_target(e) 的“直接父对象”。你只在 obj1 上注册了 my_event_cb,所以最终在 obj1 这一层,才会调用到你的 my_event_cb。

2026-02-21 21:32:38 860

原创 怎么打开指定目录下的powershell

在 Windows 中,有几种方法可以在。

2026-02-14 10:23:17 513

原创 C++ 中什么时候用::(作用域解析运算符)

必须用的场景:访问类的静态成员、嵌套类型 / 枚举,指定基类 / 命名空间作用域,区分被隐藏的成员;必须用->的场景:访问类实例的非静态成员(用于对象,->用于指针);核心逻辑关联 “类型本身”,->关联 “类型的具体实例”,二者不可混淆替换。

2026-02-08 09:30:57 418

原创 GD32F103C8T6每个引脚介绍和整理

✅GD32F103C8T6 与 STM32F103C8T6 引脚完全兼容,可硬件直插替换。⚠️但软件需适配(尤其是时钟、USB、延时),不可盲目烧录 STM32 二进制文件。如果您已有 STM32 的 PCB 设计,想换成 GD32 以降低成本或提升性能,这是常见且可行的做法,只需注意上述细节即可。

2026-02-06 09:52:57 973

原创 ThinkPad T14 Gen 2与T14P系列对比

表格您的需求推荐机型日常办公、出差、文档处理、视频会议✅(够用、轻便、便宜)视频剪辑、3D建模、编程编译、AI训练、高色准设计✅(性能强、屏幕好、扩展佳)想要未来 5 年不换机✅T14p预算低于 5000 元✅T14 Gen 2(或考虑 T14 Gen 3/4)T14p 2025 款 ≠ 小改款,而是架构级升级它从“高性能笔记本”进化为“AI 移动工作站”,核心差异在于NPU + Ultra 平台 + 全面屏显 + 超长续航。如果您从事AI 开发、视频创作、工程仿真、多任务编程。

2026-02-04 22:32:13 1196

原创 怎么查询联想笔记本型号

型号(MTM)20VE→序列号(S/N)MP206AX4处理器:Intel Core i7-1165G7(第11代)显卡内存:16 GB存储:512 GB NVMe SSD(三星 MZALQ512HALU)这些信息完全符合的高配版本(带独显 MX450)。表格项目规格屏幕尺寸14 英寸(16:10)分辨率1920 × 1080(FHD,非触控)整机重量约 1.5 公斤厚度17.9 毫米这款笔记本在性能与便携性之间取得了良好平衡,适合移动办公、出差携带。

2026-02-04 22:17:48 633

原创 通过postman工具测试一个https post请求

Qwen3-Max。

2026-02-04 09:55:58 367

原创 使用全局标志位在单片机中好处

你前面代码里 http_deinit() 会在持锁后检查 busy 再决定是否 qurl_global_deinit()。如果你后续确实需要并发 HTTP,更推荐把 busy 从“全局单例互斥”升级为“引用计数 + deinit 等待归零”或“允许并发但仅禁止 deinit”,看你对 QURL 的线程安全把握程度。加 g_qos_http_busy 的核心好处:把整个 oshttp 适配层变成“同一时刻只允许一个 HTTP 请求在跑”的串行模型,从而把并发风险压到最小。

2026-02-03 11:26:01 162

原创 雅讯SDK 怎么确认测试的每个http方法是否成功

成功:收到 ADP_HTTP_CB_EVENT_RSP_END / ADP_HTTP_CB_EVENT_DOWNLOAD_END,并且 progress.resp_code 为 200(或业务期望码)。像这样的接口是阻塞的还是非阻塞的,比如ADP_HTTP_Request,怎么确认测试的每个http方法是否成功。当前用 s_test_finish/s_retry 的机制就是等回调判定成功/失败。失败:收到 ADP_HTTP_CB_EVENT_ERROR。,等待循环立即退出,流程结束。

2026-02-02 13:29:10 312 1

原创 git查看文件及提交记录命令

git diff 文件名(核心命令);git diff --staged 文件名;git diff 版本号 文件名(或git log -p 文件名看提交维度的修改)。如何使用 Git 查看文件的历史修改记录?你想系统地了解如何用 Git 查看文件的历史修改记录,这能帮你追溯文件的变更轨迹、定位问题代码的引入版本,我会按「快速概览」「详细改动」「高级筛选」三个维度给出实用命令。git log --oneline 文件名;git log -p 文件名(最常用);筛选 / 精简记录:用-N。

2026-01-17 15:56:28 600

原创 git单独回退一个文件命令

未暂存的文件:直接用git restore 文件名(或git checkout -- 文件名)回退;已暂存的文件:先执行git restore --staged 文件名撤销暂存,再回退工作区;已提交的文件:用git checkout 目标版本 -- 文件名回退到指定历史版本。

2026-01-17 15:44:38 383

原创 CMakeLists.txt配置编译和链接C文件范围

如果只修改C文件代码,比如用extern引用一下是不行的,会报链接错误。你要“强制链接 demo”,就必须把 YX_FS_Demo 的实现文件一起编译进 YXAPP(或链接进最终镜像)同时把 ../demo/inc 加进 target_include_directories(因为 demo_fs.c 里 #include "app_include.h"。,用于定义项目的构建规则(编译、链接、依赖等)),这边想把另一个目录下的源文件内容编译到本目录。# 查找 ../aima 目录下所有的 .c 文件。

2026-01-17 13:58:03 324

原创 WiFi扫描使用的结构体-qosa_wifi_ap_info_t与qosa_wifiscan_config_t

结构体专门用于存储单次 WiFi 扫描中发现的单个 AP(无线接入点)的详细信息结构体字段作用bssid[6]存储 AP 的 MAC 地址(BSSID)channel存储 AP 工作的信道编号rssival存储 AP 的信号强度(单位 dBm)ssid_len存储 AP 的 SSID(名称)长度ssid[33]存储 AP 的 SSID(最多 32 字节 + 结束符)reserve预留字段,为扩展兼容设计WiFiSCAN 是扫描功能的实现主体,负责执行扫描动作、管理扫描参数、处理扫描流程;

2026-01-14 09:00:37 467

原创 file_demos CMakeLists.txt

target_link_libraries_if 也是工程自定义的宏/函数(类似 if(...) target_link_libraries(...) endif() 的封装)。:如果配置项 CONFIG_OSA_LINK_SYSTEM_LIBRARIES_FUNC 为真,就让 file_demo 链接 system_os 库。同理:如果 CONFIG_QCM_FILE_API_FUNC 开启,就链接 qcm_file 库(提供文件相关 API/实现)。创建一个名为 file_demo 的静态库目标。

2026-01-13 13:50:54 419

原创 移远SDK qos_app_init.c文件分析

也就是说:main_entry →(注册)→ 系统回调调度 → appInit → qosa_system_jump_app → qosa_app_boot/qosa_app_main → 最终进入你 app.bin 的 qos_app_preboot/ql_app_main。因为 appInit 作为“系统应用入口”被调度运行后,才去读取配置/获取 qosa_get_app_addr(),然后 b.w qosa_system_jump_app。

2026-01-13 11:30:14 485

原创 移远SDK ql_app_pre_init.c文件解析(二)

我先把你当前文件完整读出来(分段),然后按“每一段代码块/关键语句”逐行解释:包括 .ql_app_entry 的作用、qos_app_preboot() 参数来自哪里、以及 m_get_api_ptr/virtual_func_tbl 与 vAPITable 的对应关系。引入 open-mode 的关键结构体/宏:QUEC_OPENSDK_MAGIC、ql_boot_para、ql_static_mapping、func_mapping、qos_app_entry_s 等。

2026-01-12 22:50:10 382

原创 .map文件内容总结

vm_per_get_fun_ptr 地址 0x0094e104 且来自 libquec_adapt.a(qos_system_api_map.o):见 ap_at_command.map:22722-22724 和 ap_at_command.map:88216。ap_at_command.map 是链接器(ld)输出的“链接结果账本”:把每个段/符号最终放到哪个地址、占多少字节、来自哪个 .o/.a 都写清楚,用于定位“谁定义了它/它在内存哪/为什么变大”。

2026-01-12 22:30:29 418

原创 移远SDK ql_app_pre_init.c文件解析(一)

内核/bootloader/加载器会在加载 app.bin 时,按链接脚本约定的位置去读 .ql_app_entry 里的 qos_app_entry_s结构体,然后调用里面的函数指针(如 qos_boot/qos_app),其中 ENTRY(qos_app_preboot) 也说明了 app 的入口。.ql_app_entry 0x00a58000 0x60,来源对象是 .../ql_app_pre_init.o。qos_app_linkscripts_ec718pm.ld链接脚本。

2026-01-12 17:17:02 315

原创 objdump、nm、addr2line命令解析

objdump:核心是 “反汇编”,将二进制固件转成汇编代码(可关联 C 源码),用于查看代码的汇编实现或分析指定地址的指令。nm:核心是 “查符号 - 地址映射”,列出所有函数 / 变量的地址,是找到目标地址的前提。addr2line:核心是 “地址溯源”,根据地址快速定位到对应的 C 源码文件、函数、行号,是调试崩溃的关键工具。这三个工具是嵌入式开发中分析 ELF 固件、定位代码问题的黄金组合,你的脚本完整覆盖了 “查地址→反汇编分析→地址溯源” 的核心调试流程。

2026-01-12 15:48:19 360

原创 通过函数地址从符号名中反汇编函数名

经过上面的命令,脚本已经编译成功,生成的elf在D:\TBOX\SDK\QSR01A01_C_SDK_LTE_E_BETA20251225\qos_build\release\EC800ZCNLFR01A01M04_BETA0403_OCPU\DBG下,继续执行反汇编。PS D:\TBOX\SDK\QSR01A01_C_SDK_LTE_E_BETA20251225\qos_build\release\EC800ZCNLFR01A01M04_BETA0403_OCPU\DBG> # 示。

2026-01-12 15:08:05 669

原创 移远 api对应的内核映射函数地址解析

qosa_msgq_create qos_app_api_map.c:8979 "qosa_msgq_create" m_get_api_ptr = kernel_maping->get_fun_ptr_dep_name:ql_app_pre_init.c:97 内核侧该 API 的函数地址。qosa_task_get_current_ref qos_app_api_map.c:9236 "qosa_task_get_current_ref" 同上 同上。

2026-01-12 11:59:37 816

原创 移远SDK 文件ql_app_main.h及ql_app_main.c分析

这个结构体就是“应用注册信息”。系统启动阶段会去某处遍历 .LOAD_APP_TABLE 段里的这些结构体,然后按 app_entry/stack_size/startup_prio/argv 去创建对应任务。这行会生成一个 appRegItem_t 全局变量,并被链接脚本 KEEP(*(.LOAD_APP_TABLE*)) 收进 .LOAD_APP_TABLE 段。#include "ql_os.h":RTOS 封装 API(这里用到了 ql_rtos_task_create、ql_task_t)。

2026-01-12 10:23:53 988

原创 雅讯SDK中LBS回调函数的调用时机

在这个文件里,test_lbs_event_cb 会在“你把回调函数指针交给 LBS 模块之后”,由 LBS 模块内部任务/事件机制异步调用。result == ADP_LBS_RESULT_SUCC 时,param 指向 ADP_LBS_POSTION_T(你代码里强转并打印经纬度等)回调是异步的,所以你用 g_test_lbs_done + TaskSleep 轮询等待,这是在等回调把标志位置起来。(启动 LBS,并注册回调)

2026-01-10 16:22:59 205

原创 雅讯SDK wifi扫描结果触发回调时机

所以结论:只要注册成功,并且调用了 ADP_WIFISCAN_Start(),在扫描进行中/完成时就会触发 adp_wifiscan_cb;在 wifitaskcallback() 里先 cb.wifi_scan_callback = adp_wifiscan_cb;adp_wifiscan_cb 是你通过 ADP_WIFISCAN_RegEvent(&cb) 注册进去的“扫描结果通知回调”,它不是你主动调用的,而是 WiFi 扫描模块在扫描过程中/结束时异步回调。

2026-01-10 14:56:26 136

原创 CMakeLists.txt

关键点:上层主工程里会 target_link_libraries(userspace PRIVATE YXAPP),把这个库链接进最终的 userspace.elf。有几种“最靠谱”的办法可以确认 PROJECT_BINARY_DIR 和 CMAKE_SOURCE_DIR 到底指向哪个目录(而且能区分“顶层/子目录”场景)。${PROJECT_BINARY_DIR} 一般是顶层构建目录(比如 out/.../build 之类),所以最终会落到 .../lib/ 下。

2026-01-08 16:12:42 872

原创 脚本编译中怎么将/application/aima或/application/demo目录编译进去的

build_yaxon.bat 里有 set build_option=%1:这会把 build_option 设置成当前 cmd 进程的环境变量,并且会被子进程继承(GNUmake.exe、再到 cmake),因此 CMake 里 $ENV{build_option} 能读到。所以你要编 demo:用 build_yaxon.bat demo(或在命令行里先 set build_option=demo 再执行 GNUmake.exe ...)。4) build_option 从哪来(你现在的脚本链路)

2026-01-08 14:44:45 331

原创 makefile与cmake调用

Makefile 如果不存在/过期,顶层 Makefile 就会执行 cmake ... -B out/<SCMODULE> ... -G <generator> <源码根目录> 来“生成”这个构建目录,见同一段 Makefile:486-535。顶层 Makefile 里有一条关键规则:当需要构建 out/<SCMODULE>/<APP_NAME>.elf 时,会先依赖 Makefile(也就是“构建目录里的 Makefile”),见 Makefile:486-535。

2026-01-08 13:59:32 574

原创 makefile 中 patsubst、notdir、wildcard 等函数解析

作用:在 Makefile 中模拟 Shell 的通配符(?[]),扫描文件系统,返回所有匹配 PATTERN 的文件 / 目录路径列表(多个结果用空格分隔)。关键特点如果没有匹配到任何内容,直接返回空字符串(不是null,是完全空);区别于普通的:Makefile 本身不解析通配符,必须用wildcard才能让生效。makefile作用:接收一个 / 多个路径字符串(空格分隔),去掉所有路径前缀,只保留「最后一级的文件名 / 目录名」。关键特点。

2026-01-08 13:48:15 859

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除