最近基于UEF在写代码的时候,发现由于粗心总是出现很多问题,而且都是一些小问题。虽然UEFI玩了挺久,但是也没梳理一下思路。借此机会整理一下:

UEFI对复杂的BIOS代码做了很好的封装和模块化。   而且UEFI的标准库函数也十分丰富,多数情况下需要跨模块调用各种丰富的库函数来进行功能开发,这其中重点是了解整个代码的框架。在写代码之前要对当前调用的函数了然于胸,不然就会发生总是因为一些小的问题导致编译错误,BIOS的编译是需要一些时间的,过多的花时间来试错编译的过程,会极大的影响我们的开发效率,大概梳理了下编程的思路:

1. 从框架入手

要对代码的框架有个了解,所调用的库函数以及变量是否属于本模块内,如果不属于,则要在inf文档中添加模块声明。此外gRT的某些服务是在gST中,因此学会相互转换

2. 对形参入手

函数可以识别到以后,则要关注形参的类型以及格式,UEFI对于类型标准的非常严格,因此定义形参变量时,一定要确定类型是否一致。另外的一点就是形参的类型,着重关注是否为指针,是一级指针还是二级指针。不要错用。

3.GUID等全局变量的包含使用

如果有涉及到GUID,则要看下目前的包含结构有没有包括GUID,如果没有则要在inf文件中添加GUID的声明

4.头文件的包含

此外包含某个.h文件时,要关注当前.h文件是否包含了其他模块的.h文件,如果包含了,则要在调用的inf文件中添加Pkg的声明

【UEFI】---基于UEFI编程的基本思路的更多相关文章

  1. 基于UEFI和GPT模式下U盘安装windows8.1和Linux双启动教程

    首先作以下准备: 1.一个8G以上的U盘,用的时候会格式化,建议为空 2.分区助手软件,官网下载链接 3.一个linux系统,这里用同学推荐的Fedora 26,官网下载链接 4.rufus 创建U盘 ...

  2. Eclipse 基于接口编程的时候,快速跳转到实现类的方法(图文)

    Eclipse 基于接口编程的时候,要跳转到实现类很麻烦,其实Eclipse已经实现该功能. 只要按照Ctrl键,把鼠标的光标放在要跳转的方法上面,第一个是跳转到接口里面,第二个方法是跳转到实现类的位 ...

  3. 《Essential C++》读书笔记 之 基于对象编程风格

    <Essential C++>读书笔记 之 基于对象编程风格 2014-07-13 4.1 如何实现一个class 4.2 什么是Constructors(构造函数)和Destructor ...

  4. redux:基于函数式编程的事件处理和状态维护机制

    redux = monand + pipeline + highorder componet + decouple + middleware redex = store based + event h ...

  5. Shell编程——脚本编写思路与过程

    Linux系统Shell编程——脚本编写思路与过程 “ 前段时间有小伙伴问我一些问题,涉及到shell脚本的编写问题,事后,我深入思考了下,实际生产环境的确也会经常用到,因此如何写这个脚本?它的思路在 ...

  6. 【读书笔记】UEFI原理与编程(1)概述及开发环境的搭建

    一.概述: 0.为什么会有这篇文章 说实在的,在2016初的时候,我就萌生了写一个操作系统的念头,但是这对于我一个菜鸟来说,犹如登天. 既然想了就去写,即使最后做不完,也不后悔. 抱着这样的念头,我开 ...

  7. JavaScript基于对象编程

    js面向对象特征介绍 javascript是一种面向(基于)对象的动态脚本语言,是一种基于对象(Object)和事件驱动(EventDirven)并具有安全性能的脚本语言.它具有面向对象语言所特有的各 ...

  8. 基于网络编程 TCP协议 及 socket 基本语法

    socket是什么 Socket是应用层与TCP/IP协议族通信的中间软件抽象层,它是一组接口.在设计模式中,Socket其实就是一个门面模式,它把复杂的TCP/IP协议族隐藏在Socket接口后面, ...

  9. js面向(基于)对象编程—类(原型对象)与对象

    JS分三个部分: 1. ECMAScript标准--基础语法 2. DOM  Document Object Model 文档对象模型 3. BOM  Browser Object Moldel 浏览 ...

随机推荐

  1. 【js】 vue 2.5.1 源码学习(六) initProxy initLifeCycle 渲染函数的作用域代理

    大体思路 (五) 1. initProxy 渲染函数的作用域代理 ==> es6 如果支持proxy (hasProxy) 就用proxy 不支持就用 defineProperty() prox ...

  2. intellij 创建一个文件自动就add到git了,这个怎么取消

    解决方案一: 展开全部 打开IDEA->File->Settings->VersionControl->Confirmation 上面有个When files are crea ...

  3. H3C 配置路由器作为FTP服务器端

  4. Eclipse文档注释导出doc

    选择要导出的项目,右键选择Export 直接next,在最后finish之前加上编码格式.要不然会出现乱码

  5. 解决应用服务器变为集群后的Session问题

    2.2.4.2 解决应用服务器变为集群后的Session问题 先来看一下什么是Session. 用户使用网站的服务,基本上需要浏览器与Web 服务器的多次交互.HTTP 协议本身是无状态的,需要基于H ...

  6. CF 453C. Little Pony and Summer Sun Celebration

    CF 453C. Little Pony and Summer Sun Celebration 构造题. 题目大意,给定一个无向图,每个点必须被指定的奇数或者偶数次,求一条满足条件的路径(长度不超\( ...

  7. 一个简单的Web服务器-支持Servlet请求

    上接 一个简单的Web服务器-支持静态资源请求,这个服务器可以处理静态资源的请求,那么如何处理Servlet请求的呢? 判断是否是Servlet请求 首先Web服务器需要判断当前请求是否是Servle ...

  8. hibernate配置文件模板

    hibernate.cfg.xml 配置文件模版: <?xml version='1.0' encoding='UTF-8'?> <!DOCTYPE hibernate-config ...

  9. Visual Studio 2017 安装心得

    既然VS2017已经发布了,就想安装一下试试,先卸载VS2015, 网上有个完全卸载的东东,https://github.com/Microsoft/VisualStudioUninstaller/r ...

  10. Spring Boot (5) 整合 RabbitMQ

    一.前言 RabbitMQ是实现了AMQP(高级消息队列协议)的开源消息中间件,RabbitMQ服务器是用Erlang(面向并发的编程语言)编写的. RabbitMQ官网下载地址:https://ww ...