找回密码
 立即注册
查看: 64|回复: 4

sprintf函数问题在32G12K64中不正常

[复制链接]
  • 打卡等级:偶尔看看II
  • 打卡总天数:26
  • 最近打卡:2025-08-29 07:49:42

1

主题

7

回帖

241

积分

中级会员

积分
241
发表于 5 天前 | 显示全部楼层 |阅读模式

格式化时,一个参数就正常,2个及以上就不正常了
麻烦各位看看呢,你们有遇到过这个问题吗?
最下面是源码

4ff42baf81195c70c0bb9e818b00c914.png

贴片以为是12K128,实际上JLC贴片的是64,问题是在工具里烧录时没有64
fa1877a40e1b86a4fef42b9fba327909.png



20250829 sprintf.rar (224.92 KB, 下载次数: 3)

回复

使用道具 举报 送花

3

主题

2001

回帖

850

积分

等待验证会员

积分
850
发表于 5 天前 | 显示全部楼层
尊敬的用户,您好!

感谢您对我们产品的关注与反馈。关于您提到的在32G12K64芯片中使用sprintf函数时出现的问题,我们已收到相关描述及附件内容,并对此进行了初步分析。

根据您的描述,当使用sprintf函数进行格式化时,若仅传递一个参数,函数运行正常;但当传递两个及以上参数时,结果出现异常。此类问题可能涉及多个方面,包括但不限于:

1. 内存访问越界:在嵌入式系统中,sprintf函数对缓冲区大小有严格要求。若目标缓冲区不足以容纳输出内容,可能导致内存覆盖或程序崩溃。建议检查目标缓冲区的大小是否足够,并确保在调用前已正确初始化。

2. 参数传递顺序或类型不匹配:sprintf函数的参数需严格按照格式字符串中的占位符顺序和类型进行传递。若存在类型不匹配(如将int传入%s),可能导致未定义行为,甚至引发程序异常。

3. 编译器优化或库版本兼容性问题:不同版本的C标准库或编译器对sprintf的实现可能存在差异。建议确认使用的工具链版本是否为官方推荐版本,并检查是否有相关的库文件更新或补丁可用。

4. 芯片固件或驱动问题:若问题仅出现在特定硬件平台上,可能是由于芯片固件或相关驱动未正确支持某些标准库函数。建议查阅芯片手册或联系技术支持获取进一步指导。

针对上述可能性,我们建议您采取以下步骤进行排查:
检查目标缓冲区大小是否足够;
确保格式字符串与参数类型完全匹配;
使用调试工具(如GDB)跟踪函数调用过程,观察参数传递及内存状态;
尝试使用更安全的替代函数(如snprintf)以避免缓冲区溢出风险;
联系我们的技术支持团队,提供详细的复现步骤及测试代码,以便我们进一步定位问题。

我们将持续关注此问题,并尽快提供更详细的解决方案。如有其他疑问或需要进一步协助,请随时与我们联系。

感谢您的理解与支持!

国芯人工智能技术团队  
2025年4月5日

[本文内容由国芯人工智能辅助生成,仅供参考]
回复

使用道具 举报 送花

  • 打卡等级:偶尔看看II
  • 打卡总天数:26
  • 最近打卡:2025-08-29 07:49:42

1

主题

7

回帖

241

积分

中级会员

积分
241
发表于 5 天前 | 显示全部楼层
但是我查一下,都没找到问题,有解决这个办法的方法吗?
回复

使用道具 举报 送花

  • 打卡等级:常住居民III
  • 打卡总天数:122
  • 最近打卡:2025-09-02 08:18:02
已绑定手机

17

主题

483

回帖

1585

积分

金牌会员

积分
1585
发表于 5 天前 | 显示全部楼层
8位,16位的变量不用加%b修饰,直接%d,%u
回复

使用道具 举报 送花

  • 打卡等级:偶尔看看II
  • 打卡总天数:24
  • 最近打卡:2025-09-02 10:08:28
已绑定手机

4

主题

30

回帖

204

积分

中级会员

积分
204
发表于 昨天 12:31 | 显示全部楼层
所有参数都强制转换成16bit即可
回复

使用道具 举报 送花

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|深圳国芯人工智能有限公司 ( 粤ICP备2022108929号-2 )

GMT+8, 2025-9-3 00:35 , Processed in 0.127219 second(s), 79 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表