gpt4 book ai didi

c - 在嵌入式系统上使用 fopen() 需要什么?

转载 作者:行者123 更新时间:2023-12-04 11:26:57 24 4
gpt4 key购买 nike

我对标准 C 库提供的 FILE 系列函数还很陌生。

我最近在研究了 stdoutstdinstderr 之后偶然发现了 fopen() 和类似的函数与 printf() 等函数一起工作。

我想知道,在嵌入式系统(不一定有操作系统支持)上使用 fopen() 需要什么。在阅读了更多相关信息之后,在更强大的嵌入式系统上 Hook UART/SPI 接口(interface)似乎是一件很酷的事情,这样调用 printf() 就会从 UART 打印数据.同样,您可以通过调用 scanf() 从 UART 缓冲区读取数据。

这也将增加可移植性! (如果支持 printf(),则为 Linux 编写的代码将更容易移植)。如果调试数据在生产环境中运行,您还可以将调试数据打印到文件中,稍后再从中读取。

你能在基本的嵌入式系统上使用 fopen() 吗?如果是这样,那么谁/哪里/什么时候创建了“FILE”(就我现在而言,fopen() 没有 malloc() 文件空间,也没有你指定多少)?或者你需要一个支持 FAT 文件的操作系统。如果是这样,会像http://ultra-embedded.com/?fat_filelib吗?工作?使用 FreeRTOS 会有帮助吗?

最佳答案

检查您的工具链的 C 库的文档 - 它应该有关于重新定位库的内容。

例如,如果您使用 Newlib您必须重新实现部分或全部 [系统调用 stub ][3] 以适合您的目标。在这种情况下,低级 open() 系统调用将允许 fopen() 在必要时工作。在最简单的情况下,您可以实现 open() 以支持对串行端口的更高级别的 stdio 访问,但是如果您期望标准文件系统访问,那么您仍然需要一个底层文件系统来也映射它。

可以找到另一个重新定位 Keil/ARM 标准库的示例 here .

关于c - 在嵌入式系统上使用 fopen() 需要什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17605749/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com