Difference between revisions of "Debian BSP User Guide for rk3399 risc series"

From ESS-WIKI
Jump to: navigation, search
 
(42 intermediate revisions by 5 users not shown)
Line 1: Line 1:
 +
 
== Linux BSP Version ==
 
== Linux BSP Version ==
  
Debian 9.x / Ubuntu 16.04
+
Debian 9.x / Debian 10.x 
 +
 
 +
<!--&nbsp;Ubuntu 18.04 -->
  
 
Kernel 4.4.194
 
Kernel 4.4.194
Line 9: Line 12:
 
Currently, we adopt [https://www.docker.com/ Docker] as build environment.
 
Currently, we adopt [https://www.docker.com/ Docker] as build environment.
  
You can get the latest version of [https://hub.docker.com/r/advrisc/u16.04-imx6abv5 advrisc/u16.04-imx6abv5] Docker image for developing Rockchip RK3399 projects.
+
You can get the latest version of advrisc/u18.04-rklbv1 Docker image for developing Rockchip RK3399 projects.
  
 
Docker command:
 
Docker command:
<pre>docker pull advrisc/u16.04-imx6abv5:20170523&nbsp;</pre>
+
<pre>docker pull advrisc/u18.04-rklbv1</pre>
  
 
== Run Docker example ==
 
== Run Docker example ==
  
 
Step1 Run docker container (example)
 
Step1 Run docker container (example)
<pre>docker run -it --name rk3399_linux_v231_risc -v /home/bsp/myandroid:/home/adv/BSP:rw advrisc/u16.04-imx6abv5:20170523 /bin/bash
+
<pre>sudo docker run -it --name rk3399_linux_risc -v /home/bsp/myLinux:/home/adv/BSP:rw --privileged advrisc/u18.04-rklbv1:latest /bin/bash
 
</pre>
 
</pre>
  
 
Step2 In container, change the user. (example)
 
Step2 In container, change the user. (example)
  
 
+
&nbsp;
 
<pre> adv@7cc0fa834366:~$ sudo chown adv:adv -R BSP
 
<pre> adv@7cc0fa834366:~$ sudo chown adv:adv -R BSP
 
</pre>
 
</pre>
 +
 +
== Install Some tools ==
 +
<pre>$sudo apt-get install expect
 +
$</pre>
  
 
== Getting Linux Source Code ==
 
== Getting Linux Source Code ==
<pre>$ cd ~/code
+
 
$ sudo git clone https://github.com/rockchip-linux/repo.git
+
Debian 9.x&nbsp;
 +
<pre>$ cd ~/BSP
 +
$ sudo git clone https://github.com/ADVANTECH-Rockchip/repo.git
 
$ mkdir rk3399_linux_risc
 
$ mkdir rk3399_linux_risc
 
$ cd rk3399_linux_risc
 
$ cd rk3399_linux_risc
Line 38: Line 47:
 
$  
 
$  
 
</pre>
 
</pre>
 +
 +
Debian 10.x
 +
<pre>$ cd ~/BSP
 +
$ sudo git clone https://github.com/ADVANTECH-Rockchip/repo.git
 +
$ mkdir rk3399_linux_risc
 +
$ cd rk3399_linux_risc
 +
$ git config --global user.name "Your Name"
 +
$ git config --global user.email you@example.com
 +
$ ../repo/repo init -u https://github.com/ADVANTECH-Rockchip/linux-manifest.git -b rk3399_linux_v251_risc -m default.xml
 +
$ ../repo/repo sync
 +
$ ../repo/repo forall -c git checkout -b local --track advantech-github/rk3399_linux_v251_risc
 +
$ </pre>
  
 
== Build U-boot ==
 
== Build U-boot ==
 +
 +
=== Build RSB-3710 U-boot ===
 +
<pre>$ export TOP=`pwd`
 +
$ cd $TOP
 +
$ cd u-boot
 +
$ ./make.sh rk3399_rsb3710a2_2G
 +
</pre>
 +
 +
=== Build RSB-4710 U-boot ===
 
<pre>$ export TOP=`pwd`
 
<pre>$ export TOP=`pwd`
 
$ cd $TOP
 
$ cd $TOP
 
$ cd u-boot
 
$ cd u-boot
 
$ ./make.sh rk3399_rsb4710a2_2G
 
$ ./make.sh rk3399_rsb4710a2_2G
 +
</pre>
 +
 +
=== Build ROM-5780 U-boot ===
 +
<pre>$ export TOP=`pwd`
 +
$ cd $TOP $ cd u-boot
 +
$ ./make.sh rk3399_rom5780a3_2G
 
</pre>
 
</pre>
  
 
== Build Kernel ==
 
== Build Kernel ==
  
=== Build for RSB4710 platform ===
+
=== Build RSB-3710 Kernel ===
<pre>$ cd kernel
+
<pre>$ cd $TOP
 +
$ cd kernel
 
$ make ARCH=arm64 rk3399_adv_defconfig -j8
 
$ make ARCH=arm64 rk3399_adv_defconfig -j8
$ make ARCH=arm64 rk3399-rsb4710-a2.img -j12
+
$ make ARCH=arm64 rk3399-rsb3710-a2.img -j12
 
</pre>
 
</pre>
 +
 +
=== Build RSB-4710 Kernel ===
 +
 +
 +
 +
=== Build ROM-5780 Kernel ===
 +
<pre>$ cd $TOP
 +
$ cd kernel
 +
$ make ARCH=arm64 rk3399_adv_defconfig -j8
 +
$ make ARCH=arm64 rk3399-rom5780-a3.img -j12</pre>
  
 
== Build Recovery ==
 
== Build Recovery ==
Line 61: Line 108:
 
</pre>
 
</pre>
  
== Build Debian 9.x ==
+
== Build Debian 9.x / Debian 10.x ==
<pre>$ source build/envsetup.sh  
+
<pre>$ cd $TOP
$ lunch rk3399_rsb4710-userdebug
+
$ source envsetup.sh rockchip_rk3399
$ make -j4 2>&1 | tee build-log.txt
+
$ sudo BUILD_IN_DOCKER=TRUE ./mk-debian.sh
 
</pre>
 
</pre>
  
== Build ubuntu 16.04 ==
+
<!-- == Build ubuntu 18.04 ==
<pre>$ source build/envsetup.sh  
+
<span _fck_mw_customtag="true" _fck_mw_tagname="pre" _fck_mw_tagtype="t" class="fck_mw_special">$ cd $TOPfckLR$ source envsetup.sh rockchip_rk3399fckLR$ cd rootfs_adv/ubuntu18.04/fckLR$ sudo ./mk-ubuntu.shfckLR$fckLR</span> -->
$ lunch rk3399_rsb4710-userdebug
+
 
$ make -j4 2>&1 | tee build-log.txt
+
<!--You can get ubuntu 18.04 "rootfs.img" in the fold "rootfs_adv/ubuntu18.04" .-->
</pre>
 
  
 
== Push all image to rockdev folder ==
 
== Push all image to rockdev folder ==
<pre>$ ./mkimage.sh
+
<pre>$ ./mkfirmware.sh
 
</pre>
 
</pre>
  
All image in rockdev/Image-rk3399_rsb4710 ./mkimage.sh at previous step will repack boot.img and system.img, and copy other related image files to the rockdev/Image-rk3399_rsb4710/ directory. The common image files are listed below:
+
All image in rockdev/ ./mkfirmware.sh at previous step will repack boot.img and rootfs.img, and copy other related image files to the rockdev/&nbsp;directory. The common image files are listed below:
 
 
 
 
<pre># boot.img        &nbsp;: Android's initramfs, to initialize and mount system partition.
 
# kernel.img      &nbsp;: Kernel image.
 
# misc.img        &nbsp;: Misc partition image, to switch boot mode and pass parameter in recovery mode.
 
# recovery.img    &nbsp;: Recovery mode image.
 
# resource.img    &nbsp;: Resource image, containing boot logo and kernel's device tree info.
 
# system.img      &nbsp;: System partition image with ext4 filesystem format.
 
# uboot.img        :uboot
 
# trust.img        :File about sleep
 
# MiniLoaderAll.bin :Loader
 
  
 +
&nbsp;
 +
<pre># board.img     
 +
# boot.img   
 +
# misc.img   
 +
# oem.img
 +
# recovery.img   
 +
# rootfs.img   
 +
# uboot.img   
 +
# trust.img       
 +
# MiniLoaderAll.bin
 +
# parameter.txt
 +
#
 
</pre>
 
</pre>
  
== Create OTA zip ==
+
== Make update.img ==
 
+
<pre>$ cd $TOP
'''<big>Step1</big>''' After Build Android, you will be create image for OTA update.
+
$ source envsetup.sh rockchip_rk3399
<pre>$ ./mkimage.sh ota
+
$ ./build.sh updateimg
 
</pre>
 
</pre>
  
'''<big>Step2</big>''' Package the update.zip
+
You can get update.img in rockdev/
<pre>$ make otapackage
 
</pre>
 
 
 
'''<big>Step3&nbsp;</big>'''Rename the out/target/product/rk3399_rsb4710/rk3399_rsb4710-ota-eng.adv.zip to update.zip
 
<pre>$mv out/target/product/rk3399_rsb4710/rk3399_rsb4710-ota-eng.adv.zip update.zip
 
</pre>
 
 
 
Note&nbsp;:&nbsp; "adv" in rk3399_rsb4710-ota-eng.adv.zip&nbsp; is the name of your building PC.
 
 
 
'''<big>Step4&nbsp;</big>'''Copy the update.zip to SD or USB disk.
 
 
 
'''<big>Step5&nbsp;</big>'''Follow Android update.
 
 
 
== How to do about update RSB4710 Platform? ==
 
 
 
There are three ways to update images:
 
 
 
=== '''[[1._Using_AndroidToool.|1._Using_AndroidToool.]]''' ===
 
 
 
There is no limitation by this way.
 
 
 
=== '''[[2._Using_storage(such_sd_or_USB_disk)with_update.zip_in_it.|2._Using_storage(such&nbsp;sd_or_USB_disk)with_update.zip_in_it.]]''' ===
 
 
 
There are some&nbsp;limitations:
 
 
 
(1)The device must be able to boot up to Android system.
 
 
 
(2)Only update images from the same os,&nbsp; eg&nbsp;:&nbsp;
 
 
 
&nbsp; &nbsp; &nbsp; &nbsp; Android6.0 upgrade to Android6.0 or&nbsp;Android7.1&nbsp;upgrade to Android7.1.
 
 
 
(3)Using update.zip to upgrade. (see more detail in "Create OTA zip" on how to create update.zip)
 
 
 
=== '''[[3._Using_bootup_sd_disk_made_by_SDDiskTool.|3._Using_bootup_sd_disk&nbsp;made_by&nbsp;SDDiskTool.]]''' ===
 
 
 
(1)Only update images from the same os,&nbsp; eg&nbsp;:&nbsp;
 
 
 
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Android6.0 upgrade to Android6.0 or&nbsp;Android7.1&nbsp;upgrade to Android7.1.
 
 
 
(2)Using update.img to upgrade.
 

Latest revision as of 02:42, 6 February 2024

Linux BSP Version

Debian 9.x / Debian 10.x 


Kernel 4.4.194

Build Environment on Host

Currently, we adopt Docker as build environment.

You can get the latest version of advrisc/u18.04-rklbv1 Docker image for developing Rockchip RK3399 projects.

Docker command:

docker pull advrisc/u18.04-rklbv1

Run Docker example

Step1 Run docker container (example)

sudo docker run -it --name rk3399_linux_risc -v /home/bsp/myLinux:/home/adv/BSP:rw --privileged advrisc/u18.04-rklbv1:latest /bin/bash

Step2 In container, change the user. (example)

 

 adv@7cc0fa834366:~$ sudo chown adv:adv -R BSP

Install Some tools

$sudo apt-get install expect 
$

Getting Linux Source Code

Debian 9.x 

$ cd ~/BSP
$ sudo git clone https://github.com/ADVANTECH-Rockchip/repo.git
$ mkdir rk3399_linux_risc
$ cd rk3399_linux_risc
$ git config --global user.name "Your Name"
$ git config --global user.email you@example.com
$ ../repo/repo init -u https://github.com/ADVANTECH-Rockchip/linux-manifest.git -b rk3399_linux_v231_risc -m default.xml
$ ../repo/repo sync
$ ../repo/repo forall -c git checkout -b local --track advantech-github/rk3399_linux_v231_risc
$ 

Debian 10.x

$ cd ~/BSP
$ sudo git clone https://github.com/ADVANTECH-Rockchip/repo.git
$ mkdir rk3399_linux_risc
$ cd rk3399_linux_risc
$ git config --global user.name "Your Name"
$ git config --global user.email you@example.com
$ ../repo/repo init -u https://github.com/ADVANTECH-Rockchip/linux-manifest.git -b rk3399_linux_v251_risc -m default.xml
$ ../repo/repo sync
$ ../repo/repo forall -c git checkout -b local --track advantech-github/rk3399_linux_v251_risc
$ 

Build U-boot

Build RSB-3710 U-boot

$ export TOP=`pwd`
$ cd $TOP
$ cd u-boot
$ ./make.sh rk3399_rsb3710a2_2G

Build RSB-4710 U-boot

$ export TOP=`pwd`
$ cd $TOP
$ cd u-boot
$ ./make.sh rk3399_rsb4710a2_2G

Build ROM-5780 U-boot

$ export TOP=`pwd` 
$ cd $TOP $ cd u-boot 
$ ./make.sh rk3399_rom5780a3_2G

Build Kernel

Build RSB-3710 Kernel

$ cd $TOP
$ cd kernel
$ make ARCH=arm64 rk3399_adv_defconfig -j8
$ make ARCH=arm64 rk3399-rsb3710-a2.img -j12

Build RSB-4710 Kernel

Build ROM-5780 Kernel

$ cd $TOP 
$ cd kernel
$ make ARCH=arm64 rk3399_adv_defconfig -j8 
$ make ARCH=arm64 rk3399-rom5780-a3.img -j12

Build Recovery

$ cd $TOP
$ rm buildroot/output/rockchip_rk3399_recovery -rf
$ source envsetup.sh rockchip_rk3399_recovery
$ ./build.sh recovery

Build Debian 9.x / Debian 10.x

$ cd $TOP
$ source envsetup.sh rockchip_rk3399
$ sudo BUILD_IN_DOCKER=TRUE ./mk-debian.sh


Push all image to rockdev folder

$ ./mkfirmware.sh

All image in rockdev/ ./mkfirmware.sh at previous step will repack boot.img and rootfs.img, and copy other related image files to the rockdev/ directory. The common image files are listed below:

 

# board.img       
# boot.img     
# misc.img    
# oem.img 
# recovery.img    
# rootfs.img    
# uboot.img     
# trust.img        
# MiniLoaderAll.bin
# parameter.txt
# 

Make update.img

$ cd $TOP
$ source envsetup.sh rockchip_rk3399
$ ./build.sh updateimg

You can get update.img in rockdev/