发布时间:2013-01-09 12:08:00
作者:苗德行,华清远见嵌入式培训中心讲师。 从linux内核2.6的某个版本之后,devfs不复存在,udev成为devfs的替代。提醒一点,udev是应用层的,不要试图在内核的配置选项里找到它;加入对udev的支持很简单,以作者所写的一个字符设备驱动为例,在驱动初始化的代码里调用class_create为该设备创建一个class,再为每个设备调用device_create创建对应的设备。大致用法如下: struct class *myclass ; class_create(THIS_MODUL......【阅读全文】
发布时间:2013-01-09 12:07:55
作者:冯利美,华清远见嵌入式培训中心讲师。 内存是以字节为单位编号,但一些硬件平台对某些特定类型的数据只能从某些特定地址开始,比如从偶地址开始。若不按照适合其平台的要求对数据存放进行对齐,会影响到效率。因此,在内存中,各类型的数据是按照一定的规则在内存中存放的,这就是本文要研究的对齐问题。 本文以gcc version 4.4.5,32位x86环境为例,来分析结构体中各成员如何进行对齐。 我们要注意两个方面:1)结构体成员变量对存放的起始地址有要求。2)结构体变量占用的总长度也有要求。 结构体对齐规则如下: 数据成员最终的存放地址:对齐在自身类型长度和pragma pack(valu......【阅读全文】
发布时间:2013-01-09 12:07:49
作者:周志强,华清远见嵌入式培训中心讲师。 要使用FS_11C14开发板实现点对点通信,需要对开发板上的ZigBee模块进行配置。下面我们先来介绍一下配置的过程。 1、首先执行ZigbeeCfg应用程序,会出现下图所示的界面: 图10-1 ZigBee配置界面 在设备管理器中查看我们所使用的串口并进行选择,波特率选为“115200”,数据位选择为“8”,校验位为“无”,停止位设为“1”,打开串口之后,进入到“ZLG页面”,即: 图10-2 网络配置界面 2、点击“获取信息”,我们就可以获得关于这块开发板的相关配置了。将设备类型选择为“终端设备......【阅读全文】
发布时间:2013-01-09 12:07:41
作者:程姚根,华清远见嵌入式培训中心讲师。 我们知道,在32位机器上linux操作系统中的进程的地址空间大小是4G,其中0-3G是用户空间,3G-4G是内核空间。其实,这个4G的地址空间是不存在的,也就是我们所说的虚拟内存空间。 那虚拟内存空间是什么呢,它与实际物理内存空间又是怎样对应的呢,为什么有了虚拟内存技术,我们就能运行比实际物理内存大的应用程序,它是怎么做到的呢?呵呵,这一切的一切都是个迷呀,下面我们就一步一步解开心中的谜团吧! 我们来看看,当我们写好一个应用程序,编译后它都有什么东东? 例如: 用命令size a.out会得到: 其中text是放的是代码,data......【阅读全文】
发布时间:2013-01-09 12:07:35
作者:邹南,华清远见嵌入式培训中心讲师。 一、格式 define MACRO_NAME(para) do{macro content}while(0)的格式,总结了以下几个原因: 1、空的宏定义避免warning: #define foo() do{}while(0) 2、存在一个独立的block,可以用来进行变量定义,进行比较复杂的实现。 3、如果出现在判断语句过后的宏,这样可以保证作为一个整体来是实现: #define foo(x) \ action1(); \  ......【阅读全文】