随笔分类 - linux驱动
摘要:版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。本文链接:https://blog.csdn.net/code_style/article/details/53739634一、网上的文章一般都是分析pinctrl驱动的,从头到尾分析了一遍,搞的
阅读全文
摘要:1、按键驱动程序的第一个版本:day07/04 //内核模块的基本要求 init.h module.h LICENSE struct cdev btn_cdev; btn_read(...) { //阻塞 等待队列 睡眠 //非阻塞 将数据拷贝到用户空间 } struct file_operatio
阅读全文
摘要:1、内存管理 (将物理内存映射到内核空间(3G~4G)并使用) 深入内核: 伙伴系统 1.1基本概念 1)linux内核管理内存是以物理内存页为单位 一个物理内存页通常为4KB 内核会为每个物理内存页创建如下结构变量 struct page { //记录该物理内存页被引用的次数 为0 代表空闲页 a
阅读全文
摘要:1、设备的阻塞方式访问 应用编程 sd=socke(...) recv(sd, ....)//无数据阻塞等待 有数据立即返回 希望按键设备 也能达到在用户空间阻塞方式访问 内核中为了实现设备的阻塞方式访问,提供了一套机制: 等待队列 核心数据结构 wait_queue_head_t 实验步骤: 1)
阅读全文
摘要:[ 221.341000] bad: scheduling from the idle thread![ 221.341000] [<c0014e80>] (unwind_backtrace+0x0/0x138) from [<c0073390>] (dequeue_task_idle+0x1c/0
阅读全文
摘要:谈谈对中断的理解? 中断是计算机中处理异步事件的重要机制 中断触发的方式: 1)中断源级设置 按键:(CPU之外的硬件) 设置中断的触发方式 uart控制 (CPU之内的硬件) 不用设置触发方式 中断使能 2)中断控制器级设置 优先级 中断使能 ...设置发往哪个核 3)ARM设置 cpsr.I =
阅读全文
摘要:1、软中断机制 不能以模块形式出现 使用起来不够灵活2、tasklet 核心数据结构 struct tasklet_struct { function data .... } 1)定义tasklet变量 2)初始化tasklet变量 DECLARE_TASKLET //定义并初始化tasklet变量
阅读全文
摘要:1、linux系统中的中断处理 1.0裸板中中断异常是如何处理的? 以s5p6818+按键为例 1)按键中断的触发 中断源级配置 管脚功能 中断使能 中断触发方式 (如果中断源是uart/i2c 只需要配置中断使能) 中断级级设置 中断优先级设置 中断使能 ARMcore级设置 cpsr.I=0 2
阅读全文
摘要:1、通过GPIO库函数控制LED open("/dev/myleds",...) close(fd) sys_open sys_close led_open(...) led_release(...) { { 亮灯 灭灯 } } 电路原理图: 控制LED1 实则控制CPU上的管脚GPIOC12输出低
阅读全文
摘要:1、模块参数 应用编程: int main(int argc, char *argv[]) { } ./a.out xxx yyy zzz 内核编程: insmod xxx.ko 参数信息 希望在安装内核模块时也可以给其传递参数,需要使用模块参数 模块参数的实现步骤: 1)在模块中定义全局变量 2)
阅读全文
摘要:linux驱动程序开发1、linux驱动工程师需要具备的知识 1)硬件的知识 看懂电路原理图 (二极管 三极管 电阻...) 底板和核心板中名称相同的导线是同一条导线 目的:找到要驱动的硬件和CPU的连接方式 熟悉常见的接口:gpio uart i2c 1-wire spi 485 can usb
阅读全文