16 luobing4365

尚未进行身份认证

十多年编程经历,前5年主要开发语言是x86汇编和C,开发各类OptionRom。后5年涉及一些驱动开发和App以及UEFI编程,从此更多的精力用在了团队和公司管理上。然不忘初心,仍孜孜不倦地在各技术领域钻研,其乐无穷。 近一年开始,对物联网相关产业以及AI极有兴趣,立志并着手进行中。

等级
TA的排名 13w+

UEFI开发探索40 – 构建自己的Package

(请保留-> 作者: 罗冰)前段时间在Linux下开发UEFI程序,发现以前写的AppPkg的32位程序没法编译,无法在模拟环境下测试执行程序。我当时就想脱离AppPkg,自己构建Package。当然,StdLib的库不能使用了,也不能以main()函数为入口。我觉得这都不是什么大事,毕竟平常构建的Option ROM代码也不能使用这些。说干就干,顺便把各种类型文件的知识点过一遍...

2019-12-08 19:53:07

Foxdisk12 – 图形显示1

(请保留 -> 作者:罗冰)最近在写UEFI博客的时候,遇到些阻碍。我想移植一款开源的GUI到UEFI下,目前还没有找到。不过,博客开天窗这么久,总是不像话,所以回来继续写Foxdisk的博客了。Foxdisk的博客更新较慢,主要是觉得这些都是Legacy BIOS下的东西,可能想了解的人不多,我也是随性而写,并不制定计划。使用Foxdisk3的代码,很难演示如何进行图形编程。...

2019-11-18 21:02:41

早起-西安的清晨

现在是早上七点整,听着音乐,在另外一个城市迎来新的一天。每天的日子都是在-赶快起床、孩子要上学了-这样的心态中迎来,一般都在六点半左右起床。难得今天没有这样的担忧,昨晚我十点多就上床睡觉了,却在凌晨五点多的时候醒了。难得可以多睡会,起来得反而比平时早,人真是种矛盾的生物。不过,也多亏如此,我见到了西安古城的清晨。黎明初启,城市的夜灯还在亮着。天气很好,聚集过来的云层,仿佛在准备着迎...

2019-11-11 07:06:07

Windows驱动稳定性测试

(请保留-> 作者: 罗冰)近期UEFI探索系列没有更新,忙着处理北京的案子以及帮忙朋友测试一个IO驱动。代码审查完,找不出什么问题。windows的驱动除了直接测试外,是否有其他好的测试方法,我不是很熟悉。问道于张佩,他建议用Verifier进行测试。正好去上海有事,周末拉着张佩来教我如何测试和调试。过程就不赘述了,我把使用Verifier的过程记录下来,以备未来查看。Driv...

2019-10-19 10:09:38

UEFI开发探索39 – Ubuntu 16.04下用gdb建立UEFI调试环境

(请保留-> 作者: 罗冰)准确地说,应该是在Ubuntu 16.04下,使用Qemu模拟UEFI启动环境,同时配合Intel UDK Debugger tool和gdb建立的X64调试环境。使用的是Qemu和OvmfPkg,类似于之前使用windbg在Windows下搭建调试环境,这次换为在Linux下搭建了。正是上一篇博客留下的题目。1 参考资料如何在Linux下搭建调试...

2019-10-19 09:59:25

UEFI开发探索38 – Ubuntu下编译AppPkg杂谈

(请保留-> 作者: 罗冰)上一篇博客中,在编译AppPkg的时候,遇到了问题,编译的时候出错。错误的提示在上一篇博客中贴出来了,这里不再贴出。针对此问题,我查找了一些资料,做了若干实验,姑且以杂谈的形式记录下来。1 EADK为了方便使用标准的C库,EDKII中提供了开发包:EDK II Application Development Kit,简称为EADK。它最早脱胎于EFI_...

2019-10-19 09:53:56

UEFI开发探索37 – Linux下环境搭建

(请保留-> 作者: 罗冰)Windows下搭建环境、编译、运行等一系列工作,都已经比较熟练了。不过,鉴于Intel提供的调试工具(之前博客中讲述过)Linux版本的都比windows新:图1 已经两年没更新的调试工具我觉得还是有必要在Linux下把开发环境建立起来。何况,我平常用来开发UEFI的Windows虚拟机实在太大了,动辄50G,装完必要软件后,只剩下10多个G。...

2019-10-18 19:50:07

UEFI开发探索Q&A – 问题辑录(持续更新)

最近正在尝试在Unbutu16上搭建开发和调试环境,其中过程一言难尽,到现在也没完成到符合我要求的程度。正是因为遇到障碍,我今天早上回到Win10+UDK2018的环境下,想重新编译下AppPkg,没想到遇到问题了,怎么编译都不通过。明明之前是没有问题的啊,看第26篇博客,当时我还非常雀跃于第一次编译通过。我一直都在使用AppPkg编译我自己的UEFI app,肯定是哪里的配置被我自己修改...

2019-10-16 23:54:59

UEFI开发探索36 – UEFI Option ROM

(请保留-> 作者: 罗冰)Option ROM的开发不是一门显学,相关的资料也少得可怜。如果是在ODM厂商工作,或者做BIOS相关的工作,可以接触到很多相关的材料。不过,对我这种必须开发Option ROM,公司又不是相关行业的,非常少见。这也导致在开发Legacy BIOS的Oprom时,只能一点点摸索,遇到的问题如山之多。UEFI下开发Option ROM相对好多了,一方面资料...

2019-10-16 23:46:03

UEFI开发探索35 – Option ROM前传2

(请保留-> 作者: 罗冰)在Legacy BIOS的Option ROM开发过程中,除了需要注意代码结构外,代码生成文件的大小也得小心,BIOS文件预留的空间不多。我一般将生成文件控制在12K左右。当然,在后期的产品开发中,我们开始与联想和方正合作,Option ROM文件是请BIOS工程师编译进BIOS的,上述的限制就不需要那么严格了。1校验和的问题Option ROM...

2019-10-15 23:25:40

UEFI开发探索34 – Option ROM前传1

(请保留-> 作者: 罗冰)下面开始进入系列博客的主线-Option ROM的开发。我预备用3篇将这个问题说清楚。包括Legacy BIOS下的Oprom,以及如何搭建UEFI下Oprom,包含为了开发Oprom我所自制的几个工具。我曾经有很长一段时间与Legacy BIOS的Option ROM打交道,在没有示例程序、没有人指点的情况下,苦苦探索,痛苦而又充实。一切都从这个...

2019-10-15 23:22:38

UEFI开发探索33 – 再谈串口通信

(请保留-> 作者: 罗冰)UEFI系列博客的第20篇中,曾经尝试过构建串口通信的代码。发送串口数据在当时已经实现了,可是没有找到如何判断是否有可读的数据,读取串口没有成功。偶尔能读到串口数据,只能证明读函数起作用了。在多年的开发经历中,我曾经开发过各种MCU的串口代码,也在DOS和Legacy BIOS下开发过。读取串口,基本都是使用中断(或者配合DMA)方式。Windows下的串...

2019-09-22 13:04:31

UEFI开发探索32 – 有趣的图像特效

(请保留-> 作者: 罗冰)PhotoShop和ACD See中,有各种对图像进行特效处理的功能,我在大学的时候就很着迷,一度考虑报考图像处理相关的研究生专业。可惜生活总是变幻无常,推着我走向了另外一条道路,曾经的梦想还没出航就搁浅了。不过这也影响了我之后的编程生涯,在底层开发的时候,总想着搞清楚各种图像的特效是怎么实现的。这次准备拿UEFI App来开刀。1灰度转换...

2019-09-22 12:59:42

UEFI开发探索31–鼠标GUI构建

(请保留-> 作者: 罗冰)进行了上一篇博客所描述的各种实验,相关的代码基本都已经搭建好了,我们可以着手进行对GUI界面的鼠标支持了。UEFI对开发者提供中断支持,所有异步操作都可以通过Event来完成。Simple Pointer Procotol也提供了对此机制的支持,根据文档中函数的说明,构建如下的函数:图1 鼠标GUI函数Line8-Line10的四个函数是...

2019-09-22 12:38:22

UEFI开发探索30 –鼠标初探

(请保留-> 作者: 罗冰)我的UEFI开发探索的系列博客,一直都有一根主线的存在,那就是在测试板上把UEFI的Option ROM开发出来。回想到目前为止,总线及设备访问:PCI、Smbus、串口,都已经实现过了(串口实现不大完美,但在测试板上不需要使用);界面相关:屏幕画图、文字显示、图像(BMP、PCX、JPEG)显示,也已经完成;用户交互:键盘已经完成,鼠标还没有写。也就...

2019-09-22 12:35:38

UEFI开发探索29 – 图像显示(JPEG)

(请保留-> 作者: 罗冰)最近大部分时间都在研究怎么调试了。原计划的图像显示系列,落后不少进度。之前介绍的BMP和PCX格式,都是无损压缩格式。今天想研究下有损压缩的明星—Jpeg格式。本来是准备了四种格式的研究:BMP、PCX、JPEG和ICO。因为时间原因,ICO就不再继续编程了。如果未来有需要,到时再把它补上吧。这篇博客是图像显示系列的最后一篇了。1图像开源库...

2019-09-22 12:32:37

UEFI开发探索28 – 用Windbg建立UEFI调试环境

(请保留-> 作者: 罗冰)最近的翻译计划和博客计划严重滞后。一方面是因为有两个案子在推进,业余时间也被占用;另外一方面,在尝试用windbg搭建调试环境的时候,遇到了一些阻碍。大部分情况下,我都是使用win10的虚拟机,配合UDK2018开发的。对照文档,第一次尝试就失败了。文档中建议的环境是Win 7/Win8 64位,UDK2010。搭建win7的虚拟机,安装Vs2008+...

2019-09-19 16:26:41

UEFI开发探索27 – 用Vs2015建立UEFI调试环境

(请保留-> 作者: 罗冰)我使用AppPkg进行Uefi app和UEFI oprom的开发,这样很方便生成在实际硬件中运行的代码。而在日常的开发调试,不可能有硬件环境,一般会使用UEFI中生成的模拟环境,其执行文件为SecMain.exe,是在Nt32Pkg中生成的。我一般是将生成文件拷贝到其同目录下,运行SecMain.exe,进入模拟UEFI Shell执行生成文件。当然...

2019-09-19 16:22:32

UEFI开发探索26 – UEFI下观察汇编代码

(请保留-> 作者: 罗冰)上一篇博客中遇到了奇怪的问题,明明没有使用的函数,在编译的时候竟然报错,提示使用了此函数,而且导致程序无法链接。这让我意识到,还是得建立完整的调试环境,帮助学习开发。一直以来,我调试代码的方法大概有三种:1) 打印输出。这是最常用的,也最方便的。不管是通过屏幕打印输出,还是通过串口、USB口等硬件设备打印,都能知道很多程序的内部信息;2) 观察汇编...

2019-09-19 16:17:42

UEFI开发探索25 – 图像显示(PCX)

(请保留-> 作者: 罗冰)隔离卡的界面开发中,PCX实际上用得最多。主要是因为它采用了RLE压缩,在颜色不多的情况下,能够比较小。这也逼着我使用各种工具,比如PS、ACDSEE甚至是画图软件,来调整其色彩数,以减少图像尺寸。毕竟隔离卡的ROM只有64K可用,因此常用的是256色PCX。PCX其实也支持24位真彩色,本篇中我尝试在UEFI Shell下显示24位真彩色PCX文件。...

2019-09-19 12:46:10

查看更多

勋章 我的勋章
  • 新人勋章
    新人勋章
    用户发布第一条Blink获赞超过3个即可获得
  • 持之以恒
    持之以恒
    授予每个自然月内发布4篇或4篇以上原创或翻译IT博文的用户。不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!
  • 勤写标兵Lv4
    勤写标兵Lv4
    授予每个自然周发布9篇以上(包括9篇)原创IT博文的用户。本勋章将于次周上午根据用户上周周三的博文发布情况由系统自动颁发。