EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
笔者主要下载了官方已经建立好环境的Ubuntu虚拟机包,还有OKA40i-C开发板的Linux用户资料。 ![]() 7 F; _* r0 O) }$ v- ?
【1】建立编译环境 1、安装ubuntu虚拟机,由于我在以前的开发板试用中已经安装好了VMware。这里就不再展示,如果没有安装的,请自行根据OKA40i-C开发板用户编译手册的第一、三章来安装,手册有详细的安装说明: ![]()
2、我这里直接按照手册的第二章,直接就有现成的环境,应该很快就可以。安装好后打开虚拟机: ![]()
3、仔细阅读编译手册《第四章:linux编译篇》,并一步步实现。 先在虚拟机中的/home/目录下新建work文件夹,并把OKA40i-C用户资料-20220322\Linux\源码\目录下的xaa、xab拷贝到虚拟机work目录下面: ![]()
) V* Q0 H$ D9 A1 V% k+ G- O将共享文件夹中的源码拷贝到 ubuntu 的/home/forlinx/work 目录下并校验。 ![]()
- t+ ]" F# x- q6 T6 z) K& b合并源码,进行校验和解压。 ![]() - Q# e$ i3 P$ M/ I& Y- @6 X. J& Z
解压后进入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\镜像\ 目录下面有编译好的好些包,大家可以自己选择下载: ![]()
" H8 m; ?: n/ V' k【2】镜像烧写 1、将生成的sun8iw11p1_linuxOKA40i_C_uart0-1024x600.img文件拷到win下面。 2、安装PhoenixSuit。安装包在OKA40i-C、OKT3-C_Linux3.1.0用户资料-20220322\Linux\工具目录中,安装过程这里省略。 3、烧写,可以多试几次。 ![]() # @, V& H; I6 K' _
【3】编译自己的程序 在work目录下新建一个helloworld文件夹,在helloworld文件夹内新建helloworld.c,写代码如下:
5 k( q6 Z0 H m
! l. l0 C# I" w7 C: K0 O#include <stdio.h> % |- c' ]3 b9 T& A; |- P
3 x8 H0 \: ?$ s3 K; l8 S$ f% k
: }& h) n9 ^0 c! Z% V* s+ m
z: f$ i) P7 K+ z; U3 Q; ?9 [2 E3 [! cint main(void)8 J7 k: J2 f4 ~$ T2 s# W
' w7 S. M+ Y% Z& ^
- : O# }& L5 A8 B9 z! ]+ r- w8 C
+ A1 F% j. O/ Q% C8 M6 r{
@2 S7 I6 j7 {4 k; f$ \, R c# C I; K/ d
- + N Z M7 D) h0 D" I- p9 t1 `
8 J3 R5 b3 X" c9 y- Q8 ?9 @
printf("helloworld!\r\n");
* s F6 S) o T( r. U ^/ h( z# M9 d9 K. j5 n4 B
- 9 }* T% K% R, h9 S9 I
/ m1 u8 m8 {8 _& G+ T
printf("hello OKA40i-C\r\n");
/ p; F- r( Z+ l3 V/ B, Z @4 X q; A- w: R" v
! s: D2 V! U6 _2 I. Y
/ x7 a% h% l0 H- P# m return 0;
& y q( K- P7 A* S0 l3 p* y2 m% d9 j# } U% l8 }2 j
- 8 V# T( g" r; o) }& D+ V( b
* c* a; j6 p8 n$ u( {+ j3 X& I
}
6 L S( O! M3 o1 Q: ?0 x" k
" j1 f( `% A5 Y" r% O# E, M5 K- Q' d* e, S$ n
在lichee/buildroot-201611/target/user_rootfs_apps/cmd/subs下的rtc中复制一个makefile文件过来,并修改为:
. ?2 H% O9 a6 B2 \5 U
2 s }8 t9 m4 TDEST_DIR ?=_install- [' L4 X) r) o. Z k
y" l) Z. |0 I- V) v' t1 F% x- ; B3 r0 V8 ]- E: x
( W& H9 T- ?$ c! T& L
#CC ?=ARM-linux-gcc5 W1 J1 d% \2 M0 N2 L+ o9 A
% \2 U( o8 O5 r# b
+ C' v4 q1 P% j% R G
- {* N2 d! Z; t* XCC =arm-linux-gnueabihf-gcc-5.3.1 - _6 X5 K( e3 ?. O) w3 ?( N
' `3 y2 \/ {. Z8 L: s3 e
0 Y! Z7 q: j: J' o( H4 O* E+ y; ^) D, V) E: @5 h; h
build:5 z! Q1 A& {7 T: P% S) w. i7 \5 ~
# [' v! P0 f6 \6 J3 j \9 N. k
8 n9 L, w0 l" y! D
8 E. J, I% p, y1 o, L U _ @$(CC) -o $(TARGET) helloworld.c
7 Y8 U/ X7 T% I7 V. C# [/ s" Y) V' F V9 F9 Z2 `* J5 j: O
- & a |; O* N* p3 [# p; z3 v
8 A7 K' M }$ Z& [# B3 D1 K9 i: d! @8 F- A' }, Q( a& `
; z5 `# B) J& @# q( x- @: f* l - 3 B) e: l. n, U
8 u. r2 [* h& @: |" s+ ghold:
1 I5 @7 e" M. S. t+ e- h: S
L1 w/ X. ]7 H' h
( e6 j0 o8 T8 t% y* e8 V& V& D0 |; K% v2 S1 J% G% f5 _* P
[url=home.php?mod=space&uid=70594]@echo[/url] "helloworld hold[skip]"
5 Z4 I* Q* p# D! `; t# T1 R; y
5 \4 i2 B- G% f' j" i( h" b
, I" { w0 T2 h. ?
5 y, Q Y. ?2 O' h2 p8 z
0 T: Z3 u- n( q
. B* e% b# y3 ~, I8 h, P
5 O$ b4 z) h2 r' c% C# p" v7 ~7 }
; o: y: f$ m6 ~5 K8 a# ninstall:, k3 U' ?5 s/ J9 V+ b; `- g
* O& y5 i0 Y; M' Y. j" `8 @+ l
- ; d3 s$ {6 X6 e2 U7 y1 `
$ S1 a' G9 D" E% J+ x. P- i
[url=home.php?mod=space&uid=2293869]@MKDIR[/url] -p $(DEST_DIR)8 |3 i, r' b; |1 H
M# ]" e# e! {' l! x
- * L" M! G" x6 v" U( Z
) ]4 }: J3 |* ^% d% a
@cp $(TARGET) $(DEST_DIR)
' D! B T3 p4 V1 o( E, v% i
% k' Z) |4 @7 {8 ?9 N% A2 \8 x
+ f- P) ?8 e( K. _) n( c3 y$ c# a% D# S$ C" @/ T
' E: I. X; e e q6 h# e$ `, ~$ n, [% o6 r2 l9 s
3 o* w# e% v1 J* {2 L8 r+ c0 j O2 ]( O/ j
uninstall:2 \' {5 _' c' s7 l
& k$ t0 G; m! i2 G
6 N9 E% [1 D2 O3 p$ Y& D( t3 A2 Q, c" _: y
@rm -fr $(DEST_DIR)/$(TARGET)- f& n! M; T; z. C& c0 o* C1 |8 X% y
+ I- i' x* a; r
- : q" y' M5 ^7 c- n4 {: w6 H
( L' m, }3 Q' d2 K1 i, o
M1 \3 W0 E: x# b2 K
. E B6 p5 k3 p5 K' [3 b% Q; L5 j
1 n9 f/ Y8 Q7 ?& S) z8 q) T4 f( _" F0 G) f
, ^* z% h1 [% ]" odistclean: uninstall
% B3 `8 c2 R( W
- G! O% W6 N+ L- h* C* `& m- / S2 G5 Y( c* l
9 ~2 T- y# R) p- R+ `7 ]$ F @rm -fr $(TARGET)/ i0 P& @ o+ p) }
9 I) ~: X7 m# {- L2 Y! M
% Y- J1 `, v% t! Z' Q& ~1 q) H3 i4 p! H4 b* F
@rm -fr _install3 V V9 N3 s' F. c: q2 ^9 j
% y+ K5 ]' H: i# T8 ?8 I; H, X: N4 h8 V$ A: y( G0 m" u4 B
![]()
) K, o- h6 }& t, Z: g u; o. U5 }' I) f: s4 ?0 O, K
然后执行make: ![]()
没有报错,在当前目录下生成的helloworld文件: ![]()
把helloworld拷到开发板下面,修改权限就可以运行了: ![]()
% J7 L D3 Q3 @ P5 W |