找回密码
 注册
关于网站域名变更的通知
查看: 133|回复: 1
打印 上一主题 下一主题

RK3568开发板评测篇(二):开发环境搭建

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2022-6-22 10:54 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

EDA365欢迎您登录!

您需要 登录 才可以下载或查看,没有帐号?注册

x
​作者:ouxiaolong$ C1 e& G1 g0 p8 O& s" P% e
开发环境——' {% i* G. z6 B, ~5 X
主机:Ubuntu18.041 B: y) }. K3 \! X4 A
开发板:飞凌嵌入式OK3568-C开发板
1 P! v2 n3 i$ E& }! }; q# ^; O) hWindows下有很多虚拟机软件,目前市面上流行的有VMware和VirtualBox。VMware分为收费专业版Workstation Pro 和非商用免费版Workstation Player,推荐使用Workstation Player。9 @3 g$ l# C7 a% }9 T
笔者这里使用的编译主机的Ubuntu18.04,关于Workstation和Ubuntu安装笔者这里不在赘述,网上资料很多,笔者默认已经装好Workstation和Ubuntu。: p: o7 T& R7 O) N' K
01依赖库安装) t1 e$ s- {5 C4 p
1.1更新主机的源列表
7 N; F) s3 w1 d& n  y8 K$sudo apt-get update1.2安装依赖工具
2 f" r4 e$ k& D0 [
$sudo apt-get install repo git ssh make gcc libssl-devliblz4-toolexpect g++ patchelf chrpath gawk texinfo chrpathdIFfstatbinfmt-supportqemu-user-static live-build bison flex fakeroot cmakegcc-multilibg++-multilib unzip device-tree-compiler python-piplibncurses5-devbuild-essential vim tree
02TFTP服务环境搭建与测试
/ f$ ~- u  F6 P( x% cTFTP简单文件传输协议,是一个基于UDP协议实现的用于在客户机和服务器之间进行简单文件传输的协议,适合于开销不大、不复杂的应用场合。1 x7 l9 F2 W; _9 w( _6 Z
TFTP协议专门为小文件传输而设计,只能从服务器上获取文件,或者向服务器写入文件,不能列出目录,也不能进行认证。, x( {! h2 K& q  m. `; t
(1)下载并安装tftp" z3 O8 T7 ?/ H, w( r& o
$sudo apt-get install openbsd-inetd(2)新建tftp目录和改变其属性9 D/ c  S- o, `' y$ t  I
$sudo mkdir /tftpboot(3)修改/etc/inetd.conf文件# k! s1 M. y1 [, Q& u- i5 t
$sudo vim /etc/inetd.conf新增如下内容:
; t0 i( u  e: W& N/ e0 Ttftpdgram udp wait nobody /usr/sbin/tcpd/usr/sbin/in.tftpd /tftpboot(4)启动tftp, a# W  M. o, D9 U) a
$sudo /etc/init.d/openbsd-inetd start(5)本地测试
$ r% K7 z* l; M- u) S- V. A+ d在/tftpboot/目录下新建一个文件test,输入内容、保存。然后打开另外一个终端,测试文件传输。, n* m8 m' G6 R$ J  F
–输入命令tftp127.0.0.1, Y4 s4 I. e' t' g: k8 K: Y* f
–输入gettest) m% i- m  ~9 q- }  \
–输入q可以退出
! e9 r& j/ J, ~2 F- ?) _$ C–退出后,使用ls命令可以发现当前目录下有test文件,如果这个文件和服务器中的test文件内容一模一样,表明服务器搭建成功。
+ o6 Q9 n: J% d; \. h
编辑+ b2 v# v" z# E; x$ {
(6)开发板测试
. U/ e4 l3 I, H, J- w7 h开发板下载测试$ b; m' j/ X* B5 J1 H& o
#tftp-g -l test -r test +IP地址+ }8 g; R" R- K7 C% t6 G& y
编辑
+ `4 o1 G: @5 I; z9 o(注:-l后的文件是下载后文件名,可以自定义;-r后的是服务器的文件名)2 ?2 Z! \( Y, x& v6 K& p4 D, a
03安装配置交叉编译工具链2 ^0 N% m$ ]3 g) A* W0 H/ C
在Linaro官网中有很多种GCC交叉编译工具链,因为我们所使用的RK3568开发板是一个Cortex-A55内核64位的开发板,选择aarch64-linux-gnu。
. ~0 N$ g7 c1 ]; _1 _地址:https://releases.linaro.org/components/toolchain/binaries/latest-7/aarch64-linux-gnu/
' h6 m+ m/ s7 O% S0 i3 n% x$ g
编辑
8 q& [" f7 w9 h8 @" B7 d* A( Y图中有很多种交叉编译器,我们只需要关注这两种:1 t% S* w, R2 y$ F* m
针对32位系统的gcc-linaro-7.5.0-2019.12-i686_aarch64-linux-gnu.tar.xz和针对64位系统的gcc-linaro-7.5.0-2019.12-x86_64_aarch64-linux-gnu.tar.xz。
/ I+ M+ ^% G0 y8 U' y2 ~大家根据自己所使用的Ubuntu系统类型选择合适的版本,比如我安装的Ubuntu14.04是64位系统,因此我要使用gcc-linaro-7.5.0-2019.12-x86_64_aarch64-linux-gnu.tar.xz。
; n  p4 Q6 b5 a9 k4 J9 D04交叉编译器安装9 M7 v7 Q! Z! W# X, t4 T5 _* W
将交叉编译器拷贝Ubuntu中的/opt目录下(没有opt则新建该目录),进行如下步骤:7 X: I6 x0 X7 F1 A7 |; O% z
1. 解压gcc-linaro-7.5.0-2019.12-x86_64_aarch64-linux-gnu.tar1 M; D4 W+ |+ \  m4 n
用以下命令
" [4 Y1 w4 ^6 B! P5 d- n; N$sudotar -xvf gcc-linaro-7.5.0-2019.12-x86_64_aarch64-linux-gnu.tar //必须用超级用户模式。% E5 C! p! ]% n0 j* G4 G5 M
2. 编辑~/.bashrc文件* @/ ^5 J9 P. q+ w6 J- T( c& z: U, _
$vi ~/.bashrc) O4 h; C  N0 N# z( ?: y6 |' w
在文件最后增加一行
5 z6 F4 V" }1 B( CexportPATH=$PATH:/opt/gcc-linaro-7.5.0-2019.12-x86_64_aarch64-linux-gnu/bin保存退出。
7 g" U4 [+ [3 l+ t3.运行source~/.bashrc让文件生效  N  U2 E- c% K* u0 N
$source ~/.bashrc
/ b0 O, h) y, C" U2 u. k05交叉编译器验证
# S3 W4 O7 K7 ?方法一:4 z1 ~- _0 z& B1 y/ c
在命令行下输入aarch64-l然后按tab键看会不会自动补全
; ^+ _5 K; {+ Z+ P! z方法二:7 D0 T- o4 m) C' ?( K, Y, {$ U- m
输入:aarch64-linux-gnu-gcc-v
" H" k2 M7 v) {6 v4 N
编辑
4 }  n, g( I! q6 h" V如上图则表示配置成功!
+ X, X2 I& r" `5 E, y6 U& w6 v8 x- i从图中可以看出当前交叉编译器的版本号为7.5.0,说明交叉编译工具链安装成功(注:编者安装的交叉编译器版本为7.5.0,OK3568-C开发板源码包里是9.3.0版本)。
' \1 ~+ e3 ?- k6 `使用刚刚安装的交叉编译器的时候使用的命令是:- |/ {$ Q  q  g
aarch64-linux-gnu-gcc该命令的具体含义如下:& E' Y& t* A* T# @" U  h, r! m
1.aarch64表示这是编译aarch64架构代码的编译器。AArch64是ARMv8架构的一种执行状态。' U# b* @( O! A' A7 [! B
2.linux表示运行在linux环境下。, d. K: w7 C, L4 Z% T+ u8 D
3.gnu表式嵌入式二进制接口。
9 x# {6 o; {! f1 s, X4.gcc表示是gcc工具。9 N8 X; V/ C( h0 R/ g8 c3 p
最好的验证验证方法就是直接编译一个例程,我们就编译第一个裸机例程“hello.c”试试。
5 |2 y7 q8 Y1 h2 P; O% G$vim hello.c使用如下命令查看hello文件信息:! Y0 u: Q9 W$ m) I5 F1 G8 N. i" P
$file hello
编辑8 g/ R% u3 Q* E& `, @2 m9 c
从图中可以看到hello是64位LSB的ELF格式文件,目标机架构为ARMaarch64,,说明我们的交叉编译器工作正常。
) z- Q- o& @( r4 A% M/ Y, z; Q$ Q9 k0 e最后将程序下载到开发板,修改用户权限后即可运行。
( t! i' I) C4 B" {8 s8 b6 [* S
编辑
4 a( o) B3 n( D2 n/ K/ _值得注意的是,在RK3568的源码中有交叉编译链,只是版本要旧些,在源码prebuilts目录下。笔者配置该工具链主要用在应用开发。* o  W! ]: U3 M. e9 c% @' F

' F. G1 e& _0 u# v! E1 W
  • TA的每日心情
    开心
    2022-12-27 15:46
  • 签到天数: 4 天

    [LV.2]偶尔看看I

    2#
    发表于 2022-6-22 13:15 | 只看该作者
    TFTP简单文件传输协议,是一个基于UDP协议实现的用于在客户机和服务器之间进行简单文件传输的协议
    您需要登录后才可以回帖 登录 | 注册

    本版积分规则

    关闭

    推荐内容上一条 /1 下一条

    EDA365公众号

    关于我们|手机版|EDA365电子论坛网 ( 粤ICP备18020198号-1 )

    GMT+8, 2025-6-20 08:02 , Processed in 0.093750 second(s), 23 queries , Gzip On.

    深圳市墨知创新科技有限公司

    地址:深圳市南山区科技生态园2栋A座805 电话:19926409050

    快速回复 返回顶部 返回列表