device driver
文章平均质量分 54
HeathXian
嵌入式 分布式后端 网络安全 主机安全
展开
-
ESP8266 NodeMCU开发板
ESP8266使用笔记之常用固件开发板使用的是NodeMCU开发板:目录1.学习使用ESP8266官方的SDK 1.1使用SDK提供的AT固件 1.2使用SDK Build固件2.学习使用NodeMCU固件(上层可使用Lua开发)和MicroPython固件(上层可使用MicroPython开发)学习使用ESP8266官方的SDK使用AT固件:下载开发包:esp8266_nonos_sdk_v1.5.4.7z,/bin/目录里面包含已...转载 2021-07-17 22:17:18 · 2854 阅读 · 0 评论 -
串口输出重定向
日常现象在调试嵌入式设备的时候需要接串口,通过串口将打印输出到显示终端。但是很多时候接串口是设备是一件很麻烦的事情,比如,串口板,串口线等。分析内核的打印不能重定向过来,但是应用层打印可以重定向打印过来查看内核的打印,cat /proc/kmsg在输出完缓冲区内容后,会阻塞卡住,内核有新的输出时会继续输出。如果要把内核打印到telnet,那么可能需要修改源文建printk.c......原创 2019-05-14 20:38:08 · 7631 阅读 · 9 评论 -
linux 识别u盘,移动硬盘,固定硬盘
一、支持硬盘驱动的内核;有些U盘,使用了SSD级别的主控(或者量产时指定为固定磁盘),接入到电脑上,识别成本地硬盘,例如sandisk的Cuzer Blade某些型号的U盘,文中常规U盘是指识别成可移动磁盘的U盘,本地硬盘U盘是指识别成本地硬盘的U盘;1、先常规U盘,后本地硬盘U盘usb 1-1: new high-speed USB device number 2 using hiu转载 2017-07-15 12:15:10 · 6948 阅读 · 5 评论 -
海思 3536C音频调试
编译海思3536C 开发包中audio demo程序,修改makefile 静态编译1,MIC_IN 硬件接口接入耳机话筒,输入声音。运行代码程序 ./sample_audio 2 完成声音录制。 Ai -> Aenc -> file -> adec -> ao2,执行./sample_audio 3 带上耳机发现有声音出处(哈哈,海思的demo真不错啊)原创 2017-06-27 17:32:53 · 2113 阅读 · 0 评论 -
卸载内核模块失败 rmmod '/lib/modules': No such file or directory
[root@xxx/home]# insmod xxx.koinsmod: can't insert 'xxx.ko': File exists[root@xxx /home]# rmmod xxx.kormmod: can't change directory to '/lib/modules': No such file or directory[root@xxx /home]原创 2017-05-29 12:47:10 · 1222 阅读 · 0 评论 -
linux 并发 同步
驱动运行再内核空间,这样必须要了解内核运行的基本原理,比如说什么时候放弃cpu等。驱动大多数情况下,是对外设访问。cpu经常要等IO,因为最快的是cpu然后memory最后是外设。共享资源被多个线程访问时,锁应该是锁一个语义完整的整体。原子操作:对象应该是一个语义完整的整体并且只有一个变量。void atomic_set(atomic_t *c, int i);void a原创 2017-04-26 11:36:04 · 665 阅读 · 0 评论 -
轮询 设备驱动
轮询应用程序中使用的系统调用select()和poll()查询是否可对设备驱动进行无阻塞的访问,他们都是最终引发驱动中的poll()函数被执行。应用程序中的轮询 #include int select( int nfds, fd_set FAR* readfds, fd_set * writefds, fd_set * exceptfds, const s原创 2017-05-06 17:58:20 · 723 阅读 · 0 评论 -
linux设备驱动中阻塞与非阻塞I/O
阻塞与非阻塞I/O 阻塞操作是指在执行设备操作时,若不能获得资源,则挂起进程直到满足可操作的条件后再进行操作。 被挂起的进程进入休眠状态,被移出调度器的运行队列,直到等待的条件被满足。 非阻塞操作的进程在不能进行设备操作时,并不挂起,它或者放弃,或者不停地查询,直到可用进行 操作为止。 驱动程序通常需要提供这样的能力,支持阻塞和非阻塞的进行re原创 2017-05-05 11:58:53 · 556 阅读 · 0 评论 -
mount 整个flash内容
通过烧录器读取device_ng中f整个lash存储器内容得到一个device_ng_file文件。device_ng中flash 分区情况:一个u-boot分区 + 一个kernel分区 + 一个app分区。需求是得到device_ng_file文件中(二进制文件)app分区的内容(文件,文件夹)。解决方法:将文件内容烧到分区中,挂载这个分区。 1,根据devi原创 2017-04-21 18:11:12 · 1184 阅读 · 0 评论 -
linux 块设备驱动
虚拟文件系统(vfs)层类似于面向对象中的“抽象基类”的概念,而下面一个个具体的文件系统就相对于这个抽象基类的"派生类",所有文件操作如 open, read, write等在vfs中只是实现了一个类似于“纯虚函数”的接口,针对具体的文件系统,就会使用其派生类中被“改写”的“虚函数”。块设备和字符设备相同之处: 1 . 都经过vfs向用户空间提供上述中的文件操作接口o原创 2017-05-05 22:53:28 · 450 阅读 · 0 评论 -
锁(二) 信号量 读写信号量 互斥体
信号量是用于保护临界区的一种常用方法,它的使用方式和自旋锁类似。与自旋锁相同的是只有得到信号量的进程才能执行临界区代码。与自旋锁不同的是,当获取不到信号量时,进程不会原地打转而是进入休眠等待状态。linux中信号量的主要操作: 1,定义信号量 struct semaphore sem; 2,初始化信号量 void sema_init(struct semaphor原创 2017-05-04 11:58:42 · 569 阅读 · 0 评论 -
锁(三) 完成量
完成量用于一个执行单元等待另一个执行单元执行完某事。linux中完成量的主要操作 1,定义完成量 struct completion { unsigned int done; wait_queue_hea原创 2017-05-04 17:56:45 · 431 阅读 · 0 评论 -
锁(一) 中断屏蔽 原子操作
中断屏蔽单cpu,在单cpu范围内避免竞态的简单方法是在进入临界区之前屏蔽系统的中断。cpu一般都具备屏蔽中断和打开中断的功能,这项功能可以保证正在执行的内核执行路径不被中断处理程序抢占,防止某些竞态条件的发生。由于linux内核的进程调度等操作都依赖中断来实现,内核抢占进程之间的并发也得以避免。中断屏蔽的使用方法为:local_irq_disable() //屏蔽中断原创 2017-04-27 10:38:11 · 1955 阅读 · 0 评论 -
linux 内核模块简介
linux内核很庞大,怎样把需要的部分都包含在内核中:1,把需要的功能都编译到内核。这会导致内核很大,如果要在内核中下新增或删除功能需要重新编译。2,使用linux 模块机制。模块机制:模块本身不被编译入内核,模块一旦被加载它就和内核中的其他部分完全一样。#include #include static int hello_init(void){ printk(KERN原创 2017-04-19 18:06:55 · 502 阅读 · 0 评论 -
Kconfig Makefile 内核编译
在linux 内核中增加程序需要完成以下3项工作:> 将编写的源代码拷入Linux内核源代码的相应目录。> 在目录的Kconfig文件中添加关于新源代码对应项目的编译配置选项。> 在目录的Makefile文件中添加对新源代码的编译条目。makefile语法:1,目标定义:就是用来定义那些内容要作为模块编译,那些要编译并连接进内核。例如:obj-y += foo.o,表示要由原创 2017-04-19 11:22:48 · 632 阅读 · 0 评论 -
linux 启动 引导
裁剪 把Linux系统拆开自己将各个组件组装,然后完成一个微型的Linux系统。内核的引导 引导Linux系统的过程将以引导X86PC为例。引导X86PC上的linux的过程和引导嵌入式系统上的Linux的过程基本类似。不过在X86PC上有一个从BIOS(Basic Input-Output System)转移到Bootloader的过程,而嵌入式系统往往 复位后就直原创 2017-04-14 14:49:19 · 550 阅读 · 0 评论