EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
笔者主要下载了官方已经建立好环境的Ubuntu虚拟机包,还有OKA40i-C开发板的Linux用户资料。 ![]()
4 ]+ E4 M+ j g# ~【1】建立编译环境 1、安装ubuntu虚拟机,由于我在以前的开发板试用中已经安装好了VMware。这里就不再展示,如果没有安装的,请自行根据OKA40i-C开发板用户编译手册的第一、三章来安装,手册有详细的安装说明: ![]()
2、我这里直接按照手册的第二章,直接就有现成的环境,应该很快就可以。安装好后打开虚拟机: ![]()
3、仔细阅读编译手册《第四章:linux编译篇》,并一步步实现。 先在虚拟机中的/home/目录下新建work文件夹,并把OKA40i-C用户资料-20220322\Linux\源码\目录下的xaa、xab拷贝到虚拟机work目录下面: ![]() ! A. D* g [$ r
将共享文件夹中的源码拷贝到 ubuntu 的/home/forlinx/work 目录下并校验。 ![]()
/ h) R+ s* h+ B+ G合并源码,进行校验和解压。 ![]()
( ^$ _& T: o" v a解压后进入lichee目录下面: ![]()
这个源码包很大,差不多70G,所以大家要准备一个大的硬盘,要不一下就“爆炸”。 ![]()
解压文件系统:(注意)这里文件里的解压文件跟实际的不同,这里是rootfs-a40i.tar.gz。 ![]()
![]()
到这里,源码解压完毕,我发现我的硬盘只有4G不到了,赶紧把虚拟机换个硬盘。 ![]()
换了硬盘接着来编译源码,按照《手册》4.2.1一步步设置: ![]()
然后编译内核:
! ^# C$ s* e* u& o+ u" R2 ^ forlinx@ubuntu:~/work/lichee$ sudo ./build.sh -m kernel然后就要耐心等待,看大家自己的电脑来决定: ![]()
生成rootfs.ext4、镜像打包: ![]()
![]()
打包: ![]()
打包结束。 ![]()
至此源码的编译到这里就结束了。这是我第一次编译源码,教程写得非常详细,大家应该对照起来没有什么问题。这里建议的就是硬盘一定要留100G。 当然大家要是不想折腾源码编译,在飞凌嵌入式官方提供的OKA40i-C、OKT3-C_Linux3.1.0用户资料-20220322\Linux\镜像\ 目录下面有编译好的好些包,大家可以自己选择下载: ![]() 6 b. H Z3 b! J, d' S
【2】镜像烧写 1、将生成的sun8iw11p1_linuxOKA40i_C_uart0-1024x600.img文件拷到win下面。 2、安装PhoenixSuit。安装包在OKA40i-C、OKT3-C_Linux3.1.0用户资料-20220322\Linux\工具目录中,安装过程这里省略。 3、烧写,可以多试几次。 ![]()
4 K' |* I( ~6 h. ^【3】编译自己的程序 在work目录下新建一个helloworld文件夹,在helloworld文件夹内新建helloworld.c,写代码如下:
/ C3 J3 b. R' w" v7 f7 Q8 t3 k* X3 S+ n6 e
#include <stdio.h> 8 u7 V1 J" s& A$ N% h: @
1 R5 `$ e2 I8 M. W
* l( m$ F( I, L& V0 _7 g( w# U1 s& f
int main(void)
: u% {% s0 t" X, Z& r0 M* Y5 K& J- h1 b4 B8 p2 \( o( D, {( C
& |: [% y, @. c8 d, Q$ o" D+ Q
) b0 C( }3 @! Q8 y{ " U6 L$ K5 s- G; N4 A( p. B
9 b) \# p' X" j* n& S
- ' x. w2 d( q5 f5 c: W
% f. S9 a8 Y' _+ M printf("helloworld!\r\n"); 0 R; O( j) t% `) T, ^) @& Z* B; W
* i B [8 T1 x9 e9 f3 c9 f, r2 E
8 k# b4 q1 }& A0 H2 r0 s* z9 _* ?" X) r" S( a" E J* l
printf("hello OKA40i-C\r\n"); 4 q/ t8 D; Y: M' u; E
4 j3 F! P+ N) X, ^& I; Y a: g
' ?# Z/ d, _# @
9 n5 G8 [8 W: x& w6 n& P5 ~ return 0;- g0 Q: L" P' F4 t
$ P3 X, t4 L& M" d0 f+ R0 r; @
. M+ s+ W& ]$ H7 A
. \% Y: b1 i: } C- v, \4 m; e}, j. w9 s3 a# Q* B, q/ J6 t& }! d ?
$ M& t: L; X* I/ p$ J
4 F3 T" U$ h7 P& {1 v+ |$ V1 p
在lichee/buildroot-201611/target/user_rootfs_apps/cmd/subs下的rtc中复制一个makefile文件过来,并修改为:
6 O1 F! q% M; a; ?8 ~" c y$ v1 q( j/ z/ ^+ \: \+ M4 b
DEST_DIR ?=_install4 b H% f( G' D
: H4 J' ?* G3 w% G- ! |% I q; f N* v/ o* N! t% S
6 X9 z1 H: `) {/ K* I2 I# F- |
#CC ?=ARM-linux-gcc
! A. o& v; M( c. x1 ^# N( n% C/ \1 y$ J0 I
, a3 N# Z# q8 l- z4 t, ]
- R5 S4 z6 ]( w( U- u% N; T/ |1 ZCC =arm-linux-gnueabihf-gcc-5.3.1
' \ q$ `" a4 x7 M4 l
; O+ l0 |- K+ G" B- % T& P: V: l7 G( H
1 C# M# L6 j5 y8 Z+ nbuild:
, n% R" Z7 }" o8 `% V# S% X3 I$ H9 k# i, H2 _
- 9 t; G/ _' _/ R$ a6 z
# N L4 V2 }" ~% P
@$(CC) -o $(TARGET) helloworld.c5 o: ^0 d/ i4 z4 a1 T; b
( A# Z# S$ Q6 _- B4 o2 y# j - . @2 e. I! h" I/ A
: r: C$ R) p H1 B: k
- [& ^4 y/ I2 _+ F2 q1 c0 v% N \3 l5 P* |5 x% z7 H5 c; o
' V' e2 J* _+ l5 u+ ~& {1 m4 o
5 R& f5 I6 `* w9 A% g: K% jhold:) J/ c9 v" A. X2 |
# f+ H, ~! n: Q# f$ k0 Q, u: n/ p- ) o+ i7 C% y! I
% y6 W$ E- Y8 `
[url=home.php?mod=space&uid=70594]@echo[/url] "helloworld hold[skip]"& Z6 l8 a# o: s8 U, d+ D4 g
+ e( L; {$ q" @% ~) B8 x* g( B
: s; C( U* k# t4 i8 n$ o; M& b
4 W( @. S& H j
" _# C$ v' ]) I& t# \8 b3 _- 3 ]0 q9 B/ X) a* \& C
( j# p$ F% p9 s: zinstall:
/ p h& N) d6 [
1 ]% s6 N9 u8 S( x. {, r2 a3 J; G; C& F - % g* F1 t' T0 d
) A3 {& f- u8 ~! S* ~ O3 \
[url=home.php?mod=space&uid=2293869]@MKDIR[/url] -p $(DEST_DIR)
, F6 M+ J* {, G8 y }) T% _8 \* F- e/ K0 g
& C7 l% C i& \3 C5 Q8 u5 i9 E
* X( _. T) q* ^/ i @cp $(TARGET) $(DEST_DIR)
3 y/ |3 X0 C1 I8 e5 U0 c
5 r6 V1 @* N/ g" z2 T9 _- ) Y6 z3 a% m$ E* Z# P% W4 c, F
6 h# b" F# V# Q0 W2 D6 H% p2 y7 ?8 W0 t/ C& `. q ], j
! U4 g/ ?; n. H
6 z' g* k& y& Q' E( R
% g* r4 R0 M4 |uninstall:* D4 ^% _3 n7 X
! n7 e- S5 v' j |% |* t
, ^5 Z3 L3 v* J/ ~4 |9 r3 W3 r9 d9 ^$ J) m4 d$ u8 j
@rm -fr $(DEST_DIR)/$(TARGET)
6 s7 _# L6 ?/ D) {2 X0 u4 G, {# y4 F, A/ [+ j _' z
- $ R, j) _4 h8 O
' h5 ?) P. \, R1 A. z" O
% l" d+ N7 x/ B! D: x3 e
3 x: k# Z& A6 C' R O' t' d. O - 6 r h Z' G- O# Z* o1 e# s
& u" ^ Q4 N+ X
distclean: uninstall
) r- _1 y$ o) I: N" B7 \2 V2 Y5 J) y7 @% X. _* u! ^
- * s4 F- X6 e" S: X) {
+ n1 }& n/ R3 i6 K- [ @rm -fr $(TARGET)
3 n- ~4 Z, R6 _' A1 [( a& e- Q$ Z; @6 @( F j$ Q+ ~* A, u& d" I" n
- " g' w: P2 t% Y G1 B
' O* H; U! E! b: X& j7 f @rm -fr _install4 Q; `# t4 `( \$ U6 s' u
' D; R! M- v& [9 Y* Q4 \7 X% T6 l7 }, R' o
![]()
& j$ X5 z+ Y7 c) y6 ^0 W
1 U8 ~4 H* S3 M7 G7 M0 @
然后执行make: ![]()
没有报错,在当前目录下生成的helloworld文件: ![]()
把helloworld拷到开发板下面,修改权限就可以运行了: ![]() . W/ B. A. H' A; F2 g
|