×
嵌入式开发 > 详情

嵌入式软件开发之: 调整C库使其适应目标硬件

发布时间:2021-06-04 发布时间:
|

13.3 调整C库使其适应目标硬件

默认情况下,C库利用semihosting机制来提供设备驱动级的功能,使得主机能够用作输入和输出设备。这种机制对于嵌入式开发十分有用,因为用于开发的硬件系统通常没有最终系统的输入和输出设备。

本节介绍如何重定向代码中的Semihosting库函数,使其真正适用目标系统。

13.3.1 C库函数重定向

所谓C库函数重定向,就是用户使用自己编写的函数代码代替C库中的函数,使最终程序更适用于实际的目标硬件。图13.6显示了C库函数重定向的过程。

图13.6 C库函数重定向

最简单的函数重定向的例子就是用户希望fputc()函数能够将字符从目标系统的串口输出而不是在调试时将字符从调试器的控制台输出。这时就需要重新实现该函数。下面的例子将fputc()的输入字符参数重新指向一连续输出函数sendchar(),将该例在一个独立的源文件中实现的。这样,fputc()在依目标而定的输出和C库标准输出函数之间充当一个抽象层。

例子程序的代码如下所示。

extern void sendchar(char *ch);

int fputc(int ch, FILE *f)

{ /* 向UART写一个字符 */

char tempch = ch;

sendchar(tempch);

return ch;

}

13.3.2 从最终代码映像中去掉Semihosting

在一个实际的应用程序中,不可能支持Semihosting的SWI操作机制。因此,必须在最终的代码映像中去掉C库中的Semihosting函数。



『本文转载自网络,版权归原作者所有,如有侵权请联系删除』

热门文章 更多
Diodes 推出单闸逻辑设备.助力ADAS 等车用产品应用