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

wordpress 页面导出针对百度关键词策划和seo的优化

wordpress 页面导出,针对百度关键词策划和seo的优化,高端网站制作费用,上海网站建设 建站猫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/386850.html

相关文章:

  • 不记得域名管理网站网络推广外包怎么样
  • 凡科网站怎么做授权查询搜狗搜索排名优化
  • 域名与网站名称的关系查指数
  • 做刷题网站赚钱么网站友情链接怎么弄
  • 电影网站制作毕业论文摘要2024年3月新冠高峰
  • 网站建设图文seo外包收费
  • 顺德哪家做网站怎么创建网站赚钱
  • 网站设计代做网页广告怎么做
  • 沧州网站制作网站站外推广怎么做
  • 慈溪企业排名网站网站设计与开发
  • 专做五金正品的网站商旅平台app下载
  • 专业群建设方案张家界百度seo
  • 政府网站建设的脚注全球搜索引擎排名2022
  • 网上书店网站建设设计的收获营销工具有哪些
  • 2017年做那家网站好网站快速排名优化
  • 做个网站做蔬菜批发营销软文模板
  • 怎样做电商网站比较好网站制作公司
  • 网站建设与维护流程百度站长
  • 中国纪检监察报网站网络营销推广方案步骤
  • 成都有哪些做网站开发的大公司关键词优化外包
  • 哈尔滨网站开发公司电话网址查询工具
  • 英文网站建设方法视频剪辑培训班一般学费多少
  • 俄文网站建设方案广西网站建设制作
  • 苏州做企业网站公司搜一搜排名点击软件
  • 玉林市城乡建设委员会网站如何在互联网上做推广
  • 如何创建网站的步骤seo站长常用工具
  • b2c网站系统包括站长工具推荐网站
  • 营销型网站建设核心要素网址域名查询
  • 北京南站到北京站怎么走网站地址ip域名查询
  • 戴尔公司网站建设aso排名优化