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

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

阅读全文 »

 


刚开始学linux的时候,就已耳闻cygwin。对于嵌入式linux开发环境,有的人使用VMware搭建linux虚拟机;有的人使用cygwin这个windows下的unix仿真环境;也有的人直接在PC上安装linux。

我一开始就使用虚拟机(ubuntu),一直沿用至今,而且之前也没去接触过cygwin。最近看到几个eCos群中的网友,用eclipse + cygwin作为eCos开发调试环境,所以今天也装了个cygwin。

阅读全文 »

 


本文从一篇转载文章说起,该文章其中一个话题我认为很有现实意义:论述了为什么不要编写庞大的程序;另外,文章抛出了一个问题:同样的项目,为什么在windows上编译比在freeBSD要慢很多很多呢?

看了这篇文章,结合自身的经历,在文章后面也谈谈自己的感受。欢迎探讨。

阅读全文 »

 


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

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

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

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

阅读全文 »

 


谈及linux补丁(patch)及其patch操作,自然而然地觉其复杂,故一直存敬畏之心,所以也就一直远离它。但像做嵌入式linux开发,有时候patch是无法绕过的。

对于补丁制作与应用,实际上就是掌握linux diff和patch命令的使用,而这两个命令与linux其它命令一样,也是比较容易掌握的。如果你也有与我之前一样的敬畏心理,建议你不如早早放下这个心理包袱,赶紧掌握这个知识点。 阅读全文 »

 


本文主要介绍linux下两个命令:split和cat。其中,相信大家都熟悉cat命令,一般用来查看一个文件的内容,但是它还其它的功能,比如这里要介绍的文件合并功能,它可把多个文件内容合并到一个文件中。从split词义不拿理解,其为分割之意,常用于分割大文件。下面详细介绍。 阅读全文 »

 


1. 首先下载qemu for mini2440

git clone git://repo.or.cz/qemu/mini2440.git  qemu

如果感觉速度慢,直接打包下载

http://repo.or.cz/w/qemu/mini2440.git/snapshot/HEAD.tar.gz

解压后,今日源代码的主目录中,

#  ./configure --target-list=arm-softmmu 
#  make -j4

2. 下载u-boot for mini2440 阅读全文 »

 


摘要:你喜欢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和台湾 阅读全文 »

 


今天在看CS8900的驱动时,发现其驱动的模块加载函数是init_module(),由于看到大多数的驱动用的模块加载函数大多是module_init()函数,所以一时没缓过神来,总是在找CS8900的加载函数。

那么,module_init()和init_module()这两个加载函数有什么区别吗?

init_module是默认的模块的入口,如果你想指定其他的函数作为模块的入口就需要module_init函数来指定。

init_module()是真正的入口,module_init是宏,如果在模块中使用,最终还是要转换到init_module()上。如果不是在模块中使用,module_init可以说没有什么作用。总之,使用module_init方便代码在模块和非模块间移植。

 


 本文主要介绍了qemu及其优缺点,包括应用实例。

qemu – 简介
 
QEMU是一套由Fabrice Bellard所编写的模拟处理器的自由软件。它与Bochs,PearPC近似,但其具有某些后两者所不具备的特性,如高速度及跨平台的特性。经由kqemu这个开源的加速器,QEMU能模拟至接近真实电脑的速度。QEMU有两种主要运作模式:

    * User mode模拟模式,亦即是使用者模式。QEMU能启动那些为不同中央处理器编译的Linux程序。而Wine及Dosemu是其主要目标。

    * System mode模拟模式,亦即是系统模式。QEMU能模拟整个电脑系统,包括中央处理器及其他周边设备。它使得为系统源代码进行测试及除错工作变得容易。其亦能用来在一部主机上虚拟数部不同虚拟电脑。 阅读全文 »

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

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