- 博客(18)
- 收藏
- 关注
原创 【00】PyVSC简介
而在嵌入式软件领域,似乎没有专门的语言用于此,更常规的做法是使用高级语言(比如C/C++)人为构造约束,这往往并不容易且存在一系列问题。PyVSC正是将上述功能嵌入Python语言中,使用其提供的特定语法或者API实现SystemVerilog风格的约束激励生成。PyVSC以两种形式提供此功能:面向对象的模型API和构建在模型API之上的python嵌入式领域特定语言。这允许以编程方式构建覆盖和随机化特性,用用户友好的结构定义,或者使用两者的混合定义。三、Quickstart。一、什么是PyVSC。
2025-12-08 10:41:17
815
原创 Linux内核学习(五)——驱动与设备
在Linux字符设备驱动开发中,register_chrdev用于注册驱动功能,而class_create和device_create则负责在用户空间创建设备节点,形成完整的驱动框架。register_chrdev仅在内核注册设备操作函数,而后续两个函数通过sysfs和udev自动生成/dev下的设备文件,实现了驱动与设备的解耦。驱动是内核功能实现,设备是用户访问接口,三者配合既保留了传统字符设备驱动的灵活性,又符合现代Linux设备模型标准。这种分层设计支持动态设备创建、热插拔和统一管理,相比手动mkno
2025-07-13 18:18:47
989
原创 Linux内核学习(四)——内核模块的签名与验证
摘要:Linux内核模块签名与验证机制通过加密签名(X.509证书)确保模块安全性,需配置内核选项(如CONULE_SIG)并生成密钥对。签名流程包括密钥生成、格式转换及模块签名,验证时内核自动检查签名匹配性。常见问题可通过modinfo调试,高级配置支持多证书和自定义哈希算法。该机制有效提升内核模块的完整性与可信性。
2025-07-10 00:59:40
753
原创 Linux内核学习(三)——内核污染
Linux内核污染(Kernel Taint)是指内核检测到不可恢复错误或异常时标记自身的状态,可能导致系统行为不可预测。常见原因包括硬件故障、加载未签名模块、强制卸载模块或API滥用等。污染后果包括影响系统调试、功能受限及稳定性下降。污染状态可通过/proc/sys/kernel/tainted查看,非零值表示污染。临时清除方法为写入0到该文件,长期解决方案需修复硬件或软件问题。调试时可查看系统日志中的污染记录(journalctl或kern.log),这些信息对定位问题至关重要。正确处理内核污染有助于维
2025-07-10 00:37:37
719
原创 Linux内核学习(二)—内核调试
Linux系统日志级别分为8个等级,从紧急到调试(0-7),分别对应不同严重程度的事件。内核空间使用printk函数打印日志,用户空间通过syslog函数记录。可通过/proc/sys/kernel/printk查看和设置日志级别,系统日志通常存储在/var/log目录下。当内核异常时会出现"Oops"错误提示,包含寄存器状态和调用栈信息,可用于定位内核崩溃原因。日志系统是Linux异常跟踪的重要工具,合理设置日志级别有助于系统维护和故障排查。
2025-07-09 23:59:57
586
原创 Linux内核学习(一)—内核模块的框架、编译和运行
本文介绍了宏内核和微内核的区别,宏内核将核心功能集成在内核空间,性能高但稳定性差;微内核仅保留核心功能,模块化程度高但性能可能受影响。还讲解了内核模块的两种加载方式:静态加载直接编译进内核,动态加载允许运行时加载/卸载模块。详细说明了内核模块的代码框架,包括初始化/清理函数、模块元信息等,并提供了Makefile编写、编译、加载/卸载模块的具体步骤。最后涉及模块调试技术、常见问题解决和安全性考虑,为Linux内核模块开发提供了基础指导。
2025-07-07 00:00:16
808
原创 stdout 缓冲机制详解
摘要:stdout缓冲机制是标准I/O库的性能优化手段,分为无缓冲、行缓冲和全缓冲三种类型。stdout的默认缓冲行为取决于输出目标:终端设备采用行缓冲(遇换行符刷新),非终端设备采用全缓冲(缓冲区满或程序结束刷新)。开发者可通过fflush()强制刷新或setvbuf()修改缓冲模式。理解缓冲机制对调试、性能优化和跨平台开发至关重要,特别是在需要实时输出的场景中。缓冲不当可能导致输出丢失或性能问题。
2025-06-28 22:05:37
399
原创 C/C++标准库中的标准输出流-stdout
stdout是C/C++标准库中的标准输出流,默认指向终端屏幕,但可重定向到文件。它通常采用行缓冲或全缓冲机制,需注意缓冲区未刷新可能导致数据丢失。与无缓冲的stderr不同,stdout适合输出常规内容。通过fprintf或printf操作,并支持命令行重定向(如> output.txt)。底层关联文件描述符1,可用dup2重定向。调试时应手动fflush,多线程操作需注意同步。作为基础I/O组件,stdout广泛用于程序输出和日志系统。
2025-06-28 21:50:08
740
原创 ACM模式输入输出操作
第一行输入两个正整数n,k第二行输入一个长度为n的、仅由大写字母组成的字符串。输入字符串保存到变量s中,输出整个s,并逐个输出每一个字符。
2024-05-04 18:06:28
286
原创 TI 毫米波雷达system_printf()打印输出
再调试TI毫米波雷达时,不可避免的需要打印一些信息用于debug,可以使用XDCt调试器的驱动函数。函数时,就能在CCS的窗口中看到打印的信息了。在TI mm-wave SDK中,使用。
2024-03-06 16:51:04
382
原创 ubuntu20.04安装ROS及常见问题
基于ubuntu20.04的ROS安装。给出成功安装的参考资料,以及作者安装过程中遇到的问题及解决办法。
2022-06-17 16:05:57
7068
原创 电子工作室培训(一)单片机环境搭建,keil5 新建工程及流水灯
电子工作室培训(一)一、Keil For C51开发环境的搭建1,下载Keil安装包压缩包,链接如下:解压后,找到安装二、常用C语法1、条件分支语句if-elsecase2、循环语句forwhiledo-while3、结构体4、联合5、枚举6、别名,宏7、数据类型intcharunsignedsignedfloatdouble三、数字逻辑及进制转换(1)数字逻辑1、与2、或3、非4、同或,异或(2)进制转换二进制、十进制、八进制、十六进制1、十进制
2020-10-30 19:49:34
3641
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅