- 博客(103)
- 资源 (7)
- 收藏
- 关注
原创 交叉编译libusb和libusb-compat-0.1.5
1. 下载libusb库:https://jaist.dl.sourceforge.net/project/libusb/libusb-1.0/libusb-1.0.22/libusb-1.0.22.tar.bz22. 编译安装libusb:tar -xvf ./libusb-1.0.22.tar.bz2cd ./libusb-1.0.22mkdir build./configure...
2020-01-18 10:19:18 1348 3
原创 构建根文件系统
1. 下载busyboxhttps://busybox.net/downloads/busybox-1.31.0.tar.bz22. 配置、编译、安装busybox2.1 配置busybox$ make menuconfig1) 选择静态编译2)交叉编译工具路径2.2 编译$ make CROSS_COMPILE=mips-linux-gnu- ARCH=mip...
2019-08-01 18:52:30 581
原创 再读计算机网络
1. 三次握手和四次挥手1.1 三次握手:客户端主动打开连接服务端,客户端发送SYN=1、seq=c 到服务端且客户端进入SYN_SEND状态,服务端发送确认SYN=1、ACK=1、ack=c+1、seq=s 且服务端进入SYN_RCVE状态,客户端再次对服务端的确认进行确认,ACK=1、ack=s+1、seq=c。自此连接建立。当第三次握手失败时服务端不重传ack报文而是发送RST(...
2019-03-31 18:20:24 420
原创 再读linux驱动程序设计
1. 编译内核1.1 安装内核man手册1.1.1 配置编译内核make menuconfig执行后直接退出make -j 4make modulesmake modules_install INSTALL_MOD_PATH=./build //安装模块1.1.2 生成内核函数man手册sudo pip install -U Sphinxsudo pip i...
2019-03-29 16:19:48 739
原创 内联函数
内联函数最好定义在头文件里,因为内联函数要在调用点展开,所以编译器必须随处可见内联函数的定义,要不然,就成了非内联函数的调用了.所以,这要求每个调用了内联函数的文件都出现了该内联函数的定义。类中定义的函数默认是内联函数。内联函数在调用处展开,避免了函数调用时低开销。inline关键字只是告诉编译器应该采取内联方式调用,最后能否真正内联,看编译器是否支持。宏在预处理时展开,内联函数在编译...
2018-11-21 17:58:39 247
原创 ubuntu 安装 wine3.0.3
在ubuntu上也有使用QQ和钉钉等windows程序得需求,这时安装wine来使用QQ等windows程序。在ubuntu上使用sudo apt-get install wine命令安装的往往是wine的早期版本,因为其版本太老,在使用它安装windows程序过程中经常崩溃,现在推荐使用wine的较新版本。下面说一下怎么安装wine的最新版本。对于ubuntu 18.10:添加仓储:...
2018-11-20 10:52:27 2872
原创 指针和数组
1. 指针和素组的访问过程1.1 数组访问数据过程首地址加上偏移量,然后取出地址内容。1.2. 指针访问数据过程从指针变量取出保存的地址,取出地址中保存的数据。1.3. 指针使用下标访问数据首先取出指针变量的地址,然后与偏移量i相加,最后取出改地址的内容。 2. 当数组和指针作为函数的形参时,数组和纸指针相同。 3. char a[] = "ab...
2018-11-19 18:38:29 176
转载 C++ 左值和右值
左值、右值在C++11中所有的值必属于左值、右值两者之一,右值又可以细分为纯右值、将亡值。在C++11中可以取地址的、有名字的就是左值,反之,不能取地址的、没有名字的就是右值(将亡值或纯右值)。举个例子,int a = b+c, a 就是左值,其有变量名为a,通过&a可以获取该变量的地址;表达式b+c、函数int func()的返回值是右值,在其被赋值给某一变量前,我们不能通过变量名找...
2018-11-19 14:43:42 886 1
原创 dbus
DBUS及常用接口介绍:https://blog.csdn.net/mr_wangning/article/details/60324291和菜鸟一起学linux之DBUS基础学习记录:https://blog.csdn.net/eastmoon502136/article/details/10044993 https://blog.csdn.net/gentlycare/ar...
2018-10-10 09:56:08 2598
原创 kvlist ssdp jsonrpc
kvlist https://segmentfault.com/a/1190000002391954ssdp https://blog.csdn.net/swanabin/article/details/52024800jsonrpc https://www.cnblogs.com/cielosun/p/6762550.html
2018-10-09 14:56:30 351
转载 adns解析库——域名解析实例(C++、linux)
adns是一个开源的dns解析库官方文档:http://www.chiark.greenend.org.uk/~ian/adns/1. 初始化 adns_state adns; adns_query query; adns_answer *answer; 函数原型: int adns_init(adns_state *new...
2018-10-08 18:30:49 3462 1
原创 ubus实现进程间通信举例
https://blog.csdn.net/jasonchen_gbd/article/details/46055885https://www.cnblogs.com/embedded-linux/p/6791560.html
2018-09-28 14:56:49 1052
转载 使用ubus实现进程通信
ubus为openwrt平台开发中的进程间通信提供了一个通用的框架。它让进程间通信的实现变得非常简单,并且ubus具有很强的可移植性,可以很方便的移植到其他linux平台上使用。本文描述了ubus的实现原理和整体框架。ubus源码可通过git库 git://nbd.name/luci2/ubus.git 获得,其依赖的ubox库的git库:git://nbd.name/luci2/ubox.g...
2018-09-28 11:30:44 2785
转载 C语言和设计模式(总结篇)
设计模式的书相信很多人都看过。对于设计模式这样一种方法,相信不同的人有不同的理解。我在这里写的博客只是我个人对设计模式的粗浅认识。文中肯定存在很多的不足和不成熟之处,希望朋友们谅解。望大家多多指正,谢谢! 01)C语言和设计模式(继承、封装、多态)02)C语言和设计模式(访问者模式)03)C语言和设计模式(状态模式)04)C语言和设计模式(命令模式)05)C语言和设计模式...
2018-08-03 18:43:15 3188
原创 使用C进行面向对象编程
stack.h#ifndef __STACK_H__#define __STACK_H__#include <stdio.h>#include <string.h>#include <stdlib.h>#include <stdbool.h>#ifdef __cplusplusextern "C"{#endifstruc...
2018-08-03 15:11:15 1116
转载 内存分配的三种方式
内存分配有三种方式:一:从全局存储区域分配:这时内存在程序编译阶段就已经分配好,该内存在程序运行的整个周期都有效,如:全局变量、static静态变量。二:从栈区分配:在执行函数的时候,函数中的局部变量的存储单元都可以从栈中分配,函数执行结束后这些存储单元都会被自动释放,实现从栈中分配存储单元运算操作内置于处理器的指令集中,效率很高 但是分配的内存容量有限。三:从堆中分配:也称为动态内存...
2018-07-23 16:54:36 3202
转载 QTableWidget的用法总结
在使用Qt不多的日子里,已经两次用到了QTableWidget这个控件,也慢慢的习惯和喜欢上了它。再使用QTableWidget的时候,已不像刚开始使用时的迷茫。嗯嗯。现在就来总结总结我与QTableWidget相识的历程……(^__^) 嘻嘻……使用时也查过不少资料,在此感谢前辈们的用心总结与分享!1.QTableWidget不能在mainwindow中随主窗口的大小变化?解决:在表...
2018-07-21 14:34:35 1448
转载 udp打洞原理
UDP打洞的过程大致如此: 1、双方都通过UDP与服务器通讯后,网关默认就是做了一个外网IP和端口号 与你内网IP与端口号的映射,这个无需设置的,服务器也不需要知道客户的真正内网IP 2、用户A先通过服务器知道用户B的外网地址与端口 3、用户A向用户B的外网地址与端口发送消息, 4、在这一次发送中,用户B的网关会拒收这条消息,因为它的映射中并没有这条规则。 5、但是用户A的网关就会增加了一条...
2018-07-14 16:16:15 2614
原创 curl-dome
#include <stdio.h>#include "curl/curl.h"FILE *fp = NULL;size_t write_func(void* ptr,size_t size,size_t n,void *stream){ int writen = fwrite(ptr,size,n,fp); return writen;}int m...
2018-07-13 16:41:16 175
转载 LibCurl使用小结
一、LibCurl基本编程框架libcurl是一个跨平台的网络协议库,支持http, https, ftp, gopher, telnet, dict, file, 和ldap 协议。libcurl同样支持HTTPS证书授权,HTTP POST, HTTP PUT, FTP 上传, HTTP基本表单上传,代理,cookies,和用户认证。想要知道更多关于libcurl的介绍,可以到官网 http:...
2018-07-13 10:26:31 3924
原创 linux c 编程之 udp
客户端:#include <stdio.h>#include <stdlib.h>#include <string.h>#include <sys/types.h> /* See NOTES */#include <sys/socket.h>#include <netinet/in.h>#incl...
2018-07-10 18:31:59 258
原创 Qt5.7下的串口编程
需要在pro文件添加QT += serialportserial.h#ifndef SERIAL_H#define SERIAL_H#include <QMainWindow>#include <QSerialPort>#include <QSerialPortInfo>#include <QDebug>#include &...
2018-07-09 16:17:48 4835 1
原创 伸缩型数组成员
1. 伸缩型数组成员有如下规则(1) 伸缩型数组必须是结构体的最后一个成员。(2) 结构体至少有一个成员。(3)伸缩型数组类似普通数组,只不过他的放括号里面是空的。例如:struct argv{ int sum; int a[];};伸缩型数组使用malloc分配内存。#include <stdio.h>struct argv{ int sum;...
2018-07-04 10:34:03 562
原创 复合字面量(C99)
语法,把类型名放到圆括号里面,后面紧跟一个花括号扩起来的初始化列表。int *a = (int []){1,2};例如:#include <stdio.h>struct argv{ char a[64]; int b;};int func(struct argv a){ printf("argv.a=%s argv.b=%d\n",a.a,a.b...
2018-07-03 14:03:48 2639 1
原创 Uboot的移植中遇到的一些问题,及解决方法。
首先感谢tekkamanninja分享的源码:https://github.com/tekkamanninja/u-boot-2010.03-tekkaman,也可以参考友善之臂的移植手册。由于本学期主要学习exyson 4410,对mini2440了解比较少,通过查看数据手册,移植手册,分析源码,学习了uboot的工作原理,启动过程。下面就说一下我遇到的问题,及其解决方法。1
2018-06-30 14:30:10 5017 2
转载 BNF语音识别文件格式简介
此文分析离线语音识别的语义规则文件,即BNF文件,一般放在Android Studio的Assets文件夹下。本大侠使用的是科大讯飞的语音识别SDK,所以以下所有规则在此SDK下实测有效1、结构简单的说,BNF文件分为五个部分:文档标示头;(不要去改就对了)语法名称;槽声明;主规则(可引用子规则);文档主体(具体的定义槽、引用规则)2、定义2.1 文档标示头这个不细说,按默认来就好,它定义了文档的...
2018-06-30 11:45:12 4329 2
转载 C++之tinyXML使用
转自:http://blog.csdn.net/L_Andy/article/details/40615517tinyXML一款很优秀的操作C++类库,文件不大,但方法很丰富,和apache的Dom4j可以披靡啊!习惯了使用java类库的我看到这么丰富的c++类库,很高兴!它使用很简单,只需要拷贝几个文件到你的工程中,没有STL也可以编译运行。 下面我从这几个方面谈谈对
2018-01-26 15:29:18 456
转载 Base64编码的C语言实现
本文转自http://blog.163.com/lixiangqiu_9202/blog/static/5357503720140593058179/Bse64是一种以64个可打印字符对二进制数据进行编码的编码算法。base64在对数据进行编码时以三个8位字符型数据为一组,取这三个字符型数据的ASCII码,然后以6位为一组组成4个新的数据,这4个新的数据有6位,所以它的最大值为2^6=64
2018-01-20 17:05:01 552
转载 Base64加密原理
Base64是一种加料置位加密法,那为什么叫base64呢?因为无论明文是什么(比如汉字,特殊符号等),加密后的密文都只会变成字母A-Z、a-z和0-9 和+和/这64个字符,被他加密体后积一般会变成原来的4/3。Base64的标准在RFC2045里的24页可以看到。http://wenku.baidu.com/view/bd567523aaea998fcc220e8e.html
2018-01-20 16:34:18 451
原创 jsonc-api
编译假如出错时:忽略指定库libcmt.lib libcmdtd.lib(debug) 在哪加不用我说吧解析的时候有一点点小问题 :比如 http://baidu.com 解出来后是http:\/baidu.com ,需修改原代码json_object.c 中 json_escape_st函数大约第20行的位置 else if(c == '/') p
2018-01-20 12:16:34 1141
转载 线程定时器
名称 timer_create - create a POSIX per-process timer摘要 #include #include int timer_create(clockid_t clockid, struct sigevent *sevp, timer_t
2018-01-09 09:26:03 1074
翻译 多线程下变量-原子操作
最近编码需要实现多线程环境下的计数器操作,统计相关事件的次数。下面是一些学习心得和体会。不敢妄称原创,基本是学习笔记。遇到相关的引用,我会致谢。 当然我们知道,count++这种操作不是原子的。一个自加操作,本质是分成三步的: 1 从缓存取到寄存器 2 在寄存器加1 3 存入缓存。 由于时序的因素,多个线程操作同一个全局变量,会出现问题。这也
2018-01-08 15:54:49 1033
原创 I2S协议
1. 接口针对不同的数字音频子系统,出现了几种微处理器或DSP与音频器件间用于数字转换的接口。最简单的音频接口是PCM(脉冲编码调制)接口,该接口由时钟脉冲(BCLK)、帧同步信号(FS)及接收数据(DR)和发送数据(DX)组成。在FS信号的上升沿,数据传输从MSB(Most Significant Bit)字开始,FS频率等于采样率。FS信号之后开始数据字的传输,单个的数据位按顺序进行传
2018-01-02 17:43:26 1809
转载 QoS的基本原理
1 前言QoS(Quality of Service)是服务质量的简称。对于网络业务来说,服务质量包括哪些方面呢?从传统意义上来讲,无非就是传输的带宽、传送的时延、数据的丢包率等,而提高服务质量无非也就是保证传输的带宽,降低传送的时延,降低数据的丢包率以及时延抖动等。广义上讲,服务质量涉及网络应用的方方面面,只要是对网络应用有利的措施,其实都是在提高服务质量。因此,从这个意义上来说,防火墙
2017-12-19 09:34:34 132859 3
转载 RTP/RTCP/RTSP/SIP/SDP
RTPsdfsReal-time Transport Protocol)是用于Internet上针对多媒体数据流的一种传输层协议。RTP协议详细说明了在互联网上传递音频和视频的标准数据包格式。RTP协议常用于流媒体系统(配合RTCP协议),视频会议和一键通(Push to Talk)系统(配合H.323或SIP),使它成为IP电话产业的技术基础。RTP协议和RTP控制协议RTCP一起使
2017-12-19 09:31:21 489
转载 sip与sdp
sip协议基础 会话初始协议(seesion initiation protocol)是一个控制发起,修改和终结交互式多媒体会话的信令协议。 sip是一个基于文本的协议。http请求与sip请求:http:GET /index.html HTTP/1.1SIP:INVITE sip:seven@freeswitch.org.cn SIP/2.012345在http请求中
2017-12-19 09:25:01 3605
转载 什么双机热备? 为什么要做双机热备? 双机热备有哪几种?
双机热备知识简介1、 双机热备名词解释 从广义上讲,就是对于重要的服务,使用两台服务器,互相备份,共同执行同一服务。当一台服务器出现故障时,可以由另一台服务器承担服务任务,从而在不需要人工干预的情况下,自动保证系统能持续提供服务。 双机热备由备用的服务器解决了在主服务器故障时服务不中断的问题。但在实际应用中,可能会出现多台服务器的情况,即服务器集群。 双机热备一般情况下需要有共享的存
2017-11-08 16:43:37 17222
转载 回调函数和钩子函数
什么是回调函数? 简而言之,回调函数就是一个通过函数指针调用的函数。如果你把函数的指针(地址)作为参数传递给另一个函数,当这个指针被用为调用它所指向的函数时,我们就说这是回调函数。 为什么要使用回调函数? 因为可以把调用者与被调用者分开。调用者不关心谁是被调用者,所有它需知道的,只是存在一个具有某种特定原型、某些限制条件(如返回值为 int )的被调用函数。
2017-09-07 11:02:27 603
转载 Makefile 使用总结
在Makefile中我们经常看到 = := ?= +=这几个赋值运算符,那么他们有什么区别呢?我们来做个简单的实验新建一个Makefile,内容为:ifdef DEFINE_VRE VRE = “Hello World!”elseendififeq ($(OPT),define) VRE ?= “Hello World! First!”endif
2017-09-06 17:32:05 385
原创 ARM处理器中的char
C标准上char可以带符号也可以不带符号,但是具体的平台又有所不同。在大多数的体系结构中char是带符号的,但是在ARM体系中char是不带符号的其取值范围是0 - 255。如下面的代码: 图一在X86平台: 图二在基于ARM的HI3518
2017-08-29 10:21:11 1151
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人