网上关于S3C6410裸机程序开发都是基于RealView RVDS。也有一些是基于eclipse的,但都没有详细介绍在eclipse中如何建立S3C6410裸机程序工程。

尽管友善之臂提供的6410裸机程序示例使用了eclipse工程,然程序的编译却还是基于makefile的。那怎样建立6410的eclipse裸机程序工程呢?本文就此进行详细介绍。有了这个工程,可以简化裸机程序的开发过程,把精力专注于功能实现。

阅读全文 »

 


目前,在帮别人开发一个短距离通信的无线接收模块,需求很简单,本来用简单的51单片机就可以搞定。可是人家偏偏指定要使用500MHz以上的CPU,而且采用裸奔的方式。

当时面对这种奇葩的要求,瞬间无语。幸好,对方允许使用友善之臂的tiny6410核心板。这样下来,开发这个收发器模块也就变得简单了。就权当自己练习吧!

阅读全文 »

 


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

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

阅读全文 »

 


在网络编程中,UDP运用非常广泛。很多网络协议是基于UDP来实现的,如SNMP等。大家常常用到的局域网文件传输软件飞鸽传书也是基于UDP实现的。

本篇文章跟大家分享linux下UDP的使用和实现,主要介绍下sendto()和recvfrom()两个函数的使用,以及INADDR_ANY的说明,并在最后展示了一个经过自己测试可用的UDP Server和UDP Client的代码示例。

阅读全文 »

 


随着万圣节越来越流行,我感觉有必要跟大家讨论一下一个在软件开发中非常普遍的问题:僵尸代码。几乎所有我接触过的代码库里都四散着很多小段的,甚至大片大片的被注释掉的代码。这就是僵尸代码。

// 目前禁用这项功能。Jimmy在写这段代码时肯定是喝醉了。

// 你可能以为这里发生了恐怖的代码凶手安…不,不,我只是把它们注释掉了…

为什么称它们为僵尸代码?你知道,僵尸不并不是真的死的。就像恐怕电影里告诉我们的,尽管僵尸看起来是死人,但它们仍有能力四处出没袭击我们。相同的道理,僵尸代码也是处于不生不死之间…

阅读全文 »

 


snmpwalk介绍及其用法一文中,介绍过net-snmp的snmpwalk的用法,殊不知,net-snmp还有trap的命令程序,可以用来测试snmp的trap方法(包括inform方法)。这些命令程序是: snmptrap、snmpinform和snmptrapd。其中:

  • snmptrap:可以模拟snmp agent发送一个trap到snmp管理端(一般称为网管,snmp manager或snmp client);
  • snmpinform:可以模拟snmp agent发送一个inform request到snmp管理端(Trap是发送给SNMP管理者的通知网络状况等的警告消息,而Inform是需要SNMP管理者确认接收的Trap。与Inform 相比较,Trap通知方式为不可靠传输,因为snmp管理端在收到一条Trap通知后无需回复任何确认信息,所以snmp agent无法知道Trap通知是否已经被snmp管理端正确接收);
  • snmptrapd:一个模拟snmp管理端接收trap/inform通知的程序;

由上可见,通过上述3个命令程序,我们可以研究snmp的trap行为及其报文,如果你正在开发snmp agent的trap功能但又没有snmp管理端,这3个程序则可帮上你的大忙。下面详细介绍这3个命令程序的具体用法。 阅读全文 »

 


摘要:你喜欢Linux吗?你想学Linux吗?你真的了解Linux吗?其实Mageia现在是受关注度第二的Linux;马达加斯加是世界上对Linux最感兴趣的国家之一;Linux手机年增长率91.5%;Linux Kernel总共有超过1500万行代码。如果你不知道的话,这篇文章值得你一看。

最受关注的Linux发行版分别是(从高到低):

Mint、Mageia、Ubuntu、Fedora、openSUSE、Debian、Arch、PCLinuxOS、CentOS和Zorlin。

Linux占桌面网络浏览份额的1.17%。

对Linux最感兴趣的10个国家和地区分别是(按字幕顺序排位):

China、Cuba(古巴)、Czech Republic(捷克共和国)、Germany、India、Japan、Madagascar(马达加斯加)、Lesotho(莱索托王国)、Russia和台湾 阅读全文 »

 


C/C++程序一般都由程序员自己来控制内存的申请和释放,因此稍有不慎就容易出现内存泄漏,大家平时开发中都用什么方法和手段来检测、调试程序的内存泄漏呢?

1. 如何发现内存泄漏

ps -aux

2. 静态分析 阅读全文 »

 


在MinGW GCC下编译带sleep()函数的测试程序,不管是包含了unistd.h头文件,还是stdio.h、stdlib.h头文件,就是找不到该函数的定义!

在linux下,sleep()函数的头文件是:unistd.h,但在MinGW GCC下没有了这个函数的定义,但是在windows.h文件中有Sleep()函数的定义,其单位是ms级的延迟处理。根据这种情况,我们可以采用如下的处理:

#if defined(WIN32) || defined(WIN64)
#include <windows.h>
#define sleep(n) Sleep(1000 * (n))
#else
#include <unistd.h>
#endif
 


1.系统和平台熟悉

在一个新的平台上开发或者移植一款软件的时候,首先应该充分了解平台或者操作系统的各种属性,这些属性包括但不仅限于:

1)系统的任务调度,任务间的通信机制

任务调度包括是否是多任务实时操作系统,任务以何种方式存在的,如何添加和管理任务?任务间的优先级如何设置?任务间的优先级设置?任务堆栈?任务间的通信机制包括了解系统提供的通信机制,各种通信机制的优劣,通信细节等等。

案例1:

曾经在某一个平台上做一个软件,创建了多个任务,由于各个任务实现者不一样,一个漫不经心的错误造成了本该是高优先级的任务没有在优先级上体现出来,A,B,C,D4个任务,本来应当是A>B>C>D,结果设置成A>C>B>D,为此debug了一上午。

教训: 阅读全文 »

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

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