楼主好,小弟也是软件工程专业,毕业半年有余,目前就在传说中的“底层开发”打拼,把这半年的新的总结如下,不道之处希望楼主莫怪。
1.如果是在操作系统上的底层开发,其实就是对操作系统要相当了解,比如WINDOWS底层的驱动代码的编写,就要对WINDOWS的WDM驱动框架有详细了解,照着框架依葫芦画瓢;如果是针对LINUX写驱动,大概也是如此,但是我没写过LINUX驱动。最终的目的还是要对操作系统有相当的了解,能定制操作系统,完成一些一般应用软件无法完成的功能。
2.如果是在单片机或者某些特定型号的CPU或开发板上写驱动的话,那就要对CPU的指令集有所了解,一般是汇编的,因为这层连操作系统都没有,只能是在编译器上编译成CPU的语言(2进制的那种东西),然后写入到内存或者硬盘的某些个特定位置,等待CPU加电后加载这些代码并运行,不过LINUX是开源内核,强悍点的甚至可以把LINUX移植到你自己的开发板上,不过内核的移植不是过家家,不是那么容易的,需要的是坚持不懈的努力!
如果是搞1中的开发,比如杀毒软件啥的,分平台,WINDOWS的话就把WDM还有NT式驱动的流程看看,如果是LINUX的底层开发则把前人写的驱动找来看看,依葫芦画瓢吧!想在深入的话也就只能看LINUX内核源码了(推荐看操作系统原理的书籍)。如果是搞2中的开发,啥嵌入式啊,数字电路啊,都要懂啊(推荐看计算机组成原理吧)。