自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(66)
  • 资源 (2)
  • 收藏
  • 关注

原创 linux apt install时候避免输入,关闭交互模式的方法

DEBIAN_FRONTEND=noninteractive apt -y install libkrb5-dev

2020-08-27 11:00:48 1429

转载 [转载]UDP组播接收端解析

转自:https://www.cnblogs.com/hateislove214/archive/2010/11/05/1869883.html网络中的一台主机如果希望能够接收到来自网络中其它主机发往某一个组播组的数据报,那么这么主机必须先加入该组播组,然后就可以从组地址接收数据包。在广域网中,还涉及到路由器支持组播路由等,但本文希望以一个最为简单的例子解释清楚协议栈关于组播的一个最为简单明了...

2019-01-05 09:58:42 476 2

原创 C语言位域解析&符号位扩展规则

从一个例子说起:int main(void){ union{ int i; struct{ char a : 1; char b : 1; char c : 2; }bits; }num; printf("Input an integer fo...

2018-11-06 17:14:59 3423 1

原创 C语言字节对齐规则总结

原始链接源自 https://www.cnblogs.com/clover-toeic/p/3853132.html , 从上面博客中学习总结得到下面的文章。    不同硬件平台,对存储空间的处理不一样,比如不能放奇数地址,不能任意存放等,为了适应不同的架构,在C语言层面上,就可以执行对齐从而独立于硬件平台。 此外,是由于对内存的存取效率问题,如果存放的地址不对齐,取一个4字节的数据,可能会需...

2018-10-23 16:16:30 8232

原创 Linux编程--文件描述符fd

    linux中, 每一个进程在内核中,都对应有一个“打开文件”数组,存放指向文件对象的指针,而 fd 是这个数组的下标。    我们对文件进行操作时,系统调用,将fd传入内核,内核通过fd找到文件,对文件进行操作。    既然是数组下标,fd的类型为int, < 0 为非法值, >=0 为合法值。在linux中,一个进程默认可以打开的文件数为1024个,fd的范围为0~1...

2018-10-22 17:39:48 17464

原创 [从0到1搭嵌入式工程]嵌入式应用层判断SD卡是否存在,获取大小和剩余空间

1,判断是否存在    如果sd卡设备存在, 在生成/sys/block/mmcblk0/device/cid文件,存放sd卡的cid信息, 同目录下type文件可以判断卡类型,如果设备只支持sd卡,就不需要判断类型了。    在代码中使用popen执行命令:cat /sys/block/mmcblk0/device/cid 2>/dev/null 。获取返回值,如果有返回值,则认为sd...

2018-10-19 17:16:41 1161

原创 ALSA音频播放和录制 underrun和overrun错误

    pcm播放的时候,接口snd_pcm_writei 返回 -EPIPE,为underrun    录制音频的时候, 接口snd_pcm_readi 返回 -EPIPE, 为overrun    使用ALSA架构的驱动程序,在实际开发使用过程中,比较常见的错误有-EPIPE,也就是-32?为什么会出现呢?肯定是系统内部不和谐了!EPIPE的错误在播放时出现就是因为驱动buffer没有...

2018-10-17 11:03:43 11776 3

原创 [2018-10-1]斐讯K2 PSG1218 A2 刷bread 和第三方老毛子Padavan固件

斐讯路由器:K2 PSG1218 A2固件版本:22.6.507.43电脑: W10 64位在网上查了很多帖子,最终刷老毛子Padavan固件10月1日最新的固件成功。下面是过程。先下载三个文件:22.6.506.28固件:https://pan.baidu.com/s/19bCiugGO2NtI_1whAk1HTg  提取码:74ajbreed Web控制台助手v5.8版...

2018-10-01 13:04:55 109027 11

原创 [从0到1搭嵌入式工程]常用加密方法之AES加解密及密码生成和获取、cyassl库

在项目中,遇到两个终端之间的传输,就会遇到数据加密的问题,比如使用P2P协议音视频和命令的传输。这时,对于加密方法的选择,往往使用AES就可以满足需求了。下文中还会介绍密码的生成和获取。AES: 高级加密标准。是一种对称分组加密算法。 对称的意思是加密端和解密端使用相同的密码。分组的意思是把数据分成一小块一小块,进行加密。AES加密相对于DES(数据加密标准),速度更快,安全级别更高,...

2018-09-26 19:15:42 1310

原创 [从0到1搭嵌入式工程]常用加密方法之Base64编解码及代码实现

Base64概念:严格来讲Base64不是一种加密算法,是为了让不可显示的数据转换成可显示的字符串的编码方法。“Base64是网络上最常见的用于传输8Bit字节码的编码方式之一,Base64就是一种基于64个可打印字符来表示二进制数据的方法”帖一段别人的博客:“什么是“可打印字符”呢?为什么要用它来传输8Bit字节码呢?在回答这两个问题之前我们有必要来思考一下什么情况下需要使用到B...

2018-09-26 15:07:37 310

原创 [从0到1搭嵌入式工程]常用加密方法之XOR异或加密

使用的加密方法, 密码获取方法,  AES  XOR    base64  HMAC  md5  RSA 在整个项目开发过程中,总是会用到需要加密的地方,下面的文章就说一说常见的几种,这里介绍XOR异或加密算法。异或运算: 相同为0, 不同为1。运用异或运算的特点,两次异或之后,会变成原来的值本身。因为算法简单,容易被破解,用在简单的加密上很方便,重要信息不用XOR算法。什么时...

2018-09-26 14:12:58 394

原创 [从0到1搭嵌入式工程]监测外网连接情况gethostbyname

设备要想实时监测外网连接情况,肯定是需要在外网上有一个点,可以让你一直监测设备与这个点之间的连接情况。这个点,就肯定是处在外网中的服务器。1,DNS服务器180.76.76.76 (百度DNS)、 114.114.114.114(国内移动、电信和联通通用的DNS)、8.8.8.8(google DNS)可以用定期ping DNS服务器的方式监测与DNS的连接情况,任意一个联通,即为连接...

2018-09-21 19:44:49 226

原创 [从0到1搭嵌入式工程]计算进程占用的内存大小

脚本内容:    # cat get_process_mem.sh     pid=$(ps|grep myprocess|grep -v grep|awk '{print $1}')    cat /proc/$pid/status|grep VmRSS|awk '{print $2}'在程序代码中,可以使用 system调用脚本,获取到自身占用了多少内存, 如果占用内存过大,可以选...

2018-09-17 14:43:31 512

原创 [从0到1搭嵌入式工程]局域网自动发现功能,苹果Bonjour/mdnsResponder移植

在局域网内通信,就必须知道对方的IP地址和端口,苹果开源的mdnsResponder,就是利用mdns组播协议,通过服务域名,来获取相应ip地址的一种方式。比如我们有一个摄像头,在联网的情况下,同一个局域网下的app想发现这个摄像机,并和摄像机建立联系。这样一个需求,需要摄像头调用mDNS_Register,通过传参告知mdns库,在指定的port上注册一个did._ipcxx._tcp....

2018-08-10 15:50:31 7710 9

原创 [从0到1搭嵌入式工程]IP地址传递和保存常规做法:IP和整数转换inet_addr&inet_ntoa

为什么要转?常规IP是字符串,转成整形保存,可以节省空间,最重要是可以提升检索效率。将IP地址或IP段转换成数字保存在数据库中,可以提高检索速度。要知道,在数据库中数字类型的要比文本类型的检索速度快得多,从而提高网站性能。原理:ip地址的每段可以看成是一个0-255的整数,正好是无符号的8bit就能放下,把每段拆分成一个二进制形式组合起来,然后把这个二进制数转变成无符号整数。举例:一个ip地址为1...

2018-07-13 18:55:28 315

原创 嵌入式 Linux 的一般开发过程

一般嵌入式 Linux 的开发过程, 无论是 ARM, PowerPC 或 MIPS 的处理器, 都必需经过以下的开发过程:1、 创建 Linux 交叉编译环境;2、建立 Bootloader;3、移植 Linux 内核;4、建立 Rootfs (根文件系统);5、安装驱动程序;6、安装软件;对照一下自己。...

2018-07-13 17:54:25 2610

原创 [从0到1搭嵌入式工程]嵌入式编译工具链命名规则&四大架构&openwrt简介

对于固件应用开发来说,编译工具链都是sdk供应商提供的,不同的项目,就有了多种编译链,不同的编译链有什么区别呢?例如 arm-linux-gnueabihf-xx,mipsel-openwrt-linux-xx 。交叉编译工具链,从授权上,分为免费授权版和付费授权版。免费版目前有三大主流工具商提供,第一是GNU(提供源码,自行编译制作),第二是 Codesourcery,第三是Linora。收费版...

2018-07-13 17:40:55 677

原创 [从0到1搭嵌入式工程]嵌入式常用开源库

在嵌入式开发业务的过程中,总会遇到一些功能,会用到常规的开源库。1:zlib, 数据压缩解压库, 遇到上传数据时,如果太大,可以使用zlib从srcbuf中压缩到dstbuf,再做一个base64就可以明文传输了。同时,也提供了gzip文件的读写接口, 可以直接将数据压缩到gz文件中去,或者从gz文件中解压缩出来。2:zbar,条形码、二维码信息扫描读取, 当二维码包含中文时,会乱码,可以修改zb...

2018-07-10 19:44:29 751

原创 [从0到1搭嵌入式工程]uboot使用tftp升级固件

一,windows 下载工具 tftpd.exe, 运行选tftp Server选项卡, 确认本机的IP和固件所在的目录。二,设备通过网线和PC连接在同一个网段,设备串口连接PC。   (根据设备而定),在启动时,有选择项:这时, 串口按 2,  然后输入 Y    输入本设备的IP,随便输,保证和其他不冲突。    输入tftpd server IP, 输入固件 firmware.bin。   ...

2018-07-10 17:57:30 3373

原创 [从0到1搭嵌入式工程]libcurl常用的请求方法总结

常规信息GET请求:POST请求, PUT请求,下载, 上传

2018-05-10 15:19:20 405

原创 [从0到1搭嵌入式工程]设备与服务器后台通信的搭建

通过什么协议, 需要什么依赖,加密, 做什么通信,心跳保持,前后兼容问题。1,设备与服务器后台通信,使用libcurl库, 使用http、https协议, 根据server API 构造URL,与server进行交互、请求、上传、下载等。2,用HTTP还是HTTPS,使用HTTP协议,传输的文本会以明文的形式在互联网上传输,可能会被截取,查看, 使用HTTPS协议,消息会被加密后发送到网络上,中间...

2018-05-09 16:06:16 1236

原创 [从0到1搭嵌入式工程]模块间通信的搭建

各模块(进程)之间,采用消息队列的方式通信。整体通信采用一个调度转接点,其他进程只和这一个转接点进程进行通信的方式进行, 如果发给其他进程的消息,也通过调度进程进行转发, 调度进程起名字叫Dispatch Process。在dispatch程序刚启动时,需要对消息队列进行初始化,因为它是中转进程,需要和所有进程建立消息队列。dispatch_mqfd = mq_open("/mq_dispatch...

2018-05-07 20:03:44 550

原创 [从0到1搭嵌入式工程]启动固件

linux 内核启动之后,会执行1号用户进程init,然后由它来启动后面的任务,挂载文件系统,启动服务等,init会执行init.rc文件, 最后由init.rc执行到我们的init.sh脚本。在init.sh中,继续创建需要的目录,挂载文件系统,在启动真正的home_m之前,判断是否升级。 执行ifconfig wlan0 up启动wifi ,  ulimit -c unlimited 生成co...

2018-05-07 19:01:12 325

原创 [从0到1搭嵌入式工程]对shell命令的调用

在linux的应用程序中,调用system()和popen()可以执行shell命令。system()命令是串行执行,是阻塞的,等到shell执行结束后,返回, system不能直接返回执行结果。popen()是平行的,不等执行完成,函数就会返回, 继续往下执行。popen会返回一个文件指针,可以对这个文件指针进行读和写,会作用到sh中的文件中。所以对于需要阻塞的命令,可以直接调用system()...

2018-05-07 17:49:58 197

原创 [从0到1搭嵌入式工程]日志系统的实现

嵌入式开发的log输出,一种是直接输出到标准输出,通过串口可以看到, 一种是把日志存在内存文件中, 在一般嵌入式开发中, 这两者是并存的。标准输出通过 printf()函数, 或者通过vfprintf(stdout, format, args)输出到标准输出。对于放在文件中的日志,因为日志的频繁性, 需要单独的线程或进程对文件进行读写, 同时对log文件进行大小限制、循环覆盖等管理。下面记录一种实...

2018-05-07 15:24:49 3570 1

原创 [从0到1搭嵌入式工程]编译打包和升级的实现

工程编译:我们以nand分区,分为bootloader、kernel、rootfs、homefs为例。rootfs是linux系统必须的文件目录系统和工具的集合,挂载在跟目录/下,homefs可以认为是我们自己的应用程序、自己的依赖库,放在homefs中,放在/home目录中。那么编译打包的过程,就是把固件运行所需的全部文件,打成一个包, 在升级时,由升级程序把这个包拆开,把相应的文件保存在对应的...

2018-05-04 20:29:17 948

原创 [从0到1搭嵌入式工程]重置的实现

一般会有一个重置的按钮,用户在长按之后,设备执行重置操作。    在某一个线程中,每隔一秒去检测硬件上重置按键是否被按下(由驱动提供接口),如果检测到两次或者以上次数被按下,就可以认为是长按,去执行重置的操作。注意判断时间也不能过长,如果硬件上也有重置,比如硬件自身在长按6S之后,硬件自身就会重置,也就是硬件的这个按键的信号也会被重置,如果在软件上我们判断7S才认为是长按,那么就会出现软件...

2018-05-02 15:51:22 262

原创 [从0到1搭嵌入式工程]设备信息和配置信息的保存

    对于一个嵌入式的工程, 设备信息是指出厂时固化在设备上的信息,类似手机的IMEI,会有DID等可以认证的信息,特点是,在出厂时只写入一次到flash中,永远不丢(升级不丢、重置不丢)。 配置信息是指用户通过某一种方式,可以对设备进行配置, 比如配置wifi, 设置开关等, 这些信息掉电不能丢失,要保存在flash上, 用户升级固件以后,也能正常使用,只有在用户重置设备以后,配置信息才恢复为...

2018-04-25 18:56:21 497

原创 好用的工具/everything/wireshark/apowersoft/audacity/mediainfo/diskgenius/elecard sreamEye等

总结下自己用到的很好用的工具搜索工具: everything文本编辑: notepad++,超大文件用UEunicode、utf8、文本互转工具:Text Exchange网络抓包工具:wireshark音视频编辑和格式转换工具:apowersoft音频编辑工具、pcm播放工具:Audacity 1.3 Beta分析视频帧的工具:Elecard StreamEye T...

2018-03-26 13:52:17 337

转载 用ubuntu命令行发送邮件

转载自:http://blog.csdn.net/psh2009/article/details/9280713试了挺多方法,这个果然就好用,感激. 以下为转载。文章主要是参考http://www.cnblogs.com/276815076/archive/2011/10/11/2207214.html验证发送成功,请大胆尝试,但后果自负哈。不用说首先安

2016-10-28 16:08:13 1081

原创 使用Fiddler工具抓取手机HTTP和HTTPS包

使用fiddler版本V4, 整个界面框架如下面帖图。一, 怎么设置抓取http报文1, fiddler -> tools -> fiddler options -> connections -> 勾选 "Allow remote computers to connect",2, 电脑端 运行 cmd, 输入 ipconfig, 查看电脑IP地址3, 手机端 进入设

2016-08-16 19:31:03 2124

转载 gerrit不能对一个已经merge/abandon的change进行再次提交

http://blog.csdn.net/velanjun/article/details/40372079With this error message Gerrit rejects to push a commit or submit a review label (approval) to a change that is already closed.This erro

2016-08-04 11:17:47 5403

原创 linux线程退出的方式及线程资源清理

关键词:线程资源释放, pthread_join()1, 每个线程有自己的一组寄存器,自己的栈空间, 自己的errno变量;2,pthread_create线程创建并不能保证哪个线程先运行,新线程还是调用线程。3,线程正常退出的方式有三种: 线程函数直接return, 被同一进程中的其他线程调用pthread_cancel取消,线程调用pthread_exit 退出,(线程运行异常退出

2016-08-03 16:38:28 2105

原创 按键精灵自然语言编程几个知识点

接上一篇按键精灵的文章。最近又用到了按键精灵和大漠插件,发现自然语言编程也是蛮强大的。一, 一种字库生成的方法1,大漠综合工具 -> 抓图 -> 抓取需要识别的文字 -> 点“提取点阵(多个)” -> 会在右侧生成一排识别到的文字列表-> 选中之后,会在左侧有点阵图,在“定义文字”中输入该文字,回车确认,就相当于把这个点阵和文字对应上,存在字库中了。2,我们并不是要一个一个

2016-08-02 20:49:05 2733

转载 Linux下RTC时间的读写分析

Linux系统下包含两个时间:系统时间和RTC时间。系统时间:是由主芯片的定时器进行维护的时间,一般情况下都会选择芯片上最高精度的定时器作为系统时间的定时基准,以避免在系统运行较长时间后出现大的时间偏移。特点是掉电后不保存。RTC时间:是指系统中包含的RTC芯片内部所维护的时间。RTC芯片都有电池+系统电源的双重供电机制,在系统正常工作时由系统供电,在系统掉电后由电池进行供电。

2016-07-08 18:02:33 1905

原创 Linux 系统信息查看

linux系统信息放在根目录/proc/下:版本:cat /proc/versionCPU:cat /proc/cupinfo 内存:cat /proc/meminfo启动时间:cat /proc/uptime

2016-04-25 15:20:50 518

转载 SecureCRT配色方案

http://jingyan.baidu.com/article/a681b0dec6c0783b1943467e.html

2016-03-03 21:26:59 480

转载 Linux上的free命令详解

转载自:http://www.cnblogs.com/coldplayerest/archive/2010/02/20/1669949.htmlfree命令查看内存使用状态,默认输出单位为KB。free -b bytes输出, -k KB输出, -m MB输出, -h 人易读方式输出,自动显示G M等Get技能:1,常用:free -m2,从应用角度查看内存时,查看

2016-03-03 10:14:37 310

原创 linux编程之mkdir() rmdir() remove()函数

mkdir()mkdir函数用于创建目录。格式如下:      #include      #include      #include      int mkdir(const char *pathname,mode_t mode);    其中参数pathname是新创建目录的目录名,mode指定该目录的访问权限,这些位将受到文件创建方式屏蔽

2016-03-02 13:35:15 2125

转载 statfs获得硬盘使用情况 模拟linux命令 df

转载自:http://blog.csdn.net/mociml/article/details/5335474编程中用于获取磁盘的使用情况。先说statfs结构:#include     /* 或者 */int statfs(const char *path, struct statfs *buf); int fstatfs(int fd, struct stat

2016-03-02 11:20:21 519

Apowersoft视频转换王4.4.6破解版

Apowersoft视频转换王是一款特别好用的音视频转换裁剪工具。

2019-01-23

cyassl3.3.0源码和manual

cyassl3.3.0源码和manual手册,适用于嵌入式环境的轻量级SSL库,支持 AES, 3DES, RC4, HC-128, and RABBIT 等加密方法。

2018-09-26

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除