随笔分类 - 07.linux_drivers
摘要:__setup函数在Linux内核启动过程中用于设置内核参数。 它通过查找并调用与内核参数匹配的setup函数,来配置内核的各种选项。例如,当内核启动时,如果用户输入了“console=ttyS1”这样的参数,__setup函数会找到对应的setup函数(console_setup),并调用它来
阅读全文
摘要:devm_kzmalloc()是资源管理版本的kzalloc(),它与设备关联,来进行内存的申请与释放。也就是当设备从系统中剥离,设备驱动被卸载后,使用该函数申请的内存会自动释放。主要是为了防止忘记释放内存导致内存泄漏。 void * devm_kzalloc(struct device *dev,
阅读全文
摘要:相对于create_singlethread_workqueue, create_workqueue同样会分配一个wq的工作队列,但是不同之处在于,对于多CPU系统而言,对每一个CPU,都会为之创建一个per-CPU的cwq结构,对应每一个cwq,都会生成一个新的worker_thread进程。但是
阅读全文
摘要:platform_device_register和platform_driver_register是Linux内核中用于注册平台设备和平台驱动程序的函数。 为什么很多驱动里没有platform_device_register在Linux内核中,不是所有的驱动程序都需要显式调用platform_dev
阅读全文
摘要:linux内核打印函数: define_netdev_printk_level(netdev_info, KERN_INFO); netdev_info:输入形参,指针函数; 实际使用方法:
阅读全文
摘要:假设要加载的驱动程序模块名为hello.ko加载驱动模块方法一: 进入hello.ko驱动模块文件所在的目录,然后直接 insmod hello.ko 方法二: 将hello.ko文件拷贝到/lib/module/#uname -r#/目录下,这里,#uname -r#意思是,在终端中输入 unam
阅读全文
摘要:阶段一: kernel-3.18\include\linux\init.h中 Linux内核为不同驱动的加载顺序对应不同的优先级,定义了一些宏: #define core_initcall(fn) __define_initcall("1",fn,1) //主要的初始化调用 #define core
阅读全文
摘要:linux 设备驱动文件在与 dts 中的设备板级硬件信息匹配的关键字是 compatible 属性。即比较驱动文件中 of_device_id 结构体元素的 .compatible 成员变量和 dts 文件中 node 中 compatible 属性两个字符串。Rationale:linux 启动
阅读全文
摘要:原文地址:http://blog.micro-studios.com/?p=615#comment-1069 看后感想:這点比 ldd3上讲的都仔细 2012年11月29日11:24:17:有BUG_ON就不用反汇编了。。。 2012年11月30日11:14:13:回调函数跟丢了 我遇到的情况:ht
阅读全文
摘要:转载请标明原址:https://blog.csdn.net/kai_zone/article/details/82021233 前言: 这篇文章主要是对linux驱动面试题一个整理跟总结,参考了很多网上的资料,基本涵盖linux驱动相关面试内容。我把他们大概的分为三部分:基础部分,同步相关,还有中断
阅读全文
摘要:1 在script.bin转换得来的script.fex里打开uart1功能 167 [uart1]168 uart_used = 1169 uart_port = 1170 uart_type = 4171 uart_tx = port:PG06<2><1><default><default>17
阅读全文
摘要:前言: 在嵌入式开发中,如uboot的移植,kernel的移植都需要对Flash 有基本的了解。下面细说一下标题中的中Flash中的关系。 Flash Memory(闪存)是非易失性的存储器。 http://www.longsto.com/news/27.html?bd_vid=1070389674
阅读全文
摘要:以操作龙芯派为例,龙芯派2代 GPIO39为峰鸣器控制引脚 linux系统下通过info命令查看mmap使用: info mmap #include <stdio.h> #include <stdlib.h> #include <time.h> #include <unistd.h> #includ
阅读全文
摘要:本文主要分析MII/RMII/SMII,以及GMII/RGMII/SGMII接口的信号定义,及相关知识,同时本文也对RJ-45接口进行了总结,分析了在10/100模式下和1000M模式下的设计方法。 MII接口提供了MAC与PHY之间、PHY与STA(Station Management)之间的互联
阅读全文
摘要:一个设备驱动的主要任务有两个: 1. 存取设备的内存 2. 处理设备产生的中断 对于第一个任务。UIO 核心实现了mmap()能够处理物理内存(physical memory),逻辑内存(logical memory), 虚拟内存(virtual memory)。UIO驱动的编写是就不须要再考虑这些
阅读全文
摘要:提到中断就必须了解到GIC,下面先了解一下GIC 一、GIC概念 GIC(Generic Interrupt Controller)是ARM公司提供的一个通用的中断控制器。GIC通过AMBA(Advanced Microcontroller Bus Architecture)这样的片上总线连接到一个
阅读全文
摘要:1. 前言 of_match_table:匹配compatible;id_table:匹配id; 在Linux设备模型的抽象中,存在着一类称作“Platform Device”的设备,内核是这样描述它们的(Documentation/driver-model/platform.txt): Platf
阅读全文
摘要:vacajk 【Xilinx-Petalinux学习】-02-建立PetaLinux工程 前面我已经把PetaLinux成功安装到了Ubuntu虚拟机当中了,接下来就要实际操作,将PetaLinux移植到我们自己的硬件平台当中去。 step1:硬件描述文件 有两种PetaLinux工程建立的方法,一
阅读全文
摘要:Introduction HW/IP features Features Supported by Driver Missing features, Known Issues, Limitations Kernel Configuration Devicetree Test Procedure Ex
阅读全文