Linux编程

已入手Beaglebone Black

wpid-img_20150329_201033

就快要毕业了,该处理掉的东西都要处理掉了。去年团购了龙芯8089D笔记本,曾用过它学习了一段时间的Linux C,渐渐在手中已成了闲置品,考虑到毕业后又不方便带,所以就有了把它出掉的打算。最后,在淘宝上把它给出掉了。毕业后,可能会从事Linux驱动开发,但是对此几乎一无所知,于是就想入手个树莓派之类开发板的玩玩。对比了一下Raspberry Pi, Banana Pi,Beaglebone等硬件,最后还是打算入手Beaglebone。Raspberry Pi软硬件不开源,连CPU文档都不开放,对于搞嵌入式的我来说可能有点不太合适;Banana Pi等硬件虽然软硬件都开源,但是资料及资源较少,对于作为新手的我来说,仍然不太适合;而Beaglebone官方资料比较详细,几大电子论坛也有板块,软硬件都是开源的,但是价格较贵,配置不是很高,接口也不是很丰富。十全十美的东西太过于难得,只得选择比较折衷的方案,于是就入手了Beaglebone Black。
Continue reading “已入手Beaglebone Black” »

Linux驱动学习笔记4:带参数的模块

Linux的模块在装载到内核时还可以带有参数,按照《Linux设备驱动程序》一书上的说明,在运行的自行编译的Linux内核上进行了操作,把上一次编写的hello模块进行了简单的修改。

Linux内核:2.6.32.35

Linux发行版:CentOS 6.4

gedit hello.c

Continue reading “Linux驱动学习笔记4:带参数的模块” »

Linux驱动学习笔记3:编写第一个Linux模块

Linux内核树创建完成后,就可以编写Linux驱动模块了,编写了一个简单的hello模块,在模块加载到内核或从内核卸载时输出字符串信息。

gedit hello.c

Continue reading “Linux驱动学习笔记3:编写第一个Linux模块” »

Linux驱动学习笔记2:运行已编译的Linux内核(更新Linux内核)

Linux驱动学习笔记1:创建Linux内核树一文中,已经创建了Linux内核树,编译了新版本的Linux内核。由于在已创建的Linux内核树上生成的驱动程序模块或许无法安装在原有的Linux系统内核中,这就需要更新Linux内核。

可以在创建内核树后, 安装新的Linux内核

make install

如果出现了 ERROR: modinfo: could not find module xxx,数量少的话,有时可以忽略。 Continue reading “Linux驱动学习笔记2:运行已编译的Linux内核(更新Linux内核)” »

Linux驱动学习笔记1:创建Linux内核树

昨天看了《Linux设备驱动程序(第3版)》一书,该书提到编译Linux模块需要构建Linux内核树,对此一直摸不到头脑。通过查找资料,现在虽然理解的还不是很深刻,经过自己的实际操作总算是有了一点点了解。

几个月前就在虚拟机上安装Linux操作系统:CentOS 6.4,昨天在看书的时候也不清楚这个系统有没有内核树,到现在才知道是有的,已经不需要重新创建。但是书中说发行版的系统内核通常会打了许多补丁,从而和主线内核存在很大差异,某些情况下,厂商的补丁会修改设备驱动程序使用的内核API,所以学习驱动程序的编写,还是标准内核最好。

首先查看当前系统的内核版本:

uname –r

可以看书系统内核版本为:2.6.32 Continue reading “Linux驱动学习笔记1:创建Linux内核树” »