- 博客(26)
- 收藏
- 关注
原创 Linux字符设备驱动之LED驱动
最近项目中需要搞一个LED驱动,其实看着好像比较容易实现,但是上手后就会发现,没有想象的那么容易。我的硬件平台为rk1808的Linux开发板,硬件设计了三个LED,刚开始想直接用Linux内核的LED子系统来实现,就不用单独编写驱动了,可是尝试了一下,LED灯就是不亮,没办法,只能自己写驱动了,本人也是接触Linux内核驱动不久,直接上手也不现实,就找了一大堆博客先来学习,发现都是直接操作寄存器的,但是我想用设备树来实现,后来就找与设备树相关的,找了一篇点亮单个led的,学习完之后就开始自己动手实现了一下
2021-02-24 08:56:03
410
原创 十六进制数高位和低位的结合与分离
今天在调试一个测温模块的时候遇到十六进制的高位和低位组合,板子通过串口发送指令给模块,并读取模块返回的温度值,但是模块返回的是一个十六进制的报文,实际温度值是分为两个十六进制数的,高位在前,低位在后,比如返回的是0x01,0x2e,实际的温度用十六进制表示就是0x012e,十进制就是302,实际温度值除以10就可以了。但是写代码的时候突然就迷糊了,刚开始想到的是两个数相与就可以了,但是用计算器折腾了一番,发现不行,经过一番冥思苦想终于搞定了,记录一下,以免下次又忘记。分离高位和低位先看一下怎么分离高位和
2021-02-08 16:38:28
13951
1
原创 ubuntu18.04交叉编译gstream
ubuntu18.04交叉编译gstream下载gsrteamer源码,地址:https://gstreamer.freedesktop.org/src/交叉编译解压进入目录,执行./configure --prefix=$PWD/output CC=/media/gree/47037fce-de1d-40bd-8cd8-922f0e1edc8e/rk_docs/rk1808-sdk/prebuilts/gcc/linux-x86/aarch64/gcc-linaro-6.3.1-2017.05-x
2020-12-29 17:45:58
614
原创 Ubuntu18.04交叉编译glib
Ubuntu18.04交叉编译glib源码下载glib下载地址:https://download.gnome.org/sources/glib/2.45/libffi下载地址:ftp://sourceware.org/pub/libffi/交叉编译glib需要依赖libffi,首先对libffi进行交叉编译交叉编译libffi解压下载的源码,进入解压目录:执行./configure -h查看configure选项如下:`configure' configures libffi 3.3 to
2020-12-29 14:35:27
1356
原创 linux rtl8189fs WiFi驱动移植
wifi驱动移植解压厂家给的驱动源码,进入到解压目录,修改Makefile修改Makefile先将平台支持修改为你自己用的平台,我是在rk1808上进行移植的,所以添加如下:###################### Platform Related #######################CONFIG_PLATFORM_I386_PC = nCONFIG_PLATFORM_ANDROID_X86 = nCONFIG_PLATFORM_ANDROID_INTEL_X86 = nCON
2020-12-28 18:25:36
4602
2
原创 Ubuntu16.04安装docker微信
安装docker安装docker的时候会遇到坑,网上大多数教程都是通过sudo apt-get install docker命令进行安装,虽然可以安装成功,但是安装完成后看一下/etc/目录下有没有docker文件夹。如果没有,实则是没有安装成功的。有才是真的安装成功,才能进行接下来的操作。稳妥一点的方法可以参照下面的,不然很容易被带到坑里,有可能系统会崩溃:首先,查看自己能安装的docker版本:用如下命令查看:apt-cache madison docker-ce下面这些就是你能安装的版本d
2020-11-24 21:01:11
1074
1
原创 Ubuntu16.04无法安装软件
问题之前对Ubuntu的源切换成国内的阿里云的源,安装adb时出现错误,无法安装E: 无法定位软件包 adb原因:用的国内的源有问题解决重新修改源:sudo vim /etc/apt/sources.listdeb http://mirrors.aliyun.com/ubuntu/ bionic main restricted universe multiversedeb http://mirrors.aliyun.com/ubuntu/ bionic-security main restr
2020-11-23 08:56:29
1034
原创 Ubuntu16.04搭建rust开发环境
Ubuntu16.04搭建rust开发环境安装vscode进入vscode官网下载Linux下的安装包,使用dpkg命令安装sudo dpkg -i code_1.37.0-1565227985_amd64.deb等待安装完成,搜索vs可以直接找到,为了方便,将其添加到启动器。如果不习惯英文,可以对vscode进行汉化,打开vscode,快捷键Shift + Ctrl + P,输入Configure Display Language进行安装即可,安装完毕需要重启vscode。安装rus
2020-10-22 16:57:32
1388
原创 Ubuntu16.04交叉编译openCV
Ubuntu16.04交叉编译openCV1、准备工作与目标板配套的交叉编译工具并添加环境变量;openCV的源码,我这里的版本是3.2.0交叉编译openCV需要的第三方库;2、交叉编译安装第三方库在安装第三方库之前,单独建立一个文件夹OPENCV_3THPARTY_LIB用来安装第三方库。安装zlibtar vxf zlib-1.2.11.tar.gzcd zlib-1.2.11./configure --prefix=/home/u260510/wangjy/arm_ope
2020-10-19 16:26:32
1170
原创 Ubuntu16.04交叉编译移植sqlite3
Ubuntu16.04交叉编译移植sqlite31、准备工作(1)下载sqlite3的源码,可以到官网下载:官网下载;(2)交叉编译工具,要添加环境变量并且是与开发版配套的;2、下载源码解压wget https://sqlite.org/2020/sqlite-autoconf-3330000.tar.gztar vxf sqlite-autoconf-3330000.tar.gzcd sqlite-autoconf-3330000/3、生成makfile./configure CC=a
2020-10-17 17:01:18
938
原创 Ununtu 16.04交叉编译移植qt5.9.4
Ununtu 16.04交叉编译qt5.9.41、准备工作(1)官网下载qt5.9.4的源码;(2)准备交叉编译器,这里的交叉编译器必须是你的目标开发板配套的交叉编译工具;(3)将交叉编译器添加到环境变量;2、解压qt5.9.4源码tar vxf qt-everywhere-opensource-src-5.9.4.tarcd qt-everywhere-opensource-src-5.9.43、修改qmake.confvim qtbase/mkspecs/linux-aarch64-
2020-10-17 16:07:48
896
原创 Linux检测内存泄漏
安装valgrind1、可以用命令安装:sudo apt-get install valgrind2、源码安装到官网下载最新版:https://sourceware.org/pub/valgrind/valgrind-3.15.0.tar.bz2下载之后解压:tar -jxvf valgrind-3.15.0.tar.bz2.tar.bz2解压之后进入解压出来的目录:cd valgr...
2019-12-02 11:34:05
339
原创 Linux使用openssl对socket加密【2】
上一篇博客介绍了使用openssl对socket加密使用到的库函数,也解决了上一篇博客中说到的问题,首先就是要生成openssl证书,大家可以参考本篇博客(https://blog.csdn.net/fly2010love/article/details/46415307),就不多说了。还有一个问题就是编译的问题,刚开始我以为是库没安装好,其实是没有生成证书,而且使用gcc编译的时候要使用-L参...
2019-07-31 11:21:02
637
原创 Linux使用openssl对socket加密【1】
最近做完了串口转socket,就学习了一下socket加密,看了好多博客基本都是用openssl库函数实现,还有自己写加密解密函数实现的,我尝试用库函数写了一下。竟然用库函数实现,那就要安装openssl库,然后我在百度上找了一大堆的教程,搜了一篇测试的程序,发现可以了。但是编译客户端和服务器端的时候,就不行了,又开始百度,开始以为是库没装好,就重新装了好几遍,发现还是不能编译,最后加了动态库的路...
2019-07-27 17:23:54
500
转载 Linux下openssl的简单介绍
特别说明:本博客转自https://blog.csdn.net/funkri/article/details/17533887OpenSSL简介SSL是Secure Socket Layer(安全套接层协议)的缩写,可以在Internet上提供秘密性传输。Netscape公司在推出第一个Web浏览器的同时,提出了SSL协议标准,目前已有3.0版本。SSL采用公开密钥技术。其目标是保证两个应用间...
2019-07-23 19:37:28
759
原创 笔试编程题1
最近刷笔试题,题目是将多个单词放进一个数组里,找出最后一个单词的长度。看到题目的时候觉得还行应该挺简单的,就上手自己写了一下,大概地思路就是:先求出整个数组的大小,然后从末尾开始遍历数组,找到第一个空格的位置,然后用数组的长度减去空格的位置,就是最后一个单词的长度。大概思路是没什么问题的,但是运行了之后就会发现,细节问题还是很多的。首先就是求数组的长度,大家都知道用sizeof()或者strl...
2019-07-21 20:29:24
359
原创 linux串口转socket
上一篇博客写了串口通信,实现了串口收发数据及串口参数的设置等基本功能,实际情况中串口经常被用到,所以可以考虑将其打包封装一下,需要用的时候直接在主函数里直接调用即可,工程量会减少很多。串口函数打包实际上就是将串口的参数放在结构体里面,通过结构体指针将参数传给函数。每次调用函数时只需要一个参数,会方便很多。我最近在做串口转socket的时候就用到了,刚开始我只写了一个简单的串口函数,实现了数据的收发...
2019-07-21 19:44:51
760
原创 串口通信
串口通信串口在网络通信中经常用到,最近在学习串口通信的编程。所以要对串口操作,就要了解串口的原理等。串口是串行接口的简称,也称串行通信接口或串行通讯接口(通常指COM接口),是采用串行通信方式的扩展接口。串行接口 (Serial Interface) 是指数据一位一位地顺序传送,其特点是通信线路简单,只要一对传输线就可以实现双向通信(可以直接利用电话线作为传输线),从而大大降低了成本,特别适用于...
2019-07-17 19:47:38
1917
原创 libevent网络通信常用函数
虽然libevent库提供了很多函数,但是使用libevent实现网络socket通信,使用到的函数不多,根据上一篇博客中的代码,我们可以发现,用到函数只有创建event_base结构体的函数,创建事件并绑定事件到event_base中的函数,添加事件到结构体的函数,启用循环的函数等,下面详细说一下这几个函数:创建 event_base使用 libevent 函数之前需要分配一个或者多个 ev...
2019-05-23 18:02:34
469
原创 libevent学习之网络通信
上一篇博客虽然也写了服务器端的程序,跟着别人的代码写的,没怎么搞懂,之后又看了几篇博客,把别人的代码跑了跑感受了一下,然后自己重新写了一遍,实现了客户端与服务器的通信。libevent上篇介绍了,就不重复了,下面介绍单线程的客户端与服务器端。服务器端要实现网络通信,肯定会用到socket等函数,这几个函数应该没什么问题。libevent默认情况下是单线程的,可以配置成多线程,每个线程有一个ev...
2019-05-21 17:15:46
732
2
原创 libevent语言学习之基础
什么是libeventlivevent是一个轻量级的开源的高性能的事件触发的网络库,适用于windows、linux、bsd等多种平台,内部使用select、epoll、kqueue等系统调用管理事件机制。著名分布式缓存软件memcached也是基于libevent,而且libevent在使用上可以做到跨平台,而且根据libevent官方网站上公布的数据统计,似乎也有着非凡的性能。它的特点是:事...
2019-04-29 16:47:44
318
原创 socket通信之TLV传输协议
了解TLV协议TLV :即Tag(Type)-Length-Value,它包含三个域,第一个Tag为要封装的数据的类型域,第二个Length为封装的总的数据长度,第三个Value为要装入数据的值。其实就是一个简单的自定义通信协议,将要传送的数据进行编码组织将其发送出去的过程。想要了解的更细致,建议自己可以百度搜索学习,这里就不细述了。下面就以一个例子说一下装包和解包。数据装包装包的过...
2019-04-23 21:18:53
2695
原创 linux文件IO系统调用
文件描述符文件描述符(file descriptor, fd)是Linux内核为了高效管理已被打开的文件所创建的索引,其是一个非负整数(通常是小整数),用于指代被打开的文件,所有执行I/O操作的系统调用都通过文件描述符。程序在开始运行时,系统会自动打开三个文件描述符,0是标准输入,1是标准输出,2是标准错误。POSIX标准要求每次打开文件时(含socket)必须使用当前进程中最小可用的文件...
2019-04-23 19:54:35
228
原创 服务器端实现之多进程、多线程、多路复用
1、服务器实现我觉得实现了客户端之后,服务器端应该更容易。通过上面的流程图比较我们可以发现客户端和服务器端都会用到socket、write、read、close函数,服务器端只是多了bind、listen、accept三个函数,所以我们写之前只要学习这三个函数就可以了。bind()函数:int bind(int sockfd, const struct sockaddr *addr, so...
2019-04-23 19:54:17
812
原创 客户端代码实现
1、了解TCP/IP协议TCP/IP协议是由很多很多协议组成的集合,不仅仅是tcp和ip协议,把这个集合统称为TCP/IP协议族。TCP/IP按层次分为四层:应用层、传输层、网络层和数据链路层。通过下图可以了解TCP/IP协议结构:2、了解socket网络编程socket网络编程其实不难实现,只要你了解了客户端与服务器端之间是如何实现连接、发送和接收数据,知道如何调用相应的函数以及函数的用...
2019-03-28 17:20:58
1775
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人