比声音卡顿还难调试的问题

固件开发:比声音卡顿更难调试的问题
在开发UEFI固件时,遇到一个导致系统突然断电的难题,表现为调试信息在SD卡启动后突然停止。经过排查,发现是电源管理集成电路(PMIC)配置错误,修复后成功解决问题。固件开发需要深入硬件知识,其错误可能导致严重后果。

对于编写应用软件的程序员来说,内存被踩(变量被意外覆盖)是很难调试的问题。

对于操作系统软件开发者来说,应用层的问题都简单许多,因为应用程序的问题再大也是发生在一个进程里,不至于影响整个系统。

今年上半年,格蠹在准备幽兰的系统镜像时,遇到声音子系统工作不好,花了很多时间把这个问题解决好后,我写了一篇文章,叫《比内存被踩还难调试的问题》。

a396a6d8c87c68a296aed184d338d388.png

最近几个月,格蠹正在进行一个代号为“子游”的项目。这个项目的目标是把UEFI运行在幽兰上(Enable UEFI on Ulan,EUU)。幽兰本来是使用u-boot做内核的loader。u-boot具有短小精悍的优点,在arm生态中很流行。但是与UEFI相比,u-boot缺少太多先进特征,比如缺少动态的模块加载能力,缺少可以与用户交互的GUI界面等。

子游项目是以开源的edk2-rk3588项目为基础:

https://github.com/edk2-porting/edk2-rk3588

这个开源项目的目标就是为RK3588平台开发基于EDK2的UEFI固件(EDK2 UEFI firmware for Rockchip RK3588 platforms)。EDK2是Intel开源出来的一台UEFI实现,以前主要是用在x86生态中。

子游项目最初的问题是访问github速度很慢,而这个项目又包含很多子项目,所以花了些冤枉时间在补齐缺少的子项目文件上。

子游项目的开发环境就是幽兰代码本,使用GNU工具链编译。编辑代码则用VS Code。对于EDK2这样体量的项目,在幽兰上可以非常轻松的进行构建,发出build命令后,几秒钟后就完成编译、链接并且自动产生镜像文件了。

5824+1 records in
5824+1 records out
5964288 bytes (6.0 MB, 5.7 MiB) copied, 0.0728761 s, 81.8 MB/s
+ cp /gewu/edk2-rk3588/workspace/RK3588_NOR_FLASH.img /gewu/edk2-rk3588/
+ set +x
Build done: RK3588_NOR_FLASH.img

最初,我们使用瑞芯微的工厂工具(rkdevtool)把编译好的镜像刷到幽兰的NOR FLASH中,但是速度较慢,而且偶尔有错误发生。于是,我们改为使用SD

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值