EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
笔者主要下载了官方已经建立好环境的Ubuntu虚拟机包,还有OKA40i-C开发板的Linux用户资料。 ![]() 5 D- R+ V6 J# o* U
【1】建立编译环境 1、安装ubuntu虚拟机,由于我在以前的开发板试用中已经安装好了VMware。这里就不再展示,如果没有安装的,请自行根据OKA40i-C开发板用户编译手册的第一、三章来安装,手册有详细的安装说明: ![]()
2、我这里直接按照手册的第二章,直接就有现成的环境,应该很快就可以。安装好后打开虚拟机: ![]()
3、仔细阅读编译手册《第四章:linux编译篇》,并一步步实现。 先在虚拟机中的/home/目录下新建work文件夹,并把OKA40i-C用户资料-20220322\Linux\源码\目录下的xaa、xab拷贝到虚拟机work目录下面: ![]()
) {( E& [* f( Q6 r. m' \. q将共享文件夹中的源码拷贝到 ubuntu 的/home/forlinx/work 目录下并校验。 ![]() 3 _- N0 D$ d, _5 H( N p
合并源码,进行校验和解压。 ![]()
+ C8 p2 ^# G8 Z/ V9 S( l解压后进入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\镜像\ 目录下面有编译好的好些包,大家可以自己选择下载: ![]()
1 J' o% n- k' r& \2 b【2】镜像烧写 1、将生成的sun8iw11p1_linuxOKA40i_C_uart0-1024x600.img文件拷到win下面。 2、安装PhoenixSuit。安装包在OKA40i-C、OKT3-C_Linux3.1.0用户资料-20220322\Linux\工具目录中,安装过程这里省略。 3、烧写,可以多试几次。 ![]() 2 z6 W6 y, n; e- |
【3】编译自己的程序 在work目录下新建一个helloworld文件夹,在helloworld文件夹内新建helloworld.c,写代码如下: - 7 A" L: ^( p3 W) ~0 v
" q7 i* y/ W9 j4 s+ @1 I# F#include <stdio.h>
) G+ A1 X* j7 p9 S5 e+ o$ |% o! a
% u+ Y- _3 u5 x# T$ v5 { W
: L. I# e! l# c' y# a3 K8 ~( n
0 ~) N" w2 O/ w. o! C* }0 Jint main(void); z- o @: f/ Y* i
, n# ]; I" |5 p2 c) L! |, T- ' B8 G2 c+ q- z" [6 F
2 V% }3 {+ {3 }0 L* k$ ]) ~) ]{ 9 ~* t7 e0 L8 s) p; S& K
6 K! s- X) X& f - , {6 F5 C# V/ _
3 c) w$ M3 ?/ b. W printf("helloworld!\r\n");
( M+ F9 X6 C9 S6 y0 }6 W& n
6 Z2 f) D( c) j& l& i/ O
0 H3 E- z7 p( _
# N% t7 B, D, ^+ S printf("hello OKA40i-C\r\n"); & o+ b& q7 \" M" V( s2 g
4 h9 F% e! V7 E' l6 D; h
# H$ h4 Q) b2 V' M( k8 M
) Q" r- b0 c5 m k+ E; o return 0;* T- d! q0 Z z" ?3 Y# N
1 a. ]' K6 y! d& _+ K& Q
- 7 b/ c# [( _4 w$ k. h1 W' t
# k( W4 G2 Q3 E0 @$ }, A9 m" @5 t}
9 Y& z0 M0 N( Q7 v
! l) T8 h/ q2 l$ O
% o% P* {* {. l& A$ k9 o
在lichee/buildroot-201611/target/user_rootfs_apps/cmd/subs下的rtc中复制一个makefile文件过来,并修改为:
' a* t' q; [# {, B$ [: ~4 d+ F7 r% D( }# k/ H }6 r7 J
DEST_DIR ?=_install0 [' n6 r3 ?( I
; `- s# O8 h9 \1 g' C# \" F" ?
- + K2 ` Z8 k; J0 p2 l
2 W3 B8 i9 j0 x$ G) R0 c/ P, X+ `
#CC ?=ARM-linux-gcc
" u: M' i/ n. T) B) d0 k) y, E0 I' S$ s0 z, m( e5 C) z
- 3 u) b! x) |8 k' \/ W8 e
* D4 F$ a+ ^3 R3 t' _) D o! B4 WCC =arm-linux-gnueabihf-gcc-5.3.1 9 _9 f: \ |3 [& z+ K: M& q; m, c
( u" i4 v0 r3 T* ?5 ~ - ; U) ]7 n9 \- B7 m9 N
& L" T, q8 \& I8 u5 j/ k
build:
! z+ T5 |6 \1 b" ?
3 C, R0 t# k2 ~3 p - % s2 @& ^" s' y: o5 k) P
9 d3 {* s: Q0 f3 i& n' d
@$(CC) -o $(TARGET) helloworld.c
) K5 t: o4 x3 N: s! T. m, X
1 ^$ e9 f+ B3 f
/ h3 W8 r2 C& c; E+ P N/ E" `" P
1 v5 \6 T7 n0 I9 l, M, |) [! j" M( f! _) u8 l- b7 K
! U! P/ Q- L" }3 j
/ W6 o) R* ^' ~5 p2 r/ J+ ]1 }( \! j b" u. P1 I0 N: ]3 p
hold:8 F0 R! }0 p, M- c% b; a! R
$ V) t8 s2 u& R# Y: t5 S7 q$ G- " c# r" j) ?8 }! L
# X$ h; r$ G5 a% B0 {
[url=home.php?mod=space&uid=70594]@echo[/url] "helloworld hold[skip]"
5 i7 U( c9 ~& [7 d0 G4 ?2 k
3 J% c9 q* X( }( S - 2 \/ u0 o9 T0 G: y
# n/ r$ y0 r. u' Z+ F& x
' ]# J' m0 ]5 V: B
- m) t. v- I2 v8 Q) \
- % m1 Y) g. ]6 A# Z
5 g. e9 w4 @' p& a i* ?1 i# j5 |4 I
install:
# v$ u: |" P5 Q x7 Q5 Z
+ s# f) t9 q. R5 Y- G
7 }, d( H' J0 A0 A0 g% J5 W* G* b9 w t
[url=home.php?mod=space&uid=2293869]@MKDIR[/url] -p $(DEST_DIR)
1 W7 D: a' }# ]- q2 R/ |6 f: _' ?2 W0 N$ @) ^
- / N1 ~, v1 Y$ D+ y9 E+ J: J
; @3 }) E9 M) n @cp $(TARGET) $(DEST_DIR)1 n% P/ ^" x0 @6 T3 @/ `
2 k- ?6 D) E% Z# S& N
2 r8 n4 x/ b8 N6 b( ^" J: s0 U+ ^( X) G
0 ^4 V* X6 L1 f3 Z
# K0 v! i) E3 Q: i8 x- % z' }% j( x# S4 w
9 ]8 H p- ?+ i3 B4 s
uninstall:
k0 A% F- C- ~4 T ^4 x8 s+ {8 G( k! Y- x! N9 U5 i, _
- L- Q& Y2 A: q2 o& s+ r" y4 D* [" k l1 k! H3 J0 W. o) m5 L; r
@rm -fr $(DEST_DIR)/$(TARGET)
$ ?( i9 G$ z7 b, q% \5 J( i( `! R# l$ b" l% R! O
5 b. p5 A5 J' a' I+ a2 T8 x N
" ~" X+ r& J! u# v: c5 w7 Y( A. Y4 a
; z5 S0 L6 n7 g- 5 p! s0 ` ^) H& G/ x" p$ A. Y
6 |1 |* L$ U4 v
distclean: uninstall
5 f6 E- [# O8 s5 N4 [! l0 p* `# Q
4 O" f4 I9 H+ y( z; ]7 Z) r
* G' D9 H6 y5 |# A! W" L" C; |: e' r
2 ~! X# ~0 [/ ] @rm -fr $(TARGET)' m# a0 ]* K @7 G
4 I+ L% z0 N! E/ M
, F3 d) V! g! S( P6 g' C1 Y* `. H ^) [0 p" s9 l" R
@rm -fr _install( \. H; {& G* u9 z' Q8 ]4 Y9 ]
( p: P# t! u0 Z! l2 ?1 {
/ }! q$ \; k. D c, Y
8 p g, e- p% F
# R% g0 N8 e$ z
然后执行make: ![]()
没有报错,在当前目录下生成的helloworld文件: ![]()
把helloworld拷到开发板下面,修改权限就可以运行了: ![]()
2 V% K7 G) }6 {5 r" ?: T) E |