EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
笔者主要下载了官方已经建立好环境的Ubuntu虚拟机包,还有OKA40i-C开发板的Linux用户资料。 ![]()
7 a. {8 _" r% Z" C【1】建立编译环境 1、安装ubuntu虚拟机,由于我在以前的开发板试用中已经安装好了VMware。这里就不再展示,如果没有安装的,请自行根据OKA40i-C开发板用户编译手册的第一、三章来安装,手册有详细的安装说明: ![]()
2、我这里直接按照手册的第二章,直接就有现成的环境,应该很快就可以。安装好后打开虚拟机: ![]()
3、仔细阅读编译手册《第四章:linux编译篇》,并一步步实现。 先在虚拟机中的/home/目录下新建work文件夹,并把OKA40i-C用户资料-20220322\Linux\源码\目录下的xaa、xab拷贝到虚拟机work目录下面: ![]()
" @, I( C: L$ I( W$ k) T ^ ^将共享文件夹中的源码拷贝到 ubuntu 的/home/forlinx/work 目录下并校验。 ![]() 2 S. x9 i& |0 B |; [5 {
合并源码,进行校验和解压。 ![]() 8 K& h( J Y+ x6 |4 ^. 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\镜像\ 目录下面有编译好的好些包,大家可以自己选择下载: ![]() ; j5 |# @* M1 z% B) e
【2】镜像烧写 1、将生成的sun8iw11p1_linuxOKA40i_C_uart0-1024x600.img文件拷到win下面。 2、安装PhoenixSuit。安装包在OKA40i-C、OKT3-C_Linux3.1.0用户资料-20220322\Linux\工具目录中,安装过程这里省略。 3、烧写,可以多试几次。 ![]()
( i; o L/ q* M4 v- S% ?【3】编译自己的程序 在work目录下新建一个helloworld文件夹,在helloworld文件夹内新建helloworld.c,写代码如下: - - N) b& r6 h C6 d% a; ^
3 f5 V3 {8 y. w& n& J#include <stdio.h>
% y2 t" e2 P6 e1 w" X: ^* G5 u( Q! K! j3 M7 Q$ _5 M6 |
9 ?6 m1 M) ^: {& i! m5 p1 f
4 f6 E7 G$ U. Mint main(void)' ?! M+ c; C2 K% @% X* ~9 v2 x. b
0 e( s: p3 E& z- $ G$ C5 o D$ A& J
7 }2 U- }7 ^6 b, l4 S{ 3 }+ t8 w7 ^" r, N/ b
( ]! ?* I# k+ ]. [1 N$ N q
- 5 J. t% c, S1 ^ D
' \( `9 o* n. Q6 n9 Y: [
printf("helloworld!\r\n");
6 G) ?0 C& D/ ?" ^' \
! H# v3 u4 s6 R$ ~" B- }1 o! l; L
8 u; o8 ?9 `" R, r
5 s# G" { x2 W, A) A, K printf("hello OKA40i-C\r\n"); * `' a# |7 w, ~* ]2 F6 ~" R8 C
- B6 W0 e; K, |4 V1 T8 Z, X3 Z- . T M7 w3 S2 }7 w9 n
# o6 E4 ~$ k( U) c/ d7 l5 s8 n return 0;4 O, N- ?6 I7 y4 U- X8 z
( c X; O0 R* ~- d3 B( [3 c/ R; d
6 p* _) E2 y- f" G* M
8 w' H: R% l/ Z# X}
: A4 ]" d. @( Q* _# a$ t
* p# u* Q5 b" [
9 V* T8 n/ @9 I; u
在lichee/buildroot-201611/target/user_rootfs_apps/cmd/subs下的rtc中复制一个makefile文件过来,并修改为:
* W, U# n" P2 ^' i( E, f; s
' L3 v: i$ D" |4 H* x; o- ~8 p! NDEST_DIR ?=_install( f6 j# i1 a' j6 _7 i2 c; J
. X" W4 z9 C$ y% K( H1 L8 @: U
3 S( c2 X- i( ^+ X. L( n8 W6 q0 U7 ?( q5 T& r* {0 Z4 Q9 S
#CC ?=ARM-linux-gcc, x, z' ^% a8 t* E" p5 {0 D$ q
8 q8 b% j5 j2 Y3 A5 c" }
- & k6 H+ x, p. G0 Y+ U" K! V
% z- N; T6 I# q* m# E0 _' fCC =arm-linux-gnueabihf-gcc-5.3.1 , c |+ N1 K& F# W( K
2 D6 L( @9 N& P7 ?1 a5 ^
- * ?+ E0 K% Z, L. O1 W, |3 G
* w+ R+ _/ P/ M' A7 v- J* g1 L
build:' ]9 ?# ]2 s9 K, s. t
+ q* Y0 N' Z( n) s# r
. o6 X1 N! N% l& Y/ F
4 x/ i' Q" J% f7 U% K @$(CC) -o $(TARGET) helloworld.c- F. c( Q3 x3 s' h
. h' h1 v- A3 u1 e- 2 X5 O( k" g) u, I* g
. ?: y0 N& y5 }! ]& U* _" r# `/ b8 o# }0 O
( l5 g1 r0 K1 x0 z1 a" ]4 C
- ( s9 {- a8 J* c" A( Q4 B' b/ Q- l
% _# W& ?7 Z: @9 K7 P! o* q
hold:* {1 \, w/ ?! c% y( r
) D$ j- }! a1 }
9 P9 _/ B* a+ C2 f3 K, d& |# C% W' ` Q" }" ]4 A* u
[url=home.php?mod=space&uid=70594]@echo[/url] "helloworld hold[skip]"- Q' w1 }5 h: m+ @+ \% V6 O$ q
/ c# l+ }7 s& ]) T9 j2 n
E: r( F5 ~8 I5 _/ Y/ ~
: V* I# m7 e5 @5 J' N, L
4 P- h: x! j: v- ^0 \8 u9 S9 _0 V. J9 M- w: T& e/ @
" k5 }2 l% m! V; n# |' [! q5 ?# a: n* [' k6 U% {
install:
& E7 ?6 F6 ]8 z+ y" W# z* h9 j J) `/ r, ^% M8 N l# x
- 9 Y; x0 M$ Y* ]% G
1 r" A% C3 P2 ^3 T [url=home.php?mod=space&uid=2293869]@MKDIR[/url] -p $(DEST_DIR)+ G# V1 B0 S: [" ~# p
4 K9 f3 ?; U' O7 f* K
- 0 y5 V) h0 ^6 X8 G7 [
& z& R% o7 X' J. M
@cp $(TARGET) $(DEST_DIR)
& u; j6 N7 D1 F# |8 O' q/ p- H) M
( {# k7 b. K3 J' ]6 G$ m P - ; i! N+ }5 d1 `5 i
. f" M0 V0 i+ {0 N; j6 N$ Z [! x2 u( K5 ~
7 A3 }3 r. q/ `6 \$ F
6 L y1 j6 O( p+ ?) x, Z5 @, r2 a# U& j
uninstall:9 A0 h8 M) }. w
5 ~0 L! V3 {6 }( o. Q& ?7 D
" e& S6 M4 {, A* ^; x9 e) I: q, W
% J: g7 D! g9 M7 q6 M4 M( y @rm -fr $(DEST_DIR)/$(TARGET)& g* ?1 m f4 f6 Y. `$ ]& Z# n
: V6 c4 D5 _$ M8 \& `- : _- o* ~( B9 J* W3 u
' f- G* x2 y# Z( i [. d3 Z$ W5 k- B- b7 V
6 ?1 G* `: Q3 D# P( z | - 5 [1 @% n, d h4 R! v
( l! w# B* B; B( F' v
distclean: uninstall/ Q% n: o. f5 y
& {4 M7 [. G/ j. n! F7 Y7 o - ' Y5 k6 k/ i3 u( Z$ ]1 w6 i
/ N' }! d0 f# Z
@rm -fr $(TARGET)
- D; a" S+ U0 A6 r+ j0 R# D* Q4 z6 F: s4 n, [5 k3 w( B
: E8 X Q$ n e! e. T) o: N2 r6 J/ Y
@rm -fr _install' f. v5 P, w d& ?8 F
2 x1 | X5 p# b6 B4 g, D% s! M, W5 A0 c5 ~; `% D
![]()
; V$ p& v& ?# A4 @; V9 u i' z }6 N- l3 t2 {/ R& I1 u3 V
然后执行make: ![]()
没有报错,在当前目录下生成的helloworld文件: ![]()
把helloworld拷到开发板下面,修改权限就可以运行了: ![]() : E1 O( Z9 m. k& V0 Y; y5 o
|