当前位置: 首页 > news >正文

杭州网站 建设x网站免费模板免费下载

杭州网站 建设,x网站免费模板免费下载,页面跳转页面紧急通知,做网站该去哪找客户文章目录 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. env
    • 1. 软件
    • 2. 硬件
  • 10. 需求
    • 1. 硬件
    • 2. 软件
  • 20. Datasheet
    • CPU
    • RTC
  • 30. 调试步骤
    • 1. 硬件环境搭建
    • 2. UEFI 开发环境搭建
    • 3. 修改步骤
      • 1. UEFI 中使能RTC驱动、配置RTC信息等
        • 1.1 使能RTC驱动
        • 1.2 修改RTC对应的IIC配置信息
        • 1.3 解决驱动冲突
        • 1.4 验证波形
      • 2. 修改对应RTC驱动,适配SD3077
        • 1.1 修改IIC3的引脚复用
        • 1.2 允许SD3077的写使能功能
        • 1.3 验证时间
    • 4. 验证
  • 90. 附件
    • 1. CPU 参考手册
    • 2. RTC 参考手册


0. env

1. 软件

开发环境:ubuntu1804
toolchain:飞腾GCC4.9
UEFI:edk2-core-3.5
运行环境:kylin v10 | kernel-5.4 | aarch64 | arm64

2. 硬件

CPU:飞腾 腾锐D2000
RTC:SD3077
硬件连接:CPU(I2C3) — RTC


10. 需求

1. 硬件

RTC 这路的IIC要通信正常

2. 软件

UEFI 中完成RTC更新
linux中可手动更新date


20. Datasheet

CPU

腾锐D2000软件编程手册-V1.1.pdf // 官网下载:略

RTC

SD3077+datasheetv3.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.dsc
1.1 使能RTC驱动
 !if $(BOARD) == "DEMO"DEFINE HDA_SUPPORT             = TRUE
-  DEFINE SD3068                  = FALSE
+  DEFINE SD3068                  = TRUE

remark: 1. 使能这里的SD3068,
从而配置I2C slave addr 为:0x32
配置RTC使用的I2C controller Base Address 为:0x28009000 即I2C3的控制器

1. 如果I2C_RTC_USE没使能,使能后即可使用RTC-efi53   DEFINE I2C_RTC_USE             = TRUE
1.2 修改RTC对应的IIC配置信息
  1. 使能SD3068后
1. 则RTC使用的slave address修改为:0x32529 !if $(SD3068) == TRUE530   gPhytiumPlatformTokenSpaceGuid.PcdRtcI2cControllerSlaveAddress|0x32531 !else532   gPhytiumPlatformTokenSpaceGuid.PcdRtcI2cControllerSlaveAddress|0x68533 !endif
2. 默认使用的是I2C0、I2C1的控制器来操作RTC;实际使用的是I2C3,所以这里的RTC使用的I2C controller的基质要修改为I2C3,即0x28009000 // 参考手册说明# RTC I2C Controller Register Base Address and Speed#
...
-  gPhytiumPlatformTokenSpaceGuid.PcdRtcI2cControllerBaseAddress|0x28007000		// IIC1 飞腾空出了I2C0、I2C1
+  gPhytiumPlatformTokenSpaceGuid.PcdRtcI2cControllerBaseAddress|0x28009000		// IIC3 实际使用的是I2C3

在这里插入图片描述

  1. 使能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.inf
1.3 解决驱动冲突

驱动冲突,占用了0x28000000,+0x5000的位置,正好囊括了i2c3的地址

1. 如果不用也可以不使能该功能--- a/PhytiumPkg/PhytiumD2000Pkg/Drivers/FixGcdDxe/FixGcdDxe.c
+++ b/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的引脚复用
  1. rtc-efi不需要依赖ACPI配置RTC,管脚引用可以直接放在驱动中执行。
  2. I2C3 管脚复用信息如下:
控制域Func2
hdt_mb_done_state_padi2c_3_scl
hdt_mb_fail_state_padi2c_3_sda
  1. 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

  1. 在源码驱动初始化程序段中添加管脚复用
vi PhytiumPkg/PhytiumD2000Pkg/Library/Ds1339_RtcLib/Ds1339_RtcLib.c
1. 在LibRtcInitialize中添加服用程序@@ -980,8 +1016,20 @@ LibRtcInitialize (mRtcBase      = PcdGet64 (PcdRtcI2cControllerBaseAddress);mSlaveaddress = PcdGet32 (PcdRtcI2cControllerSlaveAddress);
+    /* I2C3 :
+        SCL : 0x28180000 + 0x0204 : [3:0]   : Pll FUNC2
+        SDA : 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的写使能功能
  1. 3077又写保护功能,要想在操作系统中正常使用hwclock之类的命令,需要提前禁止写保护功能(客户要求)
  2. 关于3077芯片写保护的禁止与使能说明如下:
    在这里插入图片描述

2.1 寄存器说明:
在这里插入图片描述
3. 按文档说明,做如下设置禁止写保护功能:
先配置WRTC1 : 0x10 赋值 1xxx xxxx // 实际使用值为0x80
再配置WRTC2,3 : 0x0f 赋值 1xxx x1xx // 厂商建议值0xff,实际使用值为0x84

  1. 修改源码,加入上述配置寄存器禁止写保护的代码段:
vi PhytiumPkg/PhytiumD2000Pkg/Library/Ds1339_RtcLib/Ds1339_RtcLib.c
+#ifdef RTC_FIX
+    /* I2C3 :
+        SCL : 0x28180000 + 0x0204 : [3:0]   : Pull FUNC2
+        SDA : 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 验证时间
  1. 启动到操作系统后,查看内核log,看一下rtc-efi打印
    参考log:
root@kylin-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. 验证

  1. 启动到操作系统,使用date修改系统时间,使用hwclock修改RTC时间
  2. reboot操作系统
  3. 查看当前系统时间是否与RTC时间保持一致,即验证RTC功能是否正常
  4. 设备下电一段时间后,重新上电
  5. 上电后再次确认时间

参考log如下:

root@kylin-pc:~# date
1970年 01月 01日 星期四 08:00:19 CST
root@kylin-pc:~# 
root@kylin-pc:~# date -s "2024-04-13 11:11:00"
2024年 04月 13日 星期六 11:11:00 CST
root@kylin-pc:~# 
root@kylin-pc:~# hwclock -w
root@kylin-pc:~# 
root@kylin-pc:~# hwclock -r
2024-04-13 11:11:14.212325+08:00
root@kylin-pc:~# 
root@kylin-pc:~# reboot// rebootroot@kylin-pc:~# 
root@kylin-pc:~# date 
2024年 04月 13日 星期六 11:13:12 CST
root@kylin-pc:~# // 设备断电几分钟后,再次上电。RTC保持供电root@kylin-pc:~# 
root@kylin-pc:~# date 
2024年 04月 13日 星期六 11:27:48 CST
root@kylin-pc:~# 
root@kylin-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)
root@kylin-pc:~# 

90. 附件

1. CPU 参考手册

2. RTC 参考手册

https://www.whwave.com.cn/cpscxz

http://www.yayakq.cn/news/723585/

相关文章:

  • 宁波做公司网站的公司厦门网站建设seo
  • 漳州网站建设厂家336633域名
  • aspcms手机网站微应用和微网站的区别是什么
  • 公众号的微网站怎么做的云建造网站
  • 建筑专业网站开发网站网络公司有哪些
  • 怎么用阿里云服务器做网站柳州企业网站建设公司
  • 成都建设银行分行招聘网站音酷网站建设
  • 浙江省建设工程监理管理协会网站wordpress 设置缩略图
  • php 手机网站开发教程软件工程做项目网站
  • 女装市场网站建设费用评估广州建设网站的公司
  • 网站积分系统方案上线了做网站要钱
  • 网站推广有什么方法有哪些哪些大公司用wordpress
  • 汽车最好网站建设html网站支付链接怎么做的
  • 国内单页网站手机网站免费的
  • 网站制作公司源码建设部咨询资质网站
  • 爱淘宝网页网站建设网页前端开发工程师
  • dede电影网站模版学科网站建设方案
  • 品牌网站建设特色平台网站建设有哪些
  • wordpress调用当前页面链接网站seo相关设置优化
  • 百度收录提交之后如何让网站更快的展示出来注册网址免费
  • 求网站建设方法wordpress展开 折叠功能
  • 百度提问游戏优化是什么意思?
  • 金阳建设集团网站床上用品网站源码
  • 济南美赞网站建设公司精准引流的网络推广
  • 贵阳网站建设培训班学校资源网站 建设方案
  • 个人网站 用什么域名想要黑掉一个网站 要怎么做
  • 网站验证码调用建行个人网上登录入口
  • 石家庄网站建设兼职html怎么添加图片为背景
  • 网站开发相关职业岗位天津百度推广电话号码
  • 个人制作网站多少钱网站修改思路