硬汉嵌入式论坛

 找回密码
 立即注册
查看: 498|回复: 7
收起左侧

[STM32H7] stm32使用C/C++标准库进行开发

[复制链接]

4

主题

8

回帖

20

积分

新手上路

积分
20
发表于 2025-10-21 00:14:26 | 显示全部楼层 |阅读模式
前言
之前使用esp32,里面用到了sd卡,使用的fatfs文件系统,搭配上esp32的虚拟文件系统vfs,直接可以使用标准库的文件io操作,c和c++都可以,用的是十分的爽。来到stm32上,也想实现这一套,于是研究了一下,其归根到底还是和半主机模式——semihost有关,通过对标准库关键底层函数的重写,就能够成功使用文件io操作。
实现
可以通过rte实现,关闭microlib,启用cmsis compiler里面的功能,即可完成,但我向来不喜欢用rte,所以单独将其摘了出来,做成了8个文件。
需要注意的点有:当使用remove和rename这两个标准库的函数时,rte自带的文件并没有将这两个函数包括,因此需要你自己定义这两个函数,当然,本示例中已经定义好了。
还有一个需要注意的点,由于使用的是keil,所以重定义的底层函数都是以_sys打头的,如果改成gcc,应该是直接以下划线打头,比如在keil里_sys_write,在gcc里应该是_write,但具体是不是这样,因为只尝试了keil,所以并不清楚。
是下面是8个文件的文件名。
  • retarget_fs.h
  • retarget_stderr.h
  • retarget_stdin.h
  • retarget_stdout.h
  • retarget_tty.h
  • retarget_io.h
  • retarget_io.c
  • retarget.c

本示例使用stm32h7b0vbt6作为开发,使用OSPI外设操控w25q128,使用反客提供的w25q64库,使用FAL作为文件抽象层,使用LittleFS作为底层文件系统,用以实现标准库的文件io操作,与此同时顺便实现了printf的重写。当然还顺便重写了一下malloc和free,使用freertos的函数进行实现。
本示例中的标准库重载函数都由chatgpt生成,并使用chatgpt生成测试函数,且成功通过了测试,但并未在生产环境中部署,请谨慎使用。测试函数只使用了C标准库的文件io函数。




template.rar

8.21 MB, 下载次数: 27

评分

参与人数 1金币 +100 收起 理由
eric2013 + 100 很给力!

查看全部评分

回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
119430
QQ
发表于 2025-10-21 14:26:57 | 显示全部楼层
谢谢楼主分享
回复

使用道具 举报

25

主题

244

回帖

319

积分

高级会员

积分
319
QQ
发表于 2025-10-21 14:54:39 | 显示全部楼层
没毛病,韩了。
我 syscalls 函数都是留空的,全私有实现对标准库函数需求不大,哪天有需求了参考楼主的写兼容层。
回复

使用道具 举报

5

主题

25

回帖

40

积分

新手上路

积分
40
发表于 2025-10-26 11:44:17 | 显示全部楼层
大佬呀,我想学习C++ 开发单片机,我觉得会把我从无尽的深渊中解脱出来,怎么学习最快呀
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
119430
QQ
发表于 2025-10-27 01:22:27 | 显示全部楼层
VDVA 发表于 2025-10-26 11:44
大佬呀,我想学习C++ 开发单片机,我觉得会把我从无尽的深渊中解脱出来,怎么学习最快呀

TouchGFX,这个是C++, 搞点应用,快速上手

[ThreadX版本][TouchGFX] [分享] TouchGFX v417 里的30个examples使用 ThreadX 系统移植到V7板。
https://forum.anfulai.cn/forum.p ... d=108102&fromuid=58
(出处: 硬汉嵌入式论坛)
回复

使用道具 举报

3

主题

443

回帖

452

积分

高级会员

积分
452
发表于 2025-10-27 13:00:46 | 显示全部楼层
idf编程是真舒服,底层驱动、组件都是现成复用的;语言层面也支持全面。配合vscode的copilot编辑代码太方便了。
回复

使用道具 举报

3

主题

443

回帖

452

积分

高级会员

积分
452
发表于 2025-10-27 13:02:09 | 显示全部楼层
开发了几个esp32项目后,回到stm32开发感觉从天堂坠入地狱。
回复

使用道具 举报

0

主题

33

回帖

33

积分

新手上路

积分
33
发表于 2025-10-28 03:45:43 | 显示全部楼层
太感謝了。
回复

使用道具 举报

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

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2025-11-22 04:11 , Processed in 0.048791 second(s), 32 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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