随笔分类 -  linux驱动

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