学习-知识-记录

本文深入探讨了容器宏在获取结构体首地址的应用,同时介绍了ms和us转系统节拍数的函数,并展示了如何使用BeyondCompare进行到期处理,以及mp4文件的保存方法和在线分析工具的使用。此外,文章还涵盖了结构体对齐原则、fdisk命令用于分区mmcblock1的脚本实现,以及内核打印级别设置等关键点。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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 在线分析工具  

Online Mp4 Parser

结构体对齐原则: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 导出这个符号

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值