《Linux CAN编程详解》是一篇百度文库上的文档,主要描述了以下内容:
- can总线介绍及其帧类型;
- Linux 系统中CAN 接口配置;
- Linux 系统中CAN 接口应用程序开发;
- Linux 系统中CAN 接口编程实例
《Linux CAN编程详解》是一篇百度文库上的文档,主要描述了以下内容:
最近写了个自认为不错的基于linux socket can程序,主要功能:
现把源码进行分享 阅读全文 »
参看基于TCP/UDP的socket代码,同一时间Server只能处理一个Client请求:在使用当前连接的socket和client进行交互的时候,不能够accept新的连接请求。为了使Server能够处理多个Client请求,常见的方法:
多进程/线程方法、non-blocking socket(单进程并发)、non-blocking和select结合使用。三种方法各有优缺点,下面进行详细分析和说明。
最近使用eclipse新建立了一个工程,编译环境为cygwin-1.7。奇怪的是,在编译程序时总是出现问题:undefined reference to `_WinMain@16’。仔细检查了工程的各项配置,编译问题依旧。
在网上搜索,也找不到相应的问题解决方法。冷静下来,仔细分析问题所在。
在cygwin中编译链接一个程序时,出现了如下错误:
在此之前,开发eCos应用程序时,经常碰到程序挂掉后,串口打印输出一大串让人看不懂的数据。今天才明白,原来这些数据是程序挂掉时的堆栈帧数据(stack frame data)。
通过这些堆栈帧数据可以分析出程序当时的运行状态和定位程序哪里出现了问题。
这就是本文要讲的—backtrace()和backtrace_symbols()函数的使用。
PTHREAD_STACK_MIN宏指示一个线程堆栈的最小字节。当调用pthread_attr_setstacksize()函数设定线程堆栈时,设定的线程堆栈大小值必须大于等于PTHREAD_STACK_MIN宏定义的值,否则返回错误。
不同的处理器和操作系统,PTHREAD_STACK_MIN宏具有不同值,这也是该宏存在的意义。它一般定义在limits.h头文件中。不过,也有例外。
在三星6410裸机程序开发1文章中,说到的是采用eclipse + windows安装版的专为ARM嵌入式处理器预编译的GNU工具组合来开发6410的裸机程序。由于遇到了中断问题,所以不得不切换开发环境。
幸运地是,不仅顺利切换到RVDS环境,而且还发现了三星官方6410_Test工程。这个工程提供了芯片大部分功能模块的裸机程序实现和测试用例程序。
在调试三星6410裸机程序时,遇到的一个很棘手的问题:在eclipse中怎么实现中断?这个问题的实质是:GCC中怎么声明ARM的中断处理函数。
这个问题折腾了很久,有点影响了项目的进度。后面改为RVDS开发环境才得以避开这个问题。现在回过头来再分析分析这个问题。刚好看到一篇博文,结合自己的理解,我想应该可以很好地阐释和解决这个问题。
这段时间终于把短距离通信的无线接收模块弄完了。本来一两周时间就可以弄完,但前两周由于尝试采用eclipse开发环境,遇到了很多问题,尤其是6410中断的实现。这导致后期赶工,花了几个通宵才算搞定,弄得自己一身疲惫。
回过头想想,这个项目在很多方面都值得总结和吸取教训。避免以后接项目时类似情况再次发生。后续文章再介绍三星6410的裸机程序开发环境和方法。
© 2012 velep.com | reille blog | 管理| 粤ICP备15065318号-2| 谷歌地图| 百度地图| Suffusion theme|Sayontan Sinha |