移动网站开发技术,合肥医疗网站建设,百度小说免费阅读,响应式布局什么意思文章目录 0. env1. 软件2. 硬件 10. 需求1. 硬件2. 软件 20. DatasheetCPURTC 30. 调试步骤1. 硬件环境搭建2. UEFI 开发环境搭建3. 修改步骤1. UEFI 中使能RTC驱动、配置RTC信息等1.1 使能RTC驱动1.2 修改RTC对应的IIC配置信息1.3 解决驱动冲突1.4 验证波形 2. 修改对应RTC驱动… 文章目录 0. env1. 软件2. 硬件 10. 需求1. 硬件2. 软件 20. DatasheetCPURTC 30. 调试步骤1. 硬件环境搭建2. UEFI 开发环境搭建3. 修改步骤1. UEFI 中使能RTC驱动、配置RTC信息等1.1 使能RTC驱动1.2 修改RTC对应的IIC配置信息1.3 解决驱动冲突1.4 验证波形 2. 修改对应RTC驱动适配SD30771.1 修改IIC3的引脚复用1.2 允许SD3077的写使能功能1.3 验证时间 4. 验证 90. 附件1. CPU 参考手册2. RTC 参考手册 0. env
1. 软件 开发环境ubuntu1804 toolchain飞腾GCC4.9 UEFIedk2-core-3.5 运行环境kylin v10 | kernel-5.4 | aarch64 | arm64 2. 硬件 CPU飞腾 腾锐D2000 RTCSD3077 硬件连接CPU(I2C3) — RTC 10. 需求
1. 硬件 RTC 这路的IIC要通信正常 2. 软件 UEFI 中完成RTC更新 linux中可手动更新date 20. Datasheet
CPU 腾锐D2000软件编程手册-V1.1.pdf // 官网下载略 RTC SD3077datasheetv3.4.pdf // 官网下载参考附件 30. 调试步骤
1. 硬件环境搭建 D2000 核心板 通过I2C3接口外接RTC SD3077 RTC供电3V3 CPU可单独上下电不影响RTC供电 2. UEFI 开发环境搭建 ubuntu1804 搭建EDK2的环境飞腾适配过的版本 安装对应toolchain飞腾GCC4.9 制作bootloader的工程略 3. 修改步骤
1. UEFI 中使能RTC驱动、配置RTC信息等
vi PhytiumPkg/PhytiumD2000Pkg/PhytiumD2000Pkg.dsc1.1 使能RTC驱动 !if $(BOARD) DEMODEFINE HDA_SUPPORT TRUE
- DEFINE SD3068 FALSEDEFINE SD3068 TRUEremark: 1. 使能这里的SD3068 从而配置I2C slave addr 为0x32 配置RTC使用的I2C controller Base Address 为0x28009000 即I2C3的控制器 1. 如果I2C_RTC_USE没使能使能后即可使用RTC-efi53 DEFINE I2C_RTC_USE TRUE1.2 修改RTC对应的IIC配置信息 使能SD3068后 1. 则RTC使用的slave address修改为0x32529 !if $(SD3068) TRUE530 gPhytiumPlatformTokenSpaceGuid.PcdRtcI2cControllerSlaveAddress|0x32531 !else532 gPhytiumPlatformTokenSpaceGuid.PcdRtcI2cControllerSlaveAddress|0x68533 !endif2. 默认使用的是I2C0、I2C1的控制器来操作RTC实际使用的是I2C3所以这里的RTC使用的I2C controller的基质要修改为I2C3即0x28009000 // 参考手册说明# RTC I2C Controller Register Base Address and Speed#
...
- gPhytiumPlatformTokenSpaceGuid.PcdRtcI2cControllerBaseAddress|0x28007000 // IIC1 飞腾空出了I2C0、I2C1gPhytiumPlatformTokenSpaceGuid.PcdRtcI2cControllerBaseAddress|0x28009000 // IIC3 实际使用的是I2C3使能I2C_RTC_USE后 1. 则使用的事Ds1339_RtcLib.inf对应驱动./PhytiumPkg/PhytiumD2000Pkg/Library/Ds1339_RtcLib/253 # Board Specific RealTimeClock Library254 !if $(I2C_RTC_USE) TRUE255 RealTimeClockLib|$(PLATFORM_PACKAGE)/Library/Ds1339_RtcLib/Ds1339_RtcLib.inf256 !else257 RealTimeClockLib|$(PLATFORM_PACKAGE)/Library/XgeneRealTimeClockLib/XgeneRealTimeClockLib.inf258 !endif259 TimeBaseLib|EmbeddedPkg/Library/TimeBaseLib/TimeBaseLib.inf1.3 解决驱动冲突 驱动冲突占用了0x28000000,0x5000的位置正好囊括了i2c3的地址 1. 如果不用也可以不使能该功能--- a/PhytiumPkg/PhytiumD2000Pkg/Drivers/FixGcdDxe/FixGcdDxe.cb/PhytiumPkg/PhytiumD2000Pkg/Drivers/FixGcdDxe/FixGcdDxe.c-54,18 54,18 InitializeFixGcdDxe ();ASSERT_EFI_ERROR (Status);- Status gDS-AddMemorySpace (
- EfiGcdMemoryTypeReserved,
- 0x28008000, 0x5000,
- EFI_MEMORY_UC
- );
- ASSERT_EFI_ERROR (Status);//Status gDS-AddMemorySpace (// EfiGcdMemoryTypeReserved,// 0x28008000, 0x5000,// EFI_MEMORY_UC// );^M//ASSERT_EFI_ERROR (Status);- Status gDS-SetMemorySpaceAttributes (
- 0x28008000, 0x5000,
- EFI_MEMORY_UC
- );
- ASSERT_EFI_ERROR (Status);//Status gDS-SetMemorySpaceAttributes (// 0x28008000, 0x5000,// EFI_MEMORY_UC// );//ASSERT_EFI_ERROR (Status);return Status;}1.4 验证波形 编译后测量I2C3这一路的信号正常会产生RTC读写信号 2. 修改对应RTC驱动适配SD3077 使用上述修改则需要修改的驱动为./PhytiumPkg/PhytiumD2000Pkg/Library/Ds1339_RtcLib/* 1.1 修改IIC3的引脚复用 rtc-efi不需要依赖ACPI配置RTC管脚引用可以直接放在驱动中执行。I2C3 管脚复用信息如下 控制域…Func2hdt_mb_done_state_pad…i2c_3_sclhdt_mb_fail_state_pad…i2c_3_sda I2C3 引脚功能配置寄存器 偏移位域说明0x0204[3 : 2]控制 hdt_mb_done_state_pad 的上下拉0x0204[1 : 0]控制 hdt_mb_done_state_pad 的复用功能0x0208[31 : 30]控制 hdt_mb_fail_state_pad 的上下拉0x0208[29 : 28]控制 hdt_mb_fail_state_pad 的复用功能 实际使用I2C3则需要复用 这两个pin为Func2 即 SCL : 0x28180000 0x0204 : [3:0] : 写入0010 SDA : 0x28180000 0x0208 : [31:28] : 写入0010 在源码驱动初始化程序段中添加管脚复用 vi PhytiumPkg/PhytiumD2000Pkg/Library/Ds1339_RtcLib/Ds1339_RtcLib.c1. 在LibRtcInitialize中添加服用程序 -980,8 1016,20 LibRtcInitialize (mRtcBase PcdGet64 (PcdRtcI2cControllerBaseAddress);mSlaveaddress PcdGet32 (PcdRtcI2cControllerSlaveAddress);/* I2C3 :SCL : 0x28180000 0x0204 : [3:0] : Pll FUNC2SDA : 0x28180000 0x0208 : [31:28] : Pll FUNC2*/Reg MmioRead32(0x28180204);MmioWrite32(0x28180204, (Reg (~(0xff 0))) | (0x22 0));Reg MmioRead32(0x28180208);MmioWrite32(0x28180208, (Reg (~(0xff 28))) | (0x22 28));
...1.2 允许SD3077的写使能功能 3077又写保护功能要想在操作系统中正常使用hwclock之类的命令需要提前禁止写保护功能(客户要求)关于3077芯片写保护的禁止与使能说明如下 2.1 寄存器说明 3. 按文档说明做如下设置禁止写保护功能 先配置WRTC1 0x10 赋值 1xxx xxxx // 实际使用值为0x80 再配置WRTC2,3 0x0f 赋值 1xxx x1xx // 厂商建议值0xff实际使用值为0x84 修改源码加入上述配置寄存器禁止写保护的代码段 vi PhytiumPkg/PhytiumD2000Pkg/Library/Ds1339_RtcLib/Ds1339_RtcLib.c#ifdef RTC_FIX/* I2C3 :SCL : 0x28180000 0x0204 : [3:0] : Pull FUNC2SDA : 0x28180000 0x0208 : [31:28] : Pull FUNC2*/Reg MmioRead32(0x28180204);MmioWrite32(0x28180204, (Reg (~(0xff 0))) | (0x22 0));Reg MmioRead32(0x28180208);MmioWrite32(0x28180208, (Reg (~(0xff 28))) | (0x22 28));if(mSlaveaddress CONFIG_RTC_SD3068){SD3068EnableRegWrite (mSlaveaddress);}
#endif#ifdef RTC_FIX
VOID
EFIAPI
SD3068EnableRegWrite (IN UINT32 mSlaveaddress)
{UINT8 Buffer;Buffer rtc_read (0x10, mSlaveaddress);Buffer | (1 7);rtc_write (0x10, Buffer, mSlaveaddress);Buffer rtc_read (0x0f, mSlaveaddress);Buffer | (1 2);Buffer | (1 7);rtc_write (0x0f, Buffer, mSlaveaddress);}
#endif /* ifdef RTC_RIX */1.3 验证时间 启动到操作系统后查看内核log看一下rtc-efi打印 参考log rootkylin-pc:~# dmesg | grep rtc
[ 1.087034] rtc-efi rtc-efi: registered as rtc0
[ 1.093138] rtc-efi rtc-efi: setting system clock to 2024-04-12T12:13:51 UTC (1712924031)4. 验证 启动到操作系统使用date修改系统时间使用hwclock修改RTC时间reboot操作系统查看当前系统时间是否与RTC时间保持一致即验证RTC功能是否正常设备下电一段时间后重新上电上电后再次确认时间 参考log如下 rootkylin-pc:~# date
1970年 01月 01日 星期四 08:00:19 CST
rootkylin-pc:~#
rootkylin-pc:~# date -s 2024-04-13 11:11:00
2024年 04月 13日 星期六 11:11:00 CST
rootkylin-pc:~#
rootkylin-pc:~# hwclock -w
rootkylin-pc:~#
rootkylin-pc:~# hwclock -r
2024-04-13 11:11:14.21232508:00
rootkylin-pc:~#
rootkylin-pc:~# reboot// rebootrootkylin-pc:~#
rootkylin-pc:~# date
2024年 04月 13日 星期六 11:13:12 CST
rootkylin-pc:~# // 设备断电几分钟后再次上电。RTC保持供电rootkylin-pc:~#
rootkylin-pc:~# date
2024年 04月 13日 星期六 11:27:48 CST
rootkylin-pc:~#
rootkylin-pc:~# dmesg | grep rtc
[ 1.091921] rtc-efi rtc-efi: registered as rtc0
[ 1.098025] rtc-efi rtc-efi: setting system clock to 2024-04-13T11:27:26 UTC (1713007646)
rootkylin-pc:~# 90. 附件
1. CPU 参考手册 略 2. RTC 参考手册 https://www.whwave.com.cn/cpscxz