- 博客(26)
- 资源 (4)
- 收藏
- 关注
原创 Unix网络编程源码解析_进程间通信IPC之(Posix)基于内存的信号量
#inlcude <semaphore.h>int sem_init(sem_t *sem, int pshared, unsigned int value);int sem_destroy(sem_t *sem);信号量是随内存区的持续性而存在的。当参数pshared 为0时,表示一个进程中各个线程共享的内存区,进程终止,信号量随进程的内存消失而消亡;...
2019-06-02 22:19:28
320
原创 Unix网络编程源码解析_进程间通信IPC之(Posix)有名信号量
本章介绍有名信号相关函数的使用,在参考书的第10章。本文主要分为两部分,第一部分为有名信号量相关函数的介绍,第二部分为在生产-消费(生产、消费各一个线程)的案例中使用有名信号量进行同步操作;演示的程序源代码都是从G-F所提供免费源码工程中提取出来的,这样每个函数的执行操作就会更加清楚;第一部分:1、有名信号量的相关函数#include <semaphore.h>sem...
2019-05-24 21:55:27
462
原创 Unix网络编程源码解析_进程间通信IPC之生产-消费者问题
一、生产者-消费者问题(非涉及同步),主要介绍线程函数的作用;全局变量定义int nitems; /* read-only by producer and consumer */struct { pthread_mutex_t mutex; int buff[MAXNITEMS]; int nput; int nval;}shared = {PTHREAD_MUTEX...
2019-05-22 19:52:45
390
原创 通过编写程序工具提取.pal调色板文件为Rgb/Yuv分量数据的文本保存(同时适用于Win7-24位深度的位图和Win10-32位深度的位图)
一、前言 到做工作记录的时候,本节主要的工作有先保存pal调色板数据位位图,再对位图的数据结构进行分析,再通过源码对数据进行提取,最后通过程序运行进行演示结果。因为Win7和Win10系统保存后的位图存在差异,在编写程序时通过修改宏定义可以解决,同时宽、高也是宏定义配置的。 开发需求:需要添加一种256等级的伪彩条,而且底层FPGA的接口为YVU数据接口,而市场...
2019-03-26 21:54:53
1391
1
原创 有名管道
规范化风格 if(argc == 3) { if(strncmp(argv[1], "rot", 3) == 0) { //ret = atoi(argv[2]); if(pthread_create(&th, NULL, rotation, argv...
2019-03-21 18:48:15
330
原创 设计模式之单例模式(一)
一、前言 在编写应用程序的时候,用到一些编程技巧是难免的。在学习编程的时候,个人体会是思维更重要,编程语言只是一个表达思维的工具,所以对于面向对象的Java/C++都适用,其他语言一样,可能就是在语言规则有小小的差异。 在面向对象程序的设计中,开发需求是需要一个可给其他任何类提供资源的类。当然,可以选择使用全局变量来实现,类里面N多个static关键字,但类中的...
2019-03-13 09:03:35
218
原创 Linux i2c子系统应用之Linux ARM嵌入式i2c通信(设备驱动完成i2c从设备寄存器的配置)
一、前言 本文主要分为三个部分,第一部分,介绍i2c字符设备驱动应用的背景以及本文测试需要的开发环境;第二部分,介绍主要的字符驱动源码及测试程序;第三部分,测试方法以及测试结果,i2c从设备的器件地址可以在该器件的datasheet查找。文章的最后会给大家分享本文的所有源码。二、开发背景和环境 我已经讲解过利用i2c总线的去配置i2c从设备的方法,本文采用...
2019-03-11 16:50:24
1353
原创 Linux i2c子系统应用之Linux ARM嵌入式i2c通信(用i2c设备总线完成i2c从设备寄存器的配置)
一、前言 本文主要分为三个部分,第一部分,介绍i2c总线应用的背景以及本文编译测试需要的开发环境;第二部分,介绍主要的源码及相关函数接口;第三部分,测试方法以及详细测试结果,i2c从设备的7bit器件地址可以在设备的datasheet查找。文章的最后会给大家分享本文的所有源码。二、开发背景和环境 在做嵌入式相关工作时,需要配置i2c从设备的寄存器是常有的事...
2019-03-11 14:42:48
3177
4
原创 spi
SPI简介 SPI(Serial Peripheral Interface)即串行外围接口,通常可以用它来配置一些硬件模块的寄存器,但SPI没有应答响应信号,所以在数据传输过程中的可靠性不如I2C;SPI以主从方式进行工作,能够实现数据的双向传输(全双工方式),一般由四根Pin脚组成,片选使能(CS)、时钟(SLCK)、数据输出(SDO)、数据输入(SDI),如下SPI的...
2018-10-31 17:16:33
536
原创 嵌入式平台ZYNQ7000蓝牙BlueZ4.95库的交叉编译
一、前言 最近听同事说蓝牙BlueZ库很难编译成功,有几次直接把Linux系统编崩溃了(真的有这么夸张吗?反正我目前没有遇到过)。开始他们编译BlueZ5.5+的,依赖库太多,只要一个库没编译成功,之前所有的准备工作都前功尽弃了;同事无奈下转战4.95,基本都是按照网上的流程走一遍,但到了编译dbus库的时候编译不过,而且还出现了在Linux关机后无法启动了(系统崩溃了),他后来没办法,直...
2018-07-06 22:22:03
1426
原创 Linux(Ubuntu)搭建局域网git服务器
首先更新源sudo apt-get updatesudo apt-get upgrade在更新源的时候提示E: Could not get lock /var/lib/dpkg/lock - open (11: Resource temporarily unavailable)E: Unable to lock the administration directory (/var/lib/dpk...
2018-06-27 20:57:40
4224
原创 Qt5.8与触摸Tslib-1.4库ARM-ZYNQ平台的移植(一)
本小节主要介绍Tslib-1.4库的移植,下节主要Qt5.8的移植,以及Qt5.8与Tslib-1.4的对接,实现在Qt上的人触摸功能;PC系统:Linux version 4.10.0-38-generic (buildd@lgw01-amd64-059) (gcc version 5.4.0 20160609 (Ubuntu 5.4.0-6ubuntu1~16.04.4) ) #42~16.0...
2018-06-21 22:52:23
4220
6
原创 Unix网络编程学习笔记_进程间通信IPC之管道通信
环境: 1、以下是函数调用需要的头文件2、以下是管道通信的源代码#include #include #include #include #include #include #include #include #include #define MAXLINE (4096)#define RUN_STEP_DEBUGvoid
2018-06-02 11:34:49
484
原创 Linux下Vim工具常用的指令笔记
为了精通vim编辑工具命令,总结自己平时用的vim工具命令(紫色),还扩展自己没用到,读者可根据自身习惯进行取舍。一、Vim打开、搜索、保存、退出指令1、打开文件跳到指定行(行号超过文本的行数,默认跳到文本的最后) --> vim +文件的行号 file 或者vim file +文件的行号(在搜索文件中的关键字的位置后使用,搜索命令:grep -w 关键字 * -...
2018-03-27 23:29:01
291
原创 在jpg图片添加Exif信息的C程序实现
测试环境:Linux Fedora16 +Windows 打开图片的工具:UltraEdit 截图工具:FSCaptrue写Exif信息前,图片的相关数据,以下是图片开始的数据排布; 图片以0xFF 0xD8开始,0xFF 0xE0就是图片下一个数据块开始的标示,0x00 0x10表示该数据块的长度,长度包括标示(0xFF 0xE0)2个字节; 以下是图片结束的数据排布,注意,从0...
2018-03-22 18:45:04
6012
2
原创 Linux静态库.a与动态库.so的生成与区别、以及.so库文件的封装与使用
一、前言如果有公司需要使用你们产品的一部分功能(通过代码调用这些功能),如果不想提供源代码,那么就可以通过封装成库文件的形式提供给对方使用。本文主要介绍了生成动态库与静态库文件的过程、以及封装和使用库文件的方法。二、静态库.a与动态库.so的生成与区别.o文件 :二进制目标文件,可用于打包成库文件也可以链接生成可执行文件; c文件编译后链接,生成可执行文件gcc t...
2017-11-14 11:51:36
10055
2
原创 实现Linux与Windows共享以及PC版开源Qt5.8的环境搭建
本文记录了从下载资源、安装虚拟机与Linux系统,着重介绍了Linux与Windows字幕复制共享以及文件共享的问题,以及PC版Qt5.8环境的配置。
2017-08-21 15:29:24
847
原创 嵌入式软件经典字符串面试、笔试题(基础)
平时自己用来温习的一些试题,如果有错误的地方,还望网友包涵和指正。1.统计字符串中子字符串的个数。#include <stdio.h>#include <string.h>int countCharNum(const char* FuString, const char* ZiString){ int countString = 0; char* subString = ZiStr
2017-08-21 10:00:41
1122
原创 制作Linux内核开机Logo
一、前言有关Linux开机Logo的制作,网上已经有很多例子了,方法都差不多。因为以前用的LCD屏幕分辨率为320*240,现在自己配置了一个480*640的竖屏当横屏用,为测试驱动是否配置成功,我选择用开机Logo来测试,回顾下下开机Logo的制作;当然在应用层,直接向frameBuffer中写一个0~255范围指定颜色的值也做测试也是OK的(前提LCD的接口是RGB的);最初测试我用的...
2017-05-16 19:51:36
1011
原创 Linux下用C语言fopen、fread和fwrite函数对二进制文件的操作
一、前言在做一个镜头的初始化操作,需要加载一个648*522像素大小的文件,厂商提供的是一个excel表,如果要加载数据,可用加载txt文本的方式,我选用二进制方式加载文件;大家都知道电脑真正执行的不是高级语言,而是0和1的二进制文件,而且不管你是几维的数据,存放计算机内存上的数据是一维,而且按一定顺序执行下来(虽然操作系统原理介绍到在宏观上有并行处理,但微观上还是串行执行的)。所以直接加载二...
2017-03-14 09:50:30
9546
1
原创 虚拟机Linux访问usb设备,通过Libusb库方法实现读写usb设备所获取的实时图像数据
一、前言基于Linux 平台USB驱动开发,主要有内核驱动的开发和libusb的无驱设计;首先为什么要选第三方库Libusb,可能是基于Libusb的程序只涉及到应用层,使用起来更加方便;如果是在内核驱动,就要考虑到内核大小、内核版本的兼容,如果客户需要把你的USB模块加入他们的平台,那岂不是还要重新根据客户要求裁剪、编写内核?又假如有许多客气,而且每个客气的平台不一样,那是不是需要为每个客户定制一
2017-02-23 19:07:55
18721
14
原创 Linux环境用C语言实现读取配置文件来区分产品的多个版本以及多个功能
一、前言在公司从事嵌入式软件工作,应用层程序有QT平台的也有Android平台的,我主要负责QT方面的内容,系统为Linux。但公司的产品具有多个国家的版本,导致开机的动态画面、应用程序的菜单Logo、产品出厂厂商、公司网址也不一样,有的版本会带蓝牙,有的不带蓝牙,有的版本图像融合需要勾边,而有的不需要,在维护时极其不方便,如果应用程序修改了一个功能,所有版本都需要升级,那么升级小包的个数应该...
2017-01-13 15:26:00
923
原创 Linux环境C语言把整数转换成字符串再保存该字符串数据为文本
一、前言刚步入社会工作,只是想把自己做的事情做一个记录,同时也可以分享给网友,虽然都是些基础,但领导说得很对,细节非常重要;本测试程序非常简单,对本人来说,意义在于读取电池放电的采样数据,然后把得到的离散数据用excel绘制成一条放电曲线,找到电池满电以及空点的临界点,最后应用到应用层的电池充放电的图标绘制;二、代码说明1. 打开要保存文件的方式linux环境支持...
2017-01-03 12:00:29
14831
原创 基于Linux的S3C6410模拟SPI的外围设备驱动程序、Makefile及测试程序的实现
一、前言驱动一般分为字符设备驱动、块设备驱动与网络驱动三种类型。本文主要是一个简单字符驱动程序的实现,主要涉及三个部分,即外围驱动、Makefile以及测试程序的编写;在《LDD3》一书中有提到,用户空间的驱动程序有以下优缺点:优势:①可以和整个C库链接;②可使用普通的调试器调试驱动程序代码,不用调试正在运行的内核;③程序的崩溃不会影响系统的正常运行,简单地kill掉就OK;④和内...
2016-08-22 10:03:26
1634
原创 linux环境下C语言实现非阻塞方式读取字符串数据的串口测试程序,即串口工具的编写
本文提供了设置串口通讯的接口,方便大家对程序的复用,感觉还是面向对象的语言更方便呀;在给模块发送指令后需要读取模块返回的数据时,保险起见采用阻塞式读取,且串口一次只能读取8位byte数据,注意读取数据的调用函数;注意在读写命令中存在零的16进制的数据时的方式;通信成功,但恰遇到模块总返回操作失败的代码的问题。
2016-08-01 12:54:51
10046
原创 C语言实现一、二维数组动态内存分配与释放以及图像的线性插值放大与优化
1.1前言1.本文是博主本着虚心学习的态度与大家交流,博文难免会有错误之处,希望大家指正; 2.本文是针对对C语言以及图像放大的基础讨论,如是大牛们可以直接忽略本文; 3.运行环境:由于在不同电脑配置和系统上的运行时间有差异,本程序的测试平台:电脑CPU为Intel奔腾双核E6500,主频2.93GHZ内存4GB.虚拟机为10.0版的VMware,linux系统为Fedora16要讲程...
2016-07-28 14:11:55
4656
1
pal调色板转成RGB分量数据和YVU分量数据的程序源码(并有相关的微博详细笔记)
2019-03-27
Linux Arm嵌入式利用I2C总线方式和I2C设备驱动方式配置从设备寄存器(并有相关的微博详细笔记)
2019-03-12
tslib库及其安装工具
2018-06-22
JPEG的Exif信息读写的C语言实现(以文件或者缓存形式向JPG图片读和写操作,并有案例)
2018-03-16
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人