网易首页 > 网易号 > 正文 申请入驻

嵌入式开发:从printf获得最大的性能

0
分享至

  古老、经过验证且真正的调试技术是在整个嵌入式软件中散布printf语句,以期获得对系统行为的洞察力。嵌入式开发人员使用printf并不总是可取的,并且可能会对系统产生不可预见的实时影响。让我们检查一下printf的基本问题,然后是一些可用于从中获得最大性能的技术。

  了解printf的问题

  使用printf会带来一些开发人员经常忽略的问题。首先,开发人员必须引入一个标准的C库,这无疑会增加ROM和RAM的使用。其次,每次使用printf stamen 时,系统都会阻塞,直到所有字符都已传输完毕,这会导致实时性能显着下降。举个例子,输出一个简单的字符串,例如“Hello World!”在9600处打印出UART(仍然很常见)。例如在STM32上执行了一个简单的时序测量,如图1所示,格式化字符串并打印到终端需要12.5毫秒。

  图 1 – 打印“Hello World!”

  添加任何字符串格式会使情况变得更糟!使用 printf(“The system state is %d”, State) 将系统状态打印到终端会导致21毫秒的应用程序延迟,因为字符串被格式化和传输。有人可能会争辩说,以9600波特运行是荒谬的,但即使增加到 115200仍然会分别导致传输这两条消息的时间分别为1.05和1.75毫秒。大量处理器带宽和潜在的实时性能会影响最少的有用信息。

  性能技巧 1 – 创建非阻塞printf

  如果printf 版本是阻塞类型,嵌入式开发人员一旦调用 printf,应用程序就会停止执行,直到每个字符都被成功传输,效率低得惊人!另一种方法是创建一个非阻塞版本,非阻塞printf版本将

  格式化字符串

  将格式化的字符串填充到传输缓冲区中

  启动第一个字符的传输

  让中断服务程序处理发送缓冲区中的剩余字符

  继续执行代码

  非阻塞printf的最大亮点是设置时间,在9600波特的STM32上它在0.8到1.8毫秒之间变化。在初始设置时间之后,发送中断大约每毫秒发生一次,需要35微秒将下一个字符填充到UART发送寄存器中,然后再返回执行有用的工作。图 2 显示了周期性中断以及中断执行时间。请记住,执行时间不包括在这种情况下少于25个时钟周期的中断开销。

  图 2 – 非阻塞 printf 性能

  性能技巧 2 – 提高波特率

  许多嵌入式开发人员仍将他们的UART默认设置为9600,今天的串行硬件可以处理1 Mbps 或更高的波特率!有些足够大胆的人将波特率设置为115200。除非运行时钟存在潜在的电气或硬件相关问题,否则将波特率设置为1 Mbps并将调试消息输出为尽可能快,以尽量减少实时性能问题。 “Hello World!”的原始阻塞 printf只会阻塞120微秒,远比12.5毫秒更可接受。

  性能技巧3 – 使用SWD

  现代微控制器在开发芯片时考虑到了printf性能问题。例如,利用ARM Cortex-M 部件的调试功能的开发人员可以跳过UART并使用内部调试模块将printf消息通过调试器传输回IDE。以这种方式跳过UART不仅可以节省设置,而且内部硬件机制可以最大限度地减少软件开销!内部缓冲区充满消息,调试硬件自动处理传输到调试探针的传输,从而将对应用程序实时性能的影响降至最低。

  结论

  很少有嵌入式开发人员会放弃他们最喜欢的、尝试过的、真正的printf调试技术。在当今的现代微控制器硬件中,有多种选项可以提高printf的性能和效率,从而最大限度地减少对实时性能的影响。

特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。

Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.

相关推荐
热点推荐
《亲爱的》原型孙卓完成高考,其父:孩子表示“发挥得很好”

《亲爱的》原型孙卓完成高考,其父:孩子表示“发挥得很好”

澎湃新闻
2024-06-09 21:36:27
十年两山轮战:各军区轮番上阵,打到越南畏战,兰州军区直播战斗

十年两山轮战:各军区轮番上阵,打到越南畏战,兰州军区直播战斗

可乐88
2024-06-01 13:23:15
三星 Galaxy S25 Ultra 突然曝光,这也太小了!

三星 Galaxy S25 Ultra 突然曝光,这也太小了!

刘奔跑
2024-06-09 23:28:41
网传某地厕所人员公示,保洁人员仅一位,剩下五个竟全是管理人员

网传某地厕所人员公示,保洁人员仅一位,剩下五个竟全是管理人员

可达鸭面面观
2024-06-04 23:47:05
东契奇:绿军的防守真的很出色 他们在防守端表现得很强硬

东契奇:绿军的防守真的很出色 他们在防守端表现得很强硬

直播吧
2024-06-10 11:14:12
半场-阿根廷暂1-0厄瓜多尔 迪马利亚破门+任意球中框梅西替补

半场-阿根廷暂1-0厄瓜多尔 迪马利亚破门+任意球中框梅西替补

直播吧
2024-06-10 07:52:41
东契奇谈失利:我的失误和罚球不中导致输球!G3要比对手得更多分

东契奇谈失利:我的失误和罚球不中导致输球!G3要比对手得更多分

Emily说个球
2024-06-10 11:03:20
上海蔚来司机故意别车变道后恶意刹车致后面车辆追尾

上海蔚来司机故意别车变道后恶意刹车致后面车辆追尾

糖果屋主
2024-06-10 06:14:47
凌空斩出鞘,4分钟2球,4-0大冷门,世界第48横扫世界第29

凌空斩出鞘,4分钟2球,4-0大冷门,世界第48横扫世界第29

侧身凌空斩
2024-06-10 04:34:16
轻松打爆辽宁!阿拉基20分钟轰18+7+6 官方解说盛赞:他像玩一样

轻松打爆辽宁!阿拉基20分钟轰18+7+6 官方解说盛赞:他像玩一样

狼叔评论
2024-06-10 01:33:07
探花翻车现场:我做了这么多年,一看我就知道绝对是摄像头

探花翻车现场:我做了这么多年,一看我就知道绝对是摄像头

挪威森林
2024-06-10 08:50:02
欢迎晚宴现场照曝光,朱婷专注玩手机,主办方一行为太暖心

欢迎晚宴现场照曝光,朱婷专注玩手机,主办方一行为太暖心

跑者排球视角
2024-06-09 22:21:44
中国要登月这件事,是真的砸了美国的脊梁骨

中国要登月这件事,是真的砸了美国的脊梁骨

怪口历史的K先生
2024-06-08 17:17:49
女人在过夫妻性生活时,为什么总发出声音?医生:大多数人不了解

女人在过夫妻性生活时,为什么总发出声音?医生:大多数人不了解

皮皮讲文
2024-01-02 10:36:17
《歌手》再爆内幕,故意增加海外歌手难度,揭榜歌手剧本痕迹明显

《歌手》再爆内幕,故意增加海外歌手难度,揭榜歌手剧本痕迹明显

岚仔小弟
2024-06-10 01:31:33
绝大部分省份只设1个正厅级海关,有5个省份是2个,但广东多达7个

绝大部分省份只设1个正厅级海关,有5个省份是2个,但广东多达7个

小圣杂谈原创
2024-06-09 17:29:33
36分+15板+13助!历史首人!这就是独行侠给他2.15亿顶薪的原因

36分+15板+13助!历史首人!这就是独行侠给他2.15亿顶薪的原因

世界体育圈
2024-06-03 10:38:17
笑不活了,中俄免签的第一批受害者出现了,要被评论区笑死了

笑不活了,中俄免签的第一批受害者出现了,要被评论区笑死了

奇特短尾矮袋鼠
2024-06-07 15:54:13
张志磊老婆曝光!张志磊为拿世界拳王禁欲10年,夫妻少有肌肤之亲

张志磊老婆曝光!张志磊为拿世界拳王禁欲10年,夫妻少有肌肤之亲

拳击时空
2024-06-09 06:04:29
正年轻!阿尔卡拉斯成历史最年轻硬地+草地+红土大满贯得主

正年轻!阿尔卡拉斯成历史最年轻硬地+草地+红土大满贯得主

直播吧
2024-06-10 02:21:08
2024-06-10 11:32:49
粤嵌教育培训
粤嵌教育培训
粤嵌教育,IT人才孵化中心!
1497文章数 64关注度
往期回顾 全部

科技要闻

苹果开发者大会今晚开幕,iOS 18即将登场

头条要闻

媒体:拜登不出席乌克兰和平峰会 按说可以捎带脚去

头条要闻

媒体:拜登不出席乌克兰和平峰会 按说可以捎带脚去

体育要闻

独行侠绿军会师总决赛 他成了最尴尬的人

娱乐要闻

汤唯抵达巴黎将担任奥运火炬手

财经要闻

三年没买房,省了不止一百万

汽车要闻

营收99亿亏损50亿+ 蔚来一季度财报出炉

态度原创

家居
本地
手机
健康
公开课

家居要闻

柔和婉转 让阳光洒满空间

本地新闻

我和我的家乡|踏浪营口,心动不止一夏!

手机要闻

苹果对iPhone上的游戏机模拟器功能界限判定模糊

晚餐不吃or吃七分饱,哪种更减肥?

公开课

近视只是视力差?小心并发症

无障碍浏览 进入关怀版