学习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 ...
随机推荐
- luogu P3645 [APIO2015]雅加达的摩天楼
luogu 暴力? 暴力! 这个题有点像最短路,所以设\(f_{i,j}\)表示在\(i\)号楼,当前\(doge\)跳跃能力为\(j\)的最短步数,转移要么跳一步到\(f_{i+j,j}\)和\(f ...
- Centos7:Redis的安装,配置及使用
安装依赖与环境 yum install gcc-c++ 解压缩redis 编译,进入redis源码目录 make 安装 make install PREFIX=/usr/local/redis 注:P ...
- 微信小程序中button去除默认的边框
button { position:relative; display:block; margin-left:auto; margin-right:auto; padding-left:14px; p ...
- springboot 自动装配
以下内容部分来自小马哥的 <springboot 编程思想> 基础 springboot 项目 maven 依赖 <dependency> <groupId>org ...
- js动态添加控件(输入框为例)
写在前面 昨天得到一个需求,需要在账户登记页面中动态添加输入框,经过半天的捣鼓,最终完美成型,写下来跟大家分享下, 供大家参考 开始复制代码了 如果复制了我所有代码的话,注意看js最后面方法的备注,最 ...
- 微信小程序开发(三)点击事件
接着上篇博客继续. 如下修改: // index.wxml <view>Hello World!</view> <button bindtap="but&quo ...
- Hadoop_10_HDFS 的 DataNode工作机制
1.DataNode的工作机制: 1.DataNode工作职责:存储管理用户的文件块数据 定期向namenode汇报自身所持有的block信息(通过心跳信息上报) (这点很重要,因为,当集群中发生某 ...
- libusb bulk
https://github.com/IzyaSoft/EasyUsb https://github.com/ztguang/libusb-usbip-bulktransfer/blob/master ...
- sql 184. 部门工资最高的员工
Employee 表包含所有员工信息,每个员工有其对应的 Id, salary 和 department Id. +----+-------+--------+--------------+| Id ...
- jpa @Query()参数设置,:冒号方式、?NO.问号方式、实体类对象参数设置
一.service层事务(update/delete) @Transactional(rollbackFor = Exception.class) 二.@Query()参数设置 ?x 和:XX不能混 ...