关于linux移植随笔

Table of Contents

从05年大学毕业到现在差不多仅6年的时光。我也从一个linux的毛头小子转变成一个自诩的linux高手。

做过MPC824X/MPC8315/MPC8541/AT91RM9200的移植以及一些SPI/I2C/CF-Card/RTC/CAN/USB/FLASH/MII/PHY等设备驱动及移植。总结了不少经验。

但是一直没有过系统的linux学习,比如大家常读的LDD,TCP/IP协议桟。总觉得缺点什么。

我们老大经常引用我公司一个外援的一句话“能用就行”。

但是最近有些新问题出现。查了查原因都是一些基本知识。比如说kmalloc、ioremap是会阻塞的,使用device_create创建的设备在应用层没有mdev的情况下使用mknod手动创建后,device_create的private_data参数并不会传给inode。

而且这几天帮客户调试我们之前使用的一个驱动,驱动层在open函数里对filp->private_data进行赋值,在应用层程序调用close时,造成了内核崩溃,最终采用了全局变量解决了这个问题。虽然没有办法进一步了解为什么造成这样的结果,但是如果能够仔细阅读LDD等书,彻底了解linux框架对自己还是非常有好处的。

之前在驱动移植时总是知道应该这样移植,而没有进一步分析驱动的框架,只有在实在没有办法的时候才回去慢慢的深入一些驱动框架上面。

总觉得还是要进行系统学习,就像大学时学C语言一样,在工作的时候就会打下良好的基础。如果这些基本知识没有掌握的话,那么即使做了项目经理,但是一旦下面的工程师遇到了问题而有解决不了的时候,总是要挺身而出的。

Comments

No comments yet. Why don’t you start the discussion?

Leave a Reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.