学习UEFI 之你把C语言学好了码?学习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 之你把C语言学好了码?学习UEFI 之你把C语言学好了吗?的更多相关文章
- Spring源码学习(六)-spring初始化回调方法源码学习
1.spring官方指定了三种初始化回调方法 1.1.@PostConstruct.@PreDestory 1.2.实现 InitializingBean DisposableBean 接口 1.3. ...
- MVC系列——MVC源码学习:打造自己的MVC框架(四:了解神奇的视图引擎)
前言:通过之前的三篇介绍,我们基本上完成了从请求发出到路由匹配.再到控制器的激活,再到Action的执行这些个过程.今天还是趁热打铁,将我们的View也来完善下,也让整个系列相对完整,博主不希望烂尾. ...
- MVC系列——MVC源码学习:打造自己的MVC框架(三:自定义路由规则)
前言:上篇介绍了下自己的MVC框架前两个版本,经过两天的整理,版本三基本已经完成,今天还是发出来供大家参考和学习.虽然微软的Routing功能已经非常强大,完全没有必要再“重复造轮子”了,但博主还是觉 ...
- MVC系列——MVC源码学习:打造自己的MVC框架(二:附源码)
前言:上篇介绍了下 MVC5 的核心原理,整篇文章比较偏理论,所以相对比较枯燥.今天就来根据上篇的理论一步一步进行实践,通过自己写的一个简易MVC框架逐步理解,相信通过这一篇的实践,你会对MVC有一个 ...
- MVC系列——MVC源码学习:打造自己的MVC框架(一:核心原理)
前言:最近一段时间在学习MVC源码,说实话,研读源码真是一个痛苦的过程,好多晦涩的语法搞得人晕晕乎乎.这两天算是理解了一小部分,这里先记录下来,也给需要的园友一个参考,奈何博主技术有限,如有理解不妥之 ...
- 【iScroll源码学习04】分离IScroll核心
前言 最近几天我们前前后后基本将iScroll源码学的七七八八了,文章中未涉及的各位就要自己去看了 1. [iScroll源码学习03]iScroll事件机制与滚动条的实现 2. [iScroll源码 ...
- 【iScroll源码学习03】iScroll事件机制与滚动条的实现
前言 想不到又到周末了,周末的时间要抓紧学习才行,前几天我们学习了iScroll几点基础知识: 1. [iScroll源码学习02]分解iScroll三个核心事件点 2. [iScroll源码学习01 ...
- Spring源码学习
Spring源码学习--ClassPathXmlApplicationContext(一) spring源码学习--FileSystemXmlApplicationContext(二) spring源 ...
- spark2.0源码学习
[Spark2.0源码学习]-1.概述 [Spark2.0源码学习]-2.一切从脚本说起 [Spark2.0源码学习]-3.Endpoint模型介绍 [Spark2.0源码学习]-4.Master启动 ...
- [转]MVC系列——MVC源码学习:打造自己的MVC框架(一:核心原理)
本文转自:http://www.cnblogs.com/landeanfen/p/5989092.html 阅读目录 一.MVC原理解析 1.MVC原理 二.HttpHandler 1.HttpHan ...
随机推荐
- vue2.0关于for循环 index的使用方法
<!DOCTYPE html> <html> <head> <title>for循环</title> </head> <b ...
- MySQL四舍五入函数ROUND(x)、ROUND(x,y)和TRUNCATE(x,y)
MySQL四舍五入函数ROUND(x) ROUND(x)函数返回最接近于参数x的整数,对x值进行四舍五入. 实例: 使用ROUND(x)函数对操作数进行四舍五入操作.SQL语句如下: mysql> ...
- 【3】Zookeeper中的角色
一.Zookeeper角色的分类 领导者(leader) Leader服务器为客户端提供读服务和写服务. 学习者(learner) 跟随者(follower) Follower服务器为客户端提供读服务 ...
- nginx反向代理局域网访问外网
.配置内网hosts vim /etc/hosts 添加 host1(能连外网的服务器ip) central.maven.org 2.在host1 服务器上nginx配置 server { ...
- 网络初级篇之STP(BPDU详解与STP故障恢复)
一.BPDU包含的参数 通过STP的原理,我们学习了红色部分的字段(根桥ID.根路径开销.桥ID.端口ID).现在讲解一下黄色部分的字段(类型.计时器.老化时间.访问时间) 1.(BPDU Type) ...
- Python3多线程爬取meizitu的图片
python环境:python3 运行环境:win10和linux都可以,其他系统没测 1 安装依赖 pip install requests pip install lxml pip install ...
- idea 下gradle创建springboot 项目
InterlijIdea 开发环境下创建基于springBoot的项目. 环境 1.jdk1.5以上 2.interlijidea 15 以上 步骤 1.File –>new –>Proj ...
- 3.Fech_feed
import tensorflow as tf # Fetch:可以在session中同时计算多个tensor或执行多个操作 # 定义三个常量 input1 = tf.constant(3.0) in ...
- 从零开始学会GAN 0:第一部分 介绍生成式深度学习(连载中)
本书的前四章旨在介绍开始构建生成式深度学习模型所需的核心技术.在第1章中,我们将首先对生成式建模领域进行广泛的研究,并从概率的角度考虑我们试图解决的问题类型.然后,我们将探讨我们的基本概率生成模型的第 ...
- Invalid character found in the request target. The valid characters are defined in RFC 7230 and RF
SpringBoot 请求参数包含 [] 特殊符号 返回400状态 //springBoot 启动类 添加 bean @Bean public TomcatServletWebServerFactor ...