随笔分类 - linux驱动编写
摘要:本文介绍 Linux 内核内存分配函数devm_kmalloc()和devm_kzalloc()。 一、devm_kmalloc 文件:drivers/base/devres.c,定义如下: void * devm_kmalloc(struct device *dev, size_t size, g
阅读全文
摘要:led实验中的led_init, static int __init led_init(void) { int ret = 0; /* 设置LED所使用的GPIO */ /* 1、获取设备节点:gpioled */ gpioled.nd = of_find_node_by_path("/gpiole
阅读全文
摘要:为了解决这种驱动代码和设备信息耦合的问题,linux 提出了设备驱动模型。设备驱动模型中包括总线,驱动,设备。 设备 (device) :挂载在某个总线的物理设备; 驱动 (driver):与特定设备相关的软件,负责初始化该设备以及提供一些操作该设备的操作方式; 总线(bus):负责管理挂载对应总线
阅读全文
摘要:字符设备包含:设备号(dev_t),设备(cdev),file_operation 。 创建一个字符设备的流程: 0 创建一个字符设备,可以是静态定义或者动态申请; 1 首先要得到一个设备号,可以是静态定义或者动态申请; 2 把写好的file_operation 并保存到 cdev,实现cdev的初
阅读全文
摘要:static int __init hello_init(void) { printk(KERN_EMERG "[ KERN_EMERG ] Hello Module Init\n"); printk( "[ default ] Hello Module Init\n"); return 0; }
阅读全文
摘要:使用寄存器配置的几个步骤: 0)确定引脚1)开启GPIO时钟2)设置引脚复用功能以及属性3)设置引脚方向以及输出电平。 一 确定引脚有的引脚的命名不一定是GPIOX_IOX这样的,他可能默认不是GPIO外设。以野火的pro板子为例。 怎么确定CSI_HSYNC呢?有两种方法:1《i.MX 6Ultr
阅读全文
摘要:详细介绍可参考《i.MX 6UltraLite Applications ProcessorReference Manual》第 26 章 General Purpose Input/Output (GPIO)(P1133)。GPIO框图 一、IOMUXC复用选择器 1 在IOMUXC 外设中,MU
阅读全文
摘要:加载驱动用到加载命令: 加载:insmod或者modprobe 例如 insmod drv.ko 卸载:rmmod(推荐)或者modprobe -r卸载掉驱动模块所依赖的其他模块(前提是这些依赖模块已经没有被其他模块所使用) insmod命令不能解决模块的依赖关系。modporbe会分析模块的一台关
阅读全文
摘要:1 根节点 dts 文件中必须有一个根节点 /dts-v1/; / { model = "SMDK24440"; compatible = "samsung,smdk2440"; #address-cells = <1>; #size-cells = <1>; }; 根节点中必须有这些属性: #ad
阅读全文
摘要:① #address-cells、#size-cells 。cell 指一个 32 位的数值, address-cells:address 要用多少个 32 位数来表示;size-cells:size 要用多少个 32 位数来表示。② compatible 表示可以“兼容”什么③ model 准确地
阅读全文
摘要:设备树示意图: 一 DTS 文件布局(layout): /dts-v1/; // 表示版本 [memory reservations] // 格式为: /memreserve/ <address> <length>; / { //"/"表示根,”{};“表示节点。 [property definit
阅读全文
摘要:一、linux内核模块简介 linux内核整体结构非常庞大,其包含的组件也非常多。我们怎么把需要的部分都包含在内核中呢? 一种办法是把所有的需要的功能都编译到内核中。这会导致两个问题,一是生成的内核会很大,二是如果我们要在现有的内核中新增或删除功能,不得不重新编译内核,工作效率会非常的低,同时如果编
阅读全文
摘要:来源:http://www.linuxidc.com/Linux/2011-10/44721.htm 先了解大概,然后一一攻克。 Linux软件工程师大致可分为两个层次: (1)Linux应用软件工程师(Application Software Engineer): 主要利用C库函数和Linux A
阅读全文