飞腾D2000接入外部时钟HYM8563芯片调试

  • 硬件平台介绍

本平台使用优数科技的飞腾D2000+X100桥片组成,内存采用2个16G组成32G,单M.2固态硬盘4TB,操作系统安装麒麟V10桌面版,板卡如下图:

因为要配置Bios固件的ACPI表,所以需要先查看硬件设计原理图,需要先找到D2000与HYM8563芯片是如何连接的,我这里只截取部分相关的原理图:

HYM8563芯片接线图

D2000与HYM8563接线图

由上面的原理图我们了解到,D2000通过I2C0与HYM8563进行连接,这个信息非常重要,我们需要在bios固件源码中找到i2c.dsl文件并进行修改。

  • Bios固件配置ACPI表
  1. 首先进入飞腾提供的Ubuntu18.04虚拟机交叉编译环境,我这里使用VMware Workstatin Pro 17.5版本虚拟机软件,具体如何使用虚拟机软件此处不作介绍,若不熟悉,请自行去学习一下VMware Workstatin 软件的使用。进入虚拟机Ubuntu18.04系统界面如下图:
  1. 飞腾D2000 Bios固件源码在虚拟机"/home/ubuntu/work"目录下,ft_bios_32G目录下面edk2-for-support就是Bios固件源码,image_fix_0.6_for_1.74目录是bios固件打包工具。ft_bios_32G目录截图如下图:
  1. 由于我们的RTC实时时钟芯片HYM8563接到D2000的I2C0接口,故我们需要在I2C0添加我们的HYM8563设备相关信息,进入"edk2-for-support/PhytiumPkg/Phytium2000Pkg/Drivers/AcpiTables/Dsdt"目录,找到I2c.asl文件,鼠标左键选中I2c.asl文件,单击鼠标右键弹出右键菜单,选择"Open With Text Editor"进行编辑。

Dsdt目录图

鼠标操作使用文本编辑器打开步骤图

I2c.ask文本编辑图

  1. 在I2c.ask文本编辑中找到i2c0相关的部分,找到i2c0部分的结尾处,添加图片红线框起来的代码,如下图:
  1. 添加好HYM8563芯片相关描述后,将I2c.asl文件进行保存后在退出编辑器。
  2. 然后使用终端定位到edk2-for-support目录,先在终端执行"source /etc/profile"刷新全局配置,切换到交叉编译环境;
  1. 然后在终端中输入"./buildD2000.sh init"命令进行Bios固件源码初始化;
  1. 等待代码初始化完成后,执行"./buildD2000.sh d"命令执行D2000固件Bios源码编译,待编译完成即可;
  1. 在"edk2-for-support"目录找到"biosD2000"文件即可,看看文件修改时间是否符合当前编译的时间,若是刚刚编译的时间,则证明Bios编译成功;
  1. 拷贝"biosD2000"文件拷贝到"edk2-for-support/image_fix_0.6_for_1.74"目录下,若文件已经存在则进行替换;
  1. 在image_fix_0.6_for_1.74目录下右键打开终端,输入"ln -snf biosD2000 bl33_new.bin"命令;
  1. 最后在终端输入"./my_scripts/image-fix.sh"命令回车执行,等待打包完成,打包工具根目录查看"fip-all.bin"是否存在,是否是刚刚生成的时间。若是则说明打包成功。将fip-all.bin文件拷贝指定地方进行烧录即可。
  • HYM8563驱动修改支持ACPI描述
  1. 烧录成功后,开机进入系统,打开终端,首先使用"i2cdetect -l"查看一下所有i2c端口,再使用"sudo i2cdetect -y 0"分别扫描所有i2c端口,我这里首先使用"sudo i2cdetect -y 0"指令就扫描到i2c0有设备,0x51地址返回51,如下图:

说明:0x51地址显示"--"表示该i2c没有接设备;显示"51"表示i2c与设备连接正常,没有驱动;显示"UU"表示i2c与设备连接正常且驱动正常。

  1. 由于HYM8563S芯片的地址是0x51,故此大概率就是i2c0连接的RTC设备。我们先认为i2c0就是接rtc设备的接口了。0x51地址返回51,没有返回UU说明我们ACPI表配置正确,麒麟V10系统正确识别到设备,但是没有安装好驱动。我们就先排查驱动问题;
  2. 麒麟V10系统自带Hym8563芯片的驱动。然后使用终端进入到"/lib/modules/$(uname -r)/kernel/drivers/rtc"目录,再使用"ls"指令查询驱动文件,看到有rtc-hym856ko文件,确实自带hym8563驱动。内核驱动目录如下图:
  1. 使用"modinfo rtc-hym8563.ko"查看到了自带驱动只支持设备树配置。
  1. 上传rtc-hym8563文件夹到设备的麒麟V10系统进行编译并安装,到"/home/yskj/x100/rtc-hym8563",然后在终端中输入make进行编译。如下图:
  1. 编译完成后,看到rtc-hym8563目录下面有rtc-hym8563.ko即可。然后在终端中输入"sudo ./install.sh"命令执行驱动安装。执行结果如下:

Install.sh脚本如下:

  1. 安装驱动成功后,首次必须设置RTC芯片初始时间,设置步骤如下图:
  1. 修改hwclock -r强制调用rtc1,终端执行"sudo ./hwclock-force.sh"。执行结果如下:

hwclock-force.sh脚本内容如下:

  1. 安装set-default-rtc.service服务,终端输入"sudo ./set-default-rtc-service.sh"指令执行安装,终端界面如下图:

服务安装成功后,脚本会自动启动服务,启动成功后kylin系统界面右下角的时间会自动更新,界面时间如下图:

set-default-rtc-service.sh脚本内容如下图:

相关推荐
殷忆枫2 小时前
基于STM32+OV2640+ESP8266的无线图像采集系统设计与实现
stm32·单片机·嵌入式硬件
sukalot5 小时前
windows网络适配器驱动开发-WiFiCx Wi-Fi 7 功能要求(二)
windows·驱动开发
qq_283720056 小时前
STM32F103 GPIO 端口配置寄存器 CRL / CRH 详解
stm32·单片机·嵌入式硬件
振南的单片机世界6 小时前
NVIC:Cortex-M内核的“中断CPU”
stm32·单片机·嵌入式硬件
KaifuZeng7 小时前
运算放大器学习笔记-虚短和虚断
单片机·嵌入式硬件·运算放大器
智者知已应修善业8 小时前
【用D触发器组成000-001-010-011-100】2025-6-7
驱动开发·经验分享·笔记·硬件架构·硬件工程
硅农程序猿8 小时前
芯片设计中的门级仿真(GLS):从零延迟验证到 SDF 时序反标
嵌入式硬件·硬件架构·risc-v·芯片
编程圈子8 小时前
电机驱动开发学习22. 霍尔电角度标定(自动/手动标定与Flash固化)
驱动开发·学习