Firefly开源社区

打印 上一主题 下一主题

[Android] 自行编译的固件烧录不能进入安卓桌面,卡在android的logo上,最后重启进入recovery

12

积分

0

威望

0

贡献

技术小白

积分
12

自行编译的固件烧录不能进入安卓桌面,卡在android的logo上,最后重启进入recovery

发表于 2023-3-15 09:43:32      浏览:4459 | 回复:0        打印      只看该作者   [复制链接] 楼主
  • 固件类型: 自行编译的固件
  • SDK包名称: Firefly-RK356X_Android11.0_git_20220929
  • SDK更新到哪个COMMIT: 0000-00-00 00:00:00
  • SDK修改内容: 使用原厂固件烧录会卡在开机logo阶段,做出了以下修改: 设备树dtsi文件中禁用rkisp,csi2,pcie以及修改了kernel/drivers/mmc 以上条件改完之后能够进入安卓阶段,但是不能进入安卓桌面,串口一直在重复打印
  • Log日志: 长时间运行之后板子重启recovery从而显示异常.log
问题描述及复现步骤:
diff --git a/kernel/arch/arm64/boot/dts/rockchip/rk3568-firefly-port.dtsi b/kernel/arch/arm64/boot/dts/rockchip/rk3568-firefly-port.dtsi
index f50fd7497b..f173b49371 100644
--- a/kernel/arch/arm64/boot/dts/rockchip/rk3568-firefly-port.dtsi
+++ b/kernel/arch/arm64/boot/dts/rockchip/rk3568-firefly-port.dtsi
@@ -190,7 +190,8 @@
};

&csi2_dphy_hw {
-       status = "okay";
+       //status = "okay";
+       status = "disabled";
};

&csi2_dphy0 {
@@ -247,15 +248,18 @@
};

&rkisp {
-       status = "okay";
+       //status = "okay";
+       status = "disabled";
};

&rkisp_mmu {
-       status = "okay";
+       //status = "okay";
+       status = "disabled";
};

&rkisp_vir0 {
-       status = "okay";
+       //status = "okay";
+       status = "disabled";
        port {
                #address-cells = <1>;
                #size-cells = <0>;
@@ -268,7 +272,8 @@
};

&rkisp_vir1 {
-       status = "okay";
+       //status = "okay";
+       status = "disabled";

         port {
                reg = <0>;
@@ -355,7 +360,8 @@
};

&mipi_csi2 {
-       status = "okay";
+       //status = "okay";
+       status = "disabled";

        ports {
                #address-cells = <1>;
@@ -388,7 +394,8 @@
};

&rkcif_mipi_lvds {
-       status = "okay";
+       //status = "okay";
+       status = "disabled";
        port {
                cif_mipi_in: endpoint {
                        remote-endpoint = <&mipi_csi2_output>;
-----------
diff --git a/kernel/drivers/mmc/core/block.c b/kernel/drivers/mmc/core/block.c
index 1c6552b2f8..39a5337753 100644
--- a/kernel/drivers/mmc/core/block.c
+++ b/kernel/drivers/mmc/core/block.c
@@ -49,7 +49,6 @@

#include "queue.h"
#include "block.h"
-#include "block_data.h"
#include "core.h"
#include "card.h"
#include "crypto.h"
@@ -98,7 +97,6 @@ static int max_devices;
static DEFINE_IDA(mmc_blk_ida);
static DEFINE_IDA(mmc_rpmb_ida);

-#ifndef _MMC_CORE_BLOCK_DATA_H
/*
  * There is one mmc_blk_data per slot.
  */
@@ -138,7 +136,6 @@ struct mmc_blk_data {
        struct dentry *status_dentry;
        struct dentry *ext_csd_dentry;
};
-#endif /* _MMC_CORE_BLOCK_DATA_H */

/* Device type for RPMB character devices */
static dev_t mmc_rpmb_devt;
@@ -148,7 +145,6 @@ static struct bus_type mmc_rpmb_bus_type = {
        .name = "mmc_rpmb",
};

-#ifndef _MMC_CORE_BLOCK_DATA_H
/**
  * struct mmc_rpmb_data - special RPMB device type for these areas
  * @dev: the device for the RPMB area
@@ -166,7 +162,6 @@ struct mmc_rpmb_data {
        struct mmc_blk_data *md;
        struct list_head node;
};
-#endif /* _MMC_CORE_BLOCK_DATA_H */

static DEFINE_MUTEX(open_lock);

@@ -347,14 +342,12 @@ mmc_blk_getgeo(struct block_device *bdev, struct hd_geometry *geo)
        return 0;
}

-#ifndef _MMC_CORE_BLOCK_DATA_H
struct mmc_blk_ioc_data {
        struct mmc_ioc_cmd ic;
        unsigned char *buf;
        u64 buf_bytes;
        struct mmc_rpmb_data *rpmb;
};
-#endif /* _MMC_CORE_BLOCK_DATA_H */

static struct mmc_blk_ioc_data *mmc_blk_ioctl_copy_from_user(
        struct mmc_ioc_cmd __user *user)
@@ -1694,31 +1687,31 @@ static void mmc_blk_read_single(struct mmc_queue *mq, struct request *req)
        struct mmc_card *card = mq->card;
        struct mmc_host *host = card->host;
        blk_status_t error = BLK_STS_OK;
-       int retries = 0;

        do {
                u32 status;
                int err;
+               int retries = 0;

-               mmc_blk_rw_rq_prep(mqrq, card, 1, mq);
+               while (retries++ <= MMC_READ_SINGLE_RETRIES) {
+                       mmc_blk_rw_rq_prep(mqrq, card, 1, mq);

-               mmc_wait_for_req(host, mrq);
+                       mmc_wait_for_req(host, mrq);

-               err = mmc_send_status(card, &status);
-               if (err)
-                       goto error_exit;
-
-               if (!mmc_host_is_spi(host) &&
-                   !mmc_blk_in_tran_state(status)) {
-                       err = mmc_blk_fix_state(card, req);
+                       err = mmc_send_status(card, &status);
                        if (err)
                                goto error_exit;
-               }

-               if (mrq->cmd->error && retries++ < MMC_READ_SINGLE_RETRIES)
-                       continue;
+                       if (!mmc_host_is_spi(host) &&
+                           !mmc_blk_in_tran_state(status)) {
+                               err = mmc_blk_fix_state(card, req);
+                               if (err)
+                                       goto error_exit;
+                       }

-               retries = 0;
+                       if (!mrq->cmd->error)
+                               break;
+               }

                if (mrq->cmd->error ||
                    mrq->data->error ||
@@ -2962,10 +2955,6 @@ static int mmc_blk_probe(struct mmc_card *card)
                        goto out;
        }

-    if (card->host->restrict_caps & RESTRICT_CARD_TYPE_EMMC) {
-        mmc_blk_data_init(md);
-    }
-
        /* Add two debugfs entries */
        mmc_blk_add_debugfs(card, md);

@@ -3000,10 +2989,6 @@ static void mmc_blk_remove(struct mmc_card *card)
                this_card = NULL;
        #endif

-    if (card->host->restrict_caps & RESTRICT_CARD_TYPE_EMMC) {
-        mmc_blk_data_deinit(md);
-    }
-
        mmc_blk_remove_parts(card, md);
        pm_runtime_get_sync(&card->dev);
        if (md->part_curr != md->part_type) {

-------------




长时间运行之后板子重启recovery从而显示异常.log

1.45 MB, 下载次数: 1, 下载积分: 灯泡 -1 , 经验 -1

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

友情链接 : 爱板网 电子发烧友论坛 云汉电子社区 粤ICP备14022046号-2
快速回复 返回顶部 返回列表