很多人在问我说: 怎样子把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 之你把C语言学好了码?学习UEFI 之你把C语言学好了吗?的更多相关文章

  1. Spring源码学习(六)-spring初始化回调方法源码学习

    1.spring官方指定了三种初始化回调方法 1.1.@PostConstruct.@PreDestory 1.2.实现 InitializingBean DisposableBean 接口 1.3. ...

  2. MVC系列——MVC源码学习:打造自己的MVC框架(四:了解神奇的视图引擎)

    前言:通过之前的三篇介绍,我们基本上完成了从请求发出到路由匹配.再到控制器的激活,再到Action的执行这些个过程.今天还是趁热打铁,将我们的View也来完善下,也让整个系列相对完整,博主不希望烂尾. ...

  3. MVC系列——MVC源码学习:打造自己的MVC框架(三:自定义路由规则)

    前言:上篇介绍了下自己的MVC框架前两个版本,经过两天的整理,版本三基本已经完成,今天还是发出来供大家参考和学习.虽然微软的Routing功能已经非常强大,完全没有必要再“重复造轮子”了,但博主还是觉 ...

  4. MVC系列——MVC源码学习:打造自己的MVC框架(二:附源码)

    前言:上篇介绍了下 MVC5 的核心原理,整篇文章比较偏理论,所以相对比较枯燥.今天就来根据上篇的理论一步一步进行实践,通过自己写的一个简易MVC框架逐步理解,相信通过这一篇的实践,你会对MVC有一个 ...

  5. MVC系列——MVC源码学习:打造自己的MVC框架(一:核心原理)

    前言:最近一段时间在学习MVC源码,说实话,研读源码真是一个痛苦的过程,好多晦涩的语法搞得人晕晕乎乎.这两天算是理解了一小部分,这里先记录下来,也给需要的园友一个参考,奈何博主技术有限,如有理解不妥之 ...

  6. 【iScroll源码学习04】分离IScroll核心

    前言 最近几天我们前前后后基本将iScroll源码学的七七八八了,文章中未涉及的各位就要自己去看了 1. [iScroll源码学习03]iScroll事件机制与滚动条的实现 2. [iScroll源码 ...

  7. 【iScroll源码学习03】iScroll事件机制与滚动条的实现

    前言 想不到又到周末了,周末的时间要抓紧学习才行,前几天我们学习了iScroll几点基础知识: 1. [iScroll源码学习02]分解iScroll三个核心事件点 2. [iScroll源码学习01 ...

  8. Spring源码学习

    Spring源码学习--ClassPathXmlApplicationContext(一) spring源码学习--FileSystemXmlApplicationContext(二) spring源 ...

  9. spark2.0源码学习

    [Spark2.0源码学习]-1.概述 [Spark2.0源码学习]-2.一切从脚本说起 [Spark2.0源码学习]-3.Endpoint模型介绍 [Spark2.0源码学习]-4.Master启动 ...

  10. [转]MVC系列——MVC源码学习:打造自己的MVC框架(一:核心原理)

    本文转自:http://www.cnblogs.com/landeanfen/p/5989092.html 阅读目录 一.MVC原理解析 1.MVC原理 二.HttpHandler 1.HttpHan ...

随机推荐

  1. 向PHP使用Post方式上传文件

    欢迎访问我的个人博客,获取更多有用的东西 链接一 链接二 也可以关注我的微信订阅号:CN丶Moti 1.post-file.html form表单提交方式一定要是post,而且添加属性enctype= ...

  2. 记项目管理大作业Web项目Mandrian的全流程[其一] 整体分析: 功能划分, 组织结构

    Mandrian是个图书管理系统, 具体需求老师给出 这个项目的目的主要是管理过程和高层设计的学习和实践 11人小组, 路人局 成员调查 这里由于很多人我都不认识, 所以我提前发了一个能力调查表, 调 ...

  3. 03 Go语言特性

    一.基本注意事项 1.转义字符 \t 一个制表符,代表一次tab \n 换行符 \\ 转义代表 \ \" 转义代表 " \r 一个回车,从当前行的最前面开始输出,会覆盖以前的内容, ...

  4. 实现表单label两端对齐

    主要使用css3属性 text-align: justify; text-align-last: justify; 上代码: <ul> <li> <label class ...

  5. 使用WSGI创建REST接口

    问题 你想使用一个简单的REST接口通过网络远程控制或访问你的应用程序,但是你又不想自己去安装一个完整的web框架. 解决方案 构建一个REST风格的接口最简单的方法是创建一个基于WSGI标准(PEP ...

  6. shell脚本视频学习1

     一.知识点:变量,参数传递 练习1:使用shell脚本,输出当前所在的目录 练习2:计算/etc目录下有多少个文件,用shell脚本实现 ls -l--->数一下, ls -l|wc -l ( ...

  7. hourglassnet网络解析

    hourglassnet中文名称是沙漏网络,起初用于人体关键点检测,代码,https://github.com/bearpaw/pytorch-pose 后来被广泛的应用到其他领域,我知道的有双目深度 ...

  8. webpack整合 vue-router 路由,模块嵌套,整合Mint UI,MUI

    webpack整合 vue-router 结构 各个文件内容,一共八个文件, 还有src components 目录 Login.vue <template> <div> &l ...

  9. 第七章·Logstash深入-收集NGINX日志

    1.NGINX安装配置 源码安装nginx 因为资源问题,我们先将nginx安装在Logstash所在机器 #安装nginx依赖包 [root@elkstack03 ~]# yum install - ...

  10. LVS (Linux虚拟服务器)-不同的负载均衡方法

    随着Internet用户的增长,基于Web的公司处理的通信量急剧增加.有各种解决方案来应对这种不断增长的流量. 一种解决方案是垂直扩展服务器(即:简单地向服务器添加更多的CPU和内存资源.)当然在一定 ...