c – clock()如何在访问系统时钟时起作用?
发布时间:2020-12-16 07:03:32 所属栏目:百科 来源:网络整理
导读:我正在使用附带最少库的STM32微控制器.我想使用 ctime中的clock()函数. (可能是新的std :: chrono)但是我停留在clock()返回-1. 这并不奇怪,因为我不希望gcc-arm-none-eabi中的库知道我的微控制器的外围布局. 如何告诉时钟从哪里得到它的滴答数?我可以简单地
我正在使用附带最少库的STM32微控制器.我想使用< ctime>中的clock()函数. (可能是新的std :: chrono)但是我停留在clock()返回-1.
这并不奇怪,因为我不希望gcc-arm-none-eabi中的库知道我的微控制器的外围布局. 如何告诉时钟从哪里得到它的滴答数?我可以简单地重新声明它,还是我需要实现一个较低级别的功能? 解决方法
这通常是将libc实现移植到新平台的工作的一部分.当您编译glibc或newlib(C标准库的两个最流行的实现)的副本时,您必须提供一系列存根方法,其中一个将提供时间. gcc-arm-none-eabi是newlib中预定义的目标,它实现了很多这些存根,但不是用于获取时间的目标,因为就像你说的那些是特定于应用程序的.
最好的办法是自己构建工具链,实现这个方法.您可以按照说明here,但在构建newlib之前编辑目标以填充此存根. here提供了实现存根的良好参考. 或者,您可以直接实现自己的时钟功能,当您链接您的应用程序时,它将更喜欢您的版本而不是库中的版本.但是,请注意,这意味着库中调用时钟的任何内容仍然会调用损坏的库版本,因此您可能需要重新实现许多功能. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |