- 博客(13)
- 收藏
- 关注
原创 内核定时器的使用
前言:· 内核定时器是一个精度低的定时器(一般都是毫秒级别的),他是基于内核中的 jiffies 变量来实现的· 软件意义上的定时器最终都是依赖硬件定时器来实现的· 内核定时器的精低精度的定时器,一般用做看门狗等对时间精度不敏感的情况下使用· 假如要定时1个 jiffies 的时间长度,内核定时器是无法做到准确定时的,因为内核定时器可能是在上一个jiffies刚走完一定的时间,又还没到下一个 jiffies 时就开始定时,这样会导致实际的定时时间小于一个 jiffies 的长度。
2024-04-10 11:00:51
857
原创 Linux 信号
pause 是系统调用可以使进程暂停运行,进入休眠状态,直到进程捕获到一个信号为止,只有执行了信号处理函数并返回后,pause 函数才返回,这种情况下,pause 函数返回 -1,并设置 errno 的值。旧的闹钟将被新的闹钟取缔。· 一般不可靠信号都是进程管理相关的信号,比如终止进程,即使有多个终止进程的信号,进程也只能终止一次,所以忽略掉未必就不好。· 使用信号集合的一般是不可靠信号,信号有丢失的现象存在,就是因为阻塞的信号集不允许有相同的元素出现在集合中。
2023-09-17 15:37:08
82
原创 Linux 内核 spi 的 API
sturct spi_driver *sdrv :申请注册的 SPI 驱动结构体对象。· struct spi_message *m : 要初始化的消息结构体指针对象。· spi_setup 函数用于设置 spi 的传输速率,带宽和片选信号等。· 将 spi_transfer 结构体添加到 spi_message。· 发送和接收数据都是封装在 spi_message 消息结构体中的。· 总体来说 spi 设备驱动中的数据是以消息队列的形式发送的。
2023-09-15 22:06:09
155
原创 Linux module
模块加载函数,当通过 insmod 或 modprobe 命令加载kernel module时,module的初始化函数会被自动调用执行,· insmod 命令是单独加载内核模块而已,modprobe 命令加载模块的同时,还加载模块依赖的其他模块· rmmod 命令用来卸载内核模块,而 modprobe -r 命令用来卸载指定的内核,并且卸载该模块依赖的所有模块。
2023-09-11 17:24:33
314
原创 GNU C 宏定义函数
对与程序调用普通函数时,需要将当前程序运行的状态保存在栈中,然后 PC 指针跳转到调用的函数执行的代码段,这样提高了程序的可维护性,但调用函数需要额外的开销,但是节省了代码段的空间· 宏定义函数是以空间换取时间的策略,程序不需要跳转到对应的函数去执行,而是在预编译时,就把宏定义函数替换到源代码中去,这样增大了代码段空间,但是节省了调用函数的时间(因为在 C 中没有像 C++ 一样的内联函数)· 宏定义函数一般适用于代码段小且需要大量调用的函数。
2023-08-28 17:05:45
71
原创 ARM开发板网络环境搭建【超级详细】
【超级详细】配置PC端和ubuntu和arm开发板的网络环境,使得三机互ping通,且开发板和ubuntu有互联网.
2023-05-27 14:44:58
1205
原创 ST-Link烧录错误
st-link连接正常但烧录错误,提示:Not a genuine ST Device! Abort connection,解决方法
2023-05-23 00:01:11
1214
2
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人