![](https://img-blog.csdnimg.cn/20201014180756757.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
linux驱动
文章平均质量分 50
天年一梦
嵌入式开发
展开
-
给kvm虚拟机扩容 & Centos 中编译 linux-5.15.2
给kvm虚拟机扩容_Mr.肖某某的博客-程序员信息网_kvm虚拟机扩容https://www.i4k.xyz/article/qq_28046487/105435061错误处理:https://blog.csdn.net/cbuy888/article/details/80809988[root@mypc ~]# growpart /dev/vda 1错误:unexpected output in sfdisk --version [sfdisk,来自 util-linux 2.23.2]转载 2022-01-05 14:43:37 · 374 阅读 · 0 评论 -
linux 内核barrier() 使用举例
barrier() 编译屏障是为了防止编译器对代码优化时,改变代码的先后顺序;内存屏障( rmb() / wmb() )是让CPU对代码顺序执行。下面举例barrier()在linux内核中的使用1. 确保先获取omap->buf_len 的值,然后在omap_i2c_write_reg 中使用omap->buf_len,顺序不能变 omap->buf_len = msg->len; /* make sure writes to omap->buf_le原创 2021-12-21 15:26:50 · 1407 阅读 · 0 评论 -
linux内核及驱动调试
linux 内核、驱动调试原创 2021-11-24 18:37:35 · 1128 阅读 · 0 评论 -
linux 内核 watchdog 驱动框架
watchdog驱动分为以下三层:统一driver层 watchdog_dev.c;核心层 watchdog_core.c;具体的设备层。 eg: s3c2410_wdt.c从上层到下层依次为:给应用层提供open等接口drivers\watchdog\watchdog_dev.c static const struct file_operations watchdog_fops = { .unlocked...原创 2021-11-13 21:05:23 · 1405 阅读 · 0 评论 -
could not insert module agile_nic.ko: Invalid module format
一般分为2中情况:一、依赖文件没有被加载,modinfo agile_nic.ko 查看需要的依赖module,先加载依赖model,再加载驱动 agile_nic.ko二、驱动的 vermagic 和系统当前的 vermagic 不匹配。查看驱动的 vermagic:$ modinfo agile_nic.ko filename: /root/agile_net/agile_nic.koversion: 0.0.1description: Agile原创 2021-11-01 20:38:55 · 817 阅读 · 0 评论 -
深入理解 Linux 配置/构建系统
参考:深入理解 Linux 配置/构建系统是如何工作的https://linux.cn/article-11227-1.html转载 2021-10-21 19:58:34 · 107 阅读 · 0 评论 -
dts详解及举例
一.ranges 当需要描述的设备不是本地设备时,就需要描述一个"从设备地址空间到CPU地址空间的映射关系",就需要用到ranges属性。ranges = <local地址, parent地址,size> 表示将local地址向parent地址的转换eg1:#address-cells = <1>;#size-cells = <1>;...external-bus { #address-cells = <2> //可以理解为r...原创 2021-10-16 12:20:09 · 2510 阅读 · 0 评论 -
Centos 升级linux内核版本
1. 从官网下载我们需要升级的内核文件并解压下载内核5.11的源码并解压,源码路径Index of /pub/linux/kernel/v5.x/,解压:tar -zxvflinux-5.11.tar.gz解压到磁盘空间较大的分区中,对于v5.11版本的内核编译,建议至少要有10G以上的剩余磁盘空间,否则编译到一半发现磁盘空间不够。。。2. 复制红帽官方的kernel编译配置文件并更改名字进入解压后的目录,参考下列命令执行:cp /boot/config-3.10.0-1127..原创 2021-09-14 08:51:00 · 12171 阅读 · 1 评论 -
virtio_net.c 驱动中数据收发流程
1. 从板卡接收数据流程:数据接收流程: napi_gro_receive(&rq->napi, skb); netif_receive_skb __netif_receive_skb // 传输skb给网络层 /\ ||驱动 virtio_net.c 中poll方法 napi_poll(n, &repoll); 即virtio_net.c 中 virtnet_poll原创 2021-08-07 19:25:49 · 687 阅读 · 0 评论 -
strace ifconfig p4p1 up 跟踪到驱动
参考 蜂窝科技:http://www.wowotech.net/linux_kenrel/464.htmlstrace ifconfig p4p1 up ioctl(4, SIOCGIFFLAGS, {ifr_name="p4p1", ifr_flags=IFF_BROADCAST|IFF_MULTICAST}) = 0ioctl(4, SIOCSIFFLAGS, {ifr_name="p4p1", ifr_flags=IFF_UP|IFF_BROADCAST|IFF_RU原创 2021-07-20 21:33:34 · 141 阅读 · 0 评论 -
linux driver和 /proc 文件的交互
static int agile_proc_read(struct seq_file *m, void *v){ char user_str[20] = "user string"; seq_printf(m, "%s\n", user_str); return 0;}static int agile_proc_open(struct inode *inode, struct file *file){ // malloc seq_operations 并初始化; 参3:传递priv...原创 2021-07-15 11:56:52 · 702 阅读 · 0 评论 -
linux内核printk %p 地址打印问题
printk 使用 %p 打印的地址和你预想的不一样???在linux内核中,直接使用%p打印出的地址时经过哈希运算的,为了防止直接暴露内核地址为攻击者提供了有关内核布局的敏感信息。要打印内核的虚拟地址,可以使用 %pK。详细讲解请参考:linux printk https://lishiwen4.github.io/linux-kernel/printk...原创 2021-06-01 14:36:07 · 6365 阅读 · 0 评论 -
linux uart 驱动中 open、read、write调用层次
//Linux kernel release 2.6.xx//linux uart 驱动中接收和发送函数的调用层次,记录如下:module_init(s3c24xx_serial_modinit); //drivers/serial/samsung.cuart_register_driver(&s3c24xx_uart_drv); tty_register_driver(normal); //drivers/serial/serial_core.c cdev_init(&原创 2020-09-16 21:44:15 · 976 阅读 · 0 评论 -
Linux i2c_driver probe被调用的流程分析(linux4.1.15)
**/*linux4.1.15 i2c_driver probe被调用的流程分析*/**i2c_add_driver(&ap3216c_driver); //ap3216c.c i2c_register_driver(THIS_MODULE, driver) //drivers\i2c\i2c-core.c driver_register(&driver->driver); //drivers\base\driver.c bus_add_driver(原创 2020-09-16 15:04:18 · 3497 阅读 · 0 评论