- 博客(6)
- 收藏
- 关注
原创 linux内核驱动开发案例
linux分为用户态和内核态,内核态拥有更高的权限(例如可以关闭中断实现更高的优先级),这周在内核态开发了一个简单的驱动,做个经验总结。任务背景:由于业务需求433Mhz通讯,而采用的芯片为纯透传模式(无fifo寄存器),所以产生了较高的序要求,用户态无法完成该工作,故在内核态开发(最高优先级,关闭所有中断,相当于百分百占用cpu)。对于内核态与用户态最直观浅显的理解是:用户态运行程序的方式为:编写.c文件→编译器用特定编译选项(适配当前系统)得到可执行文件→开整内核态运行特定程序的方式为:
2021-10-15 16:55:53
1235
原创 关于malloc的使用
关于malloc的使用在使用malloc动态生成字符串的时候遇到一个奇怪的问题,总是提醒我内存空间有错误,最终排查发现malloc分配的空间不会清零,需要手动置0,否则输出的字符串没有结束符,系统会一直往下读直到读到非法内存。char * str1 = malloc(size*sizeof(char));for(int i=0;i<size+1;i++){ str1[i]=0;}可以这样进行一次清零...
2020-11-15 23:46:07
215
原创 子网掩码理解
子网掩码IP地址内包括网络号主机号当一个主机与其他主机通讯的过程中,会先用子网掩码判断对方是否和自己处于同一个子网。实际上是一种动态分配网络号和主机号所占长度的方式。但在我的理解里一个IP地址对应的还是特定的主机,也许只是改变了广播的范围吧。...
2020-11-15 23:41:50
147
原创 各个变量(局部变量,全局变量,malloc申请)在内存中的位置
各个变量(局部变量,全局变量,malloc申请)在内存中的位置首先我们聊聊内存中有哪些空间:程序区:顾名思义,程序区用于存放我们写的代码,系统通过指针得知当前程序执行到哪一步,以实现程序的顺序执行以及跳转静态储存区:静态储存区在程序开始执行时被分配内存空间,其最显著特色就是变量在整个过程中都不会被释放,即作用时间为整个程序运行过程。储存在静态储存区的变量在此期间占用固定储存单元,不会被动态分配和释放,一般用于存放:全局变量,动态储存区:动态储存区存放的变量随时可能进行进一步的分配
2020-11-02 09:38:29
3085
原创 互斥段信息量
互斥段信息量互斥段信息量数值表示有多进程还在等待当中,我理解为每有一个进程执行完,所有在这一互斥段的信息量全都+1,例如有10个进程共享同一个互斥段,若每次最多允许3个进程同时进入互斥段,则用于实现互斥的信号量的变化范围是-7–3。代表了7个在排队的和3个占着坑的(分别为123)。有进程执行完则负数的排队的信号量全都+1,不知道对不对...
2020-10-31 11:20:19
597
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人