rk3588 之啟動

目錄

  • uboot
    • 版本
    • 配置修改
    • 編譯
  • linux
    • 版本
    • 配置修改
    • 編譯
  • 啟動
    • sd卡啟動制作
    • spi 燒錄
  • 參考

uboot

版本

v2024.01-rc2

https://github.com/u-boot/u-boot
https://github.com/rockchip-linux/rkbin

配置修改

使用這兩個配置即可:

orangepi-5-plus-rk3588_defconfig
rock5b-rk3588_defconfig

再設備樹 XX-u-boot.dtsi 中添加 spi_nor ,用于 spi 啟動

#include "rk3588-u-boot.dtsi"/ {aliases {mmc0 = &sdmmc;};chosen {u-boot,spl-boot-order = "same-as-spl", &spi_nor, &sdmmc;};
};&sfc {bootph-all;u-boot,spl-sfc-no-dma;#address-cells = <1>;#size-cells = <0>;status = "okay";spi_nor: flash@0 {bootph-pre-ram;compatible = "jedec,spi-nor";reg = <0>;spi-max-frequency = <24000000>;spi-rx-bus-width = <4>;spi-tx-bus-width = <1>;};
};

以下為 dts 設備樹中添加 gmac0 用于 uboot 種使用網絡,可參考 rk3588-evb1-v10.dts 文件,此處使用的 ksz9131


{aliases {mmc0 = &sdmmc;serial2 = &uart2;ethernet0 = &gmac0;};
}
&gmac0 {phy-handle = <&rgmii_phy>;phy-mode = "rgmii-rxid";pinctrl-0 = <&gmac0_miim&gmac0_tx_bus2&gmac0_rx_bus2&gmac0_rgmii_clk&gmac0_rgmii_bus>;pinctrl-names = "default";rxc-skew-ps = <1800>;rxdv-skew-ps = <0>;txc-skew-ps = <1800>;txen-skew-ps = <0>;status = "okay";
};&mdio0 {rgmii_phy: ethernet-phy@1 {reg = <0x1>;pinctrl-names = "default";pinctrl-0 = <&phy_rst>;reset-assert-us = <20000>;reset-deassert-us = <100000>;reset-gpios = <&gpio2 RK_PC4 GPIO_ACTIVE_LOW>;};
};&pinctrl {ksz9131 {phy_rst: phy-rst {rockchip,pins = <2 RK_PC4 RK_FUNC_GPIO &pcfg_pull_none>;};};
};

添加 CONFIG_ROCKCHIP_SPI_IMAGE 配置,會生成 u-boot-rockchip-spi.bin 文件,用于 spi 啟動

編譯

編譯前,需先設置環境變量,不然會報錯

export ROCKCHIP_TPL=../rkbin/bin/rk35/rk3588_ddr_lp4_2112MHz_lp5_2736MHz_v1.12.bin
export BL31=../rkbin/bin/rk35/rk3588_bl31_v1.40.elf

在這里插入圖片描述
在這里插入圖片描述

tee-os 無需設置,針對官方提供的 rk3588_bl32_v1.13.bin 文件,這里設置后反而會報錯

在這里插入圖片描述

使用編譯命令

make  CROSS_COMPILE=aarch64-linux-gnu- -j4

生成 idbloader.img、u-boot.itb、u-boot-rockchip-spi.bin、 u-boot-rockchip.bin 等文件

linux

版本

分支 orange-pi-5.10-rk35xx

https://github.com/orangepi-xunlong/linux-orangepi.git

配置修改

使用 rockchip_defconfig 文件配置即可,其他根據需求增減

使用 rk3588-orangepi-5-plus.dts 設備樹,根據實際情況增減,以下為打印串口添加

&uart2 {status = "okay";pinctrl-names = "default";pinctrl-0 = <&uart2m0_xfer>;
};

編譯

make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- menuconfig
make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- -j4

啟動

rk3588 啟動方式如下:

在這里插入圖片描述

采用 LEVEL7 模式, 100K 上拉,可自動進行多種啟動識別

可先使用 sd 卡啟動,后可針對其他進行燒錄;也可用 usb 驅動,使用 瑞芯微官方軟件燒錄

sd卡啟動制作

將 tf 卡分成 4 個區:

sudo sgdisk -z -og /dev/sdb
sudo sgdisk --resize-table=128 -a 1 \-n 1:64:16383 -c 1:idbloader  \-n 2:16384:32767 -c 2:uboot \-n 3:32768:163839 -c 3:boot \-n 4:163840: -c 4:rootfs \-p /dev/sdb

將u-boot 生成的 idbloader.imgu-boot.itb 寫入到 sd 卡的 1 和 2 分區

sudo dd if=idbloader.img of=/dev/sdb1 bs=512
sudo dd if=u-boot.itb of=/dev/sdb2 bs=512

同時,可以將 3分區格式化成 FAT32 模式,將設備樹、內核等放進里面用于啟動,或者通過 tftpboot 啟動。

mmc dev 0 && load mmc 0:3 0x02080000 Image.gz &&load mmc 0:3 0x0a100000  rk3588-orangepi-5-plus.dtb&&load mmc 0:3 0x0a200000 uramdisk.image.gz&&setenv bootargs "root=/dev/ram0 rw init=/linuxrc  console=ttyS2,1500000 " && booti 0x02080000 0x0a200000 0x0a100000 

格式化 4分區,格式為 ext4 , 用于存放文件系統,啟動命令

mmc dev 0
load mmc 0:3 0x02080000 Image.gz
load mmc 0:3 0x0a100000  rk3588-orangepi-5-plus.dtb
setenv bootargs "root=/dev/mmcblk0p4 rw rootfstype=ext4 rootwait init=/sbin/init console=ttyS2,1500000"
booti 0x02080000 - 0x0a100000 

spi 燒錄

spi 通過 tftp 加載進行燒錄,先配置 ip,而后加載 bin 文件,最后寫入

setenv ipaddr 192.168.1.100
setenv serverip 192.168.1.163
tftpboot 0x02080000 u-boot-rockchip-spi.bin
sf probe 5:0 8000000 0
sf update 0x02080000 0 ${filesize}

燒錄完成重啟即可

在這里插入圖片描述

參考

http://www.orangepi.cn/orangepiwiki/index.php/Orange_Pi_5_Plus

https://blog.csdn.net/qq_41544116/article/details/131863063

https://www.cnblogs.com/yangdinshan/p/17592105.html

https://opensource.rock-chips.com/wiki_Boot_option

https://gitlab.collabora.com/hardware-enablement/rockchip-3588/notes-for-rockchip-3588/-/blob/main/upstream_uboot.md

https://github.com/axlrose/rkdocs

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/384333.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/384333.shtml
英文地址,請注明出處:http://en.pswp.cn/news/384333.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

C++引用詳解

轉載&#xff1a;http://www.cnblogs.com/gw811/archive/2012/10/20/2732687.html 引用的概念 引用&#xff1a;就是某一變量&#xff08;目標&#xff09;的一個別名&#xff0c;對引用的操作與對變量直接操作完全一樣。 引用的聲明方法&#xff1a;類型標識符 &引用名目標…

劍指Offer03.數組中重復的數字

找出數組中重復的數字。 在一個長度為 n 的數組 nums 里的所有數字都在 0&#xff5e;n-1 的范圍內。數組中某些數字是重復的&#xff0c;但不知道有幾個數字重復了&#xff0c;也不知道每個數字重復了幾次。請找出數組中任意一個重復的數字。 示例 1&#xff1a; 輸入&…

C++ 模板全特化中的函數特化

轉載&#xff1a;http://blog.csdn.net/rain_qingtian/article/details/15815251 [cpp] view plaincopy print?#include <iostream> using namespace std; template<typename T> bool isLess(T x, T y) { cout << "general version\n&q…

c++面向對象總結

c面向對象總結什么是面向對象&#xff1f;面向對象的三大特性重寫和重載的區別隱藏和重寫&#xff0c;重載的區別什么是多態&#xff1f;多態如何實現什么是面向對象&#xff1f;面向對象的三大特性 面向對象&#xff1a;對象是指具體的某一個事物&#xff0c;這些事物的抽象就…

類模板static成員的使用

轉載&#xff1a;http://blog.csdn.net/ljq32/article/details/7911390 1. 與普通類的static成員一樣&#xff0c;類內部聲明一次&#xff0c;類外部定義一次&#xff0c;定義時可以設置也可以不設置初始值; 2. 類模板內部聲明與普通類的static成員一致&#xff1a; [html] vi…

Linux網絡編程服務器模型選擇之循環服務器

轉載&#xff1a;http://www.cnblogs.com/lizhenghn/p/3617608.html 在網絡程序里面&#xff0c;通常都是一個服務器處理多個客戶機&#xff0c;為了出個多個客戶機的請求&#xff0c;服務器端的程序有不同的處理方式。本節開始介紹Linux下套接字編程的服務器模型選擇&#xff…

劍指Offer04. 二維數組中的查找

在一個 n * m 的二維數組中&#xff0c;每一行都按照從左到右遞增的順序排序&#xff0c;每一列都按照從上到下遞增的順序排序。請完成一個高效的函數&#xff0c;輸入這樣的一個二維數組和一個整數&#xff0c;判斷數組中是否含有該整數。 相當于二叉搜索樹,左孩子比根節點小&…

Linux網絡編程服務器模型選擇之并發服務器(上)

轉載&#xff1a;http://www.cnblogs.com/lizhenghn/p/3617666.html 與循環服務器的串行處理不同&#xff0c;并發服務器對服務請求并發處理。循環服務器只能夠一個一個的處理客戶端的請求&#xff0c;顯然效率很低。并發服務器通過建立多個子進程來實現對請求的并發處理。并發…

劍指Offer10- II. 青蛙跳臺階問題

一只青蛙一次可以跳上1級臺階&#xff0c;也可以跳上2級臺階。求該青蛙跳上一個 n 級的臺階總共有多少種跳法。 答案需要取模 1e97&#xff08;1000000007&#xff09;&#xff0c;如計算初始結果為&#xff1a;1000000008&#xff0c;請返回 1。 示例 1&#xff1a; 輸入&a…

Linux網絡編程服務器模型選擇之并發服務器(下)

轉載&#xff1a;http://www.cnblogs.com/lizhenghn/p/3618986.html 前面兩篇文章&#xff08;參見&#xff09;分別介紹了循環服務器和簡單的并發服務器網絡模型&#xff0c;我們已經知道循環服務器模型效率較低&#xff0c;同一時刻只能為一個客戶端提供服務&#xff0c;而且…

劍指Offer05. 替換空格

請實現一個函數&#xff0c;把字符串 s 中的每個空格替換成"%20"。 示例 1&#xff1a; 輸入&#xff1a;s “We are happy.” 輸出&#xff1a;“We%20are%20happy.” class Solution { public:string replaceSpace(string s) {int count0;int lens.size();stri…

Linux網絡編程服務器模型選擇之IO復用循環并發服務器

轉載&#xff1a;http://www.cnblogs.com/lizhenghn/p/3619091.html 在前面我們介紹了循環服務器&#xff0c;并發服務器模型。簡單的循環服務器每次只能處理一個請求&#xff0c;即處理的請求是串行的&#xff0c;效率過低&#xff1b;并發服務器可以通過創建多個進程或者是線…

數據結構(六)二叉樹的遍歷(遞歸非遞歸方法)

數據結構&#xff08;六&#xff09;二叉樹的遍歷&#xff08;遞歸非遞歸方法&#xff09; 一、遞歸方法 1.先序遍歷 void PreOrder(BiTree T) {visit(T);PreOrder(T->LChild)PreOrder(T->RChild) }2.先序遍歷 void PreOrder(BiTree T) {PreOrder(T->LChild)visit…

memcpy/memset函數的c語言實現

轉載&#xff1a;http://blog.csdn.net/u011118276/article/details/46742341 1、memcpy 頭文件&#xff1a;#include <string.h> 函數原型&#xff1a;void *memcpy(void *dest, const void *src, size_t n) 功能&#xff1a;將指針src指向的內存空間的n個字節復制到des…

計算機網絡(一)計算機網絡體系

計算機網絡&#xff08;一&#xff09;計算機網絡體系一、計算機網絡概述概念功能組成分類二、體系結構和參考模型ISO/OSI模型物理層網絡層傳輸層會話層表示層應用層OSI參考模型與TCP/IP參考模型OSI參考模型與TCP/IP參考模型不同5層參考模型一、計算機網絡概述 概念 計算機網…

計算機網絡(二)物理層

計算機網絡&#xff08;二&#xff09;物理層一、通信基礎物理層接口特性1.機械特性2.電氣特性3.功能特性4.規程特性典型的數據通信模型三種通信方式1.單工通信2.半雙工通信/雙向交替通信3.全雙工通信/雙向同時通信數據傳輸方式串行傳輸并行傳輸同步傳輸異步傳輸二、數據交換方…

計算機網絡(三)數據鏈路層

計算機網絡&#xff08;三&#xff09;數據鏈路層1.基本概念2.功能概述3.組幀字符計數法字符填充法零比特填充法違規編碼法4.差錯控制檢錯編碼奇偶校驗碼CRC循環冗余碼糾錯編碼海明碼流量控制停止等待協議滑動窗口協議后退N幀協議&#xff08;GBN&#xff09;選擇重傳協議5.介質…

libevent網絡編程例子(1)

轉載&#xff1a;http://blog.csdn.net/huangyimo/article/details/46806193 這篇文章介紹下libevent在socket異步編程中的應用。在一些對性能要求較高的網絡應用程序中&#xff0c;為了防止程序阻塞在socket I/O操作上造成程序性能的下降&#xff0c;需要使用異步編程&#xf…

計算機網絡(四)網絡層

計算機網絡&#xff08;四&#xff09;網絡層一、概述和功能TCP/IP協議棧IP數據報格式IP數據報分片二、ipv4網絡地址轉換&#xff08;NAT&#xff09;子網劃分子網掩碼ARP協議&#xff08;地址解析協議&#xff09;DHCP協議ICMP協議二、ipv6ipv4和ipv6的區別IPv6基本地址類型IP…

Linux下基于socket和多線程的聊天室小程序

轉載&#xff1a;http://blog.csdn.net/robot__man/article/details/52460733 要求&#xff1a;基于TCP編寫&#xff0c;一個聊天室最多100人。 客戶端&#xff1a;   1、用戶需要登錄&#xff0c;登錄時只需要輸入一個昵稱即可無需判斷昵稱是否重復&#xff08;如果其他功…