EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
笔者主要下载了官方已经建立好环境的Ubuntu虚拟机包,还有OKA40i-C开发板的Linux用户资料。 ![]() . V. G" z% x' w
【1】建立编译环境 1、安装ubuntu虚拟机,由于我在以前的开发板试用中已经安装好了VMware。这里就不再展示,如果没有安装的,请自行根据OKA40i-C开发板用户编译手册的第一、三章来安装,手册有详细的安装说明: ![]()
2、我这里直接按照手册的第二章,直接就有现成的环境,应该很快就可以。安装好后打开虚拟机: ![]()
3、仔细阅读编译手册《第四章:linux编译篇》,并一步步实现。 先在虚拟机中的/home/目录下新建work文件夹,并把OKA40i-C用户资料-20220322\Linux\源码\目录下的xaa、xab拷贝到虚拟机work目录下面: ![]()
& C( c+ l( S' z7 v5 d# y9 [5 x7 _& c将共享文件夹中的源码拷贝到 ubuntu 的/home/forlinx/work 目录下并校验。 ![]() + k3 }' z$ i) i- B- J& b: d+ {
合并源码,进行校验和解压。 ![]()
& q0 z% x& f- s7 }; t, |8 P8 c解压后进入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\镜像\ 目录下面有编译好的好些包,大家可以自己选择下载: ![]()
8 |5 }4 v1 H* D- y) `/ v0 Q( n【2】镜像烧写 1、将生成的sun8iw11p1_linuxOKA40i_C_uart0-1024x600.img文件拷到win下面。 2、安装PhoenixSuit。安装包在OKA40i-C、OKT3-C_Linux3.1.0用户资料-20220322\Linux\工具目录中,安装过程这里省略。 3、烧写,可以多试几次。 ![]()
8 s3 G0 n( ]" k; O* T0 p【3】编译自己的程序 在work目录下新建一个helloworld文件夹,在helloworld文件夹内新建helloworld.c,写代码如下: - g- B9 T5 W$ Q6 W% t) R4 D0 Z
1 x# ^+ `/ _/ \/ W% H#include <stdio.h> ( _/ t& X- A5 l
3 h$ F: ^: N/ |8 X/ ?6 b# C
" l4 s9 h, E( }1 S' Q* N5 g: Z( }7 |9 ^3 m4 k: b% G8 r T) F
int main(void)
% Y1 c6 H" g2 L) \4 o& Y- P
, j5 Y4 g* a) y5 O- r* v
. h& k' b0 T& e* U4 A4 W
- G2 i1 m6 z% u7 Y, n: z{ 3 [( U( t9 |$ O6 a
! M, c' q) L9 L, a* P- C. s
- # W$ x/ F7 i" D+ ^/ n' n* E" E
4 X9 W+ G6 ~7 I# K printf("helloworld!\r\n");
! }: g0 E; `/ z7 d9 |6 V6 A- @# s* g+ a3 w+ R" P
- ! ^, W& r; |8 U- ~9 {; i
; W; C# ~7 j) P8 b6 P$ S( X printf("hello OKA40i-C\r\n");
4 h/ C& X1 l4 u [+ R! j, Q
h* L& m4 y$ ?7 t) X7 r; C: `: F
7 |3 E! V: E3 q. Y2 z) o4 E P3 D0 Z1 j3 V
return 0;; Y* A* C, O0 F$ ]' L% M. g% L
9 k+ G) H3 p2 j+ [; w
- ; G+ Y" X1 P3 N u; Z; O
& X; u2 f6 k) b! m9 e9 I
}. h* q$ {0 R& o4 a3 ^& h
! m9 T {3 z$ W6 \( w4 E# ]" v* Y4 S8 v+ m i/ p P
在lichee/buildroot-201611/target/user_rootfs_apps/cmd/subs下的rtc中复制一个makefile文件过来,并修改为: - $ A' l$ _/ R5 V, i: c
6 b# ^4 U8 l. B' ~9 p gDEST_DIR ?=_install$ E7 t: G& ~& y9 Z( \8 k9 l
; s" X: B; f# v. C
! u6 X2 _2 w+ X
+ V/ `* i! M5 d5 w; \/ E- n#CC ?=ARM-linux-gcc
. x9 Z1 R0 G; l5 U. p
7 @$ p e, g& C) f6 k/ w7 c7 w- 7 J0 I# N( d4 S% y9 q
- x3 ]7 z5 V7 X" H* ~0 V
CC =arm-linux-gnueabihf-gcc-5.3.1 8 U) W X' Q7 @! y
* m/ A/ S$ c. X, C$ v6 Q
- 8 U# s. Y/ c0 U, P; ^
' G% N8 |9 L5 y7 [9 g
build:1 w& @ c) x5 Q7 w$ Q% N3 N7 t
1 x6 D. G* N9 e& S - 5 J/ R0 V/ P N% D# B
- E' @3 |0 W( p. z4 s5 P# K. y D @$(CC) -o $(TARGET) helloworld.c6 ^3 J7 U4 ?8 R- U
2 [4 n$ L( Q* s: K
- * w3 x+ f- ^- s
: R7 f/ T" d( O! B/ Y
7 l. \7 k# [5 R0 o- v C6 F! a$ s+ S& K: V# p
- . g' k$ A0 S, r8 s0 z" l
& W g6 a& i; P5 w. Y7 K3 r d
hold:" o6 C3 g7 v/ g7 n
. q2 C( ~4 ~# {: G: r) P
- z- Y/ g* F9 v
5 B2 j4 J7 K7 \' T1 k
[url=home.php?mod=space&uid=70594]@echo[/url] "helloworld hold[skip]"
) Z1 `' [- `' {2 G( c3 L
' f) r0 {& b3 y
7 \/ A7 l# j$ P) t% l4 G
0 A2 \& E( a8 H X4 L, O6 ~- G% q% a5 Q! Z2 S3 u3 x
. o% l. Z. `$ F% ?. ~; E1 L' w
6 G: Z4 L+ c4 m6 b* M) I" e8 V. J: \; t7 H, O6 f5 H
install:
- r, Q+ v2 x) X
6 y/ L7 t: |9 s
# O, I+ |$ ^& w7 o0 o4 o4 t
$ d7 v, ~. f; R* m+ q [url=home.php?mod=space&uid=2293869]@MKDIR[/url] -p $(DEST_DIR). @; K( n/ p2 O; g- T0 w. L
9 e! b$ Q- _" y Z4 T" t
0 S1 s0 H4 p% }2 r7 L B- f- V9 F5 ?: u- V
@cp $(TARGET) $(DEST_DIR)7 @' M0 T1 p9 X* [/ a
- j2 O2 R _0 X
6 N6 l. v; t% E& w1 I) x6 X& ~% m2 h. q: r7 m: E
' h* A/ S5 |/ X5 V; ]$ O' w- P9 s
: s0 }, x! {/ M% ]5 Y# |
1 H/ \4 C; G' j# ~
+ }* t/ X& |, A, q; b3 {2 P$ tuninstall:. X# p2 f' H0 L7 a' {( k9 I, i
; H' A( t. x5 K7 f
- 6 h% \, v" y$ l7 e. d
8 k: j4 i" U$ a, ~ @rm -fr $(DEST_DIR)/$(TARGET)
+ r; x& X( _/ K
- [7 [3 N" d, {( m1 i
9 v% |& ]0 z/ W4 d! g8 h5 Z$ G! H9 Z! j$ t
, h- ]; H4 |- _5 I# T$ D* d6 L j$ M+ M5 m
* K p1 Y' x* W
/ C; u. l4 _$ q5 S- K- Q2 q% w! cdistclean: uninstall' C& M( p( X) z% _9 `, _
/ E3 N6 R5 o! n! |- 8 f2 K, ^* `* @( Q9 W: u6 H
% |1 T/ z6 b: Z" P @rm -fr $(TARGET)( d% z0 j7 h( F
! T! G4 T ?$ Q) O. O
. z" j2 ?7 |* c( R1 O& K3 y
9 a2 R1 W7 {# p1 h! E5 {0 m @rm -fr _install
5 F2 o6 T' ^0 ?7 l) S1 X
# R7 l9 u8 u! `4 e7 G) @6 V' S( [0 ]8 t, H& p: Y
5 U) y( k- a$ p m
/ ]" C3 W3 q- l$ G
然后执行make: ![]()
没有报错,在当前目录下生成的helloworld文件: ![]()
把helloworld拷到开发板下面,修改权限就可以运行了: ![]()
6 g$ Q- ^: p5 f" J, X: @1 [ |