linux驱动开发
文章平均质量分 76
wufse
这个作者很懒,什么都没留下…
展开
-
驱动程序嵌入linux内核
一 在Linux内核中增加驱动需要完成以下三项工作:将编写的源代码复制到Linux内核源代码的相应目录 在目录的Kconfig文件中增加新源代码对应项目的编译配置选项 在目录的Makefile文件中增加对新源代码的编译条目二. 实例先把驱动代码first_drv复制到drivers/char目录下设备驱动程序存放在内核源码树根目录drivers/的子目录下,字符设备存在于driv...原创 2018-12-20 16:35:28 · 287 阅读 · 0 评论 -
设备树中的GPIO
涉及到的GPIO驱动基于linux-4.14,soc是全志H3,平台是nanopi-m1,linux中关于GPIO控制是通过GPIOLIB实现的,相关主要API如下:#include <linux/gpio.h> //GPIO操作相关接口int gpio_direction_input(unsigned gpio);//把管脚设置成输入int gpio_direc...原创 2019-01-27 20:13:32 · 8396 阅读 · 1 评论 -
设备树中的spi子系统
spi节点一般表示spi控制器, 它会被转换为platform_device, 全志H3的总线设备驱动位于busses/spi-sun6i.c,该文件有对应的platform_driver;platform_driver的probe函数中会调用i2c_add_numbered_adapter,来增加一个spi_master,调用过程如下:sun6i_spi_probe devm_spi_r...原创 2019-01-27 16:56:09 · 3517 阅读 · 2 评论 -
linux中的usb子系统
usb协议由于考虑通用性,既可以支持大容量存储设备,音频设备,HID设备,CDC协议,DFU等等等。。。在设计整套协议的时候非常复杂,比如相关包类型,事务,端点等这些概念内容非常多,如果读者向深入分析整套协议栈,可以阅读<<圈圈教你玩usb>>,内容理论与实例相结合,基于51单片机和一块usb桥接芯片实现了usb众多设备。本篇不详细分析总线驱动程序,而着重分析设备驱...原创 2019-01-27 16:18:52 · 502 阅读 · 0 评论 -
设备树中的i2c子系统
在前面的文章中详细介绍了linux下的i2c子系统,随着linux内核的不断扩大和发展,设备的硬件信息通常是由设备树来指定。i2c节点一般表示i2c控制器, 它会被转换为platform_device, 全志H3的总线设备驱动位于busses/i2c-mv64xxx.c ,该文件有对应的platform_driver;在总线驱动器代码中的platform_driver的probe函数中会调用...原创 2019-01-13 18:09:05 · 1895 阅读 · 0 评论 -
led子系统
Linux内核发展迅速,作为一名驱动工程师,掌握驱动框架尤为重要。以前写单片机程序或者上手linux驱动程序的时候,都把点灯作为入门程序。可是linux实在做的太好了,都把点灯这么简单的东西都封装好框架。而用户只需要调用LED子系统相关的API就可以实现LED操作。Led子系统源码路径位于driver/leds下,驱动文件位于driver/leds/leds-gpio.c,关于led子系统的核...原创 2019-01-13 11:49:07 · 349 阅读 · 0 评论 -
使用buildroot构造nanopi-neo文件系统
nanopi相关系列开发板具有超高性价比,广受创客欢迎。在官网中下载到的镜像系统都是ubuntu,debian等linux发行版,这些发行版运行于linux上优点明显。而嵌入式平台上需要根据需要裁剪相关的库和命令。而构造文件系统使用普遍的工具是busybox和buildroot。Buildroot是一款使用交叉编译来简化和自动化为嵌入式系统构建完整Linux系统的过程的工具。相比以前使用的bu...原创 2019-01-13 11:33:22 · 1049 阅读 · 1 评论 -
nanopi-m1移植Linux4.14
Linux-4.14内核是全志H3的主线内核,是一个非常纯净的内核。而以前使用多半是基于全志公司定制开发的linux3.4,发现它并没有支持设备树。编译安装uboot 安装交叉编译器推荐使用的交叉编译器arm-cortexa9-linux-gnueabihf-4.9.3.tar.xztar xf arm-cortexa9-linux-gnueabihf-4.9.3.tar.xz /...原创 2019-01-13 11:20:27 · 1040 阅读 · 0 评论 -
2440内核移植相关问题
在使用2440开发板移植3.4内核出现错误,随便记录一下 ifconfig使能网卡出现错误cd arch/arm/s3c24xx 使用find查找网卡平台设备 find -name "dm9000" 发现只有mini2440平台有,smdk2440没有仿照mini2440添加网卡相关平台设备和资源#include <linux/dm9000.h>#define MACH...原创 2018-12-25 17:22:40 · 198 阅读 · 0 评论 -
中断子系统的简单使用
GIC是ARM推出的一个通用的中断控制器,全志H3中使用了GIC的多核方案,符合GIC V2规格。ARM多核处理器一般搭建一个GIC来提供中断控制功能,中端控制器是连接外设中断系统和CPU系统的桥梁。 ARM上把中断分为三类:PPI(private peripheral interrupt) 16~31这些中断一般是发送给特定的Cpu的,比如每个Cpu有自己对应的Physicalti...原创 2019-01-27 21:23:17 · 746 阅读 · 0 评论