心得分享: 学习UEFI 之你把C语言学好了码?

很多人在问我说: 怎样子把UEFI 学好?! 其实写BIOS 的人答案应该只有一个,把SPCE看懂看完然后融会贯通!这样子的答案好像跟没有是一样的!

小弟就以我的学习经验来分享给大家吧!(虽然我也没学好,但是教学相长啦~)

首先呢,你要会C语言,不是C++喔!因为目前UEFI还是使用C语言开发,其中最主要的原因是因为C的code size 会比较

小一点,会比较适合Firmware 的开发!

 

学C语言的时候要注意什么是#define ? # define 高级用法有哪些?! 什么是 typedef, 这东西跟uefi 的关系是什么? 为什么UEFI 中是使用UINT32 ? 而不是一般的unsigned int ? 还有什么是 function pointer? 这要如何使用与声明? 另外就是 Link list 在处理数据结构时的应用!

大致上C学会了,UEFI 的code 大概就看得懂! 当你看得懂的时候,再去看SPCE 就会了解人家在做什么了!(

记住我的话: 工欲善其事,必先利其器,先把C学好,你才能做更多的事情!)

 

接下来你要会一点点汇编语言,国为在debug时多少要看懂懂!如果时间够的话,去了解一下微处理器的构架,顺便了

解一下CPU是如何设计出来的,他对于指令的提取/解码又是什么动作? 什么是指令被优化? 他跟CPU的关系是什么?

16 bit vs 32 bit vs 64 bit 又有何差别? segment 跟内存管理又是什么关系?etc 这些相关知识如果能懂的话会更好?

 

然后就是X86 的一些架构性的知识,像是中断是什么? 中断的种类有几种? 为什么要有中断? 中断跟os 还有cpu之间

是怎么配合的? 设备的中断跟CPU的中断的差别又是什么? 个别的运作原理又是什么? 另外什么是CPU工作模式

(实模式/保护模式/SMM ... etc)定址又是什么东西?

 

还有像是PCI bus/sata/smbios/acpi .... 相关知识都必须知道,更深入的就会了解CPU是如何初始化? chipset 初始化?

memory size? 不过这些知识一般不容易得到,所以先把架构性学好,等待有机会在更深入研究。

 

综合上述所说,要学的东西还真的很多! 学BIOS 不可能一蹴即成!往往都需要时间慢慢累积!但是现在UEFI的入门门槛

已经很低了,只要懂C加上遇到好的老师或学长,一般大概一年就能独立接案子,其他的就是靠自己努力。

 

你可能感兴趣的:(UEFI源码剖析)