EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
笔者主要下载了官方已经建立好环境的Ubuntu虚拟机包,还有OKA40i-C开发板的Linux用户资料。 ![]() ' [: u( X8 C& a* X
【1】建立编译环境 1、安装ubuntu虚拟机,由于我在以前的开发板试用中已经安装好了VMware。这里就不再展示,如果没有安装的,请自行根据OKA40i-C开发板用户编译手册的第一、三章来安装,手册有详细的安装说明: ![]()
2、我这里直接按照手册的第二章,直接就有现成的环境,应该很快就可以。安装好后打开虚拟机: ![]()
3、仔细阅读编译手册《第四章:linux编译篇》,并一步步实现。 先在虚拟机中的/home/目录下新建work文件夹,并把OKA40i-C用户资料-20220322\Linux\源码\目录下的xaa、xab拷贝到虚拟机work目录下面: ![]()
3 {* \% ~$ s. H将共享文件夹中的源码拷贝到 ubuntu 的/home/forlinx/work 目录下并校验。 ![]()
: o0 |2 t" l J8 Y, R) D" U合并源码,进行校验和解压。 ![]()
4 L. V) k+ J1 B+ ~3 K( l0 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\镜像\ 目录下面有编译好的好些包,大家可以自己选择下载: ![]()
' `- x1 L7 A8 Q【2】镜像烧写 1、将生成的sun8iw11p1_linuxOKA40i_C_uart0-1024x600.img文件拷到win下面。 2、安装PhoenixSuit。安装包在OKA40i-C、OKT3-C_Linux3.1.0用户资料-20220322\Linux\工具目录中,安装过程这里省略。 3、烧写,可以多试几次。 ![]()
, u" U7 ^; P6 _+ s【3】编译自己的程序 在work目录下新建一个helloworld文件夹,在helloworld文件夹内新建helloworld.c,写代码如下:
" m+ z V( n! d5 d. h Z' y+ d6 N/ x# t# d$ H" u* u
#include <stdio.h> ) _0 P% B9 D, q6 ?8 g/ t% m
) E! K! q6 N: ~* n u
+ _$ M7 x- t1 U5 U) \3 p- n2 g& n" o1 c- w: \# \ Y
int main(void)
9 F: N& K! `1 a% l
2 L1 ], a! t( T T$ m9 s
* f* K4 F% h- [ Q
( R+ U1 \ n0 v Z, w, J{ 3 ]; L: B& K; u. x
& u7 H. z& q6 i& s. V0 _
- & \1 c7 X: q. P
* V- ^- B" C/ Q
printf("helloworld!\r\n"); , |8 I7 m% s; K8 V n+ V2 M
+ p, x$ Y H2 U' n - 6 K) o- G) {9 A" X4 O( O% H& @
8 C% o! o6 l( k9 S* }+ n# Z7 `
printf("hello OKA40i-C\r\n");
% w6 g, C; J" `$ |- D8 ?2 s) ~; F% h u% W
- 0 `1 ^4 G. [% B
3 g. s# M- Q9 a" H1 [
return 0;! P" u. ]6 S/ i3 P
?( i+ X0 L' ~% e - * f( q9 @) b4 N# Y7 K( C
) X) ?$ H4 q; B) |) }: h/ u
}+ h# y. r- t! P) H3 f% T$ N1 O5 [
6 `. n+ W u5 f! i4 Q, r5 b+ f
5 j( K, S6 b+ Q3 [3 v0 C! b- M
在lichee/buildroot-201611/target/user_rootfs_apps/cmd/subs下的rtc中复制一个makefile文件过来,并修改为:
8 T9 T1 a; v% u3 v$ g9 ~/ f; W8 ]$ _; y0 H# u
DEST_DIR ?=_install7 t; U: r4 Y! G0 U' l# ^& _
+ D" c% F3 m5 t% C# M8 J. J
- 7 ?4 b I \7 n7 m) n
" |5 \6 x2 ^1 U+ n9 \& X' X
#CC ?=ARM-linux-gcc
. B- _% ^( y' f# ^% g5 Q ^0 q
! y U! R4 d1 E3 Z - 5 G- H9 J9 l8 m
( l9 F- [' |* b7 e& ~
CC =arm-linux-gnueabihf-gcc-5.3.1
4 ?. A1 d# D. \3 H
, T" `) J. Y, |+ K/ {
! P' J% G9 d6 z+ H/ y- E" [. B4 w" e6 ?" r8 a1 `
build:
3 m9 ]0 G0 l: R6 O- l2 d4 w% e4 w0 {7 b! y \: }0 m( F+ u7 K
4 N3 V# P3 a: |+ H/ g
0 F2 p& d& m: i @$(CC) -o $(TARGET) helloworld.c
+ g5 E! _ d% R1 r4 P7 L) }1 d( K. X4 c( A8 u) U# `8 y1 H |; X, f
9 z, i2 p/ C! x9 x/ E% C7 b
: K+ h7 U) W8 W% `
: b4 V8 e3 N3 [9 f2 ]! A+ v% c) G/ K, y" U6 H, a
- ) t2 K3 ?0 y, L" a
. Q1 {2 ?7 S% b2 |+ w. s
hold:4 S ?3 ?& s4 H8 t) V) t3 [7 _' U9 Z6 i
' n/ @/ U7 g, h+ V0 A( t
- 4 m+ F/ V! w' W% G7 m! H
7 n! }) L7 y1 O8 e+ s6 h
[url=home.php?mod=space&uid=70594]@echo[/url] "helloworld hold[skip]"! o8 H! `/ {3 n. f! J
1 s1 j. G, i1 v8 ^% i* T
, D+ k. @0 j3 C9 {
; V v6 D% x) I6 K9 m X! s' q' n
# f$ w% p) g: K7 A' i8 W9 R7 Y0 N' b
: _* h, P6 r+ k9 E+ G. ]! ?" v& G
install:/ L, f! ], j6 f& N j% u& ^; D& T
! Y' |0 d# W( N0 g4 x R/ \0 I
- ( G4 V4 n9 v; L- _9 r* j& S
3 L* f: |: |: D. X [url=home.php?mod=space&uid=2293869]@MKDIR[/url] -p $(DEST_DIR)
4 q& `/ R) M9 n; D8 v
7 [1 F3 ?, o/ d* \9 t& e
4 q; J/ O, R% L( t6 b1 \' w- H
* v" s$ ?: M8 v2 A. F @cp $(TARGET) $(DEST_DIR)
# z5 r/ r/ g* k7 T5 c6 l( k: g' e) N6 ^) J; y* z
7 \: w2 q$ _5 x. @' N# u2 _
8 X" s( } k' m
9 N+ u% ~ n3 r$ ^0 e" I0 v( j9 _& }* t
( @$ B. g: g* |9 [! a6 V
# F2 c1 d7 s5 p" M% ]% Yuninstall:
7 `1 T2 J' ]4 Y) i/ ?8 Q6 I
0 ^: x8 J0 }( A! ^7 H- ; |8 b" f" F7 b) m- J q
' `: z& H% c- P6 v
@rm -fr $(DEST_DIR)/$(TARGET)
& n3 O1 X- H% F: b+ z
* S0 U Q1 k) e6 a/ }9 p+ P
3 |0 A# K$ K _6 z9 Y# ]! e( y( ^5 a8 o# A3 N! n4 K# J$ F! |" g
, @; ?9 f( w5 d: L; s. w _1 o8 H
0 ~) S: t# f' q
- @9 d6 o p0 z7 J3 N9 i1 y- i
distclean: uninstall
+ P0 F9 I2 T1 n2 W9 D8 [ P5 h1 F
; b/ n2 w7 A) \6 I4 Z- 3 k+ {. O4 _/ ~1 y1 B
9 {; R5 |7 C0 c) M0 b
@rm -fr $(TARGET)# \7 u+ q5 [9 Q# c, S) O6 g
E; o& a' U- ]
- C% x o! g& a* o! e* C; F. f/ J! U1 }3 n4 C- V. |& L
@rm -fr _install
* S; ~+ t4 w1 a7 h" ]: U8 w( x i3 @2 U% L, h1 z d# @ B9 a/ \2 t
3 Q3 z/ J4 t& z L
![]()
& W& ]* b( k6 {* b* O/ D$ }* b" ^5 _. a
然后执行make: ![]()
没有报错,在当前目录下生成的helloworld文件: ![]()
把helloworld拷到开发板下面,修改权限就可以运行了: ![]()
1 G' E0 G: D" u: p2 m' E% q |