EDA365电子论坛网
标题: 全志A40i开发板编译环境的搭建 [打印本页]
作者: 罗罗诺亚 时间: 2022-11-5 15:33
标题: 全志A40i开发板编译环境的搭建
笔者主要下载了官方已经建立好环境的Ubuntu虚拟机包,还有OKA40i-C开发板的Linux用户资料。

/ b, [4 a9 n. X/ X1 c% N" ~# r
【1】建立编译环境
1、安装ubuntu虚拟机,由于我在以前的开发板试用中已经安装好了VMware。这里就不再展示,如果没有安装的,请自行根据OKA40i-C开发板用户编译手册的第一、三章来安装,手册有详细的安装说明:

2、我这里直接按照手册的第二章,直接就有现成的环境,应该很快就可以。安装好后打开虚拟机:

3、仔细阅读编译手册《第四章:linux编译篇》,并一步步实现。
先在虚拟机中的/home/目录下新建work文件夹,并把OKA40i-C用户资料-20220322\Linux\源码\目录下的xaa、xab拷贝到虚拟机work目录下面:

# Q: [( V- X- `8 J6 w. N
将共享文件夹中的源码拷贝到 ubuntu 的/home/forlinx/work 目录下并校验。

( G6 a1 }9 Z+ E: f" I合并源码,进行校验和解压。

! f0 J$ r; e1 N r解压后进入lichee目录下面:

这个源码包很大,差不多70G,所以大家要准备一个大的硬盘,要不一下就“爆炸”。

解压文件系统:(注意)这里文件里的解压文件跟实际的不同,这里是rootfs-a40i.tar.gz。


到这里,源码解压完毕,我发现我的硬盘只有4G不到了,赶紧把虚拟机换个硬盘。

换了硬盘接着来编译源码,按照《手册》4.2.1一步步设置:

然后编译内核:
forlinx@ubuntu:~/work/lichee$ sudo ./build.sh -m kernel然后就要耐心等待,看大家自己的电脑来决定:

生成rootfs.ext4、镜像打包:


打包:

打包结束。

至此源码的编译到这里就结束了。这是我第一次编译源码,教程写得非常详细,大家应该对照起来没有什么问题。这里建议的就是硬盘一定要留100G。
当然大家要是不想折腾源码编译,在飞凌嵌入式官方提供的OKA40i-C、OKT3-C_Linux3.1.0用户资料-20220322\Linux\镜像\ 目录下面有编译好的好些包,大家可以自己选择下载:

& r; h" Z/ x% a% {5 R【2】镜像烧写
1、将生成的sun8iw11p1_linuxOKA40i_C_uart0-1024x600.img文件拷到win下面。
2、安装PhoenixSuit。安装包在OKA40i-C、OKT3-C_Linux3.1.0用户资料-20220322\Linux\工具目录中,安装过程这里省略。
3、烧写,可以多试几次。

! p. @6 I+ C( A6 |6 H9 o3 ?6 Y
【3】编译自己的程序
在work目录下新建一个helloworld文件夹,在helloworld文件夹内新建helloworld.c,写代码如下:
( M6 d, M3 R. `; n' b5 v# G
0 z! f2 \+ G0 t#include <stdio.h> % @* E+ r1 O/ V4 H0 t3 T% y( i
+ S2 R- G" e8 J
4 ]; e9 E7 M9 `4 O: h& Y/ {! P6 r9 {4 X4 J0 C7 K* L5 B
int main(void)
K% d7 R7 t( A7 ]
8 B$ _. y% Y9 p. m8 y! m2 i
( ]$ D& C! G& t5 f0 N L1 Y1 _5 q% }1 S, I" Q7 L t
{
6 H( {5 J5 {" _ g. I) G0 t* g8 s" M- T
- + e# W; A6 ^2 U5 P4 i9 R
1 F0 M& Q- g }- f3 g! g* I
printf("helloworld!\r\n"); & Q" z7 d! x& x4 K# ~% b: H: n1 C6 r
. |. T( k' L3 \9 \' m% C
/ s# Z/ J# t: z$ r& T, u- N' X2 {& v, v6 D7 y
printf("hello OKA40i-C\r\n");
+ N1 l4 q; a- |, O; T3 r* A9 o
& n; S; q9 o1 D( o5 ?1 n/ G# _2 x
9 w# O8 Q4 S( \3 U; Q/ q
3 R3 T" | h/ V) X3 N- M return 0;6 M, b: B* ^, j- f: H# U5 M
! x4 E8 P* q5 H7 R2 g' R; |- " U# @" Z) v5 | ^# C( @& z; E& A
! ]! X% G/ G8 _5 O- Q# s) C}
~2 J8 K, P9 o$ W, x* Y5 X, y9 H- B8 G6 n
7 r+ _$ H( P: K; g
在lichee/buildroot-201611/target/user_rootfs_apps/cmd/subs下的rtc中复制一个makefile文件过来,并修改为:
- % z) i2 B, S0 p! o7 \- T
9 L$ {0 j) b+ f/ H- C5 R, X# fDEST_DIR ?=_install
' j# \6 @8 L: h7 k. ^
: K9 H2 c$ p9 Q8 Y L& J0 T% Z' f
V1 i: [/ l, p+ i9 q
. }4 X* p) Q7 t7 ]3 H) s# q" p#CC ?=arm-linux-gcc
* M4 P4 n) e4 {$ {' ^% R% Y1 s) E
# F$ a; K4 d1 A$ B: U5 ^- & C% H( V2 f3 P4 [
3 ?9 x- j, a5 r r2 ^( O/ ICC =arm-linux-gnueabihf-gcc-5.3.1
6 C7 c, r3 x! }' b
& x6 Y, `6 G2 g7 A: Q9 [ - : F- B: p. m2 N3 c8 X |
( C, c \+ n' ] o7 L% t
build:
) v. W7 c: r% R' \* j- e7 f3 M9 a, V ]- `5 H
; ?% `! m8 ?: s* m. A; A- K
9 v9 n# J/ N$ E! v2 E' O* o @$(CC) -o $(TARGET) helloworld.c
) h% F3 u! o: b) K% t1 S$ \
9 u# t1 ]# a; {
* A( m3 x0 K& l$ X# | |( O' N3 @2 ^3 B5 C% J$ H) d1 ^0 Z
+ t- _9 }, F8 T0 x# ]8 t5 H, p, O* q
1 h1 u) u9 d1 D5 z
" @) _1 D, g2 S& x5 Z, M5 c+ W( S7 F. e
hold:; }& b# G5 o E/ Y% h
! C3 g! F4 D1 Q0 l8 R: _+ m) r# k6 n
+ r7 ]$ A. h0 w, Y
0 r ?* B3 v& n9 L/ F* } [url=home.php?mod=space&uid=70594]@echo[/url] "helloworld hold[skip]"
# {! O# T( s# s- y8 j* F/ |
7 } U }: g9 \: ^; f9 w- ) t+ e! p2 @5 ~
K2 a% m) W/ }# Y: p0 o1 Q
( K5 `) l, a3 b4 Z
; F4 R- |- U, K0 ~1 d. {4 `% u: m
: O8 c# Y) d* {: H
/ O" [- l3 D" ^8 Q/ j' Iinstall:
. Z/ P& V( Z. W2 \' H6 J; e# g" U) q/ ` n
- # X2 c0 I, H. `& l
9 o u H/ ]) {8 |, M, C
[url=home.php?mod=space&uid=2293869]@MKDIR[/url] -p $(DEST_DIR)
% o4 W7 D& s. w$ ?# y
7 q0 B* e+ Y- T1 {' U2 A, d - 9 k) v4 f, ~$ H' }: C3 _# X* ~
, `5 R5 E5 w, f: g6 r" k
@cp $(TARGET) $(DEST_DIR)
% g# x( s; a8 a- ]
- \4 X O) q5 _, r H' r/ O# F - ' {; N- g/ `% u
! i2 v) J& i+ [$ C& p
; k6 l4 K- {' e5 @# C7 M9 O% j/ n& u& V; H1 d0 {1 l
. }3 I) [3 Z6 [5 q8 X/ ]4 C5 Z; x8 B% b c+ A: V j2 J
uninstall:7 O3 [. q: M4 N5 T3 k$ w
" r1 C+ v; `9 [- " l0 e; G) o( A- D' x W7 W
( F% i% D$ W8 O9 J* o& f+ z3 [
@rm -fr $(DEST_DIR)/$(TARGET)
; s5 k# J9 F; w' X$ P* W% O+ u) e( ]0 o* K- a
- ) P* ]# y4 e9 @1 l# O0 y( ^) F, h- y
; r0 b+ Q& ?6 v
( o3 e. M' c; j% O3 S) I
" I [2 d' r) C( d$ Q% `, T- U) m
, m- ^0 i2 f% [# a9 R
9 S$ i, ]. j' a4 P" Q$ \4 ~3 `- e( }distclean: uninstall4 d/ T$ n. C4 p+ P
2 n5 T% N1 f9 z$ z- F
- ; L1 L& S0 [5 H) r
$ l; u# k d+ Y, J0 }+ \. |9 M @rm -fr $(TARGET)/ ~' m6 x$ d2 M% f
/ z+ x+ T, b2 f+ C7 W1 f8 [
- 2 I g) J% }7 u% C0 V* M
2 x' P1 l S1 d n# E1 M @rm -fr _install
# k" N0 x7 }1 \7 g1 H- z! U7 n; l+ ]
; ]4 n2 m$ n$ x; c
# C! X& L" {( a$ }+ B5 }
$ y) F) _1 H1 R5 k
然后执行make:

没有报错,在当前目录下生成的helloworld文件:

把helloworld拷到开发板下面,修改权限就可以运行了:

7 d( q$ y/ v+ t: G4 |6 A* {
作者: Storm_change 时间: 2022-11-7 09:58
操作流程很详细,照着操作一遍,效果就更好
| 欢迎光临 EDA365电子论坛网 (https://bbs.eda365.com/) |
Powered by Discuz! X3.2 |