
Linux
文章平均质量分 61
北京-大白
这个作者很懒,什么都没留下…
展开
-
linux使用dd命令拷贝和恢复镜像
dd命令拷贝和恢复镜像fdisk -l 查看当前所有分区信息(必须用root)Device Boot Start End Blocks Id System/dev/sdb1 2048 1002047 500000 83 Linux/dev/sdb2 1002048 12...转载 2018-04-01 10:30:12 · 17805 阅读 · 1 评论 -
Homebridge 安装
安装 Node.js安装其实很简单,主要是因为要安装至少v4.3.2的版本,所以有点麻烦#源码安装(慢的要死)$ wget https://nodejs.org/dist/v7.7.2/node-v7.7.2.tar.gz$ tar xvf node-v7.7.2.tar.gz$ cd node-v7.7.2$ ./configure$ make$ make install...原创 2018-06-17 11:54:18 · 1971 阅读 · 0 评论 -
Linux 环境变量
在Linux下使用源码安装软件时,通常只能在软件安装目录下使用该软件命令,如果希望全局使用,可以将软件安装路径添加到系统环境变量里,添加环境变量有2种方法:使用export命令export PATH=$PATH:/opt/software/node-v8.9.3-linux-x64/bin/nodeexport使用方法为 export PATH=$PATH:路径1:路径2:路径n;$P...原创 2018-11-05 22:37:37 · 228 阅读 · 0 评论 -
Homebridge 插件编写
前言Homebridge is a lightweight NodeJS server that emulates the iOS HomeKit API; 之前在linux上部署过homebridge,最近玩路由在路由器上部署了homebridge,具体怎么部署就不说了,还是来重温一下homebridge插件如何编写,搭建一个Siri物联网吧,小白不会nodejs有点忧桑!Plugins c...原创 2018-12-04 20:05:11 · 5629 阅读 · 0 评论 -
Linux驱动开发学习-01.准备工作
Linux驱动开发-01.准备工作在读了几天《Linux设备驱动程序》后,感觉读书效率不高,两三天才读完一个章节,并且读完后能输出的东西也很少。入门时,逐字逐句读书简直太浪费时间,并且细节的东西读了就忘,毫无意义。因此,这里反思学习方法,并从头开始。Linux内核开发其实际大部分为驱动开发。1. 推荐读物《Linux内核设计与实现》《Linux驱动开发详解》《Linux设备驱动程序》...原创 2019-05-02 11:22:56 · 543 阅读 · 0 评论 -
编译内核的make命令
编译内核的make命令问题描述在编译友善之臂NanoPi NEO Air的Linux-4.14内核时,当我按照wiki说明,使用如下命令进行编译时,编译通过;cd linuxtouch .scmversionmake sunxi_defconfig ARCH=arm CROSS_COMPILE=arm-linux-make zImage dtbs ARCH=arm CROSS_COMP...原创 2019-05-05 10:37:20 · 5455 阅读 · 0 评论 -
Linux设备驱动程序读书笔记(3)
第3章 字符驱动本书示例scull 不依任何赖硬件设备,只是操作一些从内核分配的内存,任何人都可以编译和运行scull;注意,本章节源码摘自NanoPi-linux3.4.y内核,与阅读的本书源码略有差别文章目录第3章 字符驱动3.1 scull设计需求3.2 设备编号3.2.1 设备编号的内部表示3.2.2 分配和释放设备编号3.2.3 主编号的动态分配3.3 3种重要的数据结构3.3.1 ...原创 2019-04-29 20:01:02 · 210 阅读 · 0 评论 -
Linux驱动开发学习-02.第一个模块HelloWorld
文章目录02.第一个模块-HelloWorld2.1 内核划分2.1.1 根据系统结构划分(5):2.1.2 根据模块划分2.1.3 设备分类(3)2. HelloWorld模块2.2.1 源文件2.2.2 模块安装与卸载2.2.3 注意2.3 带参HelloWorld模块2.4 源码说明2.4.1 Document目录2.4.2 与模块相关的头文件2.4.3 初始化&退出2.5 内核空间...原创 2019-05-08 19:20:30 · 799 阅读 · 0 评论 -
Linux驱动开发学习-03.设备编号
文章目录03.设备编号3.1 设备编号3.1.1 主次编号3.1.2 分配和释放设备编号3.2 三个重要的数据结构3.2.1 `file_operations`3.2.2 `file`3.2.3 `inode`3.3 字符设备注册3.4 操作函数集3.4.1 open方法3.4.2 release方法3.4.3 `write` & `read`方法3.4.4 `ioctl`方法3.5 实...原创 2019-06-13 13:57:21 · 341 阅读 · 0 评论 -
Linux驱动开发学习-04.调试技术
文章目录04. 调试技术4.1 `printk`4.2 `/proc`文件系统4.2.1 基本概念4.2.2 相关源码4.3 `ioctl`4.3.1 基本概念4.3.2 相关源码4.4 `oops`消息4.5 调试工具4.5.1 `gdb`4.5.2`kgdb`工具4.5.3 `kdb`4.7 在scull中的应用4.7 本文参考04. 调试技术4.1 printk打印优先级(<...原创 2019-06-13 13:59:02 · 483 阅读 · 0 评论 -
Linux驱动开发学习-05.并发和竞争
文章目录05.并发和竞争5.1 信号量(`semaphore`)5.1.1 基本概念5.1.2 函数接口5.2 Completions机制5.2.1 基本概念5.2.2 函数接口5.3 自旋锁(`spinlock`)5.3.1 基本概念5.3.2 函数接口5.4 顺序锁(`seqlock`)5.4.1 基本概念5.4.2 函数接口5.5 原子变量(`atomic`)5.5.1 基本概念5.5.2 ...原创 2019-06-13 14:00:31 · 298 阅读 · 0 评论 -
linux 条件变量
pthread_cond_wait()用于阻塞当前线程,等待别的线程使用pthread_cond_signal()或pthread_cond_broadcast()来唤醒它。pthread_cond_wait() 必须与pthread_mutex 配套使用pthread_cond_wait()函数一进入wait状态就会自动release mutex。当其他线程通过pthread_cond...转载 2018-06-08 10:54:46 · 202 阅读 · 0 评论 -
linux 显式链接so库
linux加载程序变成进程的过程fork进程, 在内核创建进程相关内核项, 加载进程可执行文件查找依赖的so库, 加载映射虚拟地址初始化程序变量动态库依赖越多, 进程启动就越慢, 并且发布程序的时候, 这些链接但没有使用的so同样要一起跟着发布, 否则进程启动时候找不到对应的so导致启动失败. 一些查看依赖的命令查看依赖关系: readelf -d xx.so查看链...原创 2018-06-08 10:49:56 · 2473 阅读 · 0 评论 -
Linux 串口实例
自定义串口协议//Protocol.h#ifndef PROTOCOL_H#define PROTOCOL_H#include &lt;iostream&gt;typedef union{ float fData; uint8_t uData[4];}CovData;static const uint16_t gMcRctable16[256] =...原创 2018-06-21 10:44:00 · 505 阅读 · 0 评论 -
常用linux命令
前言这里列举一些常用的linux操作,后续随时添加工具$ getconf LONG_BIT #获取系统位数$ sudo apt-get install nautilus-open-terminal #添加终端至鼠标右键$ sudo apt-get install ssh #winscp xshell串口$ lsmod|grep usbserial #确认系统是否支持$...原创 2018-04-01 11:03:26 · 4351 阅读 · 0 评论 -
linux 互斥锁
原子操作 原子操作:最小的执行单位,执行时不可能被其他任务或事件打断,由于其特性因此用汇编编写。主要 用于资源计数(如引用计数,其实现主要利用volatile变量直接从寄存器中读值,防止编译器优化)互斥锁主要在多线程编程中保护共享资源,确保对关键代码段的独占式访问。对共享资源的访问,要对互斥量进行加锁,如果互斥量已经上了锁,调用线程会阻塞,直到互斥量被解锁。在完成了对共享资源的访问后,要对互...转载 2018-04-10 00:05:22 · 320 阅读 · 0 评论 -
linux获取系统时间
#include <stdio.h> #include <time.h> #include <iostream> #include <fstream> void GetCurrentTime(std::string &cur) { struct tm *ptm; long ts; ...原创 2018-04-02 23:59:37 · 334 阅读 · 0 评论 -
linux下编写opencv工程的makefile
在ubuntu14.04 x64位机中,编译opencv程序安装pkg-config工具,可以在软件中心中搜索安装 pkg-config工具说明: 一般来说,linux头文件在/usr/include 目录中,如果不在,那么在编译的时候需要用 -I 参数指定其路径。 为了方便库的使用,库在安装时会有一个文件专门保存库的各种信息,需要的时候再通过特定的工具将其中有用的信息提取...原创 2018-04-03 00:06:39 · 2698 阅读 · 0 评论 -
linux驱动之模块化编程
概念区别于直接编译源码,可以快速编译功能代码,以模块的形式添加到linux系统中,便于测试,而不是反复修复源码进行编译。步骤第1步包含头文件,并通过MODULE_LICENSE("GPL")告诉内核模块遵从GPL协议,这个事情必须要做。MODULE_AUTHOR("CYG")指定模块的作者,可不写。第2步编辑模块的入口函数,一般叫xxx_init,在模块加载...转载 2018-04-03 16:27:32 · 485 阅读 · 0 评论 -
NanoPi GPIO 控制(Nanopi-S2)
NanoPi GPIO 控制1. sysfs 操作 前提:在编译内核时,查看是否加入 sysfs 支持,若没有则加上(这里默认使用NanoPi-S2测试,其最新固件已经加入sysfs支持)$ make menuconfig Device Drivers —> GPIO Support —> /sys/class/gpio/… (s...转载 2018-04-03 16:39:32 · 1329 阅读 · 0 评论 -
NanoPi 中断(Nanopi-S2)
1. GPIO概述Linux 内核中已经设计好了相关 GPIO 驱动模型,并设计了相关的操作函数接口。int gpio_request(unsigned gpio, const char *tag) //申请一个空闲的GPIOint gpio_direction_input(unsigned gpio) //设置GPIO为输入...转载 2018-04-03 16:42:47 · 916 阅读 · 1 评论 -
jsoncpp的使用
jsoncpp安装安装 scons sudo apt-get install scons安装 jsoncpp 官网下载jsoncpp的源码包,执行以下命令: tar -zxf jsoncpp-src-0.5.0.tar.gz cd jsoncpp-src-0.5.0 scons platform=linux-gcc cp libs/linux-gcc-4.1.2/li...原创 2018-04-13 08:12:36 · 712 阅读 · 0 评论 -
NanoPi PWM驱动(Nanopi-S2)
pwm相关手册说明 These timers can be used to generate internal interrupts to the ARM subsystem. In addition, Timers 0, 1, 2, and 3include a PWM function (Pulse Width Modulation) which can drive an exte...原创 2018-04-29 14:10:12 · 1046 阅读 · 0 评论 -
c/c++ 标准输入输出缓冲区刷新
在一次编写用QProcess接收程序运行结果的代码中,发现可执行程序使用print cout等打印运行结果,如果不加换行符就打印不出结果后来查阅网上资料得知,换行符的作用就是刷新缓冲区,因此添加缓冲区刷新代码即可或者直接关闭缓冲区.刷新方式:fflush(stdout)setbuf(stdout, NULL);setvbuf(stdout, (char *)NULL, _IONBF, ...原创 2018-05-25 10:28:03 · 3515 阅读 · 0 评论 -
Linux系统下-进程间通信(消息队列)
Linux系统下-进程间通信(消息队列-详解)/*send.c*/#include <stdio.h>#include <sys/types.h>#include <sys/ipc.h>#include <sys/msg.h>#include <errno.h>#define MSGKEY 123//消息的数据结构是...转载 2018-05-25 11:28:52 · 343 阅读 · 0 评论 -
Raspberry 2B+系统安装Hass
文章目录0.hass简介1.Raspberry 2B+系统安装2.Homeassistant安装添加服务启用homekit功能参考最后0.hass简介hass即homeassistant,是智能硬件的一个连接平台,它可以通过连接HomeKit、小米网关等控制Apple以及Xiaomi的硬件设备,也可以直接连接硬件设备,通过其Web/App进行控制。同时,它还有自动化的功能,通过配置可以实现智能...原创 2019-09-14 09:36:19 · 1739 阅读 · 0 评论