学习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 ...
随机推荐
- linux 下vim 开发环境配置(通用所有编程语言)
1.下载 http://www.iterm2.com/ 2.oh-my-zsh curl -L https://raw.github.com/robbyrussell/oh-my-zsh/master ...
- mac 下安装mysql
1.安装mysql 使用 brew 进行安装: brew install mysql 2.安装完成: 3.如果开机启动服务 执行:brew services start mysql 否则:mysql. ...
- 卡尔曼(Kalman)滤波及十种数据采集滤波的方法和编程实例
卡尔曼(Kalman)滤波:https://blog.csdn.net/CSDN_X_W/article/details/90289021 十种数据采集滤波的方法和编程实例:https://wenku ...
- maven 父子工程打包 并且上传linux服务器
先对父工程进行 mvn clean 再对子工程执行 install wagon:upload-single wagon:sshexec 使用wagon前提: 本地maven 的settings.xml ...
- oracle解锁
--以下几个为相关表SELECT * FROM v$lock;SELECT * FROM v$sqlarea;SELECT * FROM v$session;SELECT * FROM v$proce ...
- 语义分割之车道线检测Lanenet(tensorflow版)
Lanenet 一个端到端的网络,包含Lanenet+HNet两个网络模型,其中,Lanenet完成对车道线的实例分割,HNet是一个小网络结构,负责预测变换矩阵H,使用转换矩阵H对同属一条车道线的所 ...
- linux获取保留yum源、并获取安装位置
linux使用yum安装之后保留yum源 linux在使用yum安装之后默认会删除rpm包,那么如何保留呢? vim /etc/yum.conf 将这里的0改成1即可 linux安装的yum源在什么地 ...
- Alpha版本第一周小结
姓名 学号 周前计划安排 每周实际工作记录 自我打分(百分制) HTB 061126 1.博客撰写,分配任务 2.编码实现各个模块的功能 1.撰写博客 2.已初步实现各个模块的功能,对某些数据处理还存 ...
- 详解 @MapperScan 注解和 @Mapper 注解
实际上,这是一个非常简单的问题.我并没有一口回绝他,让他去百度.因为,新人都会经历这个过程.好不容易,问你一次,你直接让他百度,会打击到他的.而且,别人会觉得你摆架子. @Mapper 这个注解的定义 ...
- hdu 6052 To my boyfriend
题目 OvO click here http://acm.hdu.edu.cn/showproblem.php?pid=6052 (2017 Multi-University Training Con ...