Firefly开源社区

标题: ROC-RK3308-CC Ubuntu16.04 系统支持 [打印本页]

作者: Livvol    时间: 2018-11-23 11:01
标题: ROC-RK3308-CC Ubuntu16.04 系统支持
本帖最后由 Livvol 于 2019-2-27 09:40 编辑

ROC-RK3308-CC 定位AIOT开源板,64 位四核 ARM Cortex-A35 的核心为其提供了不错的性能,频率最高 1.3GHz,搭配 256M ddr,使它可以运行当前几乎所有流行的轻量级的Linux操作系统。
笔者这里小试了下,移植Ubuntu16.04系统到ROC-RK3308-CC板子上,并记录在此。

首先,更新SDK到最新代码,相关操作参考:http://wiki.t-firefly.com/ROC-RK ... ootfilesystem.html#

系统要跑起来,至少要具备的基本分区镜像:


这里先是通过SDK,编译uboot:
  1. $ cd u-boot/
  2. $ ./make.sh roc-rk3308-cc
复制代码

得到trust.img、rk3308_loader_xxx.bin、uboot.img 三个镜像文件

然后是编译kernel,为了支持Ubuntu,kernel需要要进行一些修改
修改dtsi以支持ext4文件系统,可读写权限
  1. --- a/kernel/arch/arm64/boot/dts/rockchip/rk3308-firefly.dtsi
  2. +++ b/kernel/arch/arm64/boot/dts/rockchip/rk3308-firefly.dtsi
  3. @@ -11,7 +11,7 @@
  4.         compatible = "firefly,rk3308-firefly", "firefly,rk3308";

  5.         chosen {
  6. -               bootargs = "earlycon=uart8250,mmio32,0xff0c0000 swiotlb=1 console=ttyFIQ0 root=PARTUUID=614e0000-0000 rootfstype=squashfs rootwait snd_aloop.index=7";
  7. +               bootargs = "earlycon=uart8250,mmio32,0xff0c0000 swiotlb=1 console=ttyFIQ0 rw root=PARTUUID=614e0000-0000 rootfstype=ext4 rootwait snd_aloop.index=7";
  8.         };

  9.         adc-keys {
复制代码

修改defconfig,支持ext4,支持CGROUP等。
  1. --- a/kernel/arch/arm64/configs/firefly-rk3308_linux_defconfig
  2. +++ b/kernel/arch/arm64/configs/firefly-rk3308_linux_defconfig
  3. @@ -6,6 +6,16 @@ CONFIG_FHANDLE=y
  4. CONFIG_NO_HZ=y
  5. CONFIG_HIGH_RES_TIMERS=y
  6. CONFIG_LOG_BUF_SHIFT=18
  7. +CONFIG_CGROUPS=y
  8. +CONFIG_CGROUP_FREEZER=y
  9. +CONFIG_CGROUP_DEVICE=y
  10. +CONFIG_CPUSETS=y
  11. +CONFIG_CGROUP_CPUACCT=y
  12. +CONFIG_CGROUP_SCHED=y
  13. +CONFIG_CFS_BANDWIDTH=y
  14. +CONFIG_NAMESPACES=y
  15. +CONFIG_USER_NS=y
  16. +CONFIG_DEFAULT_USE_ENERGY_AWARE=y
  17. CONFIG_BLK_DEV_INITRD=y
  18. # CONFIG_RD_BZIP2 is not set
  19. # CONFIG_RD_LZMA is not set
  20. @@ -264,8 +274,17 @@ CONFIG_RK_SFC_NAND=y
  21. CONFIG_RK_SFC_NOR=y
  22. CONFIG_ROCKCHIP_SIP=y
  23. CONFIG_EXT2_FS=y
  24. -CONFIG_EXT4_FS=m
  25. +CONFIG_EXT2_FS_XATTR=y
  26. +CONFIG_EXT4_FS=y
  27. +CONFIG_EXT4_FS_POSIX_ACL=y
  28. +CONFIG_EXT4_FS_SECURITY=y
  29. +CONFIG_XFS_FS=y
  30. +CONFIG_BTRFS_FS=y
  31. # CONFIG_DNOTIFY is not set
  32. +CONFIG_FUSE_FS=y
  33. +CONFIG_ISO9660_FS=y
  34. +CONFIG_JOLIET=y
  35. +CONFIG_ZISOFS=y
  36. CONFIG_MSDOS_FS=y
  37. CONFIG_VFAT_FS=y
  38. CONFIG_FAT_DEFAULT_CODEPAGE=936
  39. @@ -273,15 +292,24 @@ CONFIG_FAT_DEFAULT_IOCHARSET="utf8"
  40. CONFIG_NTFS_FS=y
  41. CONFIG_NTFS_RW=y
  42. CONFIG_TMPFS=y
  43. +CONFIG_TMPFS_POSIX_ACL=y
  44. CONFIG_SQUASHFS=y
  45. CONFIG_SQUASHFS_DECOMP_MULTI_PERCPU=y
  46. +CONFIG_SQUASHFS_LZ4=y
  47. +CONFIG_SQUASHFS_LZO=y
  48. +CONFIG_SQUASHFS_XZ=y
  49. CONFIG_SQUASHFS_4K_DEVBLK_SIZE=y
  50. CONFIG_PSTORE=y
  51. CONFIG_PSTORE_CONSOLE=y
  52. CONFIG_PSTORE_RAM=y
  53. -# CONFIG_NETWORK_FILESYSTEMS is not set
  54. +CONFIG_NFS_FS=y
  55. +CONFIG_NFS_V3_ACL=y
  56. +CONFIG_NFS_V4=y
  57. +CONFIG_NFS_SWAP=y
  58. CONFIG_NLS_DEFAULT="utf8"
  59. +CONFIG_NLS_CODEPAGE_437=y
  60. CONFIG_NLS_CODEPAGE_936=y
  61. +CONFIG_NLS_ASCII=y
  62. CONFIG_NLS_ISO8859_1=y
  63. CONFIG_NLS_UTF8=y
  64. CONFIG_PRINTK_TIME=y
  65. @@ -302,7 +330,6 @@ CONFIG_RCU_CPU_STALL_TIMEOUT=60
  66. CONFIG_STRICT_DEVMEM=y
  67. CONFIG_DEBUG_SET_MODULE_RONX=y
  68. # CONFIG_CRYPTO_ECHAINIV is not set
  69. -CONFIG_CRYPTO_CRC32C=y
  70. # CONFIG_CRYPTO_HW is not set
  71. CONFIG_ARM64_CRYPTO=y
  72. CONFIG_CRYPTO_SHA1_ARM64_CE=y
复制代码

编译内核:
  1. $ cd kernel/
  2. $ make arch=arm64 firefly-rk3308_linux_defconfig
  3. $ make arch=arm64 rk3308-roc-cc-dmic-pdm_emmc.img
复制代码

得到zboot.img

最后是根文件系统的制作,这个套路其实都是差不多的,可以参考Firefly-RK3399制作Ubuntu 16.04 根文件系统的方法:http://wiki.t-firefly.com/zh_CN/ ... _ubuntu_rootfs.html,最核心的地方就是通过交叉模拟器qemu-user-static,对文件系统进行定制,这个大家按自己需求来就好,这里就不再赘述了,这里移植的是Ubuntu 16.04 64bit,按同样的方法,也可以移植其他的Ubuntu版本,例如Ubuntu 18.04 64bit。


Ubuntu16.04的镜像,可以到ubuntu cdimg 下载,选择下载ubuntu-base-16.04.1-base-arm64.tar.gz


为了快速编译,以及方便大家理解,我写了个一键编译的脚本,mk-rootfs-ubuntu_arm_64bit.sh,通过脚本即可以直接编译,脚本见百度网盘。
网盘链接: https://pan.baidu.com/s/1uhPBm246Mq6QLCzqcIUclA 提取码: t7pp

将压缩包解压后,里面会有编译脚本mk-rootfs-ubuntu_arm_64bit.sh,以及我编译好的固件,包括parameter.txt也在里面等。使用前,先编辑脚本,修改自己的信息,例如SDK路径等
  1. # Ubuntu 镜像压缩包
  2. UBUNTU_TAR="ubuntu-base-16.04.1-base-arm64.tar.gz"
  3. # 工作目录
  4. TARGET_ROOTFS_DIR="$CURDIR/binary_ubuntu_SYSTEM"
  5. SOURCEDIR="$CURDIR/source"
  6. MOUNTPOINT="mnt"
  7. OUTIMAGE="ubuntu1604.img"
  8. OUTDIR="out"
  9. SDK_PATH="~/prj/rk3308/roc-rk3308-cc"
  10. # 主机名字
  11. USER="firefly"
  12. HOST="firefly-ubuntu"
复制代码


最后,记得修改 ROC-RK3308-CC的parameter.txt,去掉多余的分区,如下:
  1. FIRMWARE_VER:8.1
  2. MACHINE_MODEL:RK3308
  3. MACHINE_ID:007
  4. MANUFACTURER: RK3308
  5. MAGIC: 0x5041524B
  6. ATAG: 0x00200800
  7. MACHINE: 3308
  8. CHECK_MASK: 0x80
  9. PWR_HLD: 0,0,A,0,1
  10. TYPE: GPT
  11. CMDLINE:mtdparts=rk29xxnand:0x00001000@0x00002000(uboot),0x00001000@0x00003000(trust),0x00006000@0x00004000(boot),-@0x0000C000(rootfs:grow)
  12. uuid:rootfs=614e0000-0000-4b53-8000-1d28000054a9
复制代码



编译脚本,最终会在当前的out/目录生成各个所需的镜像文件,如:
  1. out/
  2. ├── boot.img
  3. ├── ubuntu1604.img
  4. ├── parameter.txt
  5. ├── rk3308_loader_v1.24.108.bin
  6. ├── trust.img
  7. └── uboot.img
复制代码


通过upgrade_tool烧写分区镜像到板子上即可:
  1. sudo upgrade_tool ul rk3308_loader_v1.24.108.bin && \
  2. sudo upgrade_tool di -p parameter.txt && \
  3. sudo upgrade_tool di -uboot uboot.img && \
  4. sudo upgrade_tool di -trust trust.img && \
  5. sudo upgrade_tool di -boot zboot.img && \
  6. sudo upgrade_tool di -rootfs ubuntu1604.img && \
  7. sudo upgrade_tool rd
复制代码


关于网络使用:

以太网的话,直接插上网线就可以用了。
WiFi连接,使用命令nmcli device wifi connect "name" password "psk"





作者: lcwangtw    时间: 2019-2-25 14:35
链接: https://pan.baidu.com/s/12Hzp7dEdciz9dgpDha3d8w 提取码: qgxf 失效
能否請樓主重新分享一下
感謝
作者: Livvol    时间: 2019-2-26 09:24
lcwangtw 发表于 2019-2-25 14:35
链接: https://pan.baidu.com/s/12Hzp7dEdciz9dgpDha3d8w 提取码: qgxf 失效
能否請樓主重新分享一下
感 ...

链接没问题啊
作者: lcwangtw    时间: 2019-2-27 08:09
Livvol 发表于 2019-2-26 09:24
链接没问题啊

Hi 樓主大大,
1. 我點链接, 輸入提取码後, 百度網盤顯示: 分享链接中有...內容, 無法繼續查看.
2. 我目前參考樓主大大, Wiki及https://www.jianshu.com/p/584db061a864等3篇文章安裝Ubuntu 16.04.5, 結果燒錄後Android device沒抓到, ADB不通. 由於今年買的時候, 沒有買到適合的屏做為顯示及調適, 所以ADB不通造成現在沒法繼續下去了. 因此很想試試樓主大大的一键编译脚本, 還是請樓主大大也在Github或GitLab等分享. 感謝.
作者: Livvol    时间: 2019-2-27 09:46
lcwangtw 发表于 2019-2-27 08:09
Hi 樓主大大,
1. 我點链接, 輸入提取码後, 百度網盤顯示: 分享链接中有...內容, 無法繼續查看.
2. 我目 ...

我更新了链接,你试试。
制作出来的原生系统,并不支持ADBD。需要你自己去移植。
作者: Jesus    时间: 2019-4-13 15:17
@@ -273,15 +292,24 @@
请问示例中类似这行的代码是什么意思

作者: Livvol    时间: 2019-4-15 11:12
Jesus 发表于 2019-4-13 15:17
@@ -273,15 +292,24 @@
请问示例中类似这行的代码是什么意思

参考:https://blog.csdn.net/zwwjs/article/details/8174310
作者: Jesus    时间: 2019-4-16 18:13
谢谢

作者: x2816960    时间: 2019-12-23 17:29
感谢,我通过您的教程。ubuntu16.04和ubuntu18.04都已经在rk3308上跑起来了。
作者: luffycheung    时间: 2020-2-19 15:58
Livvol 发表于 2019-2-27 09:46
我更新了链接,你试试。
制作出来的原生系统,并不支持ADBD。需要你自己去移植。

请问ADBD如何移植到Ubuntu中去,能给个思路方法吗?
作者: smiletudy    时间: 2020-3-30 14:50
请问你蓝牙可以用吗?我这边好像wifi正常 蓝牙不行
作者: zzl88824    时间: 2021-2-2 13:45
您好,
我按照您的教程,试图在3308B-CC-Plus板子上移植Ubuntu固件,所有步骤似乎都成功了。
但是当把镜像烧写进去并重启板子后,LED亮起大约2秒左右后就又熄灭,然后再次亮起,如此循环往复。
请问一下问题大概会出在哪里?
作者: qtdyn    时间: 2021-3-10 16:09
烧录时显示显示:
Loading loader...
Support Type:RK3308     Loader ver:1.05 Loader Time:2018-11-13 16:16:57
Upgrade loader ok.
directlba=1,first4access=1,gpt=1
Write gpt...
Checking backup gpt failed!





欢迎光临 Firefly开源社区 (https://dev.t-firefly.com/) Powered by Discuz! X3.1