温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

Component中kprintf怎么用

发布时间:2021-12-21 09:41:44 来源:亿速云 阅读:140 作者:小新 栏目:互联网科技

这篇文章主要介绍Component中kprintf怎么用,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!

调试程序时,最常用的一个手段是打印一些调试语句,而最常用的打印函数应该就是printf()了。printf()的作用是向标准输出设备输出格式化的调试语句。这个标准输出设备默认是PC Console或串口

Component中kprintf怎么用

也可以修改,例如改为文件或管道

Component中kprintf怎么用

logMsg()在ISR中执行时,通过底层的msgQSend(logMsgQId, msg, sizeof(msg), NO_WAIT,MSG_PRI_NORMAL)将调试语句发送给优先级为0的任务tLogTask

不过要想使用logMsg(),需要在usrRoot()调用logInit()之后;使用printf(),需要在usrRoot()调用usrSerialInit()或usrPcConsoleInit()之后。

Component中kprintf怎么用

这个组件只是给开发人员提供了两个函数kputs()和kprintf()。这两个函数的声明分别类似于ANSI定义的puts和printf(),其作用也差不多,它俩就是打印语句,用来调试的。

Component中kprintf怎么用

可以看到,在usrInit()阶段的sysHwInit()之后、usrCacheEnable()之前,就可以使用kprintf()了,这可比printf()/logMsg()的可用时机提前了很多。

另外,logMsg()在调用msgQSend()时用的NO_WAIT方式,因此有可能会丢弃部分消息

Component中kprintf怎么用

来看一个输出到RAM保留区的例子

Component中kprintf怎么用

最后,对比一下它们仨

printf()

<ul class=">

  • 最常用

  • 阻塞模式,不丢消息

  • 不能用于中断

  • 在usrRoot()初始化IO系统后才能调用

logMsg()

  • 可用于中断

  • 可能丢消息

  • 在初始化IO系统和logging机制后才能调用

kprintf()

  • 在usrInit()调用sysHwInit()之后即可调用

  • 可用于中断

  • 可输出到串口或Memory设备

  • 不丢消息

 

这正是:

系统在启动,IO未使能。

如何来调试?kprintf可使用。

以上是“Component中kprintf怎么用”这篇文章的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注亿速云行业资讯频道!

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI