自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

leumber的专栏

求其所知,创其所至

  • 博客(44)
  • 资源 (14)
  • 收藏
  • 关注

原创 CRC16常见几个标准的算法及C语言实现

CRC16常见的标准有以下几种,被用在各个规范中,其算法原理基本一致,就是在数据的输入和输出有所差异,下边把这些标准的差异列出,并给出C语言的算法实现。CRC16_CCITT:多项式x16+x12+x5+1(0x1021),初始值0x0000,低位在前,高位在后,结果与0x0000异或CRC16_CCITT_FALSE:多项式x16+x12+x5+1(0x1021),初始值0xFFFF,低...

2017-01-10 10:56:00 95875 17

原创 MQTT协议学习笔记

MQTT是一个基于客户端-服务器的消息发布/订阅传输协议,在我们的CSPSVR中用于与原创TSP端建立一个网络连接,所以很有必要先了解一下MQTT在网络的应用层是如何组织协议并完成通信的。基本特征:使用TCP/IP提供基础网络连接使用发布/订阅消息模式,提供了一对多的消息分发和应用之间的解耦。消息传输对有效载荷内容不可知提供三种等级的服务质量:“最多一次”,尽操作环境所能提供的最大努力...

2019-10-24 17:40:30 446

原创 wpa_supplicant 和hostpad让WiFi模块同时工作在AP+STA模式

本文将介绍如何使用 `wpa_supplicant`服务程序和`wpa_cli` 客户端程序,让嵌入式设备的WIFI模块工作在station模式并连接网络,以及如何使用`hostapd`和`udhcpd`创建一个WIFI热点,并且解决如何让这两种工作模式共存。

2018-12-29 14:03:15 11224 2

原创 简单几步搭建ARM gdb的调试环境

1.下载gdb源码http://ftp.gnu.org/gnu/gdb/ 下载稍微早点的版本,因为最新的版本在配置时可能需要版本更高的运行环境,可能会有一堆麻烦,所以建议下载旧点的版本号,我下载 gdb-7.8.1.tar.gz 我的PC环境是虚拟机Ubuntu 16.04 2.编译 arm-linux-gdb在PC上用gdb调试一个a.out程序时,直接 gcc main.c -g...

2018-07-17 11:24:06 12579

原创 RSA算法C语言实现

RSA算法在数据加密中是最常用的,这里需要两组秘钥,一组私钥,一组公钥,往往是用私钥加密的数据传输到终端用公钥解密,然后用公钥加密的数据传回去用私钥解密。 下边是加解密的C语言的源码:/* RSA.C - RSA routines for RSAREF */ /* Copyright (C) RSA Laboratories, a division of RSA Data Se...

2018-05-25 14:24:09 15946 10

原创 SHA1和SHA256算法C语言实现

SHA家族的五个算法,分别是SHA-1、SHA-224、SHA-256、SHA-384,和SHA-512,由美国国家安全局(NSA)所设计,并由美国国家标准与技术研究院(NIST)发布,是美国的政府标准。 哈希算法使用比较广泛,具体算法原理就不再赘述,这里只是记录一下C语言的源码和使用。 以下先是SHA1的算法 /* * FIPS-180-1 compliant SHA-1 im...

2018-05-22 17:42:38 4309 2

原创 Linux串口UART编程--C语言

串口通讯算是最常用的一个通讯方式,此文就对串口编程做一学习和记录,以备今后查阅常见接口类型 DB9针号 功能 缩写 1 数据载波检测 DCD 2 接收数据 RXD 3 发送数据 TXD 4 数据端准备 ...

2018-04-27 11:15:47 9768 4

原创 Makefile嵌套编译多文件项目

在多文件的项目中,一个工程中的源文件比较多,其按类型、功能、模块分别放在若干个目录中,为了项目更加规整,我们常常要将源文件头文件执行文件等分开,所以在编译Makefile时就要做好整个项目的编译准备工作,Makefile定义了一系列的规则来指定,哪些文件需要编译,需要生成什么目标,需要生成库等等。下面就用实例来列出这些规则,这也是一个基本框架,后边如果需要添加更多的源文件和目录就可以如法炮制,这就可以作为一个较为通

2018-04-07 16:48:32 4285 2

原创 Linux设备模型(四) uevent

热插拔事件:在linux系统中,当系统配置发生变化时,如添加kset到系统或移动kobject,一个通知会从内核空间发送到用户空间,这就是热插拔事件。 热插拔事件的产生通常是由在总线驱动程序层的逻辑所控制。 热插拔事件会导致用户空间中的处理程序(如udev,mdev)被调用,这些处理程序会通过加载驱动程序,创建设备节点等来响应热插拔事件。 比如,当U盘通过USB线缆插入到系统时。热插拔事件会...

2018-02-28 15:03:46 707

原创 Linux设备模型(三) 总线、设备和设备驱动

前面是设备模型的底层基础,接下来的就是对这些底层的东西的使用,构建上层容器,就像之前说的kobject很少单独使用,都是被嵌入在其他的更上层的结构中使用。 总线bus总线是处理器和一个或多个设备之间的通道,在设备模型中, 所有的设备都通过总线相连,总线可以相互插入。设备模型展示了总线和它们所控制的设备之间的实际连接。 在 Linux 设备模型中, 总线由 struct bus_...

2018-02-28 15:02:21 389

原创 Linux设备模型(二) kobject和kset

kobject的作用有: 1、对象的引用计数:来记录Kobject被引用的次数,并在引用次数变为0时把它释放2、sysfs表示:在sysfs中的每个对象都有对应的kobject,每个kobject在/sys下也会以目录形式出现。3、数据结构关联:通过链接将不同的层次数据关联,将所有Kobject以层次结构的形式组合起来。4、热插拔事件处理:kobject子系统将产生的热插拔事件通知用户...

2018-02-28 15:00:27 434

原创 Linux设备模型(一) 基本概念

之前是学习字符设备驱动,但是在期间涉及到了一些设备模型中的东西,如自动创建设备节点,在这之后将深入学习这部分,从而也能更加清楚设备节点是如何创建的。这部分的东西较多,先整体理清框架,然后逐个去理解,最后整合一下,就清晰懂得这些模糊的概念所表述的用意。Linux设备模型的目的:为内核建立一个统一的设备模型,从而又一个对系统结构的一般性抽象描述。 换句话说,Linux设备模型提取了设备操作的共同...

2018-02-28 14:58:44 466

原创 AT88S153工作原理与应用

AT88SC153加密卡的原理和应用AT88SCxx系列加密存储芯片是Atmel生产的具有多用途的加密存储系列芯片 其中AT88SC153是该系列芯片的典型代表。由于其具有多达2KB的EEPROM,利用I2C串行总线通信,采用认证或加密验证等方式进行数据访问。1. 器件简介1.1引脚图 在嵌入式系统中,AT88SC153常采用SOIC和PDIP两种典型封装。由于器件采用I2

2018-01-17 16:38:52 1789

原创 Linux下对PC/SC智能卡接口编程

PC/SC(Personal Computer/Smart Card)规范,PC/SC 规范作为读卡器和卡与计算机之间有一个标准接口,实现不同生产商的卡和读卡器之间的交互操作Linux下运行的源码pcsc-lite 在http://pcsclite.alioth.debian.org/ 其中有demo例程1.建立资源管理器上下文LONG SCardEstablishContext(DWORD d

2018-01-17 16:32:26 4403 1

原创 QEMU 简单几步搭建一个虚拟的ARM开发板

1.安装QEMU先在Ubuntu中安装QEMUsudo apt-get install qemu安装几个QEMU需要的软件包:sudo apt-get install zlib1g-devsudo apt-get install libglib2.0-0sudo apt-get install libglib2.0-dev安装完后在shell输入 qemu 按tab键如果出现自动补齐就证明成

2017-11-28 14:33:17 9900 1

原创 二叉树的创建及前序、中序、后序、层序遍历

二叉树1.建立二叉树1.先序中序遍历建立二叉树: 二叉树前序遍历序列中,第一个元素总是树的根节点的值。中序遍历序列中,左子树的节点的值位于根节点的值的左边,右子树的节点的值位于根节点的值的右边。 递归解法: (1)如果前序遍历为空或中序遍历为空或节点个数小于等于0,返回NULL。 (2)创建根节点。前序遍历的第一个数据就是根节点的数据,在中序遍历中找到根节点的位置,可分别得知左子树和右子树

2017-10-17 14:22:49 1521

原创 队列的入队、出队基本操作

队列先进先出的线性表(FIFO)队尾:队列中指定了用来插入数据的一端队头:队列中指定了用来删除数据的一端入队:数据的插入动作出队:数据的删除动作1.顺序队列//顺序队列#define QUEUESIZE 64typedef struct _sequ{ dataType data[QUEUESIZE]; int front; int rear;}SeQueue,*

2017-10-17 14:19:58 43668 1

原创 栈的增删改查基本操作

栈的增删改查基本操作1.顺序栈//顺序栈结构体定义#define STACKSIZE 64 //栈的大小typedef int stackType;typedef struct _snode{ stackType data[STACKSIZE]; //栈中的实际存储数据 int top; //栈顶指标,等价于数组下标。}SeqSta

2017-10-13 13:41:26 1996

原创 双链表的增删改查基本操作

双链表 在单链表的每个结点中再设置一个指向上一跳的前驱结点的指针域 //结构体定义typedef struct _node { dataType data; //链表中的数据域 struct _node *next; //链表的下一跳 struct _node *prior; //链表的上一跳}LinkNode,*Link

2017-10-13 11:24:01 773 1

原创 单链表反转的几种方法

反转链表,将单链表倒置输出 这个也算是很多面试题里常考的题,刚复习完单链表在这记录一下这几种方法,做个笔记 //链表反转1 创建一个新的链表,遍历原链表头插到新链表LinkedList listReverseList(LinkedList L){ LinkedList temp = L->next; LinkedList start = listCreatNode(NULL)

2017-09-26 15:41:40 363

原创 单链表的增删改查基本操作

单链表的几种基本操作,增删改查//基本结构typedef int dataType; typedef struct _node { dataType data; //单链表中的数据域 struct _node *next; //单链表的指针域 }LinkNode,*LinkedList; //结点由存放数据元素

2017-09-26 15:40:31 1014

原创 DES和3DES加密算法C语言实现

DES和3DES加密算法C语言实现 记录DES和3DES加密算法最简洁易懂的C语言源码typedef struct{ uint32_t sk[32]; /*!< DES subkeys */}des_context;/** * \brief Triple-DES context structure */typedef str

2017-09-20 17:58:45 13302 19

原创 select学习及循环服务器实现

select循环服务器 int select(int maxfdp1, fd_set *readfds, fd_set *writefds, fd_set *execptfds, struct timeval *timeout);select函数来实现多路复用输入/输出模型。select系统调用是用来让我们的程序监视多个文件描述符的状态变化的程序会停在select这里阻塞监听,直到被监听的文件描

2017-08-15 18:34:33 771

原创 HTTP协议简要分析

一、HTTP协议简介HTTP协议是Hyper Text Transfer Protocol(超文本传输协议) HTTP是一个基于TCP/IP通信协议来传递数据的应用层传输协议 二、主要特点1、简单快速:客户向服务器请求服务时,只需传送请求方法和路径。请求方法常用的有GET、HEAD、POST。每种方法规定了客户与服务器联系的类型不同。由于HTTP协议简单,使得HTTP服务器的程序规模小,因而通信

2017-08-10 16:43:25 540

原创 GNU汇编伪指令操作

在u-boot的源码中start.S等汇编文件中用到很多GNU的汇编伪指令,在这把常用的列举一下:1.GNU 汇编伪指令.abort 停止汇编.align absexpr1,absexpr2 以某种对齐方式,在未使用的存储区域填充值. 第一个值表示对齐方式,4, 8,16或32. 第二个表达式值表示填充的值.if .else .endif: 支持条件预编译.include “fi

2017-07-04 22:18:33 2466

原创 U-Boot中ARM协处理器CP15的操作分析

在U-boot的启动文件start.S 文件中遇到了操作协处理器cp15的几个指令用来关闭cache和MMU,具体怎么做的还要看一下这个协处理的各个寄存器的功能。寄存器操作MCR   ARM寄存器到协处理器寄存器的数据传送     MRC   协处理器寄存器到ARM寄存器的数据传送     注:MCR指令和MRC指令只能在处理器模式为系统模式时执行,在用户模式下执行MCR指令和MR

2017-07-04 11:05:58 796

原创 Makefile中一些参数的使用和区别

下边列出一些在Makefile文件中进程遇到的一些符合和关键字1.基本参数$@ 表示规则中的所有目标文件的集合。在模式规则中如果有多个目标,“$@”就是匹配于目标中模式定义的集合$% 仅当目标是函数库文件时,表示规则中的目标成员名,如果目标不是函数库文件(UNIX下是.a,Windows是.lib),其值为空。$< 依赖目标中的第一个目标文件,如果依赖目标是以模式(即”%“)定义的,

2017-06-28 17:42:46 826

原创 SecureCRT连接Linux问题及解决方法

在使用VM安装Ubuntu后往往使用SecureCRT或者PUTTY等超级终端来链接Linux,但是在链接中会遇到很多问题,在此做记录1.网络链接当主机使用无线网时,网络连接设置为桥接模式当主机使用以太网时,网络连接设置为NAT模式设置完成后记得重启2.Linux网络配置可以使用固定IP,此时设置的IP要与Windows主机的IP在同一网关下 sudo vi

2017-06-17 00:06:09 5072 2

原创 MDK(Keil)中文乱码

在使用高版本的Keil时往往复制粘贴中文注释的时候会出现乱码,这是因为中文的编码格式不对导致的,但是Keil这里的编码却又很奇特,编辑器是以ANSI编码方式来识别字符的,所需要修改编辑器的编码方式,注释是修改成GB2312编码方式才可以正确显示,但是这种编码格式下的字体太丑,很多人都不习惯,所以我们可以这样来操作:1.设置编码为GB2312,设置方法找:到Keil的菜单栏,单击“Edit”编辑

2017-06-13 10:12:52 6338 1

原创 USB状态错误及其原因

The most significant 4 bits of USB status values are defined in the following table.ValueMeaning00 (USBD_STATUS_SUCCESS)Request was completed with success.01 (USBD_

2017-05-31 17:46:10 11164

原创 USB描述符解析和USB_CCID描述符设置

USB描述符解析USB描述符信息会被存储在USB设备中,在设备枚举过程中,USB主机会向USB设备发送GetDescriptor请求,USB设备在收到这个请求之后,会将USB描述符信息返回给USB主机,USB主机分析返回来的数据,判断出该设备是哪一种USB设备,按照描述符中的一些配置信息与设备建立相应的数据通道。USB描述符信息在USB协议中有详细描述。标准的USB设备有5种USB描述

2017-05-26 13:54:09 3607

原创 Linux下exec函数族(execl,execv,execle,execve,execlp,execvp,fexecve)的使用和对比

Linux下exec函数族(execl,execv,execle,execve,execlp,execvp,fexecve)的使用和对比exec函数是提供fork创建新的线程后,执行外部程序的一个接口,当进程调用一种exec函数时,该进程执行的程序完全替换为新程序,且从新程序的main函数开始执行。因为exec不创建新的进程,所以前后的进程ID不变。1、int execl(const ch

2017-05-10 10:11:00 1959

原创 标准IO下对文件权限的修改

修改文件权限1.int chmod(const char * path, mode_t mode);函数说明:chmod()会依参数mode 权限来更改参数path 指定文件的权限。参数 mode 有下列数种组合:1、S_IFMT 0170000 文件类型的位遮罩2、S_IFSOCK 0140000 scoket3、S_IFLNK 0120000 符号连接4、S_IFR

2017-04-28 17:55:23 1254

原创 Kinetis KL8x 使用eDMA模块接收串口数据

飞思卡尔的芯片KL系列Cortex-M0+内核的,其他的应该可以通用,大体一致,之前在KL25上用过,这次是KL81,我对比两者使用类似,就是某些寄存器不同罢了正文开始:需要用LPUART接收上层接口的数据,比较大,而且大小不固定,之前用FIFO来接收,但是遇到收发错乱,很不稳定,故使用eDMA来接收#include "fsl_port_hal.h"#include "fsl_dev

2017-04-28 17:38:51 1661

原创 /sys/class/gpio下用文件IO快捷操作GPIO

在嵌入式设备中对GPIO的操作是最基本的操作。在Linux下面有一个通用的GPIO操作接口,利用映射 “/sys/class/gpio” 的方式,快捷操作,特别是在管理某个设备的电源开关时,很方便,这种方法也被用在Android安卓嵌入式设备中。首先要内核支持这种方式,看看系统中有没有“/sys/class/gpio”这个文件夹。如果没有请在编译内核的时候加入   Device Drivers

2017-04-18 17:29:48 1631

原创 Linux下C编程对目录的增删改查操作

目录操作:头文件:#include  #include 1.创建目录int mkdir(const char *path, mode_t mode);功能:根据路径创建目录参数:path 目录路径,mode文件夹权限返回:返回0 表示成功, 返回 -1表示错误,并且会设置errno值注:在创建时设置权限需要使用umask(0);取消权限掩码限制,否则只

2017-04-13 10:42:25 1481

原创 socket编程及Unix域内套接字实现进程间通信

在项目中常常需要进程间通讯,但是往往本地socket复杂些,但是更灵活些,毕竟功能强大些1.socketint socket(int doamin,int type,int pro);功能:通过该函数可以创建一个socket套接字文件,并返回该文件的描述符。参数:domain PF_INET  表示是个互联网程序PF_UNIX 表示域内套接字,支持单机进程通信  注:这几个参数有AF_UNIX=A...

2017-03-20 17:53:47 4366 1

原创 银行常用加密算法PINBlock加密

1.首先知道PIN的数据格式和如何获取PINPIN的格式应符合ANSI X9.8 Format(带主账号信息)PIN的长度为4-12位格式:LV位置长度内容11字节PIN长度27字节4-12位PIN(每个字符占4个BIT,不足右补F)

2017-02-28 15:00:20 15624

原创 ARM内核寄存器的操作函数

在修改嵌入式底层的参数时需要使用一些内核寄存器的操作,在编译器中往往都封装了对应的函数。1.__ASM uint32_t __get_PSP(void):获取进程堆栈指针PSP。2.__ASM void __set_PSP(uint32_t topOfProcStack):设置PSP。3. __ASM uint32_t __get_MSP(void):获取主堆栈指针MSP。

2017-01-11 17:09:00 4795

原创 ANSI X9.19 MAC算法的C语言实现

ANSI X9.19 MAC算法的基本思路:1.ANSI X9.19MAC算法只使用双倍长密钥(不小于16)。2.MAC数据先按8字节分组,表示为D0~Dn,如果Dn不足8字节时,尾部以字节00补齐。3.用MAC密钥左半部加密D0,加密结果与D1异或作为下一次的输入。4.将上一步的加密结果与下一分组异或,然后用MAC密钥左半部加密。5.循环操作直至所有分

2016-12-27 15:52:15 3516

CRC-4,5,6,7,8,16,32算法.c

含有CRC-4,5,6,7,8,16,32常见各个标准的算法C语言实现,简单高效,可移植性高,方便转化其他语言,并附有测试程序

2019-12-20

加密解密算法工具集

自己写的非常强大的一个加密解密工具,有DES、3DES(含ECB和CBC)、RSA、SHA1、SHA256、SHA512、MD5、CRC、base64、异或运算等

2018-05-17

安卓屏幕同步

用于安卓屏幕同步,asm.jar Android Screen 执行下面命令: > java -jar asm.jar

2018-03-09

CRC计算器CRC_Calc

全面的CRC计算器,涵盖几乎所有类型的CRC算法的计算,方便快捷

2017-10-13

amo的编程小工具集合V1.2.6

amo的编程小工具集合,含有CRC检验,字符串转换等工具集

2017-10-13

JLINK_V8.bin

含有3种bin文件,解决JLINK固件丢失或升级固件后提示Clone

2017-05-22

sam-ba_2.15.exe

用于Windows 64位系统修复JLINKv8固件

2017-05-22

STM32_USB-FS-Device_Lib V1.0.0

STM的USB例程含有Audio、CCID、MSC、Custom_HID、HID、HID_LPM_test DFU、Virtual_COM_Port 、CDC+HID复合设备、MSC_HID复合设备DEMO

2017-05-16

Snooper 0.1.3.0

Snooper 0.1.3.0 APDU智能卡传输工具,此版本未限制自定义指令

2017-04-25

BusHound_v6.0

BusHound_v6.0破解版

2017-04-25

UCard_V3.86

Card是一个灵活方便的发卡及测试软件,能够对UCard代码按行解释并执行

2017-04-25

Snooper 0.1.5.1

Snooper用于APDU指令传输的工具,功能强大,界面简洁

2017-04-25

SourceInsight选项卡TAB插件V2

SourceInsight选项卡TAB插件V2

2017-03-10

SourceInsight选项卡TAB插件

SourceInsight选项卡插件

2017-03-10

空空如也

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

TA关注的人

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