色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

RK3588 Android+Linux雙系統(tǒng)方案的實現(xiàn)

汽車電子技術 ? 來源: loitawu ? 作者: loitawu ? 2022-10-10 14:25 ? 次閱讀

RK3588雙系統(tǒng)啟動流程如下圖

poYBAGKO4i-AaTP3AACUBpHa2T4214.jpg

uboot根據(jù)按鍵來識別要啟動的系統(tǒng),這里可以使用撥碼開關來代替。

uboot在加載分區(qū)的時根據(jù)分區(qū)名字來區(qū)分加載android或者linux的分區(qū),所以在linux和android分區(qū)表中需要用"_android"字段來區(qū)分。

硬件環(huán)境

基于RK3588 EVB1

開發(fā)板

實現(xiàn),系統(tǒng)切換按鍵是ESC 返回鍵

軟件環(huán)境

RK3588 Android12 SDK + RK3588 linux Debian系統(tǒng)

要求

Android和linux的固件的代碼uboot和rkbin部分需要一致,因為uboot和loader是共用一份

uboot需要額外補丁,可以通過RK的redmine獲取

代碼修改

uboot引導不同的系統(tǒng)

在uboot打上支持雙系統(tǒng)的補丁0003-disk-part-Support-get-par

ti

tion-name-suffix-from-env.patch,該補丁可以通過RK的redmine系統(tǒng)獲取。

設置切換按鍵及分區(qū)名稱下標

u-boot$

//配置BACK按鍵做為切換按鍵,這里使用adc采樣,設置按鍵對應的adc值

diff --git a/arch/arm/dts/rk3588-evb.dts b/arch/arm/dts/rk3588-evb.dts

index ad750d5b74..b6218fd742 100644

--- a/arch/arm/dts/rk3588-evb.dts

+++ b/arch/arm/dts/rk3588-evb.dts

@@

-27,5 +27,12 @@

label = "volume up";

press-threshold-microvolt = <1750>;

};

+

+ back-key {

+ u-boot,dm-pre-reloc;

+ linux,code =

;

+ label = "back";

+ press-threshold-microvolt = <1235000>;

+ };

};

};

//配置按鍵切換,在開機是檢測到按鍵按下就從boot_android分區(qū)引導boot啟動,即啟動android系統(tǒng),否則引導linux的boot,啟動linux系統(tǒng)

diff --git a/arch/arm/mach-rockchip/rk3588/rk3588.c b/arch/arm/mach-rockchip/rk3588/rk3588.c

index a8efc4f9b4..e7b94001c1 100644

--- a/arch/arm/mach-rockchip/rk3588/rk3588.c

+++ b/arch/arm/mach-rockchip/rk3588/rk3588.c

@@ -4,6 +4,7 @@

* SPDX-License-Identifier: GPL-2.0+

*/

#include

+#include

#include

#include

#include

@@ -940,3 +941,18 @@ int rk_board_fdt_fixup(const void *blob)

return 0;

}

+

+int board_early_init_r(void)

+{

+

+ printf("board_early_init_r

");

+ if (key_is_pressed(key_read(KEY_BACK))) {

+ env_set("part_suffix", "_android");

+ printf("Part suffix: _android

");

+ } else {

+ env_set("part_suffix", NULL);

+ }

+

+ return 0;

+}

+

diff --git a/configs/rk3588_defconfig b/configs/rk3588_defconfig

index fd6c9114f0..da7ca13626 100644

--- a/configs/rk3588_defconfig

+++ b/configs/rk3588_defconfig

@@ -223,3 +223,4 @@ CONFIG_RK_AVB_LIBAVB_USER=y

CONFIG_OPTEE_CLIENT=y

CONFIG_OPTEE_V2=y

CONFIG_OPTEE_ALWAYS_USE_SECURITY_PARTITION=y

+CONFIG_BOARD_EARLY_INIT_R=y

diff --git a/drivers/input/key-uclass.c b/drivers/input/key-uclass.c

index 1fe9f2c267..0db67fb251 100644

--- a/drivers/input/key-uclass.c

+++ b/drivers/input/key-uclass.c

@@ -39,6 +39,7 @@ uint64_t key_timer(uint64_t base)

static int key_adc_event(struct dm_key_uclass_platdata *uc_key, int adcval)

{

+ KEY_ERR("adcval=%d,max=%d,min=%d

",adcval, uc_key->max, uc_key->min);

return (adcval <= uc_key->max && adcval >= uc_key->min) ?

KEY_PRESS_DOWN : KEY_PRESS_NONE;

}

修改parameter分區(qū)表

雙系統(tǒng)的分區(qū)表使用同一個,需要把linux和android的分區(qū)都加上去,如果兩個系統(tǒng)分區(qū)名稱有重復的,需要把android的分區(qū)名后面加_android來區(qū)分。具體如下:

FIRMWARE_VER: 12.0

MACHINE_MODEL: rk3588_s

MACHINE_ID: 007

MANUFACTURER: rockchip

MAGIC: 0x5041524B

ATAG: 0x00200800

MACHINE: rk3588_s

CHECK_MASK: 0x80

PWR_HLD: 0,0,A,0,1

TYPE: GPT

CMDLINE:mtdparts=rk29xxnand:0x00002000@0x00002000(security),0x00002000@0x00004000(uboot),0x00002000@0x00006000(trust),0x00002000@0x00008000(misc_android),0x00002000@0x0000a000(dtbo),0x00000800@0x0000c000(vbmeta),0x00014000@0x0000c800(boot_android),0x00030000@0x00020800(recovery_android),0x000c0000@0x00050800(backup_android),0x000c0000@0x00110800(cache),0x00008000@0x001d0800(metadata),0x00000800@0x001d8800(baseparameter),0x00614000@0x001d9000(super),0x800000@0x007ed000(userdata_android),0x00002000@0x00fed000(misc),0x00020000@0x00fef000(boot),0x00040000@0x0100f000(recovery),0x00010000@0x0104f000(backup),0x01c00000@0x0105f000(rootfs),0x00040000@0x02c5f000(oem),-@0x02c9f000(userdata:grow)

uuid:rootfs=614e0000-0000-4b53-8000-1d28000054a9

** 其中:

uboot分區(qū)是linux和android共用的,其他分區(qū)都是獨立的;

Android的misc、boot、 recovery、 backup、 userdata分區(qū)因為跟linux重復了所以需要改為misc_android boot_android recovery_android backup_android userdata_android

修改Android系統(tǒng)的fstab

由于Android的分區(qū)名改了,所以需要fstab里面對應修改掛在的路徑,如下:

fstab的修改

device/rockchip/common:

diff --git a/scripts/fstab_tools/fstab.in b/scripts/fstab_tools/fstab.in

index 2ec6c265..c5098a0c 100755

--- a/scripts/fstab_tools/fstab.in

+++ b/scripts/fstab_tools/fstab.in

@@ -6,10 +6,10 @@ ${_block_prefix}system/system ext4 ro,barrier=1 ${_flags_vbmeta},first_stage

${_block_prefix}vendor/vendor ext4 ro,barrier=1 ${_flags},first_stage_mount

${_block_prefix}odm /odm ext4 ro,barrier=1 ${_flags},first_stage_mount

-/dev/block/by-name/boot /boot emmc defaults ${_flags_chained}first_stage_mount

+/dev/block/by-name/boot_android /boot emmc defaults ${_flags_chained}first_stage_mount

/dev/block/by-name/cache /cache ext4 noatime,nodiratime,nosuid,nodev,noauto_da_alloc,discard wait,check

/dev/block/by-name/metadata /metadata ext4 nodev,noatime,nosuid,discard,sync wait,formattable,first_stage_mount,check

-/dev/block/by-name/misc /misc emmc defaults defaults

+/dev/block/by-name/misc_android /misc emmc defaults defaults

/devices/platform/*usb* auto vfat defaults voldmanaged=usb:auto

@@ -23,6 +23,6 @@ ${_block_prefix}odm /odm ext4 ro,barrier=1 ${_flags},first_stage_mount

# For sdmmc

/devices/platform/${_sdmmc_device}/mmc_host* autoauto defaults voldmanaged=sdcard1:auto

#Full disk encryption has less effect on rk3326, so default to enable this.

-/dev/block/by-name/userdata /data f2fs noatime,nosuid,nodev,discard,reserve_root=32768,resgid=1065 latemount,wait,check,fileencryption=aes-256-xts:aes-256-cts:v2+inlinecrypt_optimized,keydirectory=/metadata/vold/metadata_encryption,quota,formattable,reservedsize=128M,checkpoint=fs

+/dev/block/by-name/userdata_android /data f2fs noatime,nosuid,nodev,discard,reserve_root=32768,resgid=1065,fsync_mode=nobarrier latemount,wait,check,fileencryption=aes-256-xts:aes-256-cts:v2+inlinecrypt_optimized,keydirectory=/metadata/vold/metadata_encryption,quota,formattable,reservedsize=128M,checkpoint=fs

# for ext4

#/dev/block/by-name/userdata /data ext4 discard,noatime,nosuid,nodev,noauto_da_alloc,data=ordered,user_xattr,barrier=1 latemount,wait,formattable,check,fileencryption=software,quota,reservedsize=128M,checkpoint=block

recovery.fstab的修改

對應的recovery的fstab也要修改,修改產品目錄下的recovery.fstab

device/rockchip/rk3588$

diff --git a/rk3588_s/recovery.fstab b/rk3588_s/recovery.fstab

index f7843a1..6a82ccc 100644

--- a/rk3588_s/recovery.fstab

+++ b/rk3588_s/recovery.fstab

@@ -9,20 +9,20 @@

/dev/block/by-name/system_ext /system_ext ext4 defaults defaults

/dev/block/by-name/vendor_dlkm /vendor_dlkm ext4 defaults defaults

/dev/block/by-name/odm_dlkm /odm_dlkm ext4 defaults defaults

/dev/block/by-name/cache /cache ext4 defaults defaults

/dev/block/by-name/metadata /metadata ext4 defaults defaults

-/dev/block/by-name/userdata /data f2fs defaults defaults

+/dev/block/by-name/userdata_android /data f2fs defaults defaults

/dev/block/by-name/cust /cust ext4 defaults defaults

/dev/block/by-name/custom /custom ext4 defaults defaults

/dev/block/by-name/radical_update /radical_update ext4 defaults defaults

-/dev/block/by-name/misc /misc emmc defaults defaults

+/dev/block/by-name/misc_android /misc emmc defaults defaults

/dev/block/by-name/uboot /uboot emmc defaults defaults

/dev/block/by-name/charge /charge emmc defaults defaults

/dev/block/by-name/resource /resource emmc defaults defaults

/dev/block/by-name/parameter /parameter emmc defaults defaults

-/dev/block/by-name/boot /boot emmc defaults defaults

-/dev/block/by-name/recovery /recovery emmc defaults defaults

-/dev/block/by-name/backup /backup emmc defaults defaults

+/dev/block/by-name/boot_android /boot emmc defaults defaults

+/dev/block/by-name/recovery_android /recovery emmc defaults defaults

+/dev/block/by-name/backup_android /backup emmc defaults defaults

/dev/block/by-name/frp /frp emmc defaults defaults

/dev/block/by-name/trust /trust emmc defaults defaults

/dev/block/by-name/baseparamer /baseparamer emmc defaults defaults

Linux系統(tǒng)固件

linux系統(tǒng)的固件軟件不需要修改,可以直接用編譯好的固件

固件燒寫

固件需要燒寫linux和android的固件,如下圖,可以直接右鍵導入上面修改好的parameter.txt文件,然后刪除不需要的燒寫固件分區(qū)即可。

注意:uboot、loader、parameter這三個是共用的,只需要燒一份即可。

pYYBAGKO4luAJqZQAAIirntIxUs913.jpgpoYBAGKO4nOAHdolAAIb5agK_iA509.jpg

驗證

固件燒寫完成后第一次默認開機會從linux系統(tǒng)啟動,linux正常啟動后可以按住ESC按鍵,然后重啟系統(tǒng),ESC要一直按住到android系統(tǒng)啟動完成。

原作者:loitawu

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • Android
    +關注

    關注

    12

    文章

    3935

    瀏覽量

    127339
  • Linux
    +關注

    關注

    87

    文章

    11292

    瀏覽量

    209326
  • 開發(fā)板
    +關注

    關注

    25

    文章

    5032

    瀏覽量

    97371
  • Uboot
    +關注

    關注

    4

    文章

    125

    瀏覽量

    28214
  • RK3588
    +關注

    關注

    6

    文章

    325

    瀏覽量

    4312
收藏 人收藏

    評論

    相關推薦

    瑞芯微RK3588開發(fā)板RK3588 EVB和RK3588S EVB解讀

    瑞芯微RK3588開發(fā)板RK3588 EVB和RK3588S EVB解讀 瑞芯微旗艦芯RK3588系列開發(fā)板受到廣大開發(fā)者伙伴的關注和問詢。針對相關的開發(fā)板功能、操作指南等問題,我們一
    的頭像 發(fā)表于 09-22 15:54 ?1.8w次閱讀
    瑞芯微<b class='flag-5'>RK3588</b>開發(fā)板<b class='flag-5'>RK3588</b> EVB和<b class='flag-5'>RK3588</b>S EVB解讀

    迅為RK3588開發(fā)板深度剖析丨首選的性能

    Buildroot等嵌入式系統(tǒng)。 配合全國產版本核心板,實現(xiàn)產品從“硬”到“軟”全部國產化。 RK3588-資料賦能 自2022年發(fā)布以來,iTOP-RK3588開發(fā)板文檔資料已經形成
    發(fā)表于 09-03 15:49

    迅為瑞芯微RK3588開發(fā)板深度剖析丨首選的性能

    Buildroot等嵌入式系統(tǒng)。 配合全國產版本核心板,實現(xiàn)產品從“硬”到“軟”全部國產化。 RK3588-資料賦能 自2022年發(fā)布以來,iTOP-RK3588開發(fā)板文檔資料已經形成
    發(fā)表于 10-17 10:49

    求一種基于RK3588實現(xiàn)SPI-NOR大容量存儲方案

    1、基于RK3588S自研平板方案實現(xiàn)硬件存儲CPU: RK3588SDDR: LPDDR5 8GBNOR: SPI接口 32MB容量SSD: PCIE接口 256GB容量軟件版本要求
    發(fā)表于 05-23 14:20

    如何實現(xiàn)基于RK3588Android系統(tǒng)Linux系統(tǒng)切換呢

    概述RK3588雙系統(tǒng)啟動流程如下圖uboot根據(jù)按鍵來識別要啟動的系統(tǒng),這里可以使用撥碼開關來代替。uboot在加載分區(qū)的時根據(jù)分區(qū)名字來區(qū)分加載android或者
    發(fā)表于 05-26 10:16

    基于RK3588芯片方案開發(fā)ARM PC項目

    天然優(yōu)勢。  瑞芯微RK3588有著豐富的系統(tǒng)支持。早在RK3588發(fā)布之初,瑞芯微便成若RK3588會有豐富的系統(tǒng)支持,目前
    發(fā)表于 07-27 16:05

    RK3588 SDK編譯與固件燒寫步驟

    /envsetup.sh  $ lunch rk3588_s-userdebug  $ 。/build.sh-AUCKu -d rk3588
    發(fā)表于 08-31 17:45

    RK3588 Android系統(tǒng)編譯命令

    rk3588 代碼kernel內核版本是5.10,Android 12,編譯命令如下:source build/envsetup.shlunch rk3588
    發(fā)表于 09-20 16:55

    RK3588 Android 12.0 SDK編譯步驟分享

    rk3588sevb1-lp4x-v10.img -j24單獨編譯uboot$ ./make.sh rk35882、固件燒寫升級工具版本:AndroidTool_Release_v2.84USB驅動版本:Driver
    發(fā)表于 09-20 17:11

    Banana Pi 開源社區(qū)基于瑞芯微RK3588芯片的整體解決方案

    Banana Pi 開源社區(qū),推出了BPI-W3, BPI-RK3588金手指核心板套件,BPI-RK3588郵票孔核心板套件,滿足各種客戶的需求,方便客戶進行各種靈活定制。并讓RK3588完善支持
    的頭像 發(fā)表于 08-20 14:21 ?5792次閱讀
    Banana Pi 開源社區(qū)基于瑞芯微<b class='flag-5'>RK3588</b>芯片的整體解決<b class='flag-5'>方案</b>

    rk3588rk3588s的區(qū)別

    rk3588rk3588s的區(qū)別 Rockchip是一家專業(yè)的半導體公司,成立于2001年,總部位于中國深圳,主要從事集成電路的設計、開發(fā)和銷售。他們的熱門產品RK3588RK3588
    的頭像 發(fā)表于 08-15 16:44 ?1.4w次閱讀

    RK35883588s的區(qū)別

    RK35883588s的區(qū)別 Rockchip RK3588RK3588s是兩種功能強大且廣受歡迎的片上系統(tǒng)(SoC)解決
    的頭像 發(fā)表于 08-15 17:03 ?2.3w次閱讀

    迅為RK3588Linux 系統(tǒng)中使用 NPU

    迅為RK3588Linux 系統(tǒng)中使用 NPU
    的頭像 發(fā)表于 09-08 14:14 ?1559次閱讀
    迅為<b class='flag-5'>RK3588</b>在 <b class='flag-5'>Linux</b> <b class='flag-5'>系統(tǒng)</b>中使用 NPU

    迅為電子RK3588S與RK3588硬件性能區(qū)別及板卡選型

    迅為電子RK3588S與RK3588硬件性能區(qū)別及板卡選型
    的頭像 發(fā)表于 06-25 15:30 ?3298次閱讀
    迅為電子<b class='flag-5'>RK3588</b>S與<b class='flag-5'>RK3588</b>硬件性能區(qū)別及板卡選型

    RK3588 技術分享 | 在Android系統(tǒng)中使用NPU實現(xiàn)Yolov5分類檢測-迅為電子

    RK3588 技術分享 | 在Android系統(tǒng)中使用NPU實現(xiàn)Yolov5分類檢測-迅為電子
    的頭像 發(fā)表于 08-23 14:58 ?691次閱讀
    <b class='flag-5'>RK3588</b> 技術分享 | 在<b class='flag-5'>Android</b><b class='flag-5'>系統(tǒng)</b>中使用NPU<b class='flag-5'>實現(xiàn)</b>Yolov5分類檢測-迅為電子
    主站蜘蛛池模板: 视频一区二区三区蜜桃麻豆| 欧美国产影院| 快穿之H啪肉| 男人插女人动态图| 日本不卡不码高清免费| 色欲狠狠躁天天躁无码中文字幕 | 国产免费69成人精品视频| 国产免费午夜| 久久精品国产清白在天天线| 美女被免费喷白浆视频| 青青草伊人网| 无码日韩人妻精品久久蜜桃免费| 亚洲精品无码不卡在线播放he | 午夜福到在线2019| 亚洲色偷偷偷网站色偷一区人人藻 | 亚洲九九视频| 嘴巴舔着她的私处插| babesvideos性欧美| 国产国产乱老熟视频网站| 果冻传媒在线观看进入窗口| 毛片免费观看的视频| 日本韩国欧美一区| 亚洲国产综合另类视频| 91偷偷久久做嫩草电影院| 高跟丝袜岳第一次| 久久激情影院| 日本一区不卡在线播放视频免费| 亚洲精品久久久无码AV片软件| 91麻豆国产精品91久久久| 国产精品熟女人妻| 麻豆精品2021最新| 色欲精品国产AV久久久| 在线综合 亚洲 欧美| 国产成人精品视频| 毛片手机在线| 亚洲 小说 欧美 激情 另类| 7m凹凸国产刺激在线视频| 国产精品女上位好爽在线短片| 美女扒开尿孔| 亚洲haose在线观看| qvod影院|