文章分类 -  嵌入开发记录

摘要:1、设备节点查询 查询设备树上的设备节点:启动开发板后,在 /proc/device-tree下,这里有节点,表明有节点 查询平台文件下的设备节点:在/sys/devices/platform/目录下有所有设备node的信息,--这里有表明设备注册了 ## 有设备注册,最后驱动才能进入probe 2 阅读全文
posted @ 2020-09-06 15:54 笑不出花的旦旦 阅读(955) 评论(0) 推荐(0)
摘要:1、设备树:字面意思就是设备以树的结构、形式组织排列起来; 期初设备所有的设备都放在平台文件上,主要为了节约空间、方便管理,将设备以树的形式组织起来; 2、设备树环境搭建:讯为在这里已经做了很多,简单先按照步骤使用起来; 1、将目录下itop4412_kernel_4_14_2_bsp-201902 阅读全文
posted @ 2020-09-05 18:06 笑不出花的旦旦 阅读(227) 评论(0) 推荐(0)
摘要:1、usbmouse.c 在目录drivers\hid\usbhid下 驱动入口 int retval = usb_register(&usb_mouse_driver); 驱动结构体 // 这个结构体中包含有很多函数,但是这四个是必须的 static struct usb_driver usb_m 阅读全文
posted @ 2020-09-02 00:24 笑不出花的旦旦 阅读(181) 评论(0) 推荐(0)
摘要:1、USB驱动的框架 1、USB主机端和设备端 USB设备端的设备注册是在设备端中;USB主控制器的设备注 册需要在平台文件中注册 1、USB HCD这一层涉及到硬件部分,因此驱动会有差异; 2、USB CORE:这层完全是脱离硬件部分,纯软件实现,因此是Linux内核提供的,那么与硬件通信,就需要 阅读全文
posted @ 2020-08-31 23:59 笑不出花的旦旦 阅读(703) 评论(0) 推荐(0)
摘要:一、USB-WiFi移植通用步骤:这个属于内核中没有驱动,需要自己找驱动型 1、找源码并编译出.ko文件 1、确定芯片--》根据芯片找驱动源码;找不到换方案,很可能不开放; 2、关注一下源码支持的内核版本和驱动源码版本,以及编译平台;(对号与自己的对应) 3、Makefile的配置: 配置对应的平台 阅读全文
posted @ 2020-08-30 12:03 笑不出花的旦旦 阅读(420) 评论(0) 推荐(0)
摘要:1、串口 许多设备可以通过串口与控制器连接传输数据,但是串口一般都是有限的,需要使用USB口转;上节说到,USB口可以通过集线器扩展USB口,理论上一个USB口可以扩展128个USB口,但是实际也用不了这么多。因此,需求量大的串口可以通过USB口扩展。USB到串口,有需要电平转换,有的是CMOS电平 阅读全文
posted @ 2020-08-29 17:13 笑不出花的旦旦 阅读(1033) 评论(0) 推荐(0)
摘要:1、常用到的名词: USB控制器: USB总线结构:根集线器、集线器、USB设备; USB主控制器驱动是不需要我们去写的,也不需要我们去移植。嵌入 式的USB主控制器都是集成到SOC内部,所以厂商会提供驱动 USB的主控制器,分为UHCI、OHCI、EHCI和XHCI等 根集线器、集线器、控制器之间 阅读全文
posted @ 2020-08-25 00:02 笑不出花的旦旦 阅读(320) 评论(0) 推荐(0)
摘要:1、这种的定时器应用在定时精度不高的情况下: 1、延时某一段时间后,执行某一个动作; 2、定时的查询某一个状态; 2、定时的基础概念 1、Hz:系统定时器时钟通过CONFIG_HZ设置,范围是100-1000,因此会决定中断发生频率; 2、jiffies: 内核中的全局变量,记录内核自启动以来产生的 阅读全文
posted @ 2020-08-23 23:22 笑不出花的旦旦 阅读(164) 评论(0) 推荐(0)
摘要:1、SPI驱动总线架构:SPI核心层(x),SPI控制器驱动层(x),SPI设备驱动层(√),这里不详细说总线如何传输数据。 1、SPI核心层:代码在源码下:ls drivers/spi/*.o 2、SPI控制器驱动层:ls include/linux/spi/ 3、SPI总线的四根线: SPI_0 阅读全文
posted @ 2020-08-18 22:30 笑不出花的旦旦 阅读(1039) 评论(0) 推荐(0)
摘要:1、准备 1、写在前面的: 1、在Linux下IIC设备以及总线‘配置都需要向8051那样需要使用IO产生特定的波形; 2、需要在Linux的API中配置特殊设备地址,不同的设备有不同的地址; 3、需要将IIC设备添加到Linux总线上;以及内核里面; 2、linux内核API 1、注册IIC设备: 阅读全文
posted @ 2020-08-18 22:14 笑不出花的旦旦 阅读(308) 评论(0) 推荐(0)
摘要:1、中断执行 按键按下(产生了中断)→跳转到异常向量入口,执行中断函数 中断函数要做什么: 1.保护现场 2.执行中断处理函数 3.恢复现场 2、向内核申请中断,以及释放中断 // 注册中断: request_irq(unsigned int irq, irq_handler_t handler, 阅读全文
posted @ 2020-08-12 00:15 笑不出花的旦旦 阅读(150) 评论(0) 推荐(0)
摘要:1、查询方式使用while循环一直在等待,判断按键有没有按下 2、按键驱动 使用两个按键:Home和Back按键 HOME对应管脚-->UART_RING对应GPIO-->GPX1_1对应宏定义 >EXYNOS4_GPX1(1) Back对应管脚-->SIM_DET对应GPIO >GPX1_2对应宏 阅读全文
posted @ 2020-08-11 00:08 笑不出花的旦旦 阅读(344) 评论(0) 推荐(0)
摘要:1、常见两种蜂鸣器 蜂鸣器发出声音是因为震动,震动需要频率,就是说需要晶振;震动的频率高低,发出高低的声音; 有源蜂鸣器:有源蜂鸣器通电就可以响,里面自带了晶振,就可以发出声音; 无源蜂鸣器:需要外部给一定频率的脉冲信号,占空比也可以调节;高低电平切换,控制震动与不震动; 2、查看原理图 GPD0_ 阅读全文
posted @ 2020-08-08 18:33 笑不出花的旦旦 阅读(319) 评论(0) 推荐(0)
摘要:1、由于ARM用到的内存管理,所以实际的物理地址不允许人为操作; Linux内核基于此,提供了物理地址到虚拟地址映射的接口,以至于访问虚拟地址可以达到访问实际地址相同的结果; 2、通过数据手册·上的物理地址到虚拟地址的映射,控制一个led灯; 3、物理地址及其相关寄存器 GPL2_0 >LED2 端 阅读全文
posted @ 2020-08-08 16:42 笑不出花的旦旦 阅读(265) 评论(0) 推荐(0)
摘要:1、在之前LED驱动的基础上继续做 2、在原理图上找到拨码开关,使用3和4做输入;向开发板内拨动,为低电平0,0V;向开发板外拨动为高电平1,1.8V; 1、在主板搜索AP_SLEEP(3) 》在核心板搜索 》GPC0_3 >根据GPIO命名规则EXYNOS4_GPC0(3) 2、在主板搜索XEIN 阅读全文
posted @ 2020-07-29 23:12 笑不出花的旦旦 阅读(230) 评论(0) 推荐(0)
摘要:1、由于之前使用fastboot烧写镜像后,不知道什么原因使用USB线就再也连不上开发板,折腾快一周,也没好;就换一种烧写方式;由于之前的折腾,导致之前的系统启动不了,所以必须要重新烧写; 2、使用SD卡烧写镜像 准备一个SD卡,我是用的是2G的,默认应该都是fat32格式的; 3、制作可以烧写的S 阅读全文
posted @ 2020-07-29 00:08 笑不出花的旦旦 阅读(404) 评论(0) 推荐(0)
摘要:1、proc文件系统用于导出内核的相关信息; 可以类比Windows任务管理器,常见的命令: cat /proc/meminfo // 查看内存相关信息; cat /proc/cpuinfo // 查看CPU相关信息 cat /proc/interrupts // 查看中断 阅读全文
posted @ 2020-07-21 23:19 笑不出花的旦旦 阅读(65) 评论(0) 推荐(0)
摘要:1、继上一节的代码继续,完善文件操作的相关函数 2、完善结构体struct cdev中的 struct cdev { struct kobject kobj; struct module *owner; const struct file_operations *ops; struct list_h 阅读全文
posted @ 2020-07-21 23:12 笑不出花的旦旦 阅读(84) 评论(0) 推荐(0)
摘要:1、在这里的设备结点类似于led,那么可能会有很多个led,为了更好的管理,一般创建每一个led的各个结点时,必须创建一个属于led的类;在这个led类中,可以、创建多个子结点,类似于led1,led2....,本节就生成设备结点chardevnode0和设备结点chardevnode1 2、用到的 阅读全文
posted @ 2020-07-19 23:57 笑不出花的旦旦 阅读(92) 评论(0) 推荐(0)
摘要:1、在前面几节里也有注册设备,但是都是注册杂项设备,并且杂项设备的设备号都是固定的10; 2、应用的函数 // 函数在include/linux/slab.h // 分配内存空间 void *kmalloc(size_t s, gfp_t gfp) // 其中,gfp是枚举类,GFP_KERNEL取 阅读全文
posted @ 2020-07-19 23:19 笑不出花的旦旦 阅读(73) 评论(0) 推荐(0)