ymodem源码

基于类串口通信的文件传输协议,ymodem应用非常广泛,比如在MCU IAP中,常用的就是这种协议。ymodem是xmodem的改进版协议,具有传输快速稳定的优点。它可以一次传输1024字节的信息块,同时还支持传输多个文件。

本文ymodem源码基于C语言,采用回调机制,设计为独立的C库,包含了发送端和接收端的实现。

阅读全文 »

 

工作总结

jsoncpp是一个优秀的开源C++ json库,被广泛应用。在寻找C/C++ JSON库时,没有选择CJSON,而是选择了jsoncpp,主要考虑我应用程序是C++编写,如果使用CJSON的话,可能需要重新封装一层。

就我的应用而言,jsoncpp和CJSON都有一个共同问题:官方代码不支持指定小数位数。jsoncpp还有另一个问题:它默认按字母排序输出json。

阅读全文 »

 


调试嵌入式linux应用程序时,出现下述错误:

terminate called after throwing an instance of ‘std::length_error’
what():  basic_string::_S_create

采用在gdb中运行,错误如下: 阅读全文 »

 


使用4.9.2版本的交叉编译器编译新写的应用程序时,出现了很多之前没遇到过的编译错误,比如今晚出现的编译错误:error: ‘__locale_t’ has not been declared。这个错误主要是头文件“<xlocale.h>”包含的问题。

这个错误源于自己编写的一个头文件中包含了<string>头文件引起的。编译错误提示内容具体如下:

阅读全文 »

 


今天下了个cjson库(下载链接:https://sourceforge.net/projects/cjson/),用于验证其浮点数的处理。在print_number()中,发现有使用DBL_EPSILON、INT_MAX、INT_MIN等宏的使用。因初次见面,所以特别研究了下。

其中,宏DBL_EPSILON的头文件为:<float.h>,宏INT_MAX、INT_MIN的头文件为:<limits.h>

阅读全文 »

 


用VS编写代码时,从word文档中拷贝了一些内容作为注释。编完代码,转到linux上编译时,结果出现了下面一段有点让人丈二和尚摸不到头脑的编译错误:

  • xxUnit.cpp:1: error: stray ‘\357’ in program
  • xxUnit.cpp:1: error: stray ‘\273’ in program
  • xxUnit.cpp:1: error: stray ‘\277’ in program

阅读全文 »

 


本来没想要安装MSDN的,但最近学MFC编程时,涉及很多API,不得不需借助下MSDN,这或许更容易上手些。首先说明下,我电脑上安装的visual studio版本是vs 2010(中文版),当前系统是Windows 8。

现在网上关于vs2010 MFC的教程,遍地都是鸡啄米大侠写得文章。那些文章中有介绍如何安装MSDN的内容。可惜在Windows 8中找不到“Manage Help Settings – ENU”,不过,稍微研究了下,终于把MSDN装上了。

阅读全文 »

 


统计函数或某一段代码的运行时间在软件开发中常常遇到。透过运行时间可分析出函数或程序段的运行效率和性能,从而有针对性的对代码进行优化。

在unix环境中,常常用binutils(GNU二进制工具集)中的gprof工具来查看函数运行时间。但本文的重点是自己编写代码实现函数或程序段运行时间的统计。下面进行详细描述。

阅读全文 »

 


前几天,有一位网友编译eCos时,出现了BSS段错误,提示的错误信息大概是:ld: address 0x2000f028 of stress_threads section .bss is not within region sram。

为什么会出现这个编译链接错误呢?首先,我们要搞清楚BSS段是干什么用的,然后才能针对问题进行具体分析。所以,本文主要谈谈BSS段问题,以及关于它的大小问题。让我们对BSS段有一个全面深刻的认识。

阅读全文 »

 


本文讲的likely()和unlikely()两个宏,在linux内核代码和一些应用中可常见到它们的身影。实质上,这两个宏是关于GCC编译器内置宏__builtin_expect的使用。

顾名思义,likely()指“很有可能”之意,而unlikely()指“不太可能”之意。那么,在实际应用中,它们代表什么?又是怎么使用的呢?下面是一篇外文翻译(加上了本人的一些理解),给出了详细答案。

阅读全文 »

© 2012 velep.com | reille blog | 管理| 粤ICP备15065318号-2| 谷歌地图| 百度地图| Suffusion theme|Sayontan Sinha

无觅相关文章插件,快速提升流量