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

固件类型:自行编译的固件
SDK包名称:Firefly-RK356X_Android11.0_git_20220929
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) {
    

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