《鸟哥的Linux私房菜 基础学习篇(第三版)》,鸟哥著
一本大而全的LINUX入门指点,主要讲解Linux一些命令,Linux的实际 *** 作及Linux基础理论。很适合Linux初学者学习。
《嵌入式 Linux 应用开发完全手册》,韦东山著
这本书综合了常见的嵌入式开发经验技巧,以及常见的嵌入式系统应用,系统移植,调试及异常处理等,内容非常丰富,是中文 Linux 领域难得的一本好书。嵌入式处理器种类繁多,韦老师着重讲了目前国内最常用的ARM系统,实用性很强,是国内嵌入式程序员不容错过的一本工具书。
《UNIX环境高级编程》(第2版),史蒂文斯著
《UNIX环境高级编程》是 Unix/ Linux 程序员案头必备的一本书籍。可以说,Linux 程序员如果没有读过这本书,就好像基督教徒没有读过圣经一样,是很难让人理解的。这本书概括了 Linux 编程所需的一切理论框架、主要系统函数、多进程编程、乃至 Linux 网络通信。
《Linux设备驱动开发详解:基于最新的Linux 40内核》,宋宝华著
随着通信、电子行业的迅速发展,全世界每天都会生产大量芯片,设计大量新电路板,也因此,会有大量设备驱动需要开发。本书主要对驱动编程所涉及Linux内核最底层机理的讲解。也是即Linux设备驱动开发详解第二版畅销后,作者又进行第三版的编著。
《Linux 设备驱动程序》,科波特著
《LINUX设备驱动程序》就是网上说的“LDD”,经典之作,必备书籍。国产经典《Linux驱动详细解》也是一本非常不错的书,很实用,书中源代码分析比较多,基于2440的,对linux外围驱动有很全面的讲解。
《深入理解 Linux 内核》(第三版) ,博韦等著
学习 Linux ,就要学习 Linux 的精华。而 Linux 的精华,则在于 Linux 的内核。本书以 Linux 26 版架构为基础,分门别类地向初学者介绍了 Linux 内核的架构、编程思想、以及功能模块。在本书的指导下学习,对于你读懂 Linux *** 作系统的精华部分,会取得事半功倍的效果。
Linux是Unix *** 作系统的一种变种,在Linux下编写驱动程序的原理和思想完全类似于其他的Unix系统,但它dos或window环境下的驱动程序有很大的区别。在Linux环境下设计驱动程序,思想简洁, *** 作方便,功能也很强大,但是支持函数少,只能依赖kernel中的函数,有些常用的 *** 作要自己来编写,而且调试也不方便。本人这几周来为实验室自行研制的一块多媒体卡编制了驱动程序,获得了一些经验,愿与Linux fans共享
一、Linux device driver 的概念系统调用是 *** 作系统内核和应用程序之间的接口,设备驱动程序是 *** 作系统内核和机器硬件之间的接口。设备驱动程序为应用程序屏蔽了硬件的细节,这样在应用程序看来,硬件设备只是一个设备文件, 应用程序可以象 *** 作普通文件一样对硬件设备进行 *** 作。设备驱动程序是内核的一部分,它完成以下的功能:
1对设备初始化和释放。
2把数据从内核传送到硬件和从硬件读取数据。
3读取应用程序传送给设备文件的数据和回送应用程序请求的数据。
4检测和处理设备出现的错误。
二、实例剖析我们来写一个最简单的字符设备驱动程序。虽然它什么也不做,但是通过它可以了解Linux的设备驱动程序的工作原理。
Linux驱动程序的使用可以按照两种方式编译,一种是静态编译进内核,另一种是编译成模块以供动态加载。由于uClinux不支持模块动态加载,而且嵌入式LINUX不能够象桌面LINUX那样灵活的使用insmod/rmmod加载卸载设备驱动程序,因而这里只介绍将设备驱动程序静态编译进uClinux内核的方法。
下面以UCLINUX为例,介绍在一个以模块方式出现的驱动程序testc基础之上,将其编译进内核的一系列步骤:
(1) 改动testc源带代码
第一步,将原来的:
#include
#include
char kernel_version[]=UTS_RELEASE;
改动为:
#ifdef MODULE
#include
#include
char kernel_version[]=UTS_RELEASE;
#else
#define MOD_INC_USE_COUNT
#define MOD_DEC_USE_COUNT
#endif
第二步,新建函数int init_test(void)
将设备注册写在此处:
result=register_chrdev(254,"test",&test_fops);
(2)将testc复制到/uclinux/linux/drivers/char目录下,并且在/uclinux/linux/drivers/char目录下memc中,int chr_dev_init( )函数中增加如下代码:
#ifdef CONFIG_TESTDRIVE
init_test();
#endif
(3)在/uclinux/linux/drivers/char目录下Makefile中增加如下代码:
ifeq($(CONFIG_TESTDRIVE),y)
L_OBJS+=testo
Endif
(4)在/uclinux/linux/arch/m68knommu目录下configin中字符设备段里增加如下代码:
bool 'support for testdrive' CONFIG_TESTDRIVE y
(5) 运行make menuconfig(在menuconfig的字符设备选项里你可以看见我们刚刚添加的'support for testdrive'选项,并且已经被选中);make dep;make linux;make linuxtext;make linuxdata;cat linuxtext linuxdata > linuxbin。
(6) 在 /uclinux/romdisk/romdisk/dev/目录下创建设备:
mknod test c 254 0
并且在/uclinux/appsrc/下运行make,生成新的Romdisks19文件。
到这里,在UCLINUX中增加设备驱动程序的工作可以说是完成了,只要将新的linuxbin与Romdisk
你好,如果只是看书的话,对基础要求不是很高,我之前看linux驱动的时候也没有驱动开发的经验,只要是c语言基础要比较扎实,关键部分是指针,不知道你的c基础如何,如果不是很熟,建议先看看c中的指针,数组,和字符串这三个,然后是数据结构中的链表结构体。然后就可以看书了,不会什么就临时补充什么边看边学也是一种学习方法!
以上就是关于学习linux编程,入门阶段看什么书全部的内容,包括:学习linux编程,入门阶段看什么书、怎样编写Linux设备驱动程序、如何在嵌入式LINUX中增加自己的设备驱动程序等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)