![](https://img-blog.csdnimg.cn/20190927151101105.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
嵌入式软件随笔集
日常开发中,随笔记的一些好玩实用的信息
一个勺子x
这个作者很懒,什么都没留下…
展开
-
cmake添加库文件注意事项
cmake添加已有的库文件的注意事项原创 2024-05-17 14:39:21 · 170 阅读 · 0 评论 -
对调试信息函数的宏封装实用小技巧分享
如果有需求,还可以在宏中定义一个输出等级,do{}while(0)中判断一下输出等级再决定是否输出调试信息。在轻量型嵌入式开发中,没有单独的日志信息库,所以通常需要开发者自己对调试打印信息进行封装,这样即方便调试,也方便后续查问题,可以用一个宏开关对齐全局控制。另外就是在打印信息中,我们想要加入其他打印的信息,比如行号,函数名等等,但是又不想每写一句调试信息就写一边,就可以通过下面的方式,利用宏的可变参数实现。如代码段一,用宏去简单粗暴的定义,定义后编译后显示的占的空间很小,会直接被优化掉。原创 2023-06-09 15:25:41 · 110 阅读 · 0 评论 -
linux驱动modprobe和rmmod时提示NULL指针错误
因为是在之前的驱动上修改了框架,变动比较大,所以不少函数都变了,接下来就是令我郁闷的一个问题:在modprobe时看似没问题,也成功执行了。lsmod也能查看的加载的模块,在rmmod时直接出错?因为一时的疏忽大意,probe中使用了一个未初始化的指针,导致在modprobe时出错提示NULL指针。这个问题很快就查到了。如果一个probe函数探测失败,驱动向系统申请的有关资源都会被释放,如中断号,申请的内存等。是因为在调用probe时没有正确的返回0,内核认为驱动失败,rmmod时当然会出错。原创 2023-03-22 09:55:26 · 219 阅读 · 0 评论 -
低级BUG记录 - 我的sprintf瞎逼操作
这个错误明明就是很憨憨。之前没有那么多字符,后面又加了几个字符,没想到出现了溢出,函数体内部变量放在栈上,所以应该是导致栈数据异常,内存数据异常。查了老半天,真的是气死。代码不规范,熬夜黑眼圈,不该出的低级错误。最终导致我有一个全局变量莫名奇妙的变了。在自己项目中出现了的一段奇怪代码。原创 2022-11-24 00:46:29 · 109 阅读 · 0 评论