EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
笔者主要下载了官方已经建立好环境的Ubuntu虚拟机包,还有OKA40i-C开发板的Linux用户资料。 ![]() , x/ q4 \+ z$ g1 P
【1】建立编译环境 1、安装ubuntu虚拟机,由于我在以前的开发板试用中已经安装好了VMware。这里就不再展示,如果没有安装的,请自行根据OKA40i-C开发板用户编译手册的第一、三章来安装,手册有详细的安装说明: ![]()
2、我这里直接按照手册的第二章,直接就有现成的环境,应该很快就可以。安装好后打开虚拟机: ![]()
3、仔细阅读编译手册《第四章:linux编译篇》,并一步步实现。 先在虚拟机中的/home/目录下新建work文件夹,并把OKA40i-C用户资料-20220322\Linux\源码\目录下的xaa、xab拷贝到虚拟机work目录下面: ![]()
% [: w. X1 \* m. A7 E& a% {+ c5 n1 F将共享文件夹中的源码拷贝到 ubuntu 的/home/forlinx/work 目录下并校验。 ![]()
% [: B9 R4 d+ j+ T合并源码,进行校验和解压。 ![]() ' P8 |% O# ]7 h0 T* a
解压后进入lichee目录下面: ![]()
这个源码包很大,差不多70G,所以大家要准备一个大的硬盘,要不一下就“爆炸”。 ![]()
解压文件系统:(注意)这里文件里的解压文件跟实际的不同,这里是rootfs-a40i.tar.gz。 ![]()
![]()
到这里,源码解压完毕,我发现我的硬盘只有4G不到了,赶紧把虚拟机换个硬盘。 ![]()
换了硬盘接着来编译源码,按照《手册》4.2.1一步步设置: ![]()
然后编译内核: - % M4 D$ R0 E' r1 C0 U n$ B
forlinx@ubuntu:~/work/lichee$ sudo ./build.sh -m kernel然后就要耐心等待,看大家自己的电脑来决定: ![]()
生成rootfs.ext4、镜像打包: ![]()
![]()
打包: ![]()
打包结束。 ![]()
至此源码的编译到这里就结束了。这是我第一次编译源码,教程写得非常详细,大家应该对照起来没有什么问题。这里建议的就是硬盘一定要留100G。 当然大家要是不想折腾源码编译,在飞凌嵌入式官方提供的OKA40i-C、OKT3-C_Linux3.1.0用户资料-20220322\Linux\镜像\ 目录下面有编译好的好些包,大家可以自己选择下载: ![]()
. n- R, _9 X7 k. R. k) S( F& z$ J, M' v【2】镜像烧写 1、将生成的sun8iw11p1_linuxOKA40i_C_uart0-1024x600.img文件拷到win下面。 2、安装PhoenixSuit。安装包在OKA40i-C、OKT3-C_Linux3.1.0用户资料-20220322\Linux\工具目录中,安装过程这里省略。 3、烧写,可以多试几次。 ![]() / [. W6 @2 Y$ y5 F
【3】编译自己的程序 在work目录下新建一个helloworld文件夹,在helloworld文件夹内新建helloworld.c,写代码如下: - ' o( G! T( X0 c
5 }2 w: M4 {, K: P! s
#include <stdio.h>
7 F3 H4 i# O. P9 ` t W; F0 O
. X; `1 ~5 F, h6 X# ]( ] - # O. Y) T+ K( L5 ?
6 W( W# u7 l: _* ~2 _0 Lint main(void)
( v% W* \/ T3 q% @" }) Z, e' p1 k& I! }' |' z5 Y% g0 c
; H) J$ G* Z. n- x( \( F. m
. X: o0 e4 M4 m6 E! T/ u8 ]{ L5 D( T# f4 Y7 ~; x
% g" Q% |; r P6 `" U
- 3 N- [- Q s' ]
" |( C' J: u6 X4 A- Z
printf("helloworld!\r\n"); 9 ]" ]5 ] ^3 v( Q" H/ F) f0 n
9 f( _$ `* ^7 Z/ _2 X
5 s! P; \, H" q; Q
n4 r+ @ m' n, @* J4 ?2 @ printf("hello OKA40i-C\r\n");
; z% \" Y9 D8 H% P8 ~
* K+ g" R5 J7 L8 I% n- 5 ^. W* S6 h b0 V: B+ x. r
j% a* a3 r( ^/ P! M7 [" r return 0;
4 G0 r) d4 ~- x" W D5 D1 M( [3 a. Z5 W, f C4 g& v' ]
6 V8 R# j/ [. R+ K) E, }4 ]4 g. j4 L% `0 P, L& p7 b y" d
}1 f' B' A9 x, m2 [& M8 x* L* A
, ?+ C; _. y; k, A! i
% G: }) p" c( I& W
在lichee/buildroot-201611/target/user_rootfs_apps/cmd/subs下的rtc中复制一个makefile文件过来,并修改为:
) q. `7 w8 N6 z, I8 ], Z) l
) J& `" M+ C. \5 \; t8 e/ xDEST_DIR ?=_install
8 F0 |3 D. {8 G0 o' e: T
& v2 l+ }: @& \% `0 D8 m4 B- # `! s' |5 J+ L
R1 b6 g* o4 [0 v0 `4 i#CC ?=ARM-linux-gcc: g* o2 J7 U0 K& V( M" @9 z' f) d
; {6 d6 i9 Q, ?% \# n, n# ^ - 4 O, }4 G. v- Z' G3 r% k
& U9 Y1 r, n* E, BCC =arm-linux-gnueabihf-gcc-5.3.1
) _3 M. y5 ^: ?: m5 M/ X1 v- a P
- 6 _4 I) R# Z- f- H7 E3 o, [. b
5 P- ?' [" f0 R1 Y abuild:
" [& l5 X' `) @5 G8 d( z3 F3 M! d3 D! {# ~2 C) o; Z7 I. W1 _1 U
6 a8 i( I s% m& E
4 q* Y- n( L% W* T9 O+ K8 S2 A) ? @$(CC) -o $(TARGET) helloworld.c- |6 Y2 e3 M+ }' |& v
( K5 b) P7 z0 y& o: K4 s; S& P
- * t3 r, E1 U- f# g& `6 ^
8 V9 v. n$ r+ x9 Q$ {; C3 P# o
1 ` S# H+ P. y$ y" p- @0 B! t m0 O, S" C3 D1 V* k
- R8 ` @8 b. ?; }/ i: R6 ]* l9 s3 ^8 G/ R
hold:
2 J" x7 h: a, s8 ?1 \" e6 H% p3 N
' N# B! m+ i5 F, V; y S- $ B; g( g) X# O% Z0 G1 s$ h
$ h, B2 S; J" {0 P [url=home.php?mod=space&uid=70594]@echo[/url] "helloworld hold[skip]"
[+ ]9 O2 Y, V& _5 T8 @ a6 j
" y- f$ _( g8 h* z% t1 p - . g7 I, x& a. X# c
6 a4 I1 c ]7 Z2 }8 z8 Y! W/ I
( D, U3 s& c' w' E7 s0 D. B - ! F* e2 S1 G' u# y1 L4 {
/ L L: j9 T/ u. x$ H1 b
install:- u$ N* Z& K) {9 R7 L
0 z( C0 k& }! @; f* ? - ( C, N! m. H) `0 }
1 h) h1 i# B, X6 `# w+ \9 q5 j' a+ j
[url=home.php?mod=space&uid=2293869]@MKDIR[/url] -p $(DEST_DIR)
0 {& W; I5 U: y; ], [
4 T( B5 ~. S+ h0 X5 @ - 4 w0 d$ L" F7 r+ C! C
3 }# s% z' i: y; H3 b+ K# \9 t @cp $(TARGET) $(DEST_DIR)0 H) R: q+ e/ O5 _' p2 v
4 U8 Q3 M5 [! T1 D, c& u
- , d* c! k/ {; Y% ?1 ]7 `
7 j2 k! e0 m5 N5 d4 U5 D1 S/ C
, ~/ T- @6 l# ~ X& L. {0 J% X4 l5 ^
+ F2 A% p( ]9 w( t* ], k
% x" m& t, Y1 J& A; Huninstall:9 m% N: s- `! T& \! L2 N
9 W9 f, u# Y1 T" Z9 _2 q: B9 ]
7 G/ v, w- }5 C9 M( F1 w' T$ G/ y- c+ Z. v
@rm -fr $(DEST_DIR)/$(TARGET)
0 T1 O/ C' K$ P, I; G+ U$ s$ {3 O( X
& {* V$ B7 `9 B
4 O' V9 {6 f, I7 ]# T
) }% p6 l" D8 W; C# e/ P1 a/ V3 w( a) @; }9 F
, e2 b/ U% L% r; q) ]
' ~5 h8 M7 X& o5 e
6 C1 P, D6 e; g8 |8 @) d- N, Sdistclean: uninstall, f/ s+ i9 q, l5 Y
% G1 Q5 h _; P0 N/ w- T" d' B
- ; d% u$ x7 w) k% W* M+ J1 T
7 J! g7 z* s9 H3 Y& U5 y
@rm -fr $(TARGET)+ w* j1 |+ B# t7 S4 x3 ]( e% m
/ F7 T8 \- `0 y# j - 6 V7 e( @, j( J; v7 t" |& _
7 S2 {9 h2 k' b$ M; J& k" Q& [ @rm -fr _install
2 O4 u: U2 g' F/ v; T
& a3 E1 V( s4 d' T r" q( ~
# P( U9 v; e) |" C7 c: C
. C* I! D/ Y$ ^, G! I8 F
8 L+ Y ` t3 T0 L5 c
然后执行make: ![]()
没有报错,在当前目录下生成的helloworld文件: ![]()
把helloworld拷到开发板下面,修改权限就可以运行了: ![]() 7 D H) t3 Z1 r
|