#ifdef BOARD_Xxx
#define DM9000_BASE 0x100oo#define DM900o_IRQ 8
#elif defined(BOARD_YYY)#define DM9000_BASEox200oo#define DM90oo_IRo 7
#elif defined (BOARD_Z2Z)#define DM9000_BASEox3000o#define DM9o0o_IRQ9...
#endif
上述代码主要有如下问题:
1)此段代码看起来面目可憎,如果有100个板子,就要iflelse 100次,到了第101个板子,又得重新加ifelse。代码进行着简单的“复制—粘贴”,“复制—粘贴”式的简单重复通常意味着代码编写者的水平很差。
2)非常难做到一个驱动支持多个设备,如果某个电路板上有两个DM9000网卡,则DM9000_BASE这个宏就不够用了,此时势必要定义出来DM9000_BASE 1、DM9000_BASE 2、DM9000_IRQ 1、DM9000_IRQ 2类的宏定义了DM9000_BASE 1、DM9000_BASE2后,如果又有第3个DM9000网卡加到板子上,前面的代码就又不适用了。
3)依赖于make menuconfig选择的项目来编译内核,因此,在不同的硬件平台下要依赖于所选择的BOARD_XXX、BOARD_YYY选项来决定代码逻辑。这不符合ARM Linux 3.x一个映像适用于多个硬件的目标。实际上,我们可能同时选择了BOARD_XXX、BOARD_YYY、BOARD_ZZZ。
我们按照上面的方法编写代码的时候,相信自己编着编着也会觉得奇怪,代码不好。这个时候,我们有没有办法把设备端的信息从驱动里面剥离出来,让驱动以某种标准方法拿到这些平台信息呢Linux总线、设备和驱动模型实际上可以做到这一点,驱动就可以放之四海而皆准了。
内核、shell、文件系统和应用程序。内核、shell和文件系统一起形成了基本的 *** 作系统结构,它们使得用户可以运行程序、管理文件并使用系统。部分层次结构如下图所示。
linux内核说明
内核是 *** 作系统的核心,具有很多最基本功能,它负责管理系统的进程、内存、设备驱动程序、文件和网络系统,决定着系统的性能和稳定性。
Linux 内核由如下几部分组成:内存管理、进程管理、设备驱动程序、文件系统和网络管
理等。这些组成其实是需要详细说明的
2 . linux shell
shell是系统的用户界面,提供了用户与内核进行交互 *** 作的一种接口。它接收用户输入的 命令并把它送入内核去执行,是一个命令解释器。另外,shell编程语言具有普通编程语言的很多特点,用这种编程语言编写的shell程序与其他应用程序具有同样的效果。
目前主要有下列版本的shell。
a.Bourne Shell:是贝尔实验室开发的。
b.BASH:是GNU的Bourne Again Shell,是GNU *** 作系统上默认的shell,大部分linux的发行套件使用的都是这种shell。
c.Korn Shell:是对Bourne SHell的发展,在大部分内容上与Bourne Shell兼容。
d.C Shell:是SUN公司Shell的BSD版本。
3 . linux 文件系统
文件系统是文件存放在磁盘等存储设备上的组织方法。Linux系统能支持多种目前流行的文件系统,如EXT2、 EXT3、 FAT、 FAT32、 VFAT和ISO9660。
4. linux 应用
标准的Linux系统一般都有一套都有称为应用程序的程序集,它包括文本编辑器、编程语言、X Window、办公套件、Internet工具和数据库等。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)