- 博客(57)
- 资源 (9)
- 收藏
- 关注
原创 jflash合并stm32f103之bin文件及hex文件
合并bin格式文件:1、file-> open data file, 选择boot文件, 地址从8000000开始。2、file-> merge data file, 选择app文件, 地址从程序开始执行地址开始,根据keil mdk工程里设置的地址来填写, 比如8004000。3、file-> save data file as... ,保存合并后文件(可选相应...
2019-07-26 15:27:55 1344
转载 C++又一坑:动态链接库中的全局变量
extern "C" { void dll_func() { foo_class::_.m += 100; printf("&foo_class::_ = 0x%llx, foo_class::_.m = %d\n", &foo_class::_, foo_class::_.m); } } ...
2019-07-25 11:00:49 3959
转载 共享库中的位置无关代码(PIC)
原作者:Eli Benderskyhttp://eli.thegreenplace.net/2011/11/03/position-independent-code-pic-in-shared-libraries/在之前的文章里我已经描述过在将共享库载入程序地址空间时需要特殊的处理。简而言之,在链接器创建共享库时,它不能预先知道这个库将在哪里载入。这给在库里访问数据与代码带来了麻烦,应该使...
2019-07-25 10:38:15 690
转载 Load-time relocation of shared libraries
This article's aim is to explain how a modern operating system makes it possible to use shared libraries with load-time relocation. It focuses on the Linux OS running on 32-bit x86, but the general pr...
2019-07-25 10:33:55 324
原创 STM32F103 SPI 主机模式分析
STM32F103的SPI模块,跟通用SPI芯片的工作模式有些区别,手册上也没有特别注明,所以光看手册有时候还不容易理解。STM32上的不同之处在于SPI模块工作在主机模式时,模块内部有一个控制脚必须由外部给它保持为高电平状态才能工作,为了方便描述这里就简称为CS_ENABLE脚。有了这个概念,里面的各种逻辑关系就比较清晰了。这里主要分析主机模式,从机模式没有什么特别之处,就简单带过了。先...
2019-07-22 19:07:40 1909
转载 FreeRTOS的中断优先级配置小结
NVIC 的全称是 Nested vectored interrupt controller,即嵌套向量中断控制器。对于 M3 和 M4 内核的 MCU,每个中断的优先级都是用寄存器中的 8 位来设置的。 8 位的话就可以设置 2^8 = 256 级中断,实际中用不了这么多,所以芯片厂商根据自己生产的芯片做出了调整。比如 ST的 STM32F1xx 和 F4xx 只使用了这个 8 位中的高四位...
2019-07-22 11:44:23 981
转载 GNU 汇编语言
转自http://www.ibm.com/developerworks/cn/linux/l-assembly/一、简介作为最基本的编程语言之一,汇编语言虽然应用的范围不算很广,但重要性却勿庸置疑,因为它能够完成许多其它语言所无法完成的功能。就拿 Linux 内核来讲,虽然绝大部分代码是用 C 语言编写的,但仍然不可避免地在某些关键地方使用了汇编代码,其中主要是在 Linux 的启动部分。...
2019-07-22 11:14:09 3737 1
转载 可变参数__VA_ARGS__使用和va_list使用小结
1. #用来把参数转换成字符串#define P(A) printf("%s:%d\n",#A,A);#define SQUARE(x) printf("The square of "#x" is %d.\n", ((x)*(x)));2. ##运算符可以用于宏函数的替换部分。这个运算符把两个语言符号组合成单个语言符号3. __VA_ARGS__ 是一个可变参数的宏,很...
2019-07-22 11:10:22 1571
原创 AIR720串口2收发数据问题
串口2收发数据测试时发现有时候完全没反应,查了很久的代码没找到原因,偶尔发现是供电不足引起的,因为4G模块连上USB口的话容易自动给电脑联网,浪费4g流量,所以升级完程序就断开了,结果导致供电不足,其他模块可能没问题,但串口模块就是不行,插上后问题解决,串口收发可靠稳定。...
2019-07-21 18:26:23 874
原创 编译成功但链接失败的原因
编译没有报错,但连接时出问题,错误提示很离谱,不是普通的找不到相关函数的错误,根本看不懂。仔细核对源代码,发现内部使用了自己的内存管理函数iot_os_malloc和iot_os_free,若果使用malloc和free函数,虽然编译不报错,但连接时会报奇怪的错误,替换后就没问题了。...
2019-07-21 18:23:23 2544
转载 安卓USB绑定RNDIS驱动的详细安装教程
安卓USB绑定RNDIS驱动怎么安装?大家知道我们的手机上有一个USB共享上网的功能,就是电脑可以通过数据线连接手机,然后手机USB共享网络,这样电脑就可以使用手机连接的WIFI上网了,下面我们来看看详细的操作过程方法/步骤 1 大家知道我们的手机上有一个USB共享上网的功能,就是电脑可以通过数据线连接手机,然后手机USB共享网络,这样电脑就可以使用手机连接的 WIFI上网了,当然有...
2019-07-16 20:21:23 6445 1
转载 物联网协议Coap协议介绍
COAP协议简介Coap(Constrained Application Protocol)是一种在物联网世界的类web协议,它的详细规范定义在 RFC 7252。COAP名字翻译来就是“受限应用协议”,顾名思义,使用在资源受限的物联网设备上。物联网设备的ram,rom都通常非常小,运行TCP和HTTP是不可以接受的。COAP协议特点1 COAP协议网络传输层由TCP改为UDP。C...
2019-07-15 20:22:09 1141
转载 C 库函数 - vprintf()
描述C 库函数 int vprintf(const char *format, va_list arg) 使用参数列表发送格式化输出到标准输出 stdout。下面的实例演示了 vprintf() 函数的用法。#include <stdio.h>#include <stdarg.h>void WriteFrmtd(char *format, ...)...
2019-07-15 10:13:25 506
转载 c语言中%hu,%hx是什么意思
这是输出格式符%hu代表以 unsigned short格式输出整数%hx 代表以16进制的 输出short类型的整数比如printf("%hu\n",-30); 会输出 65506printf("%hx\n",-30); 会输出FFE2// 结构体struct sockaddr_in sockaddr4;sizeof(struct sockaddr_in);sizeof(soc...
2019-07-15 09:57:04 19712 1
转载 拔掉网线时Socket的检查方法
最近在做有关于TCP采集程序时,发现在客户端与服务器通过TCP socket进行通信的时候,如果客户端应用程序正常或者异常退出时,服务器都可以在对应的socket通信连接上获得响应(如返回0,或者抛出异常)。但是,如果在客户端的网线被拔掉的情况下,那么默认情况下,服务器端需要很长的时间才会知道客户端的网线断掉。对于许多服务器应用程序来说,这么长的反应时间是不能允许的,在这种情况下通常使用“心跳机...
2019-07-11 16:48:55 1694
转载 recv函数返回值总结
函数原型:int recv( SOCKET s, char *buf, int len, int flags)功能:不论是客户还是服务器应用程序都用recv函数从TCP连接的另一端接收数据。参数一:指定接收端套接字描述符;参数二:指明一个缓冲区,该缓冲区用来存放recv函数接收到的数据;参数三:指明buf的长度;参数四 :一般置为0。阻塞与非阻塞recv返回值没有区分,都...
2019-07-11 16:25:26 1356
转载 TCP网络编程中connect()、listen()和accept()三者之间的关系
https://blog.csdn.net/tennysonsky/article/details/45621341基于 TCP 的网络编程开发分为服务器端和客户端两部分,常见的核心步骤和流程如下:连接详情:connect()函数对于客户端的 connect() 函数,该函数的功能为客户端主动连接服务器,建立连接是通过三次握手,而这个连接的过程是由内核完成,不是...
2019-07-11 16:11:58 200
转载 非阻塞connect的代码示例
int conn_nonb(int sockfd, const struct sockaddr_in *saptr, socklen_t salen, int nsec){ int flags, n, error, code; socklen_t len; fd_set wset; struct timeval tval; flags ...
2019-07-11 16:06:11 170
转载 浅谈多进程多线程的选择(转)
关于多进程和多线程,教科书上最经典的一句话是“进程是资源分配的最小单位,线程是CPU调度的最小单位”,这句话应付考试基本上够了,但如果在工作中遇到类似的选择问题,那就没有这么简单了,选的不好,会让你深受其害。经常在网络上看到有的XDJM问“多进程好还是多线程好?”、“Linux下用多进程还是多线程?”等等期望一劳永逸的问题,我只能说:没有最好,只有更好。根据实际情况来判断,哪个更加合适就...
2019-07-11 16:03:13 166
转载 linux中read,write和recv,send的区别(转)
1、recv和send函数提供了和read和write差不多的功能。但是他们提供了第四个参数来控制读写操作.int recv(int sockfd,void *buf,int len,int flags)int send(int sockfd,void *buf,int len,int flags)前面的三个参数和read,write相同,第四个参数能够是0或是以下的组合:...
2019-07-10 20:25:57 790
转载 inet_aton和inet_network和inet_addr三者比较-《别怕Linux编程》之五
http://roclinux.cn/?p=1160知识背景:210.25.132.181属于IP地址的ASCII表示法,也就是字符串形式。英语叫做IPv4 numbers-and-dots notation。如果把210.25.132.181转换为整数形式,是3524887733,这个就是整数形式的IP地址。英语叫做binary data。(其实binary是二进制的意思)问题所...
2019-07-10 20:18:20 1006
转载 Linux下动态链接库so文件覆盖导致coredump
1.为什么cp的方式更新运行中进程的so,程序会coredump 2.采用什么方式更新已经加载了的so,就可以避免coredump我们的公共组件绝大部分都支持so形式的自定义插件,比如s++,qzhttp,ttc。在不停进程更新so的时候往往会产生coredump,并且肯定core得莫名其妙,core得让人心碎。先看一下用cp的方式更新so的时候发生了什么事情strace cp ...
2019-07-09 12:28:16 1019
转载 socket编程之gethostbyname获取IP列表和Host别名列表
gethostbyname 函数原型:struct hostent FAR * WSAAPI gethostbyname( _In_z_ const char FAR * name );gethostbyname 参数为一个域名,返回一个指向hostent 的指针hostent结构体内部包含了主机名、别名、IP地址列表等内容struct hostent { ...
2019-07-08 20:13:09 2102
转载 socket编程之inet_addr和inet_ntoa
inet_addr将字符串形式的IP地址 -> 网络字节顺序 的整型值inet_ntoa网络字节顺序的整型值 ->字符串形式的IP地址#define _WINSOCK_DEPRECATED_NO_WARNINGS#include<WinSock2.h>#include<iostream>using namespace std;#pragm...
2019-07-08 20:09:40 2757
转载 在C++的类中封装多线程
在C++的类中,普通成员函数不能作为pthread_create的线程函数,如果要作为pthread_create中的线程函数,必须是static 在C++的类中,普通成员函数不能作为pthread_create的线程函数,如果要作为pthread_create中的线程函数,必须是static ! 在C语言中,我们使用pthread_create创建线程,线...
2019-07-07 18:26:07 1463
转载 C++之全局函数和成员函数互相转换
解析:成员函数会用this指针自动隐藏第一个操作数(左操作数)1、把全局函数转化成成员函数,通过this指针隐藏左操作数。 Test add(Test &t1,Test &t2) ==> Test add(Test & t2);2、把成员函数转化成全局函数,多了一个参数 vpid printAB() ==> ...
2019-07-07 18:22:42 1395
转载 几种用函数指针方式来访问类成员函数的方法总结
前提:假设成员函数不访问类的成员变量。环境:DEV-C++,别的环境有可能编译无法通过。代码如下:#include <iostream>using namespace std;class A{public: int add(int a, int b) { int c = a + b; return c; }...
2019-07-07 18:20:51 1888
转载 C++虚函数表,虚表指针,内存分布
虚函数表和内存分布那一块转载自:https://blog.twofei.com/496/虚函数效率转载自:https://www.cnblogs.com/rollenholt/articles/2023364.html前言大家都应该知道C++的精髓是虚函数吧? 虚函数带来的好处就是: 可以定义一个基类的指针, 其指向一个继承类, 当通过基类的指针去调用函数时, 可以在运行时决定该调用基...
2019-07-07 17:02:48 232
VS2017-吉比特can分析仪二次开发
2019-01-29
VS2017-MFC-生成二维码小程序
2018-12-07
VS2017平台下最简洁的基于C语言开发的串口接收程序测试代码
2018-11-09
VS2017平台下最简洁的基于C语言开发的串口发送程序
2018-11-09
aes加密解密测试代码
2017-10-14
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人