linux区分同一个USBHUB下的相同设备
摘要:一、前言 我调试的一块ARM板上接了一个USBHUB,这个USBHUB上连接了3块相同的网卡,系统启动后这3块网卡会被自动按顺序命名为ethx,应用程序是根据网卡名区分不同的网卡的,但是如果某个网卡坏了,那么系统依然是按照已有的网卡进行排序,这样一来网卡名称就会乱掉。需要做的是将网卡名称和硬件上网卡
阅读全文
linux I2C应用编程
摘要:一、前言 本人熟悉I2C的时序,可以用单片机写I2C驱动程序,但是在linux上使用i2c接口不用我们去定义时序,我只想知道在linux平台上是如何用函数传输I2C数据的,因此本文只讨论linux下如何将I2C用起来。 二、打开设备 linux下一切皆文件,I2C设备也是一个文件,我使用的2416开
阅读全文
获得百度地图
摘要:一、前言 获得地图的方法实际上是给百度地图发送一个获得图片的请求,可以设定的内容包括:图片中心点、标记点、图片大小、地图级别(放大程度)等,具体内容可以参考百度地图的Web服务API中的静态图服务。 需要注意的是,百度地图使用的经纬度与GPS/北斗模块获得的经纬度不同,百度地图是加密过的,需要调用百
阅读全文
从GPS/北斗模块中获取经纬度
摘要:一、前言 GPS/北斗模块基本上都是通过串口发送数据的,并且发送数据的频率是1Hz,发送的数据内容可以去搜索“GPS数据格式”,反正这个模块发回来的数据很多,其中经纬度数据是包含在这些数据里面的。并且模块发回来的全部都是字符串,因此从GPS/北斗模块获取经纬度,实际上就是一个字符串解析的过程。 比如
阅读全文
在嵌入式平台上将GPS/北斗模块获取的经纬度转换为百度地图经纬度
摘要:一、前言 最近需要做一个嵌入式系统显示地图的项目,百度地图给我们留出了API接口可以调用。百度地图API网址为:https://lbsyun.baidu.com 之前已经有同事做好了地图获取的程序,但是显示的位置和实际位置大概有1km的偏差,上网查阅各种资料,试过各种经纬度转换的函数,最后得到的结果
阅读全文
通过USB摄像头拍摄JPG照片
摘要:一、前言 本文中的程序适用于Ubuntu或者ARM linux平台上外接USB摄像头,将摄像头插入USB口后在/dev目录下会出现名为video*的设备。需要注意的是,电脑自带的USB设备也可以接入Ubuntu系统中,并且在/dev目录下也会出现名为video*的设备,但是本文的例程不适用于电脑自带
阅读全文
通过framebuffer显示png图片
摘要:一、前言 png图片是无损压缩格式,它有一个比较重要的特点是可以让特定区域透明。要显示png图片需要调用png库留出的函数接口,png库留出的函数接口很多,但是帮助手册里没有详细的说明各个函数的用法,网上也没找到太多资料,因此在这里只介绍一种能用的方法。有些函数用法在代码注释里写着。 二、代码 1
阅读全文
通过framebuffer显示bmp图片
摘要:显示bmp图片的程序之前已经写过了,只是没有单独拿出来,这次单独把显示bmp图片的程序拿出来并简单讲解一下。 直接上代码: 1 /** 2 * filename: jpg.c 3 * author: Suzkfly 4 * date: 2021-07-28 5 * platform: S3C6410
阅读全文
通过framebuffer显示jpg图片
摘要:一、前言 本文jpg解压的关键性代码来自于一篇博客:https://blog.csdn.net/u012372584/article/details/50618739 如果想读懂jpg解压缩的代码,建议去看这篇博客,本文主要是在这篇博客的基础上进行修改,使用framebuffer显示jpg图片。 二
阅读全文
进程间通信之——信号复现(15~19)(七)
摘要:15) SIGTERM kill命令的默认方式就是发出SIGTERM信号,在终端输入kill +PID即可给指定PID的进程发送该信号,测试程序如下: 1 /** 2 * filename: signal_15.c 3 * author: Suzkfly 4 * date: 2021-02-18 5
阅读全文
进程间通信之——信号复现(14,26,27)(六)
摘要:14) SIGALRM 26) SIGVTALRM 27) SIGPROF 这几个信号要放在一起说,因为他们都属于闹钟信号,首先说说SIGALRM信号,man手册上说它是由alarm函数产生的,先介绍一个这个函数: 14.1 alarm 函数原型 unsigned int alarm(unsigne
阅读全文
进程间通信之——信号复现(11~13)(五)
摘要:11) SIGSEGV 产生该信号的原因是对地址的非法访问,意思就是访问了你不该访问的地方,也是在实际工作中遇到的段错误最可能的原因,比如:访问不知道从哪里弄过来的指针、访问空指针,数组越界等等,测试代码如下: 1 /** 2 * filename: signal_11.c 3 * author:
阅读全文
进程间通信之——信号复现(8~10)(四)
摘要:8) SIGFPE 该信号由浮点异常导致,实际上当除数为0时就会导致该信号,无论被除数是什么类型的,只要除数是0,就会发出该信号。测试代码如下: 1 /** 2 * filename: signal_8.c 3 * author: Suzkfly 4 * date: 2021-02-16 5 * p
阅读全文
进程间通信之——信号复现(6~7)(三)
摘要:6) SIGABRT 1. man手册上说是由abort函数产生的,先介绍一下abort函数: 函数原型 void abort(void); 头文件 stdlib.h 功能 给自己发送SIGABRT信号 参数 无 返回值 空 2. 事实上不止是abort函数能产生SIGABRT信号,assert也可
阅读全文
进程间通信之——信号复现(1~5)(二)
摘要:普通信号的复现 1)SIGHUP 该信号在终端挂起或控制进程终止时发出,那可以通过在终端中运行进程,然后关闭终端来实现。 代码如下: 1 /** 2 * filename: signal_1.c 3 * author: Suzkfly 4 * date: 2021-02-15 5 * platfor
阅读全文
进程间通信之——信号(一)
摘要:关于linux信号的知识点,我找到一篇博客写的非常好:https://www.cnblogs.com/hoys/archive/2012/08/19/2646377.html 本篇博客主要是为了加深自己的理解,并且在上篇博客的基础上做一些扩充,有可能会有说的不对的地方。 具体与信号相关的资料可以用输
阅读全文
进程间通信之——有名管道
摘要:1、概述 无名管道只能在具有亲缘关系的进程中使用,而有名管道可以在互不相关的两个进程间使用。有名管道将管道以文件的方式存储在指定路径中,使用ls -l可以看到第一个字符是‘p’,表示这是一个管道文件。文件操作用标准IO,即open,read,write,close。 2、函数介绍 2.1 创建管道文
阅读全文
进程间通信之——无名管道
摘要:1、概述 无名管道用于有亲缘关系的进程间的通信,管道字如其名,它就像在两个进程之间铺设了一条管道,进程通过管道进行数据交互。无名管道是没有名字的,它由pipe或者pipe2函数创建,与之对应的是有名管道,有名管道在下一节介绍。 以pipe函数为例,其函数原型为int pipe(int pipefd[
阅读全文
保护临界资源——互斥锁
摘要:1、概述 互斥锁通常用在多线程中,用于保护临界资源。什么是临界资源?我的理解就是有可能被多个线程同时占用的资源,比如线程1要使用一个全局变量的时候,这时调度到了线程2,线程2改变了这个全局变量的值,这时线程1再去使用这个全局变量的时候就可能出问题。举个现实生活中的例子,A要用打印机打印很多资料,B也
阅读全文
有名信号量——无关进程间同步
摘要:1、概述 上两篇博客中无名信号量可以用于线程间同步或者相关进程间同步,而有名信号量可以在无关进程间同步,因为有名信号量是将信号量存储在文件中,在不同的进程中打开相同的文件即可,有名信号量的文件都存储在/dev/shm目录下。 无名信号量通过sem_init进行初始化,使用完之后用sem_destro
阅读全文