这些日子思索了一些东西,弄了两年接近三年的嵌入式,实际上还是在上层或者之前的硬件层打滚,更厉害实际是在系统的中间层,实际指向就是驱动,当我自己的私事告一段落之后,我开始走上驱动之路。入门的参考书以《深入浅出linux设备驱动》为主当然第一步,用我自己虚拟机里的fedora 14开发一个helloworld的内核模块,这也是驱动的入门法门之一。
驱动入门发现一,但是当我编译网上下载的hello程序之后,出错说缺少什么,网上一查这个错误是由于没有装内核源码树,也就是内核开发工具包,于是参考网页fedora14内核编译安装开始干,最后到重新编译内核,重新编译模块,重新安装模块。再重新编译helloworld.这种方法末尾make bzImage和make mudules时遇上“No rule to make target `missing-syscalls'”错误,无法进行下去,好运的是让我遇上fedora官方网站
以上采用的重新下载内核代码树并重新编译重新安装的方法,这种方法可行,但是更容易的方法是直接下载与原来内核代码相同版本的内核。以下采用这种方法来试探仍然失败,问题是我的版本是2.6.35.6-45,但是在https://www.kernel.org/网站只有之前和之后的版本,没办法继续摸索前面的,继续前进
用以上方法成功但是问题是更新内核时候不加任何的东西不然编译成功之后会出现“version magic ***' SMP mod_unload 686”
最后发现其实我用恢复镜像的方法解决了,由于之前升级过内核,但是没有升级相应的内核代码树,所以造成了之前的错误,把我自己引入了歧途,之后编译内核代码树的时候那个文档相当的有问题,所以一次又一次的被误导,其实有了内核代码树,应该什么都不加,,直接用make然后升级就完了.
最后分辨一下,其实加上模块用的文件是hello.ko
这两天还是颇有收获,内核代码树的重要性及内核代码树的升级方法,fedora的官方网站,内核的官方网站,gcc的使用方法,2.4和2.6的编译模块的不同,make和make modules,linux的一些常见错误