2000字范文,分享全网优秀范文,学习好帮手!
2000字范文 > [ROC-RK3568-PC] 手把手教你编译Linux_SDK并打包Buildroot系统固件

[ROC-RK3568-PC] 手把手教你编译Linux_SDK并打包Buildroot系统固件

时间:2021-01-20 17:51:46

相关推荐

[ROC-RK3568-PC] 手把手教你编译Linux_SDK并打包Buildroot系统固件

✏️ROC-RK3568-PC入门篇连载进程:

[ROC-RK3568-PC] 手把手教你把出厂的Android系统烧写为Ubuntu系统

[ROC-RK3568-PC] 手把手教你制作Ubuntu系统TF卡启动盘

[ROC-RK3568-PC] 手把手教你编译Linux_SDK并打包Ubuntu系统固件

[ROC-RK3568-PC] 手把手教你解包Ubuntu系统固件

[ROC-RK3568-PC] 手把手教你在Linux下解包与打包Ubuntu系统固件

[ROC-RK3568-PC] 手把手教你打包能使用Etcher或dd命令烧写的Ubuntu系统固件

在前面文章中全部都是围绕Ubuntu固件进行展开,有兴趣的读者可以自行翻阅,接下来给大家讲讲如何编译并打包Buildroot系统固件!编译Linux_SDK过程绝大部分与之前讲述的Ubuntu系统固件相同。如果读者曾经编译过Linux_SDK,请直接从第三部分开始阅读!

文章目录

一、开发环境搭建1.1 主机安装Docker1.2 Docker安装Ubuntu 18.041.3 Ubuntu 18.04安装常用工具二、下载Linux_SDK三、编译Linux_SDK四、打包Buildroot系统固件

一、开发环境搭建

众所周知,编译最让人头疼的就是主机环境问题!假设我手上有其他芯片厂商的板卡,每个厂商的SDK都使用不同的编译环境,而我的Ubuntu主机系统只有一个,那怎么办?

使用Docker容器!

按照Firefly官方维基介绍,推荐使用Ubuntu 18.04,那我们在Docker下搭建一个Ubuntu 18.04系统好了!

1.1 主机安装Docker

照搬我之前写的这篇:Linux工具篇 | Ubuntu搭建Docker容器引擎

1.2 Docker安装Ubuntu 18.04

$ sudo apt update$ docker pull ubuntu:18.04

切换Shell到Ubuntu 18.04:

$ docker container run -p 8000:3000 -it ubuntu:18.04 /bin/bashroot@32b7b9ddcaab:/# cat /etc/issueUbuntu 18.04.6 LTS \n \l

1.3 Ubuntu 18.04安装常用工具

root@32b7b9ddcaab:/# apt updateroot@32b7b9ddcaab:/# apt install byobu vim-gtk inetutils-ping net-tools wget cpio unzip rsync xz-utils

过程中需要配置地区,选择亚洲上海:

Configuring tzdata------------------Please select the geographic area in which you live. Subsequent configuration questions will narrow this down by presenting a list of cities,representing the time zones in which they are located.1. Africa 3. Antarctica 5. Arctic 7. Atlantic 9. Indian 11. SystemV 13. Etc2. America 4. Australia 6. Asia 8. Europe 10. Pacific 12. USGeographic area: 6Please select the city or region corresponding to your time zone.1. Aden13. Barnaul25. Dushanbe37. Jerusalem49. Macau 61. Pyongyang73. Taipei 85. Vientiane2. Almaty 14. Beirut26. Famagusta 38. Kabul 50. Magadan 62. Qatar74. Tashkent 86. Vladivostok3. Amman15. Bishkek27. Gaza 39. Kamchatka51. Makassar63. Qostanay 75. Tbilisi 87. Yakutsk4. Anadyr 16. Brunei28. Harbin 40. Karachi 52. Manila 64. Qyzylorda76. Tehran 88. Yangon5. Aqtau17. Chita 29. Hebron 41. Kashgar 53. Muscat 65. Rangoon 77. Tel_Aviv 89. Yekaterinburg6. Aqtobe 18. Choibalsan 30. Ho_Chi_Minh 42. Kathmandu54. Nicosia 66. Riyadh 78. Thimphu 90. Yerevan7. Ashgabat 19. Chongqing 31. Hong_Kong 43. Khandyga55. Novokuznetsk 67. Sakhalin 79. Tokyo8. Atyrau 20. Colombo32. Hovd 44. Kolkata 56. Novosibirsk 68. Samarkand80. Tomsk9. Baghdad 21. Damascus 33. Irkutsk45. Krasnoyarsk 57. Omsk69. Seoul81. Ujung_Pandang10. Bahrain 22. Dhaka 34. Istanbul46. Kuala_Lumpur 58. Oral70. Shanghai 82. Ulaanbaatar11. Baku23. Dili 35. Jakarta47. Kuching 59. Phnom_Penh 71. Singapore83. Urumqi12. Bangkok 24. Dubai 36. Jayapura48. Kuwait 60. Pontianak72. Srednekolymsk 84. Ust-NeraTime zone: 70Current default time zone: 'Asia/Shanghai'Local time is now:Tue Nov 30 18:05:30 CST .Universal Time is now: Tue Nov 30 10:05:30 UTC .Run 'dpkg-reconfigure tzdata' if you wish to change it.

设置超级用户:

root@32b7b9ddcaab:/# apt install sudoroot@32b7b9ddcaab:/# visudo

添加自己的用户名,保存并退出:

neutionweiALL=(ALL:ALL) ALL

切换到普通用户:

root@32b7b9ddcaab:/# adduser neutionweiroot@32b7b9ddcaab:/# su neutionwei

二、下载Linux_SDK

进入Firefly官方进行下载,链接如下:

https://www.t-/doc/download/107.html

大家点击以下图片中指向的地方进行下载:

下载最新版本:

下载完成后首先使用md5sum进行校验:

$ lsmd5sum.txtREADME_EN.txtREADME.txtrk356x_linux_release_v1.2.0_1019_firefly_split.file0rk356x_linux_release_v1.2.0_1019_firefly_split.file1rk356x_linux_release_v1.2.0_1019_firefly_split.file2rk356x_linux_release_v1.2.0_1019_firefly_split.file3rk356x_linux_release_v1.2.0_1019_firefly_split.file4

$ md5sum *firefly_split*b633414d69240faa0c3bd755c255ede8 rk356x_linux_release_v1.2.0_1019_firefly_split.file05cb1e2b63bbb4e3595c731038f6723fd rk356x_linux_release_v1.2.0_1019_firefly_split.file1e06c0f29fd5a870e0942139a1877a470 rk356x_linux_release_v1.2.0_1019_firefly_split.file24e14fbf72ccbb9b87f81d83a256205b0 rk356x_linux_release_v1.2.0_1019_firefly_split.file3be8b003703b51e7220e52bb36439a357 rk356x_linux_release_v1.2.0_1019_firefly_split.file4

确认与目录内的md5sum.txt文件内容无误!

三、编译Linux_SDK

根据Firefly官方维基安装必要工具:

neutionwei@32b7b9ddcaab:/$ sudo apt-get install repo git ssh make gcc libssl-dev liblz4-tool \expect g++ patchelf chrpath gawk texinfo chrpath diffstat binfmt-support \qemu-user-static live-build bison flex fakeroot cmake gcc-multilib g++-multilib \unzip device-tree-compiler python-pip ncurses-dev python-pyelftools

在Ubuntu 18.04新建一个目录:

neutionwei@32b7b9ddcaab:/$ cd ~neutionwei@32b7b9ddcaab:~$ mkdir projectneutionwei@32b7b9ddcaab:~$ cd project/neutionwei@32b7b9ddcaab:~/project$ pwd/home/neutionwei/project

主机使用docker命令把Linux_SDK拷贝到Docker下的Ubuntu 18.04:

$ docker cp rk356x_linux_release_v1.2.0_1019_split_dir 32b7b9ddcaab:/home/neutionwei/project

解压缩Linux_SDK:

neutionwei@32b7b9ddcaab:~/project$ cat rk356x_linux_release_v1.2.0_1019_split_dir/*firefly_split* | tar -xzv

配置板卡型号,选择roc-rk3568-pc-buildroot.mk

neutionwei@32b7b9ddcaab:~/project/rk356x_linux_release_1019$ lsMakefile build.sh debian docs external mkfirmware.sh rkbin tools yoctoapp buildroot device envsetup.sh kernel prebuiltsrkflash.sh u-boot

neutionwei@32b7b9ddcaab:~/project/rk356x_linux_release_1019$ ls device/rockchip/rk356x/BoardConfig-rk3566-evb2-lp4x-v10-32bit.mk aio-3568j-openwrt.mk parameter-buildroot-spi-nor-64M.txtBoardConfig-rk3566-evb2-lp4x-v10.mk aio-3568j-ubuntu.mk parameter-openwrt.txtBoardConfig-rk3568-evb1-ddr4-v10-32bit.mk boot.itsparameter-ubuntu-fit.txtBoardConfig-rk3568-evb1-ddr4-v10-spi-nor-64M.mk boot4recovery.itsroc-rk3566-pc-buildroot.mkBoardConfig-rk3568-evb1-ddr4-v10.mk bootramdisk.its roc-rk3566-pc-lede.mkBoardConfig-rk3568-nvr-spi-nand.mkfirefly-rk3566-buildroot.mkroc-rk3566-pc-openwrt.mkBoardConfig-rk3568-nvr.mk firefly-rk3566-ubuntu.mk roc-rk3566-pc-ubuntu.mkBoardConfig-rk3568-uvc-evb1-ddr4-v10.mkfirefly-rk3568-buildroot.mkroc-rk3568-pc-buildroot.mkBoardConfig.mkfirefly-rk3568-nvr-buildroot.mk roc-rk3568-pc-lede.mkaio-3566-jd4-buildroot.mk firefly-rk3568-ubuntu.mk roc-rk3568-pc-openwrt.mkaio-3566-jd4-ubuntu.mk firefly-rk356x-openwrt.mk roc-rk3568-pc-ubuntu.mkaio-3568j-buildroot.mk parameter-buildroot-NVR-128M.txt station-m2-ubuntu.mkaio-3568j-lede.mk parameter-buildroot-NVR-spi-nand-128M.txt station-p2-ubuntu.mkaio-3568j-nvr.mk parameter-buildroot-fit.txtzboot.its

neutionwei@32b7b9ddcaab:~/project/rk356x_linux_release_1019$ ./build.sh roc-rk3568-pc-buildroot.mkprocessing option: roc-rk3568-pc-buildroot.mkswitching to board: /home/neutionwei/project/rk356x_linux_release_1019/device/rockchip/rk356x/roc-rk3568-pc-buildroot.mk

开始进行全编译

neutionwei@32b7b9ddcaab:~/project/rk356x_linux_release_1019$ ./build.sh all

编译过程中发生的错误:

/bin/sh: 1: bc: not foundKbuild:42: recipe for target 'include/generated/timeconst.h' failedmake[1]: *** [include/generated/timeconst.h] Error 127Makefile:1244: recipe for target 'prepare0' failedmake: *** [prepare0] Error 2make: *** Waiting for unfinished jobs....HOSTCC scripts/recordmcountHOSTCC scripts/dtc/checks.oHOSTCC scripts/dtc/util.oLEXscripts/dtc/dtc-lexer.lex.cYACC scripts/dtc/dtc-parser.tab.hHOSTCC scripts/resource_toolHOSTCC scripts/mkkrnlimgHOSTCC scripts/mod/sumversion.oYACC scripts/dtc/dtc-parser.tab.cHOSTCC scripts/sortextableHOSTCC scripts/dtc/dtc-lexer.lex.oHOSTCC scripts/mod/file2alias.oHOSTCC scripts/asn1_compilerHOSTCC scripts/dtc/dtc-parser.tab.oHOSTCC scripts/extract-certHOSTLD scripts/mod/modpostHOSTLD scripts/dtc/dtcERROR: Running build_kernel failed!ERROR: exit code 2 from line 561:make ARCH=$RK_ARCH $RK_KERNEL_DTS.img -j$RK_JOBS

安装bc命令:

neutionwei@32b7b9ddcaab:~/project/rk356x_linux_release_1019$ sudo apt install bc

继续全编译:

neutionwei@32b7b9ddcaab:~/project/rk356x_linux_release_1019$ ./build.sh all

依然有错误:

./build.sh: line 874: /usr/bin/time: No such file or directoryERROR: Running build_recovery failed!ERROR: exit code 127 from line 874:/usr/bin/time -f "you take %E to build recovery" $COMMON_DIR/mk-ramdisk.sh recovery.img $RK_CFG_RECOVERY

安装time命令:

neutionwei@32b7b9ddcaab:~/project/rk356x_linux_release_1019$ sudo apt install time

继续全编译:

neutionwei@32b7b9ddcaab:~/project/rk356x_linux_release_1019$ ./build.sh all

过程中缺少什么命令就继续安装,然后继续全编译。Buildroot的编译过程比较漫长,因为涉及到源码包的抓取,而大部分源码包的网址不在国内,抓取速度慢,甚至出现错误!

四、打包Buildroot系统固件

更新打包目录软链接:

neutionwei@32b7b9ddcaab:~/project/rk356x_linux_release_1019$ ./mkfirmware.sh

打包Buildroot固件:

neutionwei@32b7b9ddcaab:~/project/rk356x_linux_release_1019$ ./build.sh updateimg

我们打包的固件在/home/neutionwei/project/rk356x_linux_release_1019/rockdev/pack/目录。

在主机使用docker命令把固件拷贝回主机烧写即可:

$ docker cp 32b7b9ddcaab:/home/neutionwei/project/rk356x_linux_release_1019/rockdev/pack/ROC-RK3568-PC-Buildroot-GPT-1231-2044.img .

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。