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

大连模板网站制作服务如何自己建立一个网站

大连模板网站制作服务,如何自己建立一个网站,关键词的选择网站提示,西安门户网20250607在荣品的PRO-RK3566开发板的Android13系统下实现长按开机之后出现插入适配器不会自动启动的问题的解决 2025/6/7 17:20 缘起: 1、根据RK809的DATASHEET,短按开机【100ms/500ms】/长按关机,长按关机。6s/8s/10s 我在网上找到的DATASHE…

20250607在荣品的PRO-RK3566开发板的Android13系统下实现长按开机之后出现插入适配器不会自动启动的问题的解决
2025/6/7 17:20


缘起:
1、根据RK809的DATASHEET,短按开机【100ms/500ms】/长按关机,长按关机。6s/8s/10s
我在网上找到的DATASHEET是V1.0的,据说有V1.4的或者更新的?
如果有,方便的话,发一下。

2、我们希望长按2s开机。
如果 RK809的开机模式是写死了。我司需要 等待 2s时间 【以防 误操作/误触发】

可以使用这个上电逻辑不?

先让 RK809检测到500ms 开机指令,如果检测到,先【清除掉 寄存器中的开机指示?】,然后让 RK809等待1.5s == 1500ms,
现在 在 检测 电源键 是否还是按下的。如果是的。走正常的开机逻辑。
如果不是,就判定为 误操作,关机了。

或者您这边有更好的 上电逻辑/建议?


【已知的/已经测试出来的BUG:】

这个PATCH可以实现 按键2s 开机。
但是有一个问题。

现在 插电/适配器之后,RK3566不会自动开机。
追问一下。是否可以解决这个问题?


uboot_longpress_power_on.patch

diff --git a/drivers/power/pmic/rk8xx.c b/drivers/power/pmic/rk8xx.c
old mode 100644
new mode 100755
index e361015337..e44c38448a
--- a/drivers/power/pmic/rk8xx.c
+++ b/drivers/power/pmic/rk8xx.c
@@ -6,6 +6,7 @@
  */
 
 #include <common.h>
+#include <boot_rkimg.h>
 #include <dm.h>
 #include <errno.h>
 #include <irq-generic.h>
@@ -486,6 +487,8 @@ static int rk8xx_probe(struct udevice *dev)
     uint8_t power_en0, power_en1, power_en2, power_en3;
     uint8_t on, off;
     uint8_t value;
+    int mode;
+
 
     /* read Chip variant */
     if (device_is_compatible(dev, "rockchip,rk817") ||
@@ -618,6 +621,31 @@ static int rk8xx_probe(struct udevice *dev)
         printf("IRQ chip initial failed\n");
         return ret;
     }
+    /* 10*100ms */
+    mode = rockchip_get_boot_mode();
+    printf("xxxx: mode: %d\n", mode);
+    value=pmic_reg_read(dev, 0xf0)&0x80;
+    printf("value=0x%x\n",value );
+    if((pmic_reg_read(dev, 0xf0)&0x80) && mode == BOOT_MODE_UNDEFINE )
+    {
+        printf("xxxx: power off\n");
+        rk8xx_shutdown(dev);
+    }
+    if ((pmic_reg_read(dev, 0xf0) & 0x80)==0 &&
+        mode == BOOT_MODE_UNDEFINE) {
+        i = 0;
+        while (i < 10) {
+            value = pmic_reg_read(dev, 0xf0) & 0x80;
+            printf("value=0x%x\n",value );
+            if ((value & 0x80)) {
+                printf("xxxx: power off\n");
+                rk8xx_shutdown(dev);
+            }
+            mdelay(100);
+            i++;
+        }
+        printf("xxxx: power on\n");
+    }
 
     return 0;
 }


Z:\Android13.0\u-boot\drivers\power\pmic\rk8xx.c
    ret = rk8xx_irq_chip_init(dev);
    if (ret) {
        printf("IRQ chip initial failed\n");
        return ret;
    }


    /* 10*100ms */
    mode = rockchip_get_boot_mode();
    printf("xxxx: mode: %d\n", mode);
    
    for j = 0;
    //for(j=0; j<256; j++)
    //{
    //    //printf("0x%02x, ", pmic_reg_read(dev, j) );
    //    printf("0x%02x = 0x%02x\n", j, pmic_reg_read(dev, j) );
    //}
    
    //if( 0x82 == pmic_reg_read(dev, 0xf0) )
    if( 0x40 == pmic_reg_read(dev, 0xf5) )
    //if( 0 )
    {
        printf("**** Success 2025/6/5 20:12 %s %s %d have +12V !\n", __FILE__, __FUNCTION__, __LINE__);
    }
    else
    {
        value=pmic_reg_read(dev, 0xf0)&0x80;
        printf("value=0x%x\n",value );
        if((pmic_reg_read(dev, 0xf0)&0x80) && mode == BOOT_MODE_UNDEFINE )
        {
            printf("xxxx: power off\n");
            rk8xx_shutdown(dev);
        }
        if ((pmic_reg_read(dev, 0xf0) & 0x80)==0 &&
            mode == BOOT_MODE_UNDEFINE) {
            i = 0;
            //while (i < 30) {
            //while (i < 5) {
            while (i < 2) {
                value = pmic_reg_read(dev, 0xf0) & 0x80;
                printf("value=0x%x\n",value );
                if ((value & 0x80)) {
                    printf("xxxx: power off\n");
                    rk8xx_shutdown(dev);
                }
                mdelay(10);
                printf("**** wyb 2025/6/4 17:43 %s %s %d i=%d s! loop 2 ---- mdelay 10ms\n", __FILE__, __FUNCTION__, __LINE__, i);
                //mdelay(1000);
                i++;
            }
            printf("xxxx: power on\n");
        }
    }


    return 0;
}

U-Boot 2017.09 (Jun 07 2025 - 17:34:50 +0800)

Model: Rockchip RK3568 Evaluation Board
MPIDR: 0x81000000
PreSerial: 2, raw, 0xfe660000
DRAM:  4 GiB
Sysmem: init
Relocation Offset: ed218000
Relocation fdt: eb9f8aa8 - eb9fecd0
CR: M/C/I
Using default environment

optee api revision: 2.0
dwmmc@fe2b0000: 1, dwmmc@fe2c0000: 2, sdhci@fe310000: 0
Bootdev(atags): mmc 0
MMC0: HS200, 200Mhz
PartType: EFI
DM: v1
Android 13.0, Build 2023.8, v2
boot mode: None
RESC: 'boot', blk@0x0001da6c
Device is: UNLOCKED
DTB: rk-kernel.dtb
HASH(c): OK
ANDROID: fdt overlay OK
**** wyb 2025/5/30 17:47 drivers/power/pmic/rk8xx.c rk8xx_bind 334
I2c0 speed: 100000Hz
**** wyb 2025/5/30 17:47 drivers/power/pmic/rk8xx.c rk8xx_ofdata_to_platdata 389
**** wyb 2025/5/30 17:47 drivers/power/pmic/rk8xx.c rk8xx_probe 521
PMIC:  RK8090 (on=0x40, off=0x80)
**** wyb 2025/5/30 17:47 drivers/power/pmic/rk8xx.c rk8xx_irq_chip_init 447
xxxx: mode: 11
value=0x80
xxxx: power off
**** wyb 2025/5/30 17:47 drivers/power/pmic/rk8xx.c rk8xx_shutdown 293

 

逻辑是对的,对了一下原理图,vdc应该只有dc上电时才有一瞬间的电压导通启动,应该通过其他电路放电

查看手册,可以通过PMIC_ON_SOURCE 寄存器来获取启动方式
可以获取0xf5第 6 位的值来判定目前是什么方式启动,如果是1 就是dc触发开机,就不跑power判定逻辑


 

    ret = rk8xx_irq_chip_init(dev);
    if (ret) {
        printf("IRQ chip initial failed\n");
        return ret;
    }


    /* 10*100ms */
    mode = rockchip_get_boot_mode();
    printf("xxxx: mode: %d\n", mode);
    
    for j = 0;
    //for(j=0; j<256; j++)
    //{
    //    //printf("0x%02x, ", pmic_reg_read(dev, j) );
    //    printf("0x%02x = 0x%02x\n", j, pmic_reg_read(dev, j) );
    //}
    
    //if( 0x82 == pmic_reg_read(dev, 0xf0) )
    if( 0x40 == pmic_reg_read(dev, 0xf5) )
    //if( 0 )
    {
        printf("**** Success 2025/6/5 20:12 %s %s %d have +12V !\n", __FILE__, __FUNCTION__, __LINE__);
    }
    else

    {
        value=pmic_reg_read(dev, 0xf0)&0x80;
        printf("value=0x%x\n",value );
        if((pmic_reg_read(dev, 0xf0)&0x80) && mode == BOOT_MODE_UNDEFINE )
        {
            printf("xxxx: power off\n");
            rk8xx_shutdown(dev);
        }
        if ((pmic_reg_read(dev, 0xf0) & 0x80)==0 &&
            mode == BOOT_MODE_UNDEFINE) {
            i = 0;
            //while (i < 30) {
            //while (i < 5) {
            while (i < 2) {
                value = pmic_reg_read(dev, 0xf0) & 0x80;
                printf("value=0x%x\n",value );
                if ((value & 0x80)) {
                    printf("xxxx: power off\n");
                    rk8xx_shutdown(dev);
                }
                mdelay(10);
                printf("**** wyb 2025/6/4 17:43 %s %s %d i=%d s! loop 2 ---- mdelay 10ms\n", __FILE__, __FUNCTION__, __LINE__, i);
                //mdelay(1000);
                i++;
            }
            printf("xxxx: power on\n");
        }
    }


    return 0;
}

http://www.dtcms.com/wzjs/313482.html

相关文章:

  • 做网站那些好黄冈网站推广软件免费下载
  • visual c 网站开发广州百度快速优化排名
  • 留学公司网站怎么做泰安做网站公司
  • 公司做网站费用会计处理竞价代运营公司
  • wordpress降级插件南宁网站seo排名优化
  • 做网站用哪种编程语言提高工作效率的句子
  • 枣庄手机网站开发公司网站设计模板
  • 徐州关键词优化seo查询源码
  • 政府网站建设进展情况外国人b站
  • 做网站前端要会什么网站开发的基本流程
  • 新公司董事长致辞做网站百度推广怎么样才有效果
  • wordpress做定制T恤的网站河南网站排名
  • 360云盘做服务器建设网站seo教程论坛
  • 江门网站建设设计如何在百度上做产品推广
  • 教人做素食的网站网站seo置顶 乐云践新专家
  • 潍坊网站建设网超专业制作网页的公司
  • 微信公众号免费模板网站百度网站搜索排名
  • 邢台建设网站公司百度快照有什么用
  • 筹划建设智慧海洋门户网站百度竞价返点开户
  • 广州高端模板网站网络营销公司做什么
  • 网站建设确认书宁波网站建设团队
  • 哪个网站可以做教师招聘题目手机创建网站免费注册
  • 新媒体做图网站网络营销推广技术
  • 网页广告调词平台多少钱专业搜索引擎seo服务
  • 虚拟机中做网站百度官方免费下载安装
  • 做淫秽网站有事情吗seo网站自动推广
  • 用响应式做旧书网站交换友情链接的要求有
  • 虎门网站建设多少钱竞价推广的基本流程
  • 万网 网站建设seo有些什么关键词
  • 求职简历在哪个网站做app拉新推广项目