首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Component之kprintf

Component之kprintf

作者头像
Taishan3721
发布于 2019-11-14 06:48:19
发布于 2019-11-14 06:48:19
1.1K0
举报
文章被收录于专栏:这里只有VxWorks这里只有VxWorks

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

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

不过printf()这种IO操作默认是阻塞模式的,因此不能在ISR中使用。那调试中断的时候,可以使用logMsg()来打印调试语句

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

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

那在这些初始化之前如何打印调试语句呢?

vx6新加了一个组件(好像是从vx67开始的):Kernel Write

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

那么,区别呢?kputs/kprintf()默认只能输出到串口,而且使用的是串口的轮询模式。这样做的好处是:在中断使能和IO系统初始化之前的内核启动阶段就可以使用它了!

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

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

kput()/kprintf()就不存在这个问题了,它们既不会阻塞,也不会丢弃消息

如果Target的串口不能用,这个Kernel Write组件还可以通过自定义函数DEBUG_KWRITE_USR_RTN来输出调试语句。它可以将语句直接输出到RAM区域,或者Flash等NVRam里

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

再次调用kprintf()后,调试语句就是记录到这个User Reserved Memory里了

最后,对比一下它们仨

printf()

  • 最常用
  • 阻塞模式,不丢消息
  • 不能用于中断
  • 在usrRoot()初始化IO系统后才能调用

logMsg()

  • 可用于中断
  • 可能丢消息
  • 在初始化IO系统和logging机制后才能调用

kprintf()

  • 在usrInit()调用sysHwInit()之后即可调用
  • 可用于中断
  • 可输出到串口或Memory设备
  • 不丢消息

这正是:

系统在启动,IO未使能。

如何来调试?kprintf可使用。

我是泰山,专注VX 15年!

欢迎关注VxWorks567,

一起学习,共同进步!

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-11-13,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 这里只有VxWorks 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
使用高斯混合模型建立更精确的聚类
我真的很喜欢研究无监督学习问题。它们为监督学习问题提供了一个完全不同的挑战,用我拥有的数据进行实验的发挥空间要比监督学习大得多。毫无疑问,机器学习领域的大多数发展和突破都发生在无监督学习领域。
磐创AI
2019/11/18
1.1K0
使用高斯混合模型建立更精确的聚类
使用Python实现高斯混合模型聚类算法
高斯混合模型(Gaussian Mixture Model,GMM)是一种基于概率分布的聚类方法,它假设数据集由若干个高斯分布组成,每个高斯分布代表一个簇。在本文中,我们将使用Python来实现一个基本的高斯混合模型聚类算法,并介绍其原理和实现过程。
Echo_Wish
2024/04/15
5780
高斯混合模型:GMM和期望最大化算法的理论和代码实现
高斯混合模型(gmm)是将数据表示为高斯(正态)分布的混合的统计模型。这些模型可用于识别数据集中的组,并捕获数据分布的复杂、多模态结构。
deephub
2023/12/04
6770
高斯混合模型:GMM和期望最大化算法的理论和代码实现
高斯混合模型 GMM 的详细解释
来源:机器学习杂货店本文约3500字,建议阅读10+分钟本文为你介绍 KMeans 的一个替代方案之一,高斯混合模型。 高斯混合模型(后面本文中将使用他的缩写 GMM)听起来很复杂,其实他的工作原理和 KMeans 非常相似,你甚至可以认为它是 KMeans 的概率版本。这种概率特征使 GMM 可以应用于 KMeans 无法解决的许多复杂问题。 因为KMeans的限制很多,比如:它假设簇是球形的并且大小相同,这在大多数现实世界的场景中是无效的。并且它是硬聚类方法,这意味着每个数据点都分配给一个集群,这也是不
数据派THU
2023/05/11
1.1K0
高斯混合模型 GMM 的详细解释
使用高斯混合模型拆分多模态分布
高斯混合模型(Gaussian Mixture Models,简称GMM)是一种在统计和机器学习领域中常用的概率模型,用于对复杂数据分布进行建模和分析。GMM 是一种生成模型,它假设观测数据是由多个高斯分布组合而成的,每个高斯分布称为一个分量,这些分量通过权重来控制其在数据中的贡献。
deephub
2023/09/28
4720
使用高斯混合模型拆分多模态分布
EM算法与高斯混合聚类:理解与实践
文章链接:https://cloud.tencent.com/developer/article/2467869
小馒头学Python
2024/11/20
1930
EM算法与高斯混合聚类:理解与实践
如何利用高斯混合模型建立更好、更精确的集群?
高斯混合模型是一种强大的聚类算法。本文将带你了解高斯混合模型的工作原理以及如何在 Python 中实现它们,我们还将讨论 k-means 聚类算法,看看高斯混合模型是如何对它进行改进的。
AI研习社
2019/12/10
9320
【技术分享】高斯混合模型
  在上述定义中,x是维数为D的样本向量,mu是模型期望,sigma是模型协方差。对于单高斯模型,可以明确训练样本是否属于该高斯模型,所以我们经常将mu用训练样本的均值代替,将sigma用训练样本的协方差代替。 假设训练样本属于类别C,那么上面的定义可以修改为下面的形式:
腾讯云TI平台
2019/07/04
1.4K0
基于模型的聚类和R语言中的高斯混合模型
聚类模型是一个概念,用于表示我们试图识别的聚类类型。四种最常见的聚类方法模型是层次聚类,k均值聚类,基于模型的聚类和基于密度的聚类
拓端
2020/07/16
2K0
什么是高斯混合模型
机器学习可以分为两个主要领域:有监督学习和无监督学习。两者的主要区别在于数据的性质以及处理数据的方法。聚类是一个无监督学习的算法,利用这个算法可以从数据集里找到具有共性的点簇。假设我们有一个如下所示的数据集:
老齐
2020/09/08
1.5K0
深入机器学习系列之:高斯混合模型
现有的高斯模型有单高斯模型(SGM)和高斯混合模型(GMM)两种。从几何上讲,单高斯分布模型在二维空间上近似于椭圆,在三维空间上近似于椭球。 在很多情况下,属于同一类别的样本点并不满足“椭圆”分布的特性,所以我们需要引入混合高斯模型来解决这种情况。
数据猿
2019/11/20
9840
深入机器学习系列之:高斯混合模型
技术干货 | 一文详解高斯混合模型原理
高斯混合模型(Gaussian Mixture Model)通常简称GMM,是一种业界广泛使用的聚类算法,该方法使用了高斯分布作为参数模型,并使用了期望最大(Expectation Maximization,简称EM)算法进行训练。本文对该方法的原理进行了通俗易懂的讲解,期望读者能够更直观地理解方法原理。文本的最后还分析了高斯混合模型与另一种常见聚类算法K-means的关系,实际上在特定约束条件下,K-means算法可以被看作是高斯混合模型(GMM)的一种特殊形式(达观数据 陈运文)。 什么是高斯分布?
达观数据
2018/03/30
2.4K0
技术干货 | 一文详解高斯混合模型原理
K-Means(K均值)、GMM(高斯混合模型),通俗易懂,先收藏了!
什么是聚类算法?聚类是一种机器学习技术,它涉及到数据点的分组。给定一组数据点,我们可以使用聚类算法将每个数据点划分为一个特定的组。理论上,同一组中的数据点应该具有相似的属性和/或特征,而不同组中的数据点应该具有高度不同的属性和/或特征。聚类是一种无监督学习的方法,是许多领域中常用的统计数据分析技术。
mantch
2019/07/30
6.7K0
K-Means(K均值)、GMM(高斯混合模型),通俗易懂,先收藏了!
如何用高斯混合模型 GMM 做聚类
当我们在做聚类任务时, 如果每一类的分布已知的话,那么要求出每个样本属于哪一类, 只需要计算出它归属于 k 个不同簇的概率,然后选择概率值最高的那个簇作为它最终的归属即可。
杨熹
2018/12/26
2.1K0
【数据挖掘】高斯混合模型 ( 模型简介 | 软聚类 | 概率作用 | 高斯分布 | 概率密度函数 | 高斯混合模型参数 | 概率密度函数 )
1 . 高斯混合模型 与 K-Means 相同点 : 高斯混合模型方法 与 K-Means 方法 , 都是通过多次迭代 , 每次迭代都对聚类结果进行改进 , 最终达到算法收敛 , 聚类分组结果达到最优 ;
韩曙亮
2023/03/27
1.9K0
机器学习高斯混合模型:聚类原理分析(前篇)
交流思想,注重分析,更注重通过实例让您通俗易懂。包含但不限于:经典算法,机器学习,深度学习,LeetCode 题解,Kaggle 实战。期待您的到来! 01 — 回顾 近几天,分析了期望最大算法的基本思想,它是用来迭代求解隐式变量的利器,我们举例了两地的苹果好坏分布为例来求解隐式参数,苹果的出处,进而求出烟台或威海的苹果好坏的二项分布的参数:好果的概率。关于二项分布和离散式随机变量的基础理论知识,请参考: 机器学习储备(11):说说离散型随机变量 机器学习储备(12):二项分布的例子解析 注意在求解烟台或威
double
2018/04/02
1.7K0
机器学习高斯混合模型:聚类原理分析(前篇)
机器学习day15高斯混合模型
高斯混合模型(Gaussian Mixed Model,GMM)也是常见的聚类算法。使用EM算法进行迭代计算。高斯混合模型假设了每个簇的数据符合正态分布(高斯分布),当前的数据分布就是各个簇的高斯分布叠加在一起。
福贵
2020/08/26
7040
机器学习day15高斯混合模型
【Scikit-Learn 中文文档】高斯混合模型 - 无监督学习 - 用户指南 | ApacheCN
2.1. 高斯混合模型 sklearn.mixture 是一个应用高斯混合模型进行非监督学习的包,支持 diagonal,spherical,tied,full四种协方差矩阵 (注:diagona
片刻
2018/01/15
2.6K0
【Scikit-Learn 中文文档】高斯混合模型 - 无监督学习 - 用户指南 | ApacheCN
高斯混合模型:不掉包实现多维数据聚类分析
《实例》阐述算法,通俗易懂,助您对算法的理解达到一个新高度。包含但不限于:经典算法,机器学习,深度学习,LeetCode 题解,Kaggle 实战。期待您的到来! 01 — 回顾 昨天实现推送了,GMM高斯混合的EM算法实现的完整代码,这是不掉包的实现,并且将结果和sklearn中的掉包实现做了比较:聚类结果基本一致,要想了解这个算法实现代码的小伙伴,可以参考: 机器学习高斯混合模型:聚类原理分析(前篇) 机器学习高斯混合模型(中篇):聚类求解 机器学习高斯混合模型(后篇):GMM求解完整代码实现 机器学习
double
2018/04/02
1.3K0
高斯混合模型:不掉包实现多维数据聚类分析
机器学习高斯混合模型(中篇):聚类求解
《实例》阐述算法,通俗易懂,助您对算法的理解达到一个新高度。包含但不限于:经典算法,机器学习,深度学习,LeetCode 题解,Kaggle 实战。期待您的到来! 01 — 回顾 昨天,介绍了高斯混合模型(GMM)的一些有意思的小例子,说到高斯混合能预测出每个样本点属于每个簇的得分值,这个具有非常重要的意义,大家想了解这篇推送的,请参考: 机器学习高斯混合模型:聚类原理分析(前篇) 02 — GMM求解思路 GMM中的归纳偏好是组成数据的几个簇都满足高斯分布。 GMM求解的已知条件: 被分簇的个数是已知的
double
2018/04/02
1.4K0
机器学习高斯混合模型(中篇):聚类求解
推荐阅读
相关推荐
使用高斯混合模型建立更精确的聚类
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档