展开

关键词

LINUX

1.无操作系统时的硬件、、应用软件要满足高内聚、低耦合。 ? 2.有操作系统时的, ? 3.LINUX与整个软硬件的关系 ?

32820

Linux SPI

四、指纹SPI设备框架 在对硬件有了较高的基础理解后,其实代码主要就是开始对SPI的接口做的软件实现了。 由于平台厂商通常给我们做好了spicontroller以及spicore部分,接下来的总结主要是针对SPI设备部分的。 截至到目前为止,spi的设备函数基本的基本流程就在此处了,一些基本的spi的ioctl config的设置可参考源码spidev.c即可。 五、总结 个人理解现在这个科技发展的风口下,手机、IOT、车机等终端设备齐放异彩的大背景下,新终端生态的搭建、基础智设备的整合、大健康的趋势下,Sensor的发展是一个非常关键的力,基础软件力的掌握也是重中之重 ,linux给了我们一个很好的平台让我们在前辈的肩上进行各种高质量的代码学习,我们也需抓住这个机会,在做好本质工作的基础上静心努力钻研,不断前行,祝愿各位也祝愿我自己在技术的道路上越走越远。

26510
  • 广告
    关闭

    腾讯云+社区系列公开课上线啦!

    Vite学习指南,基于腾讯云Webify部署项目。

  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    Linux开发: USB开发

    四、 linux内核下USB相关的API函数与数据结构 前面介绍了USB相关一些基础概念与重要的数据结构,接下来就分析在linux内核中如何编写一个USB 程序,编写与一个USB设备程序的方法和其他总线方式类似 ,程序把程序对象注册到USB子系统中,稍后再使用制造商和设备标识来判断是否安装了硬件。 当然,这些制造商和设备标识需要我们编写进USB 程序中。 USB 程序依然遵循设备模型 —— 总线、设备、。 和I2C 总线设备编写一样,所有的USB程序都必须创建的主要结构体是 struct usb_driver,它们向USB 核心代码描述了USB 程序。 鼠标代码: 该模板适用于键盘

    35510

    Linux开发-编写DS18B20

    前言 当前文章介绍如何在Linux系统下编写一个DS18B20温度传感器,测量环境温度,并将DS18B20注册成字符设备,通过文件接口将温度数据传递给应用层。 (6)检测温度范围为–55° C ~+125° C (–67° F ~+257° F) (7)内置 EEPROM,限温报警功。 (8)64 位光刻 ROM,内置产品序列号,方便多机挂接。 示例代码 #include <linux/module.h> #include <linux/kernel.h> #include <linux/miscdevice.h> /*杂项字符设备头文件* / #include <linux/fs.h> /*文件操作集合*/ #include <linux/delay.h> /*延时函数*/ #include <linux DS18B20_OUTPUT() {*DS18B20_GPBCON &= ~(0xf << 4 * 4);*DS18B20_GPBCON |= (0x1 << 4 * 4);} /* 函数功

    13040

    Linux开发: Linux下RTC实时时钟

    因此系统电源掉电后RTC时间仍然够正常运行。 每次Linux系统启后在启过程中会检测和挂载RTC,在挂载后会自从RTC芯片中读取时间并设置到系统时间中去。 使用proc查看RTC信息,默认只从rtc0节点里获取(系统里的第一个rtc) [root@XiaoLong /]#cat /proc/driver/rtc 3. /include/linux/rtc.h 定义了与RTC有关的数据结构 Linux内核源码自带的RTC代码存放位置: \linux-3.5\drivers\rtc\目录下全是RTC示例代码 RTC端代码 #include <linux/module.h> /*模块相关*/ #include <linux/init.h> #include <linux/fs.h DS1302端代码: #include <linux/module.h> /*模块相关*/ #include <linux/init.h> #include <linux

    31510

    详解linux 编写(sd卡

    那下面我们可以看一下,linux框架上是怎么处理sd卡的? .set_uhs_signaling = sdhci_set_uhs_signaling, }; 6 、从host角度来说,有了platform driver和上面的host driver,流程就算搞清楚了

    44532

    Linux开发: FrameBuffe(LCD)开发

    其中:VM_IO表示对设备IO空间的映射,M_RESERVED表示该内存区不被换出,在设备中虚拟页和物理页的关系应该是长期的,应该保留起来,不随便被别的虚拟页换出(取消)。 MODULE_DESCRIPTION("hello 模块测试"); //描述当前 MODULE_LICENSE("GPL"); //许可证。 帧缓冲代码 #include <linux/kernel.h> #include <linux/module.h> #include <linux/miscdevice.h> #include 0.96 寸 OLED屏外观 6.2 OLED代码示例 #include <linux/kernel.h> #include <linux/module.h> #include <linux/miscdevice.h 7.1 编写S70屏幕 如果自己编写了LCD(S720屏幕),测试LCD之前,先去除内核自带的LCD,编译烧写内核: Device Drivers  --->

    27111

    Linux开发-编写W25Q64(Flash)

    本篇文章就介绍如何在Linux系统下编写W25Q64芯片的,完成数据存储,W25Q64支持标准SPI总线,当前程序底层的代码写了两种方式,一种是采用内核提供的SPI子系统框架,一种直接采用软件模拟 SPI时序的方式,具体代码在第3章贴出来了。 Linux内核自带有SPI子系统的设备端示例代码: Linux 内核自带的 SPI 注册示例代码: \drivers\spi\spidev.c Linux 内核自带的 SPI APP 注册示例代码: 案例代码 3.1 模拟SPI时序-编写 下面是W25Q64的测试代码,没有注册字符设备框架,只是在的入口里测试时序是否OK,打印了ID,读写了数据进行测试。 下面代码使用SPI子系统框架编写的测试代码,注册了字符设备框架,但是只是做了简单的测试,目的只是测试W25Q64是否可以正常读写存储。

    15080

    Linux开发-编写按键

    杂项设备注册函数 这篇文章介绍,如何使用杂项设备框架编写一个简单的按键,完成编写、编译、安装、测试等流程,了解一个杂项字符设备的开发流程。 将层数据拷贝到应用层。 unsigned long copy_from_user(void *to, const void __user *from, unsigned long n) 函数功: 将应用层的数据拷贝到层。 编写按键 使用杂项设备注册按键,应用层使用read接口读取按键值。 编写之前需要先找到按键的原理图,找到按键接到CPU那个IO上的。 2.1 按键源代码 #include <linux/kernel.h> #include <linux/module.h> #include <linux/fs.h> #include <linux

    9730

    Linux开发-编写(EEPROM)AT24C02

    当前文章介绍在Linux系统里如何编写AT24C02的,并且在应用层完成读写测试,将AT24C02的存储空间映射成文件,在应用层,用户可以直接将AT24C02当做一个普通文件的形式进行读写,偏移文件指针 ;在Linux内核里有一套标准的IIC子系统框架专门读写IIC接口设备,采用平台设备模型框架,编写非常方便。 示例代码 3.1 EEPROM端代码 #include <linux/kernel.h> #include <linux/module.h> #include <linux/platform_device.h _drv_cleanup(void) { /*注销IIC端*/ i2c_del_driver(&drv); printk("IIC端: 卸载成功\n"); } module_init (tiny4412_drv_init); /*入口--安装的时候执行*/ module_exit(tiny4412_drv_cleanup); /*出口--卸载的时候执行*/ MODULE_LICENSE

    9230

    linux设备第四篇:linux调试方法

    在普通的c应用程序中,我们经常使用printf来输出信息,或者使用gdb来调试程序,那么程序如何调试呢? 下面就根据一个简单的实例来说明如何调试程序。 如何根据oops定位代码行 我们借用linux设备第二篇:构造和运行模块里面的hello world程序来演示出错的情况,含有错误代码的hello world如下: #include <linux/ 以上就是通过oops信息来定位崩溃的行号。 printk的使用方法类似printf,只是要注意一下打印级别,详细介绍在linux设备第二篇:构造和运行模块中已有描述,另外需要注意的是大量使用printk会严重拖慢系统,所以使用过程中也要注意。

    2.8K150

    Linux——Linux之基本理论常识总结(什么是LinuxLinux需要掌握哪些?)

    2 Linux程序需要掌握的内容 3 Linux可参考的资源 4 ARM处理器体系架构 5 ARM的前世今生 ---- 0 引言 前面Linux专题中关于Linux下系统编程总结了17篇博文,主要是为了提高 Linux下的C编程应用力,熟悉Linux编程应用环境,从此篇博文起开始Linux的总结,后面计划加一些综合实践项目练习。 3)Linux中一切皆文件 Linux中一切都被看成是文件,把设备也看成文件,所以字符设备的编程路子就是做一组设备对应的函数,使用open、read、write、ioctrl、close像操作文件一样进行操作 Linux可参考的资源 Linux本身就是一个开源软件,开源的好处大家都知道,资料丰富,我们做Linux开发,找到技术支持和相应资源的有如下,列出的,对于新手来说,建议最佳的顺序是从1到5: 、结构体,其实Linux,就是掌握了这些东西怎么用,适应到自己要写的程序中。

    16230

    Linux开发: 块设备开发

    块设备是与字符设备并列的概念, 这两类设备在 Linux的结构有较大差异,总体而言, 块设备比字符设备要复杂得多,在 I/O 操作上表现出极大的不同,缓冲、 I/O 调度、请求队列等都是与块设备相关的概念 在Linux中,对块设备的输入或输出(I/O)操作,都会向块设备发出一个请求,在中用request结构体描述。 但对于一些磁盘设备而言请求的速度很慢,这时候内核就提供一种队列的机制把这些I/O请求添加到队列中(即:请求队列),在中用request_queue结构体描述。 可睡眠 分配请求队列示例: struct request_queue *queue= =blk_alloc_queue(GFP_KERNEL); 卸载时,可以通过kfree释放空间。 绝大多数硬盘都是固定硬盘,被永久性地密封固定在硬盘器中。

    12720

    Linux笔记】Linux基础

    同样的,学习Linux我们也从最简单的hello学起。 在STM32的裸机开发中,层与应用层的区分可没有那么明显,常常都杂揉在一起。当然,有些很有水平的裸机程序分层分得还是很明显的。 Linux字符设备框架 我们先看一个图: ? 当我们的应用在调用open、close、write、read等函数时,为什么就操控硬件设备。 我们前面说了的装载方式之一的态装载:把程序编译成模块,再态装载。态装载的体现就是开发板已经启运行了Linux内核,我们通过开发板串口终端使用命令来装载。 装载有两个命令,比如装载我们的hello: 方法一:insmod hello_drv.ko 方法二:modprobe hello_drv.ko 其中modprobe命令不仅装载当前,而且还会同时装载与当前相关的依赖

    1.3K43

    Linux电源-Linux Cpuidle Framework

    前言 现如今,Linux处理器电源管理重点聚焦在处理器处于运行状态时对其进行电源管理,主要的技术是Cpufreq: 根据cpu的负载,实时的改变cpu的频率或这电压,同时管理处理器的性水平和电源功耗等 面对在火热移处理器市场的前提下,众多处理器都亟待加入到空闲状态下进行功耗管理,这时候linux系统就需要一套通用的架构来管理这些cpu,这就是本文的标题: Linux Cpuidle Framework 对该cpu下的idle状态,需要一个统一的管理者,这时候cpuidle就来管理该cpu下的各种状态。linux使用cpuidle_driver结构来表示cpuidle的。 判断当前参数和state_count是否存在,cpuidle是否使。 2. driver内部参数的初始化。 获取该设备的,如果没有获取到返回错误。 b. 判断设备是否已经注册,没有注册返回错误。 c. 通过的state_count设置设备的state_count。 d.

    89820

    Linux笔记】LED

    前言 上一篇我们分享了字符设备框架:嵌入式Linux基础,当时分享的是hello程序。 (升级版) 上一节我们分享的LED是一个常规的LED,只适用于我们当前的开发版,所以是一个专用的LED程序。 若是换了另一块板,led所连接的gpio引脚可不一样了,我们就修改我们的程序led_drv.c里与寄存器相关的操作。有没有更好的办法不用再修改我们的led_drv.c程序了? 若是led_drv.c不用再修改了,那么这个led_drv.c就是一个通用的程序了。具体可查看韦东山老师的《嵌入式Linux应用开发完全手册第2版》第五篇第3~7节进行学习。 谢谢 参考/学习资料: 百问网《嵌入式Linux应用开发完全手册第2版》 正点原子《I.MX6U嵌入式Linux开发指南V1.2》 野火《i.MX Linux开发实战指南》

    44821

    Linux开发: 网络设备开发

    # ifup eth0 //开启eth0网卡 # ifdown eth0 //关闭eth0网卡 二、查看内核已经支持的网卡 进入到内核配置菜单目录下: [root@wbyq linux 修改端的probe函数,增加对SPI模式配置与中断号获取,正常情况下可以直接在SPI设备端直接修改,端直接获取信息即可。 它们由设备初始化,并且只被设备访问;高层协议不需要关心这块内存。 6.1 网络设备编程步骤 1. 以下代码,在上面的网络设备模型里加入了ENC28J60代码,实现了完整的网卡程序。

    17410

    Linux开发-安装参数传递

    一、简介 在Linux下进行C语言开发时,经常在命令行传递参数给C程序,常见的Linux命令也是需要传参的,这样用起来就很灵活,根据不同的参数可以执行不同的效果。 Linux安装时也支持传递参数,和命令行上运行的命令原理类似。 只不过在编写的时候,需要在代码里提前将相关信息声明好才可以使用。 这篇文章就介绍如果在命令安装时,传递参数给代码,演示各种类型的参数传输情况。 在代码里声明传入参数的类型、权限,接收的变量名称。 module_param(变量的名称,类型,权限) 二、在代码里声明传递参数的格式 /*传递整型类型数据*/ int int_data = 0; module_param(int_data, int /kernel.h> #include <linux/module.h> #include <linux/miscdevice.h> #include <linux/fs.h> #include <asm

    8940

    Linux开发-编写FT5X06触摸屏

    前言 这篇文章介绍在Linux下如何编写FT5X06系列芯片,完成触摸屏的开发, FT5X06是一个系列,当前使用的具体型号是FT5206,它是一个电容屏的触摸芯片,内置了8位的单片机(8051 编写触摸屏 Linux下编写标准的触摸屏需要使用到输入子系统,当前文章的重点是读取触摸屏的坐标,所以示例代码里不会加输入子系统的代码,只是在层完成触摸屏笔中断响应,触摸屏的坐标点获取并打印。 ); /*模块的许可证*/ MODULE_LICENSE("GPL"); /*模块的作者*/ MODULE_AUTHOR("wbyq"); 3.2 端代码 #include <linux/kernel.h 注册IIC端*/ i2c_add_driver(&iic_driver); printk("安装成功. 注销IIC端*/ i2c_del_driver(&iic_driver); printk("卸载成功.

    8420

    相关产品

    • 事件总线

      事件总线

      腾讯云事件总线(EB)是一款安全,稳定,高效的无服务器事件管理平台,支持腾讯云服务、自定义应用、SaaS应用以标准化、中心化的方式接入,帮助您轻松实现无服务器事件驱动架构。

    相关资讯

    热门标签

    扫码关注云+社区

    领取腾讯云代金券