- 博客(10)
- 收藏
- 关注
原创 【linux】open和fopen
因为inode是存在于磁盘上的文件编号,假设有两个磁盘,则两个磁盘上的inode可以相等,通过建立内存中的vnode,可以区分不同磁盘上相同的inode,vnode=inode+设备号。总结一下,如果使用open打开一个文件,操作系统会先找到该文件的inode,然后查看对应的vnode,随后建立OFT项与vnode建立联系,最后在进程的文件描述符表中添加最小可用的文件描述符指向OFT,之后就可以用该文件描述符来操作文件(write read lseek等)。上图是通过文件描述符操作文件的具体过程。
2025-09-24 13:45:25
198
原创 【linux命令】tar
tar,是打包指令,正常情况下不表示压缩,需要压缩的话要加压缩参数。使用起来一般都加vf参数,v表示显示打包过程,f后面跟包名。
2025-09-12 16:38:56
139
原创 【STM32】高级定时器的外部时钟模式2
TIMx_SMCR寄存器中的ETF位控制ETR滤波器的采样频率与采样数量:比如该位为1111,则采样频率是fDTS的32分频,连续采样8次无变化则看作一个脉冲。如果采样频率太高,或者采样事件计数太小,则可能脉宽较短的杂波无法过滤。这也是为什么ETR的输入频率不能大于内部时钟的1/4,如果输入太快可能无法滤波。因为输入的ETRP信号可能有高频杂波,需要经过后面的滤波器来滤波,而滤波器需要内部时钟提供采样频率。外部时钟模式2是通过ETR引脚输出来驱动计数器计数,而ETR的频率不能超过内部时钟的1/4。
2025-08-24 20:23:55
263
原创 .a和.o的微妙区别
为什么先链接静态库再链接.o就会有重复定义的问题,而先链接.o 再链接静态库就不会有重复定义的问题。如果符号已在前面的目标文件中定义,静态库中的同名符号会被忽略。链接器按需从静态库提取符号(未被引用的符号不会被加载)。目标文件的所有符号强制参与链接,无论是否被引用。得到myfun1.o和myfun2.o。可见与链接的顺序有关,但是并不会报错。工程如上所示,先讲.c分别编译成.o。鄙人觉得挺有道理,来个大佬确认一下。
2025-04-18 14:29:43
274
原创 FreeRTOS个人总结【任务调度】
如果这时候Task3执行完了(并不代表以后不执行了,可能是进入到阻塞态挂起态),还剩Task1和Task2两个同等优先级的任务,那么这两个任务轮流执行1Tick,Task1执行1Tick后插入到链表末尾······循环执行。好比是你在家里做饭是A任务,看小孩是B任务,CPU对任务的调度执行是根据任务的状态和优先级来管理的(优先级在上一篇的创建任务函数中设定)。上一篇说的是创建任务时的函数和参数的含义,想要更好的理解任务,我们需要知道任务有哪几种状态;高优先级的任务不停止,低优先级的任务永不执行;
2025-02-07 16:45:42
362
原创 FreeRTOS个人总结【创建任务】
因为进入任务函数时会把该函数的返回地址放在lr(函数返回地址)中,如果该任务没有调用其他函数,则lr的值不用保存在任务栈中,但是一旦该任务中调用了其他函数,那么这个lr寄存器一定会被调用的函数使用,lr的值会被覆盖,所以一旦有函数调用就会把lr的值放入任务栈中存起来。那么任务在切换时需要保存当前cpu寄存器的数据,根据上一节文章末尾提到的保存现场而知,这些数据是需要在内存中申请一片任务栈空间来存储的(虽然叫做栈,但是与栈区的概念不是很一样,该栈是申请出来的,不是局部变量存放的那个栈,所以不要混淆;
2024-09-30 21:31:19
511
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅