双向促进的成长之路——从BMC实际开发经验谈日常工作与学习

从事BMC领域开发工作有段时间了。回想刚入职时的迷茫与吃力,现在对于工作的感受则更为复杂。仍然算不上精通,但也掌握了不少知识技能,日常工作中取得了一些成绩;同时也有遇到疑难问题时的无所适从,基础知识的不牢固,想要更进一步提升自己的急迫感。这里就结合自己的实际经验谈谈自己对工作和学习的体会。

BMC本身可以构成一个独立的嵌入式系统,其功能是对服务器系统进行监控和管理。而从整个服务器的角度来看,BMC系统又是服务器整体系统的一部分,除了自身的功能之外,与服务器其他部分的交互也是必不可少的。BMC系统除了自身具备了构成计算机系统的主要要素,又通过多种硬件链路与其他部分进行连接。这样在开发的过程中,既涉及IPMI规范等服务器领域的专有知识,对于计算机系统的基础知识也比较全面地涵盖了;既有纯软件功能的开发,硬件适配与调试也是必不可少;既有只依靠自身系统,自己闷头开发就可以的时候,也有要与其他领域交互,需要协调沟通后才能确定的情况。在我看来,成为一名合格的BMC工程师还是不简单的。

因此刚入职的时候感到的是吃力和迷茫。常常是领导分配的一项任务,完全不知道如何入手。不懂IPMI规范怎么用,不知道BMC和BIOS、BMC和CPLD如何交互,许久不用的C语言也是生了锈一样,一段代码要写上好久。无论是功能开发还是问题处理,进度都很慢,好不容易做完了也仍然是一知半解。

经过了一段很长时间的艰难日子,在领导的指点和自己的思考之后,终于找到了适合自己的提升之路。

首先是把荒废了许久的C语言重新捡起来。虽然大学时C语言成绩很好,但多年不用,已经忘的差不多了。买来《C Primer Plus》这本书,利用每天的闲暇时间一页一页地仔细研读,把基础的东西真正掌握牢固。而实际工作也是最好的实践。无论是阅读别人的代码还是自己编写代码,都可以帮助自己更深入地理解和运用书中的理论知识。在实现功能的同时,还要注意编码的规范性。一两个月下来,自己阅读代码变得很顺利,独立开发一项比较复杂的功能也不那么打怵了。

同时需要学习的是IPMI规范这一BMC开发的核心文档,很多开发内容都是要遵循IPMI规范的。先是大概学习了一些常用的部分,然后在开发中进行实践。比如SDR,分为阈值型和离散型,监控物理传感器的同时又如何和SEL日志联系起来……如果只是去死读文档,很多内容仍然无法明白。但是通过实际增加一个SDR,再对照文档去查看,就会渐渐明白是怎么一回事了。

还有与其他领域的交互以及服务器相关的其他知识。比如BMC对服务器的CPU,内存等部件的监控,离不开BIOS;而控制风扇转速,获取一些异常告警,又要靠CPLD的信息;需要了解如何通过I2c访问设备;需要查阅手册了解如何读取芯片的寄存器……这些内容,则是多做多练,遇到一个解决一个,做好积累。常用的内容其实并不算多,一段时间下来就基本清楚了。

通过以上方式的学习,应对日常的工作可以说是足够了。但是偶尔遇到一些疑难的问题,比如涉及到Linux内核,涉及到网络,由于缺乏相关基础知识,仍然无法独自解决。这些基础知识包括汇编语言、操作系统、计算机网络等等,在日常工作中也许用的不多,但却是支撑BMC系统正常运行的基础。不是科班出身,就只能靠自己去补足这些短板。在当前的工作中,一方面是要在遇到这些疑难问题的时候去请教同事,搞清楚来龙去脉,另一方面是利用自己的业余时间,系统地学习这些内容。

接下来的工作中仍然面临挑战。转入OpenBMC开发,需要学习之前没有用过的C++,代码架构变了,编程的思路也不一样了,现在也许才刚刚入门,仍然要度过一段艰难的日子。我想,技术工作中不仅需要付出,也需要对技术的一份热爱。工作中发现的短板与漏洞,可以通过业余的学习加以补足;而业余学习中的收获,也能帮助工作中更好地完成任务,解决问题。工作中有单调重复的时候,有进展艰难的时候,学习中有枯燥乏味的时候,有学无所用的时候,但这些都只是一时的。保持对技术的热爱,坚持下去,让自己始终走在工作与学习相互促进的成长之路上。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值