EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
笔者主要下载了官方已经建立好环境的Ubuntu虚拟机包,还有OKA40i-C开发板的Linux用户资料。 ![]()
$ o; e0 H3 J' s5 H【1】建立编译环境 1、安装ubuntu虚拟机,由于我在以前的开发板试用中已经安装好了VMware。这里就不再展示,如果没有安装的,请自行根据OKA40i-C开发板用户编译手册的第一、三章来安装,手册有详细的安装说明: ![]()
2、我这里直接按照手册的第二章,直接就有现成的环境,应该很快就可以。安装好后打开虚拟机: ![]()
3、仔细阅读编译手册《第四章:linux编译篇》,并一步步实现。 先在虚拟机中的/home/目录下新建work文件夹,并把OKA40i-C用户资料-20220322\Linux\源码\目录下的xaa、xab拷贝到虚拟机work目录下面: ![]() 1 X! G+ l( U: P
将共享文件夹中的源码拷贝到 ubuntu 的/home/forlinx/work 目录下并校验。 ![]()
& R# C+ P" U3 b3 O8 w: k0 l& Y合并源码,进行校验和解压。 ![]() & S$ T4 d: u0 ^4 r. I _/ h0 y
解压后进入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\镜像\ 目录下面有编译好的好些包,大家可以自己选择下载: ![]()
& D' o9 e# ]0 j3 }: E# k【2】镜像烧写 1、将生成的sun8iw11p1_linuxOKA40i_C_uart0-1024x600.img文件拷到win下面。 2、安装PhoenixSuit。安装包在OKA40i-C、OKT3-C_Linux3.1.0用户资料-20220322\Linux\工具目录中,安装过程这里省略。 3、烧写,可以多试几次。 ![]() % w0 L9 e9 ^& a# Q: Q) n7 X
【3】编译自己的程序 在work目录下新建一个helloworld文件夹,在helloworld文件夹内新建helloworld.c,写代码如下: - 1 I% ~, ?" }* m" D3 |
8 Y' ? B# h/ ?7 w4 K% G#include <stdio.h> ! \" ^; R- U& k S# ? k: }
' g+ g: W% ]9 y" }$ _. v2 J& A
5 e% f7 Z" ]* {5 u9 e2 j$ I7 w- B& ], R, I
int main(void)- v% T& C& y( _. n
. E4 [9 j5 V# M& S% M) |+ r- $ I& l1 O- p( U( _" ~, H$ r
^/ _* Q, h: M P" j{
* b- N* Q# X9 z1 j$ G
% S, i* `& v g, _# f4 M* X4 R - 6 h$ Q8 @8 x) ?8 D+ P* F) w
2 S7 h+ {; B: D V printf("helloworld!\r\n");
& R! {+ Z* ^. E) q8 F- ?
3 }, G( d' K! |- E" ^
, k* o1 x8 Q% |# y
) ]: s" } M9 ?1 g5 A; K5 E printf("hello OKA40i-C\r\n");
; G0 D E3 i8 C1 |! }6 N1 y5 |. `( K1 z" ~1 L }/ {
- 2 D8 c* p: j: a$ s% \3 T$ ?
' @2 g* F' F+ D U } `& y return 0;4 \" ^1 k1 M- J( {5 E
' Z3 G: u4 U1 i c% i - 3 B' L* i; x) {! p* e
7 j1 \# m& ? f" M9 R" q- o
}% _ J; P$ c; u8 g- Z; \
5 F. i( }6 L' M9 m; R6 [: X) N1 D% Z5 J) d8 G4 c1 ?/ Y
在lichee/buildroot-201611/target/user_rootfs_apps/cmd/subs下的rtc中复制一个makefile文件过来,并修改为: - $ _2 b$ c( n6 Y# s+ Z! V
1 M0 T3 |% `, [
DEST_DIR ?=_install
, z& [5 i0 l3 ]* l- U: Y; J
: k: v, V, n5 z8 K- ~; o( w" w
$ P8 h: e: \8 X2 [) A
3 n3 w4 A5 _( n+ }' V#CC ?=ARM-linux-gcc
1 |9 V2 I1 O) N' y' i5 K" O
% w" V/ c1 h0 `( S# ~- 1 s g+ ~0 V, H: U8 T
8 R1 ~# _) Q8 M4 ]( d; E7 y% g
CC =arm-linux-gnueabihf-gcc-5.3.1 ) D1 |' B+ Y$ X6 J8 B( h+ g
, u1 w2 V6 B! r4 p8 ^
8 ], r/ ? w5 `+ k4 B5 G& L
8 ~% F x$ J( a8 gbuild:
3 X9 n3 q. D/ C0 |) O* X" w7 M1 x3 u. Q6 f" Z1 V
- * T( {7 o' s$ O$ S+ p/ H7 A' s
. E d+ Q ^( T) z, }6 `$ _ @$(CC) -o $(TARGET) helloworld.c
$ S& w A& S9 g- c( a
. Z2 k, w* v; F0 j" q
|$ F" ]* d9 @( N9 e" N2 L
+ X" V* Y0 u' }/ X: K3 P3 i7 r3 K* Y5 C1 _: }5 e
. J+ ?% {+ W: ~/ \* s
: x6 j% W2 I2 Y; f3 W6 e. J7 [1 |- G; S
hold:
, C$ u" f Q4 ?# U3 p. Z0 }3 t, U, v( d! `; }4 l& `! X9 R. @# Y0 K
$ w) b9 S5 O) T! r7 i3 C* Z; `9 L& y3 ?
[url=home.php?mod=space&uid=70594]@echo[/url] "helloworld hold[skip]"
* k, [8 h7 k# g9 p* u! z O8 _$ d6 t3 P; E
3 ~9 r/ {0 n% k. t
* A- a) [% u% k4 Y: g; I3 Q7 w/ J. c1 M- g! V/ @* p# F" K
% I1 x" U4 _4 p6 ?( ^" v$ I
- % C5 m" t4 d: ^. v8 s/ Q4 C
8 F0 p4 g `$ x1 q. ?# }- g
install:
2 X" H- H0 {6 E6 G0 O2 | e$ y+ K9 r' j7 g, l
- / Y3 u0 S4 y0 H; N# M
) ]# _: S4 D* V [url=home.php?mod=space&uid=2293869]@MKDIR[/url] -p $(DEST_DIR)
6 R. o2 X! R8 c1 C9 \4 V: G3 n4 q: n
" m3 ?* |( F$ Y) j0 Q
& |; [2 T0 G0 z6 o+ K# ]- Q7 T( q; b @cp $(TARGET) $(DEST_DIR)
6 ^. ]% y% g0 z7 Y ]9 d: e; j4 p- E) {' D4 N2 Q2 I0 S! ]
- 2 a4 Q% {; S& y& Y& e9 G
2 R1 Z$ A% {+ ]
% {" V/ {% C; t) Z) L1 R d! \0 ^9 S/ S' t( f
7 p }, k7 c+ w1 U8 e$ F
; f7 h" X& v5 }2 |/ Y' xuninstall:
0 |: z0 W# T$ b7 D
8 ]% _7 ]" i J
$ ^6 c; @* O. D! X E1 q2 c, b9 B/ k0 E4 E2 n
@rm -fr $(DEST_DIR)/$(TARGET)
! W4 t l. H) ~2 j' v/ V
( L" c# w7 W, Z# j( t- : x! }: }3 k/ g
1 Y& e. u$ c" s) ^6 ~
3 }; v$ P/ ~1 q# \( A0 K- W! P, o, l4 a) O) H4 j1 _# C
1 H2 n5 Y2 `0 q# L' ?4 w- B& [0 g1 K# y
( x# y8 T8 @& \& F: m4 }" z/ n( @distclean: uninstall
% Z( I. ?4 e( m9 o% l" {8 b
. j, y) u; M' d2 L* `1 N. v% q9 F- 2 g& b2 y8 e b
4 X; Y& a; y% L# A" A ]2 Q
@rm -fr $(TARGET)
. ^4 C! Q- d6 S' c, }
, H2 y; z( E$ I3 w
2 L( E/ W& c5 W- ?0 `1 W2 q, E
' R1 l" O( x( S' O @rm -fr _install* T: O( T$ ]$ o* B
4 l! M4 n0 y5 s3 K [ R+ y/ b6 K( t! q1 s3 Y$ _* C- R. ], J% P, y
![]()
3 C. n8 C. h% t f! Y# O- @& N+ J1 [ n9 a; a2 y4 F* q
然后执行make: ![]()
没有报错,在当前目录下生成的helloworld文件: ![]()
把helloworld拷到开发板下面,修改权限就可以运行了: ![]() - `3 g1 I5 {5 ~6 M% d+ ]& @8 Z
|