container_of 宏
我们知道了一个结构体的类型,结构体内某一成员的地址,也就可以直接获得到这个结构体
的首地址。container_of 宏返回的就是这个结构体的首地址。
msecs_to_jiffies(const unsigned int m);// ms转换为系统节拍数
usecs_to_jiffies(const unsigned int u);// us转换为系统节拍数
jiffies是记录着从电脑开机到现在总共的时钟中断次数。
Tick是HZ的倒数,意即timer interrupt每发生一次中断的时间
beyondcompare 到期处理:在搜索栏中输入 regedit ,打开注册表
删除项目:计算机\HKEY_CURRENT_USER\Software\ScooterSoftware\Beyond Compare 4\CacheId
mp4 ios 保存:
1 nalu 作为一个sample写入
2 音频去掉adts头,前7个字节,ff开头
用readelf -a 命令 查看静态库的编译器类型
DTIM间隔:是使用无线路由器时无线发送数据包(becon)的间隔,单位100ms,如dtim5 = 500ms发送一次
# 加上宏定义中的参数,相当于给这个参数内容加上一个双引号
## 运算符同样是作用在带参宏里,也是在预处理阶段就完成替换。其作用是将两个记号组合成一个记号
执行 riscv32-unknown-elf-gcc -v 出现错误 cannot execute binary file: Exec format error : 原因在于主机cpu是64位的,而虚拟机安装的ubuntu是 32位的。把ubuntu换成64位解决。
ubuntu1604 安装phthon3.7 scons3.0:
./configure --prefix=/usr/local/python3 --with-ssl --enable-optimizations (会自动安装pip3),make,make install, 然后删掉/usr/bin/下的python3, pip3链接,重新建立链至/usr/local/python3/bin,. 然后pip3 install scons==3.0.4 安装scons ,同样删掉/usr/bin/下的默认链接,重新建立链接至/usr/local/python3/bin
MP4 在线分析工具
结构体对齐原则:1每一个变量的起始地址是自身大小的整数倍 ;2最终结构体所占字节大小需要是结构体中最大变量的整数倍; 3公用体中的成员公用同一段内存,所以整个联合体的sizeof是所有成员中占用内存最大的成员的所占字节 ; 4 枚举类型是当做int来存储的,所以枚举类型的sizeof值都为4字节 ; 5 联合体或者结构体作为成员变量时,需要从其内部最大元素的整数倍开始存储,最终结构体所占字节大小需要是结构体中最大变量(内部结构体中的最大变量)的整数倍。
fdisk命令分区mmcblock1 脚本实现:
fdisk /dev/mmcblk1 << EOF
n
p
1
1
w
设置内核打印级别 echo 4 > /proc/sys/kernel/printk
给某个目录下的文件打补丁: git apply rtos.diff
减少ko文件的大小 strip --strip-unneeded
#pragma message("HELLO WORLD") 程序在编译的时候加调试信息
硬件时钟和系统时钟 的时间同步 hwclock
kill_fasync
函数通过发送信号给应用程序来通知其设备已就绪,应用层 通过fcntl(fd_atbm , F_SETOWN, getpid());int flags = fcntl(fd_atbm, F_GETFL); fcntl(fd_atbm, F_SETFL, flags | FASYNC);signal(SIGIO, atbm_ioctl_msg_func); 注册信号回调函数来接收数据
Module.symvers
是内核编译过程中生成的一个文件,它记录了内核中导出的符号及其相关信息,包括符号的地址、名称、所属的对象文件、导出类型以及命名空间等
在日志中显示不同的颜色
#define COLOR_NONE "\033[0m"
#define COLOR_GREEN "\033[0;32m"
#define COLOR_RED "\033[0;31m"
#define LOG_DBG(fmt, args...) ({do{printf(COLOR_GREEN"[DBG]:%s[%d]: "COLOR_NONE, __FUNCTION__,__LINE__);printf(fmt, ##args);}while(0);})
#define LOG_ERR(fmt, args...) ({do{printf(COLOR_RED"[ERR]:%s[%d]: "COLOR_NONE, __FUNCTION__,__LINE__);printf(fmt, ##args);}while(0);})
Unknown symbol __kernel_read (err -2) 加载驱动时内核报错, 在内核代码中 EXPORT_SYMBOL_GPL(__kernel_read); extern __kernel_read 导出这个符号