16 luobing4365

尚未进行身份认证

我要认证

十多年编程经历,前5年主要开发语言是x86汇编和C/C++,开发各类OptionRom。后5年涉及一些驱动开发和App以及UEFI编程,从此更多的精力用在了团队和公司管理上。然不忘初心,仍孜孜不倦地在各技术领域钻研,其乐无穷。 合作译著《现代X86汇编语言程序设计》、《21世纪机器人》

等级
TA的排名 8w+

查看Linux下库的信息

最近在研究USB key的使用,涉及到各种CPU架构的支持。厂家提供的资料,相当的粗糙,有X86的、Arm64的和MIPS的。库名都一样,压根搞不清对应关系。在朋友的指点下,查了下Linux下对文件信息的解析方法。我觉得还是比较简单实用的,在此把操作过程记录下来。查看文件信息,可以使用file和objdump命令,后一个命令的功能相对丰富些,两者可配合使用。1 objdump命令其主要功能如下:可以使用objdump查看库文件的组成:robin@robin-virtual-mac

2020-07-25 12:52:49

UEFI开发探索63 – C与C++、汇编的调用约定

(请保留-> 作者: 罗冰 https://blog.csdn.net/luobing4365)在编写代码的时候,如果发现函数不如自己预期的运作,我的第一个反应并不是添加调试代码,或者使用调试工具。我反而更习惯于去读函数的汇编代码,查看逻辑上是否有漏洞,这都是以前开发oprom/bios汇编代码时留下的习惯。这个习惯我认为很好,有助于让我专注在代码本身。不过,由此带来了一些问题,C与汇编的函数约定,参数入栈顺序、堆栈平衡等,很难记忆。我实际上更习惯于16位时代的汇编语言,现在32/64位的..

2020-07-10 10:07:39

UEFI开发探索62-环境搭建4(总结EDK2各种版本)

(请保留-> 作者: 罗冰 https://blog.csdn.net/luobing4365)开发UEFI代码的时候,起码有近三分之一的时间,在研究各种编译环境的搭建。从Windows到Linux,x86架构到Arm架构,甚至各种不同版本的EDK2,有时候着实让人无语。之前的代码都在github上下载,速度慢得出奇,搭建好的环境一般也不想乱动。今年3月份,疫情期间,在家鼓捣着把github上与uefi相关的库,全部都导到了gitee上了。解决了下载速度的问题,总算可以不受限制地搭建开发环..

2020-07-07 15:25:18

UEFI开发探索61-VFR文件和其他资源文件2(NVRAM上存储数据)

(请保留-> 作者: 罗冰 https://blog.csdn.net/luobing4365)NVRAM全称为Non-Volatile Ram(非易失性内存) ,Legacy BIOS下这块是使用CMOS来实现的,UEFI下则可以直接在ROM中分出一部分来实现。(问题来了,在UEFI下CMOS到底怎么用的呢? 有机会再研究一下)UEFI下,对NVRAM的使用如图1所示。图 1 配置参数存储于NVRAM在上一篇博客代码的基础上,进行部分修改,将用户的选择存储于NVRAM,修改步..

2020-07-04 21:15:52

UEFI开发探索60-VFR文件和其他资源文件1(在BIOS setup上增加项)

@[toc](请保留-> 作者: 罗冰 https://blog.csdn.net/luobing4365)如何使用VFR文件,是我这一段时间比较感兴趣的课题。包括VFR文件在内,UNI文件、IDF文件,都属于资源文件。UNI文件的使用,在之前Hii的例子中,已经讨论过了。而如何使用VFR文件,一直没有涉及到。接下来的几篇博客,将以修改BIOS Setup(当然,还是以OvmfPkg编译的镜像来做BIOS文件)为例,演示如何使用VFR文件和相关的资源文件。图1 OVMF镜像的B..

2020-06-27 18:53:49

UEFI开发探索59-UDK Debugger Tool调试Firmware

(请保留-> 作者: 罗冰 https://blog.csdn.net/luobing4365)这篇博客使用的是Windbg+UDK Debugger Tool调试代码,在Windows10下操作,具体搭建方法可以查看以前的博客。在最近的开发中,因为碰到不少问题,对UEFI的调试方法更为深入了。在第39篇博客中留下的问题(7 小尾巴),也有了解答,后续看什么时候再把解答补上。虽然在日常开发中,很少直接用到固件,但在学习中,需要跟踪UEFI每个阶段的工作,直接使用OvmfPkg编译后的F..

2020-06-23 22:29:43

UEFI开发探索58-UTF-8编码问题

(请保留-> 作者: 罗冰 https://blog.csdn.net/luobing4365)这篇要记录的知识,实际上不限于UEFI编程,在其他编程上也一样会遇到。只是因为最近这段时间,沉迷于国产机器开发的项目,频繁地调试UEFI代码,遇到了这些问题,我觉得应该有普遍性,姑且记录下来。在日常的编程中,特别是处理字符串以及显示汉字的时候,会被各种编码搞得糊里糊涂。毕竟编码是给计算机程序看的,记忆起来还是比较费事,即使当时搞清楚了,过一段时间不用,好像又会混淆。1历史计算机从美国发...

2020-05-23 11:51:27

UEFI开发探索57-如使用最新的EDK2搭建编译环境

(请保留-> 作者: 罗冰 https://blog.csdn.net/luobing4365)最近浏览github上edk2的发布代码,注意到一个问题,现在发布的方式有点不一样了。之前过一段时间,就会发布一个完整的打包源代码,比如2018年3月发布的UDK2018,我一直都用这个开发的。不过,我没有找到UDK2019,更别说UDK2020了。为什么我关注这个呢?主要是因为这种打好包的源码,整理得比较好,也比较稳定,并且还提供完整的API文档。另外,如果直接git EDK2的主线,编程时会..

2020-05-15 22:44:10

UEFI开发探索56-使用WSL编译Arm架构的UEFI镜像

(请保留-> 作者: 罗冰 https://blog.csdn.net/luobing4365)这篇本想讨论USB的,学习过程中不小心迷上了WSL,又正好想在树莓派上折腾点UEFI的软件,顺理成章地就用WSL搭建了Arm架构的编译环境。从结论来说,还不错,省得打开虚拟机了,编译速度也很快,有空把X86架构的编译环境也在WSL上搭建起来。1搭建WSL个人比较喜欢用Ubuntu18.04,很多软件都在上面写的。搭建方法就不具体描述了,可以参考我的另外一篇博客:https://bl...

2020-05-14 10:06:51

安装WSL(Ubuntu18.04)和开发环境

(请保留-> 作者: 罗冰 https://blog.csdn.net/luobing4365)这几天考虑把UEFI的开发环境,移到WSL下,省去在虚拟机中开发的麻烦。当然,至于如何使用模拟器调试UEFI代码,那是另外一个问题,找时间看看是否能解决,至不济可以使用VirtualBox或者Qemu配合调试。WSL我已经用了一段时间,主要用来熟悉vim和python的用法,使用也不频...

2020-04-25 17:02:56

使用gitee下载github项目

(请保留-> 作者: 罗冰 https://blog.csdn.net/luobing4365)这段时间在写UEFI的代码,总需要从github上下载东西。众所周知的原因,github下载非常的慢,有时甚至只有8Kb/s。在这个外网速度动辄百兆的时代,这种下载速度也是比较感人了。也试过修改hosts,修改DNS,没什么作用。最近实在忍受不了了,我用gitee把需要下载的项目,从g...

2020-04-21 14:58:47

酒后众生态

都是席间听来的故事,笑笑无妨。1 朋友A身材高大,孔武有力,一向对自己臂力颇有自信。平时倒是很儒雅,也不怎么贪杯。一日,外地客户来访,A负责招待,一不小心喝多了。酒酣耳热,一群人嚷着去KTV唱歌。去的是A常去的地方,KTV老板也很熟,很热情地招呼。A兴致勃勃,要给新认识的朋友演示演示臂力有多强。大家怎么都拦不住,KTV房梁不高,A伸手就抓住,把自己提起来了,开始表演引体向上。十个引...

2020-04-15 09:53:53

有趣的黑客帝国效果

我想把博客的文章,同步在知乎上发表,今天上午就折腾这件事情了。知乎上有个背景展示的功能,可以把自己喜欢的图贴上去,也算是一种个性展示。放什么好呢?平常的window10,启动桌面的时候,会自动替换一些很壮观的图案。包括星球、雪山、深林等,都很漂亮,也很适合作为背景。不过,这种太平常了,也体现不出技术博客的特质。而且,这些图片应该是微软花钱买的,不知道会不会有版权问题。对了,黑客...

2020-04-11 12:37:30

UEFI开发探索55 – UEFI与网络5(IPv6)

(请保留-> 作者: 罗冰 https://blog.csdn.net/luobing4365)本篇开始编写IPV6的代码。因为一直使用的网络调试助手不支持IPV6的通信,只好花了点时间,自己把相关的IPV6的代码(windows和linux下)实现了一遍。1搭建IPV6的通信环境由于现在基本上还在使用IPV4的网络,特别是家庭中,很少使用支持IPV6的路由器。所以,如果需...

2020-04-10 22:33:21

UEFI开发探索54 – UEFI与网络4(IPv4)

(请保留-> 作者: 罗冰)本篇主要讨论怎么使用StdLib的库函数编写TCP4的代码。上一篇中直接使用UEFI提供的TCP4 Protocol编写代码,比较复杂,需要自己重新构建所有代码。我们还是希望能够直接使用标准的Socket库来编程,这样可以直接复用以前编写的Socket代码,减少编程的工作量。1 BSD Socket接口StdLib中提供的是标准BSD Socket...

2020-04-10 15:52:53

UEFI开发探索53 – VS2015调试UEFI代码(续第27篇)

(请保留-> 作者: 罗冰)在开发网络代码的时候,光用Print打印信息不足以满足开发要求,必须源代码级别的跟踪。我所测试的环境,大部分是在TianCore的模拟环境下。因此,如何在这个环境中,实现源码级跟踪,成为了很迫切的需求。当然,我可以在Linux下开发,使用Qemu+gdb的方式来调试。不过,每次都要编译好,然后拷贝到镜像文件中,再启动调试,略嫌麻烦。我还是希望能在Windo...

2020-04-05 21:08:44

UEFI开发探索52 – UEFI与网络3(UEFI TCP4)

(请保留-> 作者: 罗冰)搭建好网络测试环境之后,可以着手进行网络编程了。UEFI下提供了相应的Protocol,可以进行TCP和UDP的编程,而且针对IPv4和IPv6都提供了相应的支持。另外,也可以通过StdLib中封装好的Socket接口进行编程。如果所有的编程方式都实现一遍,博客的篇幅就太长了。我原计划是用5篇左右的博客,把网络编程探索完的,因此,我准备用UEFI Pr...

2020-04-03 16:01:36

UEFI开发探索51 – UEFI下的打印函数

(请保留-> 作者: 罗冰)原计划的50篇博客,终于完成了。可惜的是,现有的篇幅无法把最初设想的内容全部覆盖。因此,开发探索系列还会继续写下去,既然原定目标50篇已经达成,新的目标篇数就不设定了。只针对我感兴趣的各方面的内容,继续探索。在日常的开发中,总会用到各种打印(print)函数。UEFI下的打印函数,其格式有点奇怪,和Windows及Linux下的print函数不大相同。而且...

2020-04-01 15:30:56

UEFI开发探索50 – UEFI与网络2

(请保留-> 作者: 罗冰)3在VirtualBox中使用网络在UEFI开发探索系列博客的第48篇中,我介绍了如何在VirtualBox中搭建UEFI Shell。本节就在这篇博客的基础上,让VirtualBox下的UEFI Shell有访问网络的功能。1)安装网络驱动和网络协议驱动我使用的是VirtualBox6.1.4,其虚拟网卡为Intel Pro/1000MT D...

2020-03-26 21:12:47

UEFI开发探索49 – UEFI与网络1

(请保留-> 作者: 罗冰)UEFI提供了非常完整的TCP/IP网络协议栈,开发人员甚至可以在UEFI上开发自己的Web服务器。其网络协议栈如图1所示:图1 UEFI的网络协议栈1) 数据链路层:ARP(Address Resolution Protocol):地址转换协议,将IP地址转换为物理的MAC地址;MNP(Managed Network Protocol):提...

2020-03-22 21:47:04

查看更多

勋章 我的勋章
  • 签到新秀
    签到新秀
    累计签到获取,不积跬步,无以至千里,继续坚持!
  • 新人勋章
    新人勋章
    用户发布第一条blink获赞超过3个即可获得
  • 持之以恒
    持之以恒
    授予每个自然月内发布4篇或4篇以上原创或翻译IT博文的用户。不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!
  • 勤写标兵Lv4
    勤写标兵Lv4
    授予每个自然周发布9篇以上(包括9篇)原创IT博文的用户。本勋章将于次周周三上午根据用户上周的博文发布情况由系统自动颁发。
  • 学习力
    学习力
    《原力计划【第二季】》第一期主题勋章 ,第一期活动已经结束啦,小伙伴们可以去参加第二期打卡挑战活动获取更多勋章哦。
  • 原力新人
    原力新人
    在《原力计划【第二季】》打卡挑战活动中,成功参与本活动并发布一篇原创文章的博主,即可获得此勋章。