文章分类 -  LINUX

摘要:阻塞和非阻塞i/o是两种不同的模式,驱动应灵活支持这两种用户空间对设备的访问 ###阻塞和非阻塞 阻塞:对设备操作时,如果无法获得资源,应当挂起进程直到满足可操作条件后再操作。被挂起的进程进入睡眠状态,等到满足条件后会被唤醒。 当用户以阻塞的方式进行访问,对设备资源进行read(), write() 阅读全文
posted @ 2022-11-08 11:54 月的光景 阅读(134) 评论(0) 推荐(0)
摘要:su 进入超级用户 docker 安装: curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun 导入镜像: cat apa_ubuntu.tar | docker import - apa_ubuntu:v1 docke 阅读全文
posted @ 2022-11-08 11:49 月的光景 阅读(28) 评论(0) 推荐(0)
摘要:linux制作ext4格式image有两种方法:1、raw image,这种img会把文件系统填充0,因此可以直接挂载,但是占用空间比较大;2、sparse image,这种img是稀疏描述,不能直接挂载,大小就是文件系统中文件的大小 ###raw img 先dd创建一个空的img文件,然后给他格式 阅读全文
posted @ 2022-02-21 16:24 月的光景 阅读(1042) 评论(0) 推荐(0)
摘要:最近发现u-boot其实命令很多,而且挺强大的。所以记录一下,提醒作用。 ? - alias for 'help' askenv - get environment variables from stdin base - print or set address offset bdinfo - pr 阅读全文
posted @ 2022-01-27 10:04 月的光景 阅读(365) 评论(0) 推荐(0)
摘要:###资源 所有资源都放在这里 ###bootchart-lite 源码 http://code.google.com/p/bootchart-lite/ 然而我打不开,最后从github上找了一份,但是编译出来有点问题,最后还是用bootchart解决。 编译(如果是嵌入式记得交叉编译)完源码配置 阅读全文
posted @ 2021-12-23 15:42 月的光景 阅读(844) 评论(0) 推荐(0)
摘要:文件: kernel/drivers/gpio/gpio-keys.c kernel/arch/arm64/boot/dts//chip.dtsi kernel/include/dt-bindings/input/linux-event-codes.h ###linux 对于linux,基本的按键驱 阅读全文
posted @ 2021-12-23 15:41 月的光景 阅读(930) 评论(0) 推荐(0)
摘要:原文太强了 uboot向kernel的传参机制——bootm与tags kernel的cmdline参数解析原理分析 阅读全文
posted @ 2021-12-23 15:40 月的光景 阅读(62) 评论(0) 推荐(0)
摘要:###简介 Overlayfs是一种类似aufs的一种堆叠文件系统,于2014年正式合入Linux-3.18主线内核。 参考: 深入理解overlayfs(一):初识 深入理解overlayfs(二):使用与原理分析 overlayfs 主要有四个目录: lower:底层目录,一般放置只读文件 up 阅读全文
posted @ 2021-12-23 15:36 月的光景 阅读(3517) 评论(0) 推荐(1)
摘要:http://10.4.0.169/#/c/103316/ 增加一个键值的宏 判断键值进入fastoot gpio 61 fastboot、59 recovery设置为输入,并判断其状态,上报键值 bootable/bootloader/lk/include/dev/keys.h 3 bootabl 阅读全文
posted @ 2021-12-23 15:29 月的光景 阅读(63) 评论(0) 推荐(0)
摘要:转 阅读全文
posted @ 2021-12-23 15:29 月的光景 阅读(35) 评论(0) 推荐(0)
摘要:###通过 device_create_file 创建/sys/devices下的设备节点 1 使用DEVICE_ATTR初始化device_attribute,或直接初始化该结构体 static DEVICE_ATTR(fw_version,S_IRUGO,mxt_fw_version_show, 阅读全文
posted @ 2021-12-23 15:28 月的光景 阅读(1440) 评论(0) 推荐(0)
摘要:以platform设备为例 ###设备树解析 很好的一张总结图,转自:设备树解析过程及platform设备注册 ###probe函数调用 转自:device 的probe函数是怎么被调用的 在驱动程序中,我们通常会定义一个platform_driver的结构体,其中包含了各种操作函数。 static 阅读全文
posted @ 2021-12-23 15:28 月的光景 阅读(8455) 评论(0) 推荐(0)
摘要:##gpio reference 其实就是一些函数,在程序中调用即可: gpio_is_valid(PIN_NUM) gpio_request(PIN_NUM,PIN_NAME); gpio_set_value(PIN_NUM,bool); gpio_get_value(PIN_NUM); gpio 阅读全文
posted @ 2021-12-23 15:27 月的光景 阅读(245) 评论(0) 推荐(0)
摘要:kernel/msm-3.18/arch/arm64/boot/dts/qcom/sdm450-qrd-yd-evt.dtsi ###DTS、DTB、DTC是什么 .dts文件是一种ASCII文本格式的设备树描述文件,一般一个dts文件对应一个设备。 .dtsi文件可以被.dts文件包含,靠后的dt 阅读全文
posted @ 2021-12-23 15:26 月的光景 阅读(126) 评论(0) 推荐(0)
摘要:1、电源管理 Regulator 分成静态和动态:静态不需要改变电压电流,只需要开关电源,用在bootloader,firmware,kernel board 阶段等。动态,根据需要改变电压电流。 2、获取设备的regulator,dev为驱动对应的设备指针,可以用NULL,Vcc为电源的ID,内核 阅读全文
posted @ 2021-12-23 15:26 月的光景 阅读(1171) 评论(0) 推荐(0)
摘要:##驱动 设备结构体中要包含input_dev timer_list paltform_device 挂在platform总线上,依靠定时器中断上报event struct timer_list包含的主要成员: data:传递到超时处理函数的参数,主要在多个定时器同时使用时,区别是哪个timer超时 阅读全文
posted @ 2021-12-23 15:26 月的光景 阅读(115) 评论(0) 推荐(0)
摘要:###gcc gcc [-option] [filename1] [filename2] [filename3] <输出o文件名不加后缀> 将 1 2 3 一起编译处o文件 -c: 只编译不链接为可执行文件,编译器将输入的.c 文件编译为.o 的目标文件。 -o: <输出文件名>用来指定编译结束以后 阅读全文
posted @ 2021-12-23 15:25 月的光景 阅读(68) 评论(0) 推荐(0)
摘要:每个中断都有一个中断号(线),通过中断号即可区分不同的中断。 如果要处理的内容不希望被其他中断打断,那么可以放到上半部 如果要处理的任务对时间敏感,可以放到上半部 如果要处理的任务与硬件有关,可以放到上半部 其他任务,优先考虑放到下半部 ###上半部### ####request_irq 函数### 阅读全文
posted @ 2021-12-23 15:24 月的光景 阅读(159) 评论(0) 推荐(0)
摘要:基本流程和字符设备驱动是一样的。 增加platform_driver结构体 匹配设备树,of_match_table和id_table比较compatible参数匹配。 其中,of_match_table和id_table都是用来在设备树中和设备匹配,且都是通过compatible,但前者优先级更高 阅读全文
posted @ 2021-12-23 15:24 月的光景 阅读(92) 评论(0) 推荐(0)
摘要:###设备树配置 https://blog.csdn.net/kmnf1/article/details/90292884 ###驱动编写 基本上和platform的没什么区别,无非就是module_init函数中调用的是i2c_add_driver()。 创建设备结构体、iic_driver结构体 阅读全文
posted @ 2021-12-23 15:24 月的光景 阅读(56) 评论(0) 推荐(0)