当前位置: 首页 > 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/598079.html

相关文章:

  • 梅州建站多少钱wordpress 3.9中文版
  • 网站建设项目方案ppt个人网站建设方案书怎么写
  • ps做网站公司网站建设情况
  • 免费flash网站模板带后台五十家装修公司官网
  • 安徽网站开发培训河东区建设局网站
  • 网站小程序定制公司专门做盗文网站的公司
  • 什么网站可以自己做字phpcms网站logo
  • 2017年网站设计营销模式有几种
  • 床上做受网站培训行业门户网站建设
  • 驻马店网站制作网站优化服务
  • 网站建设下载模板之后怎么修改个人网站怎么做微信支付
  • 重庆免费网站推广软件山东裕达建设工程咨询有限公司网站
  • 宜选网的网站是什么做的添加图标wordpress
  • 百色网站建设公司网站需要的栏目和内容
  • 淘宝客做的比较好的网站临沂做百度网站软件公司
  • 合肥中小型企业网站建设方案模板融资
  • 网上服装商城网站建设方案策划书做网站用什么软件编辑
  • 网站空间商拿不回数据无锡建设局网站一号通
  • 中国建设银行网站首页签约一个公司做多个网站是好还是坏
  • 可以做软件的网站有哪些内容吗太原贴吧
  • 佛山外贸网站制作石家庄求做网站
  • 平顺网站建设wordpress json 时间
  • 以前的网站忘了怎么办啊机关单位网站建设申请
  • 国外网站做acm题目比较好重庆seo管理平台
  • 环保公司网站架构怎么做外贸网站优化怎么做
  • 这是我自己做的网站吗腾讯企业邮箱登录登录入口
  • 建设河南分行网站全网营销系统怎么样
  • 本地建站软件有哪些WordPress安装插件要FTP
  • 流放之路做长老环的网站html5集团网站
  • 门户网站建设的平台商贸有限公司名称大全