EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
笔者主要下载了官方已经建立好环境的Ubuntu虚拟机包,还有OKA40i-C开发板的Linux用户资料。 ![]() 3 B# ?; C5 z6 N- P1 F6 D4 b
【1】建立编译环境 1、安装ubuntu虚拟机,由于我在以前的开发板试用中已经安装好了VMware。这里就不再展示,如果没有安装的,请自行根据OKA40i-C开发板用户编译手册的第一、三章来安装,手册有详细的安装说明: ![]()
2、我这里直接按照手册的第二章,直接就有现成的环境,应该很快就可以。安装好后打开虚拟机: ![]()
3、仔细阅读编译手册《第四章:linux编译篇》,并一步步实现。 先在虚拟机中的/home/目录下新建work文件夹,并把OKA40i-C用户资料-20220322\Linux\源码\目录下的xaa、xab拷贝到虚拟机work目录下面: ![]()
, z. M! B* E9 o' i1 b将共享文件夹中的源码拷贝到 ubuntu 的/home/forlinx/work 目录下并校验。 ![]()
" @5 f' p+ H2 f2 [1 `( w$ b合并源码,进行校验和解压。 ![]() 4 s2 ~8 {. P" k
解压后进入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\镜像\ 目录下面有编译好的好些包,大家可以自己选择下载: ![]() * @, l, V) H$ G7 g U
【2】镜像烧写 1、将生成的sun8iw11p1_linuxOKA40i_C_uart0-1024x600.img文件拷到win下面。 2、安装PhoenixSuit。安装包在OKA40i-C、OKT3-C_Linux3.1.0用户资料-20220322\Linux\工具目录中,安装过程这里省略。 3、烧写,可以多试几次。 ![]() 5 z1 H3 T2 ^8 l( f+ Z+ H. D
【3】编译自己的程序 在work目录下新建一个helloworld文件夹,在helloworld文件夹内新建helloworld.c,写代码如下: - ! F# }* V* l X
# v% |8 O- ]3 A. F' ?: D, `#include <stdio.h>
( _( b! N7 ]: j' w
' k7 x2 s( |4 S- w - / n; O& X7 K6 F( F% g8 f
8 z4 y5 W. y; u4 }int main(void)1 i% t- q6 C5 p: a( |- T9 E
" u' P; r3 u- s% n5 H
" P7 U0 D4 Z1 D! Y
- v Z* ]& _" p; x{
- O" X4 w8 n/ t- [8 a
" R. ~6 L# i8 ~1 P0 ]
, T( Q4 |% W, j- r" L1 f5 v2 P) z1 l
printf("helloworld!\r\n"); ! w: e8 j- E$ _
3 G: X: f/ @( [8 l% y8 J" y- X' _9 C" R% w6 \' h* \
, t8 {) x( F6 |. t+ y" M6 H printf("hello OKA40i-C\r\n"); 7 b) f _2 ?$ ]1 P
B3 X1 b7 _- Y8 Y# C - & X" ^" x8 X# D7 U! w
+ C+ B" G$ a$ }# T- Q
return 0;
7 ]; J" p( r9 B3 ~% N/ b6 B
- k4 ~* v; {! v! f
* M3 c, S' y$ d3 Q( q9 ^% _ \4 q& [# `& t" R
}
$ T" H. o* T+ t* ^" j8 d+ {$ V1 |4 ]9 G
. b3 ?8 m+ n) h" u3 Z
在lichee/buildroot-201611/target/user_rootfs_apps/cmd/subs下的rtc中复制一个makefile文件过来,并修改为: - 4 |4 q/ c2 r$ @8 u4 O) _
( i/ E8 w ?- K3 xDEST_DIR ?=_install
- I5 O a. t" @7 b* @
- {/ m! C+ z7 d# `6 q0 i- D9 |
?9 q$ z' n. T9 _( @$ u) ^: V% a/ d1 p
#CC ?=ARM-linux-gcc2 I3 S+ c1 h5 u# x# S* `4 g
" q% `. o }+ [& ^' o5 Z, a9 Y+ S
0 r/ [. L7 p! t, ]0 y$ d, d5 ?# l
CC =arm-linux-gnueabihf-gcc-5.3.1 ; {! f% Y" x- L6 q) K b2 x
( c! i& r) J" B+ j7 k4 ~7 ]
' Q$ L9 B, Z _: \1 a4 e
0 R: t4 _. D* f% W. I' y2 lbuild:
6 F! X; J0 K L' {" W7 @9 u
' s* _4 B! R$ U" ?: O
6 A3 c/ M5 a( Q
! F2 w' N+ F) L/ O& F @$(CC) -o $(TARGET) helloworld.c
/ y4 v, ?4 v+ H- b; ^5 j7 Y" }, C( O! k1 z; J! g
- 4 {3 `1 w `) x+ }+ z0 I
, w+ T* Y3 v- n/ P- |$ E
3 p7 n% B. J, p' p; f' E/ w
3 \( W1 ~+ c% C+ `1 g- i
+ @7 q5 F) {! y
1 O. @: b5 \( ahold:" C- }- I- K& z% J& ?3 E8 R
- y3 @) j+ o+ z) o6 c2 l" M
7 Q% O' E+ y# Z3 S' A( I' p* B6 q' Q7 P5 j
[url=home.php?mod=space&uid=70594]@echo[/url] "helloworld hold[skip]"
3 b1 y. n4 `! i& Q8 t
; n5 U" ?6 Q4 n# x8 M' v- 7 N- G! T; D4 s+ R8 P: U
4 k1 n. d+ H4 K; F- f8 s# h
3 Q$ o! t6 R; [% A0 t" |6 b; w1 t6 b5 h+ H5 N; l; }6 ~0 G; P
* b* J* `# B0 Z5 ?6 D& E
R6 o/ M q, Q& minstall:
$ B% ~: @( v$ p% l' B: c0 Q' v
1 L" l+ I; T4 v7 L. P$ v- " q3 N9 }; B; M! ?( m) h( E3 ~
0 R% E: ?8 ~8 k' g2 a# j! ~
[url=home.php?mod=space&uid=2293869]@MKDIR[/url] -p $(DEST_DIR), a# a: T) N/ ~$ y9 e: Q. S% u
a( a9 t' B! O( m
- * o. Y+ ~- n0 A1 g+ v% `# D! n2 |
2 i6 L8 B. a' W9 I% m/ C' r @cp $(TARGET) $(DEST_DIR)9 R6 w" ]. e0 D( c; y$ n3 B3 d
0 Z1 J+ Z9 x( }
$ N) }% {" @7 ~- G3 B
5 {: B& k1 u9 v2 r( m& g7 M; C6 W8 b6 b b) l O0 [
1 A7 d/ c j; |% Y$ J# Q
+ n0 c" w$ t U" i/ A5 N' @3 w8 a* W: z6 g& G
uninstall:
7 B( g2 y: d$ O; J6 r+ r/ M$ l) ~! C
: \1 M, i% z6 L5 H5 H1 [- " j' T" p) ~( z. V. r5 [6 D+ g
4 C& z! s. M; x: W) l
@rm -fr $(DEST_DIR)/$(TARGET)
9 \% U( o( {4 p9 f4 {. V. H$ w1 U
9 m3 x& ^2 ^+ [. r" \" A - 5 J3 A( b2 u. G% L/ D U
% g3 I H: i. b" N9 Y3 F# ^0 E; M4 o. Y" V5 j7 m: P) [1 |% s& I, {
6 N7 I: S$ Z5 A8 }0 W, _
- 5 {' i4 s1 `/ d- o+ N
4 S$ R: p2 [3 E$ s, t6 m$ ~* Hdistclean: uninstall
% S7 _4 G V$ ^. ^+ k- x
" P v3 x6 ]% ^9 [/ A1 r - # H" R1 A/ ^0 ^, ^) r. c$ P8 U
4 v' M3 u+ f7 s% e$ b1 o
@rm -fr $(TARGET)* s5 Q; j- d3 j
% q5 o3 q; L4 r6 x/ ~5 I
; Z, B0 _8 Z1 W+ Z6 d4 _6 K; ] v; ^- z1 F" a. X5 O+ Q* M+ m
@rm -fr _install$ T' L" o: i+ V
0 D( K9 \0 w! ]! V% \1 R
. n" R: r0 k; T1 v# V7 Z* m
![]()
' ~# _8 [ |# s* c# }
+ }. n5 b7 e, ^! x1 `4 |0 y' H
然后执行make: ![]()
没有报错,在当前目录下生成的helloworld文件: ![]()
把helloworld拷到开发板下面,修改权限就可以运行了: ![]()
. ?0 x4 O" m- y' p |