Difference between revisions of "Rockchip Kernel"

From Rockchip open source Document
Jump to: navigation, search
Line 1: Line 1:
  
= Download Kernel =
+
In your linux SDK root directory. enter to kernel directory. 
 +
<pre>cd kernel
 +
</pre>
  
You can clone the rockchip kernel repository from github which is kernel 4.4 based:
+
Config your kernel.
<pre>git clone https://github.com/rockchip-linux/kernel.git</pre>
 
  
&nbsp;
+
For ARM v7: RK3288
 +
<pre>make ARCH=arm32 rockchip_linux_defconfig
 +
</pre>
  
= Supported SoCs and Devices =
+
For ARM V8: RK3399, RK3328
 +
<pre>make ARCH=arm64 rockchip_linux_defconfig
 +
</pre>
  
Rockchip kernel 4.4 supports:
+
For RK3399&nbsp;sapphire-excavator board, VS-RK3399 board,&nbsp;Rock960 board. Use below command to build the kernel:&nbsp;
 +
<pre>./make.sh evb-rk3399
 +
</pre>
  
RK3036, RK3066, RK312X, RK3188, RK322X,[[RK3288|RK3288]], [[RK3328|RK3328]], RK3368, [[RK3399|RK3399]]
+
For firefly-rk3399&nbsp;board. Use below command to build the kernel:&nbsp;
 +
<pre>./make.sh firefly-rk3399
 +
</pre>
  
&nbsp;
+
For firefly-rk3288 board. Use below command to build the kernel:&nbsp;
 +
<pre>./make.sh firefly-rk3288
 +
</pre>
  
= Configure and Build =
+
For rk3288-evb-act8846&nbsp;board. Use below command to build the kernel:&nbsp;
 +
<pre>./make.sh evb-rk3288
 +
</pre>
  
You will need to use rockchip_linux_defconfig for Linux OS
+
For rk3288-evb-rk808&nbsp;board. Use below command to build the kernel:&nbsp;
 +
<pre>./make.sh fennec-rk3288
 +
</pre>
  
For ARM v7
+
For rk3288 tinker&nbsp;board. Use below command to build the kernel:&nbsp;
<pre>make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- rockchip_linux_defconfig
+
<pre>./make.sh tinker-rk3288
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- -j4
 
 
</pre>
 
</pre>
  
For ARM V8
+
For phytec-rk3288&nbsp;board. Use below command to build the kernel:&nbsp;
<pre>make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- rockchip_linux_defconfig
+
<pre>./make.sh phycore-rk3288
make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- -j4</pre>
+
</pre>
  
Then you can get Image/zImage and dtb file.
+
For rk3288 miqi&nbsp;board. Use below command to build the kernel:&nbsp;
 
+
<pre>./make.sh miqi-rk3288
&nbsp;
 
 
 
&nbsp;
 
 
 
 
 
 
 
 
 
= Install Boot/kernel =
 
 
 
We use distro boot in U-Boot, so we need to make a boot partition for U-Boot with kernel image and dtb inside.
 
<pre>mkdir boot
 
cp arch/arm64/boot/dts/rockchip/rk3399-evb.dtb boot/rk3399.dtb
 
cp arch/arm64/boot/Image boot/</pre>
 
 
 
Add [[Media:Boot_extlinux.zip|extlinux/extlinux.conf]] for distro boot.
 
<pre>mkdir boot/extlinux
 
vi boot/extlinux/extlinux.conf</pre>
 
 
 
&nbsp;
 
<pre>label rockchip-kernel-4.4
 
    kernel /Image
 
    fdt /rk3399.dtb
 
    append earlycon=uart8250,mmio32,0xff1a0000 root=PARTUUID=B921B045-1D rootwait rootfstype=ext4 init=/sbin/init</pre>
 
 
 
For armv7
 
<pre>label rockchip-kernel-4.4
 
    kernel /zImage
 
    fdt /rk3288.dtb
 
    append earlyprintk console=ttyS2,1500000n8 rw root=PARTUUID=69dad710-2c rootwait rootfstype=ext4 init=/sbin/init</pre>
 
 
 
You need to change the base address of debug UART, root partition for your board.
 
 
 
Pls reference to [[Partitions|rockchip Linux parttion definition]]&nbsp;for rootfs partition and where boot to flash.
 
 
 
After all these files prepare completely, we write the file to the boot partition
 
 
 
&nbsp;
 
 
 
== Generate ext2fs&nbsp;boot partition ==
 
 
 
by genext2fs:
 
<pre>genext2fs -b 32768 -B $((32*1024*1024/32768)) -d boot/ -i 8192 -U boot_rk3399.img</pre>
 
 
 
According to Rockchip partition definition, you need to flash this image to boot partiton which offset is 0x8000.
 
 
 
&nbsp;
 
 
 
== Generate fatfs boot partition ==
 
 
 
=== Generate boot.img in fatfs ===
 
 
 
Below commands can generate a fatfs boot.img
 
<pre>dd if=/dev/zero of=boot.img bs=1M count=32
 
sudo mkfs.fat boot.img
 
mkdir tmp
 
sudo mount boot.img tmp/
 
cp -r boot/* tmp/
 
umount tmp</pre>
 
 
 
Done!
 
 
 
Flash this boot.img to boot partition, which is offset 0x8000 in Rockchip partition definition.
 
 
 
=== Update boot.img via U-Boot in target ===
 
 
 
After flash and&nbsp;boot the U-Boot, write the gpt table from default partition table
 
<pre>gpt write mmc 1 $partitions
 
gpt verify mmc 1 $partitions</pre>
 
 
 
connect target to PC and start the ums in command line:
 
<pre>ums 0 mmc 1:6</pre>
 
 
 
We should able to see a device connect to PC, formate and copy data into the partition(dev/sdb6 for example).
 
<pre>sudo mkfs.fat /dev/sdb6
 
cp -r boot/* /media/machine/9F35-9565/
 
 
</pre>
 
</pre>
  
Done!
+
It will generate 2 binary image: kernel.img, resource.img.&nbsp;
 
 
&nbsp;
 
  
 +
kernel image: Please flash this binary to kernel partition
  
== Boot from U-Boot ==
+
resource image: it contain kernel dtb. Please flash this binary to resource partition
  
If you are using genext2fs to genarate the boot.img, you need write the gpt table in U-Boot command line:
+
See [[Rockchip_Kernel|Rockchip kernel]] for more detail.
<pre>gpt write mmc 0 $partitions</pre>
 
 
 
Then boot from eMMC or reset:
 
<pre>boot</pre>
 
 
 
If everything is OK, you should able to see the U-Boot log like this:
 
<pre>switch to partitions #0, OK
 
mmc0(part 0) is current device
 
Scanning mmc 0:6...
 
Found /extlinux/extlinux.conf
 
Retrieving file: /extlinux/extlinux.conf
 
205 bytes read in 82 ms (2 KiB/s)
 
1:      upstream-4.10
 
Retrieving file: /Image
 
13484040 bytes read in 1833 ms (7 MiB/s)
 
append: earlycon=uart8250,mmio32,0xff1a0000 console=ttyS2,1500000n8 rw root=/dev/mmcblk0p7 rootwait rootfstype=ext4 init=/sbin/init
 
Retrieving file: /rk3399.dtb
 
61714 bytes read in 54 ms (1.1 MiB/s)
 
## Flattened Device Tree blob at 01f00000
 
  Booting using the fdt blob at 0x1f00000
 
  Loading Device Tree to 000000007df14000, end 000000007df26111 ... OK
 
 
 
Starting kernel ...
 
</pre>
 
  
 
&nbsp;
 
&nbsp;

Revision as of 07:57, 18 April 2018

In your linux SDK root directory. enter to kernel directory. 

cd kernel

Config your kernel.

For ARM v7: RK3288

make ARCH=arm32 rockchip_linux_defconfig

For ARM V8: RK3399, RK3328

make ARCH=arm64 rockchip_linux_defconfig

For RK3399 sapphire-excavator board, VS-RK3399 board, Rock960 board. Use below command to build the kernel: 

./make.sh evb-rk3399

For firefly-rk3399 board. Use below command to build the kernel: 

./make.sh firefly-rk3399

For firefly-rk3288 board. Use below command to build the kernel: 

./make.sh firefly-rk3288

For rk3288-evb-act8846 board. Use below command to build the kernel: 

./make.sh evb-rk3288

For rk3288-evb-rk808 board. Use below command to build the kernel: 

./make.sh fennec-rk3288

For rk3288 tinker board. Use below command to build the kernel: 

./make.sh tinker-rk3288

For phytec-rk3288 board. Use below command to build the kernel: 

./make.sh phycore-rk3288

For rk3288 miqi board. Use below command to build the kernel: 

./make.sh miqi-rk3288

It will generate 2 binary image: kernel.img, resource.img. 

kernel image: Please flash this binary to kernel partition

resource image: it contain kernel dtb. Please flash this binary to resource partition

See Rockchip kernel for more detail.