BeagleBone

linux设备驱动程序-i2c(2)-adapter和设备树的解析

旧城冷巷雨未停 提交于 2020-11-25 06:22:39
linux设备驱动程序-i2c(2)-adapter和设备树的解析 (注: 基于beagle bone green开发板,linux4.14内核版本) 在本系列linux内核i2c框架的前两篇,分别讲了: linux设备驱动程序-i2c(0)-i2c设备驱动源码实现 linux设备驱动程序-i2c(1):i2c总线的添加与实现 而在 linux设备驱动程序--串行通信驱动框架分析 中,讲到linux内核中串行通信驱动框架大体分为三层: 应用层(用户空间接口操作) 驱动层(包含总线、i2c-core的实现、以及总线的device和driver部分) i2c硬件读写层 在上一章节我们讲了整个总线的实现以及device和driver的匹配机制,这一章节我们要来讲讲i2c硬件读写层的实现。 i2c的适配器 我们来回顾一下,在本系列文章的第一章 linux设备驱动程序-i2c(0)-i2c设备驱动源码实现 源码中是怎么使用i2c和设备进行通信的呢? 1、首先,在总线的device部分,使用 struct i2c_adapter *adap = i2c_get_adapter(2) 这个接口,获取一个struct i2c_adapter结构体指针,并关联到i2c_client中。 2、然后,在总线driver的probe部分,在/dev目录下创建文件,并关联对应的file

linux设备驱动程序--hello-world

夙愿已清 提交于 2020-11-20 07:06:34
linux字符设备驱动程序--hello_world 基于4.14内核, beagleBone green平台 PC端的设备驱动程序 有过电脑使用经验的人都知道,当我们将外部硬件设备比如鼠标键盘插入到电脑端口(通常是USB口)时,在windows系统右下角会弹出"安装设备驱动程序"的显示框,那么,为什么每个硬件都需要安装设备驱动程序才能使用呢? 首先,每个硬件都有相应的功能,鼠标的功能就是将鼠标的位移与点击状态转换成相应的数据,然后将数据传输给电脑,然后电脑根据收到的数据移动屏幕上的光标。 如果没有相应的鼠标驱动程序,电脑并不知道鼠标的接口以什么协议将数据传输过来,也不知道怎么解析相应的数据,所以当然电脑上的光标不会跟随鼠标的移动而移动,归根结底,鼠标的移动和电脑上光标的移动是两者间数据同步的结果。 同理,打印机也是一样,电脑将文件数据以某种格式传递给打印机,然后通过控制数据控制打印机的运行,打印机驱动程序基本上也是识别接收数据以及对数据的处理,这就是为什么一般外部设备都需要使用一根数据线与主机进行连接。 MCU中设备驱动程序 在基于MCU的普通嵌入式驱动程序开发中,并不会经常接触到鼠标、键盘、硬盘这一类的设备,多数是一些较为简单的传感器设备、小容量的存储设备等等,通常数据的传输使用的是spi、i2c、串口这一类的串行通信协议,通常一个设备驱动程序的开发就是这样的流程: 数据传输层

linux设备驱动程序——将驱动程序编译进内核

非 Y 不嫁゛ 提交于 2020-05-08 05:05:59
linux驱动程序——将驱动程序编译进内核 模块的加载 通常来说,在驱动模块的开发阶段,一般是将模块编译成.ko文件,再使用 sudo insmod module.ko 或者 depmod -a modprobe module 将模块加载到内核,相对而言,modprobe要比insmod更加智能,它会检查并自动处理模块的依赖,而insmod出现依赖问题时仅仅是告诉你安装失败,自己想办法吧。 将模块编译进内核 这一章节我们并不关注模块的运行时加载,我们要讨论的是将模块编译进内核。 在学习内核的Makefile规则的时候就可以知道,将驱动程序编译成模块时,只需要使用: obj-m += module.o 指定相应的源代码(源代码为module.c)即可,所以很多朋友就简单地得出结论:如果要将模块编译进内核,只要执行下面的的指令就可以了: obj-y += module.o 事实上,这样是行不通的,要明白怎么将驱动程序编译进内核,我们还是得先了解linux源码的编译规则。 关于linux源码的编译规则和部分细节可以查看我的另一篇博客 linux内核Makefile概览 本篇博客的所有实验基于arm平台,beagle bone开发板,内核版本为4.14.79 编译平台 注:在以下的讨论中,目标主机和本机指加载运行驱动程序的机器,是开发的对象。而开发机指只负责编译的机器,一般指PC机。

BeagleBone 教学视屏 -- 第一季

≯℡__Kan透↙ 提交于 2020-04-10 22:35:50
嗯,买了板子不用的话就太不像话了,想想还在用山寨学习板的童鞋,所以我下定决心做这么一期针对beaglebone的中文教学视屏。现在计划第一季中由我主讲,主要内容无非是基于beaglebone的嵌入式linux开发,从搭建环境到驱动开发再到应用开发;如果有时间再讲讲Android相关内容,也是搭建环境到驱动到应用。 下面是视屏的下载地址,大家有什么意见尽管提。当然了,本人水平有限,做的不好您不看就是了,骂人就没有必要了。 本教学视屏遵循 GNU GENERAL PUBLIC LICENSE ,请不要用于任何商业用途。 <Beaglebone teaching video> Copyright (C) <2013> <Cedric Sun:srjklssj@gmail.com> This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is

为BeagleBone 添加SPI支持

时光总嘲笑我的痴心妄想 提交于 2020-04-10 22:33:56
Linux下的SPI驱动总的来说分成两大部分,一部分与SPI控制器相关,这种东西一般是不需要我们这种芯片使用者来编写的; 而另一部分与使用SPI总线接入的设备相关,这些东西就要我们自己动手了。时间有限,今天就先简单说说怎样为BeagleBone平台添加SPI支持。 首先,我是用的是BuildRoot搭建的整个开发环境,而BuildRoot中使用的TI提供的LinuxPSP(板级支持包啦)。像挂接在SPI总线上的东西,都可以算是Hard-wired的,是故在系统初始化的时候一并弄好,并且不再变动就显得很合理了……好吧,至少TI与写SPI驱动的认识这么认为的,所以这里我们如果想要添加新的SPI设备只能 修改内核代码 !其实不是很难…… 根据PSP文档,修改"board-am335xevm.c"文件。首先,当然要找到板子的初始化代码,恩,根据系统启动时的打印信息发现会调用"setup_beaglebone"函数,其中很重要的配置项就是beaglebone_dev_cfg 数组,其是类型为struct evm_dev_cfg 的数据结构,定义了一系列初始化函数。恩,好吧,我们就把SPI相关的部分加上。修改 beaglebone_dev_cfg为: /* Beaglebone Rev A3 and after */ static struct evm_dev_cfg beaglebone

嵌入式自动化测试框架Fuego:Jenkins用户界面

南笙酒味 提交于 2020-02-29 15:21:45
默认情况下, Fuego 使用 Jenkins 持续集成系统来管理板子,测试,日志和测试结果。 Jenkins 用户界面是基于 Web 的。此页面显示了 Jenkins 界面中不同页面的几个屏幕截图。 通过此界面,您可以查看已运行测试的状态,查看测试日志以及安排新测试在目标板上运行。您还可以使用此界面向系统添加新的电路板和新的测试。 请注意, Jenkins 对象是: 节点 作业 构建 视图 这些与相同对象的 Fuego 名称不同。这些 Jenkins 对象的前三个对应于 Fuego 对象,分别是: boards , tests 和 runs 。 主仪表板 Jenkins 的主要仪表板如下所示: 新安装 刚安装 Fuego 时, Jenkins 界面中没有任何内容(没有节点,作业或视图)。该界面应如下所示: 添加单个节点(板子) 添加单个节点(在本例中为“ beaglebone ”)后,这是Jenkins的主要仪表板。请注意,该节点(板子)显示在左侧边栏中的"构建执行器状态"下: 使用 beaglebone 节点和作业 这是 Jenkins 的主要仪表板,显示了该板的单个节点( beaglebone )和作业。 在构建队列中具有作业的仪表板 这是 Jenkins 仪表板,在构建队列中有很多工作。注意左侧栏中"构建队列"窗格中的作业列表。 节点页面 如果单击"构建执行器状态

Beaglebone Black开发板安装驱动

╄→尐↘猪︶ㄣ 提交于 2019-12-09 23:28:48
Beaglebone Black 开发板安装驱动 Beaglebone Black开发板安装驱动, 在使用 Beaglebone Black 开发板子做任何事情之前首先需要安装驱动。下面的内容就了展示在 Windows 、 Mac OS X 以及 Linux 操作系统下 Beaglebone Black 开发板驱动的安装方式。使用 USB 连接的 Beaglebone Black 在电脑中显示为一个存储设备,如图 1.2 所示。 图 1. 2 Beaglebone Black 作为可移动存储设备 这其中包括了你要开始使用 Beaglebone Black 的所有文件,包括驱动和文档,如图 1.3 所示。 图 1. 3 Beaglebone Black 可移动设备中的内容 Beaglebone Black 开发板的所有文件中,双击其中的 START.htm 文件打开该文档,由于它是一个 HTML 文档,所以会使用默认的浏览器打开,其内容如图 1.4 所示。 图 1. 4 START.htm 这个页面会带你一步一步地安装所有相关的 Beaglebone Black 开发板的软件。它为每个阶段都提供了链接以便你使用。安装驱动的内容在 Step 2 ,如图 1.5 所示。 图 1. 5 Step 2 你需要对应你现在使用的系统安装 Beaglebone Black 开发板的驱动

beaglebone black的cape管理

て烟熏妆下的殇ゞ 提交于 2019-12-03 08:03:15
BBB的cape是如何管理的呢?以下引用“ 魏来之路 ”网友的说明,说的很详细: “Beaglebone Black中用一个叫做capemgr的软件管理所有的cape,不论它是实实在在的扩展板,还是虚拟的cape。这个软件的目录是 /sys/devices/bone_capemgr.*/ (这里的*是一个每次系统启动可能会不一样的数字(与启动顺序有关))” 参考网址: http://blog.csdn.net/wyt2013/article/details/16846171 从官方的一个WIKI中有详细的说明,也说明了CAPE和DT及Kernel的关系:“BeagleBone and the 3.8 Kernel”( http://elinux.org/BeagleBone_and_the_3.8_Kernel#Cape_Manager_requirements )。 我将其中的 关于capemgr, 比较重要的翻译了一下。 1: Cape Manager requirements 2: 3: Going over the device tree definition we see that the data structure is referred as parsed at boot-time. Beaglebone capes are not static ; a

How to compile openssl 1.0.2f on Beaglebone Black?

匿名 (未验证) 提交于 2019-12-03 02:35:01
可以将文章内容翻译成中文,广告屏蔽插件可能会导致该功能失效(如失效,请关闭广告屏蔽插件后再试): 问题: Currently, I use command below to compile openssl 1.0.2f from openssl package: $ tar xzf openssl-1.0.2e.tar.gz $ cd openssl-1.0.2e $export PREFIX={PREFIX} $./Configure -DOPENSSL_NO_HEARTBEATS --openssldir=$PREFIX shared os/compiler:${TARGET} $ make This is architecture of Beaglebone Black $uname -a $Linux beaglebone 3.8.13-bone70 #1 SMP Fri Jan 23 02:15:42 UTC 2015 armv7l GNU/Linux I also try to set TARGET from list: linux-armv7l || linux-aarch64 || linux-alpha+bwx-ccc || linux-alpha+bwx-gcc|| linux-alpha-ccc || linux-alpha-gcc || linux-aout

BeagleBone Black的Cape之基本概念

我只是一个虾纸丫 提交于 2019-12-01 23:46:19
BBB的Cape的基本情况网上说的很详细,我觉得比较好的是一个兄弟的blog( http://blog.csdn.net/wyt2013?viewmode=contents ),其中的如何使用GPIO/AD/SPI/I2C及 为BBB制作专属自己的cape(一)-(四),这几篇博文都涉及到cape的事。可以仔细的“研读”,注意是“研读”而非“阅读”,因为中间有“ 魏来之路 ”这位兄弟的学习历程,中间有点曲折,值得一读。感谢这位兄弟的分享精神,非常佩服。 其实说到Cape主要涉及到几个主要的问题: 1、什么是Cape,它有什么标准?(可以参考SRM) 2、arm linux 3.x如何管理硬件?--扁平设备树,设备树重载。 3、如何管理Cape?--动态加载,文件IO 一、什么是Cape,它有什么标准? Cape就是Beaglebone/BeagleBone Black的扩展功能板,如果你使用过PC104,你很容易理解Cape,BBB相当于PC104的CPU模块,而PC104外围AD模块、计数器模块就是它的Cape。 官方的解释如下: The capes are products of the BeagleBoard.org community, which means they were designed by developers just like you and,