EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
笔者主要下载了官方已经建立好环境的Ubuntu虚拟机包,还有OKA40i-C开发板的Linux用户资料。 ![]()
3 x; H4 ?2 v% N【1】建立编译环境 1、安装ubuntu虚拟机,由于我在以前的开发板试用中已经安装好了VMware。这里就不再展示,如果没有安装的,请自行根据OKA40i-C开发板用户编译手册的第一、三章来安装,手册有详细的安装说明: ![]()
2、我这里直接按照手册的第二章,直接就有现成的环境,应该很快就可以。安装好后打开虚拟机: ![]()
3、仔细阅读编译手册《第四章:linux编译篇》,并一步步实现。 先在虚拟机中的/home/目录下新建work文件夹,并把OKA40i-C用户资料-20220322\Linux\源码\目录下的xaa、xab拷贝到虚拟机work目录下面: ![]()
7 I3 r9 A- A5 f* f" R4 `1 f将共享文件夹中的源码拷贝到 ubuntu 的/home/forlinx/work 目录下并校验。 ![]()
+ X9 T& w% ]( z& w9 M& v9 r合并源码,进行校验和解压。 ![]()
4 ?9 M h: h. O解压后进入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\镜像\ 目录下面有编译好的好些包,大家可以自己选择下载: ![]()
9 o- D4 ?& @$ l【2】镜像烧写 1、将生成的sun8iw11p1_linuxOKA40i_C_uart0-1024x600.img文件拷到win下面。 2、安装PhoenixSuit。安装包在OKA40i-C、OKT3-C_Linux3.1.0用户资料-20220322\Linux\工具目录中,安装过程这里省略。 3、烧写,可以多试几次。 ![]()
9 Z7 E6 ]! x# u【3】编译自己的程序 在work目录下新建一个helloworld文件夹,在helloworld文件夹内新建helloworld.c,写代码如下: - - `7 p( n7 g9 @0 b
( V4 F! e9 g, u& s4 [& O, N- [/ A#include <stdio.h> % j/ L3 t, I* k p. [
& V6 N( y* Y# P- _
& O v+ D1 F- Q$ K& t) t; j( Z& h v$ `& n7 A
int main(void)) z# t% ^% q) D* s+ J/ y' g
$ G$ {. J- ~+ f* ]9 g% e- b' u
- : ^7 _) p1 \" Z
# s* _) v8 B: \) A7 k; ]
{
9 n2 l! y# I: e* B, \9 h& @; E- s4 B, H# Z1 Q( B8 r4 Z# v
- 3 I) X4 U5 a9 u' ]
* }7 O- Q6 Z/ G/ ~) N, ]1 f* B4 V! ] printf("helloworld!\r\n");
0 Q& N5 i9 R1 B! h9 c( ]# [" k M8 ?0 G3 L0 p' ~6 ?
- 9 r9 F3 D7 z P; W- r3 M1 M
) |% s9 p0 \! C. s1 i: p2 x" b
printf("hello OKA40i-C\r\n"); / B5 M# r: c$ i+ N6 q
' u( e0 N! N7 U
5 t3 g- w9 q, d+ m! n4 W0 S: F& P! R Q
return 0;
* B/ t% r* P0 Z5 m
2 G4 B+ z y1 W) T8 `; j- $ h; ^ n6 Z7 e. W% U
& _* m8 X& V: v0 `} l, U5 W% h; A- c h) y' f0 m
$ R2 n4 {" Q# K1 S
: X, h5 P+ ?1 u0 d+ ?
在lichee/buildroot-201611/target/user_rootfs_apps/cmd/subs下的rtc中复制一个makefile文件过来,并修改为: - - e2 I/ r/ a5 A D5 h
" P- T: T- W; `! m2 |
DEST_DIR ?=_install) Z, i; t. ^( c7 d, A) F
$ l5 h3 W: s% j$ P
- 1 U3 [# D9 V; @
V5 ~7 H& f9 G! R. c% x, G _
#CC ?=ARM-linux-gcc
6 l7 B! ~) s' L0 s$ X7 ]" V
( U: O' t8 d! j8 s- @) l6 P( J - 9 d* B5 m- V; D; Z
& i% d |5 w+ d" [6 p+ E
CC =arm-linux-gnueabihf-gcc-5.3.1 ; Y) E( Q+ P/ b/ g1 m
- h8 G2 S% k% @" ^, S, G
6 ^: `+ J' K! }) r/ E9 ?1 N) J8 g4 q) c, z: M6 i H
build:
5 w. p7 ]$ T. F0 ?' U" y2 U1 Z$ u; [: ]3 e5 P$ K
5 P: M! e5 G2 _/ c9 k/ w* M* E2 w$ @+ o
@$(CC) -o $(TARGET) helloworld.c
. b0 `6 E v4 w8 Y6 b+ @$ b7 T' H! ]/ `* P/ n8 a2 t9 n
1 u M# D* |& `% [% p+ K8 P7 Q% J, C4 S# c. y! ?3 i, E& l T
, ? d# q3 z) v: ?$ G% n0 K" Y+ D) u+ v$ N
- 1 d( d! R1 K5 F, e2 U: K
4 u: D0 I* M6 [1 x4 U5 Rhold:
/ v% H& k4 u: P7 k/ f0 b; \# ^7 @
/ [6 `( ^! z( h( z4 V3 E0 [- G
, I0 \: Y* ^# B; X$ _& N+ m# I
; K9 ~- `$ W+ \3 n [url=home.php?mod=space&uid=70594]@echo[/url] "helloworld hold[skip]"0 f$ a' }9 P! ?1 Q, v, T! j
" r9 X+ `) v( S$ |- 1 K( K# S8 t( q% A m
% {- {" p+ H6 i* A$ n2 W+ @7 `* `8 U+ o$ k% Z/ ^
* @7 Q" n P; l
4 e- X$ h1 a3 D9 v! S+ Z) \
8 W# I- ^8 J1 Y* v: _$ Ninstall:/ R+ |1 |; G, j5 f- T
7 ~2 {5 {3 I& d P1 t
- $ G" a* G+ H/ s$ o- g1 p* f* A0 x4 ~
- e- J. M- }; b" Y3 \# G
[url=home.php?mod=space&uid=2293869]@MKDIR[/url] -p $(DEST_DIR)
' G2 o& ]( [4 E' R @+ _
7 x' C% ?9 i! O8 O) _( B7 r/ s# q
! C u, L& E" y5 Q/ y
5 e; W" F; M, w! p @cp $(TARGET) $(DEST_DIR)
1 j( G# `. T& O ?2 o7 t/ s2 J" |" `. s1 N" n& K6 p: Z# B
- # K; Y/ `( X5 V: x
" J- t8 n# \2 y n% h- d! X6 ?
e; W* ~. t: o9 L. _ j- M
6 A3 h% T* H6 |: a7 T
- a) S9 h! E: j; U( T; Y, E% K
$ f- N. \6 Q4 P* c4 q$ z8 P2 `0 quninstall:$ }3 x9 Y3 R9 B- `+ b5 k
5 F# _8 ^, x q
- # R' [8 K" j) l$ o: j) w' f
{7 U, y0 A U @rm -fr $(DEST_DIR)/$(TARGET)7 {0 g- g r7 c1 F
$ s# _% K/ b; q$ B, ~' Q - % y5 L5 k5 X V# l$ n; y% I
) [6 W; ?4 ~, P9 E. Z' L4 d, O
7 Z; j% r* A* ?5 o% Y- ~2 g( k5 T2 z3 D& R
8 x' r9 w2 B8 ?5 m
9 g$ [; D7 I z4 Zdistclean: uninstall- t" ?, C8 w! Q: U+ c5 n2 v, x
4 \- i. o8 y% m" c6 ]. g1 ^$ [
0 P: d b- E" }0 V: [
; w" m! v9 R! G- g$ g5 E. ]" `2 B3 U @rm -fr $(TARGET) Q+ v9 S/ R+ d* k# ~; }
% J& F0 Y3 F7 f$ h% U1 Y! Q
+ Z4 v7 S1 U; d6 j; U6 ?
' T1 w% K9 M8 M" t/ k! n# A @rm -fr _install% a; J+ ~3 E6 |9 A4 f' n
4 U5 \4 P( l7 x4 U( N1 r6 {. L& R) y* [7 h7 q& ~0 P& a6 ]
![]()
2 @4 k- K4 [7 @+ S/ {: p7 I( c! Q% Y1 D
然后执行make: ![]()
没有报错,在当前目录下生成的helloworld文件: ![]()
把helloworld拷到开发板下面,修改权限就可以运行了: ![]() " T# f5 j" v: l* D" a# S8 E
|