linux编译fpga,转——Altera SoC的Linux内核编译方法

本文档详细介绍了如何为Altera SoC FPGA编译Linux内核,包括搭建编译环境、安装交叉编译链、获取内核源码及编译流程等关键步骤。

EDA365欢迎您登录!

您需要 登录 才可以下载或查看,没有帐号?注册

x

转——Altera SoC的Linux内核编译方法

2 t6 V" Y  }/ M( e+ B

: H/ d3 g" w8 }

) w' }& ^' w* R5 P

1 {: p4 S" g. j6 o0 S这里介绍如何编译SD Card的image。这里并没有太多的原理需要讲述,但是大多数刚刚接触到linux 嵌入式的朋友还是需要花些时间找编译方法。这里提供了为SoCFPGA编译内核的整个流程。

1 j4 f9 ^( G  @/ y! j& a( b# p+ p

. R* M; z2 F) i本人的编译环境:Ubuntu 12.10(说明:本人是使用root登陆执行所有命令的,所以我的命令不涉及到执行权限的问题,如果大家自己嫌每次都需要使用sudo很麻烦,也可以想办法使用root登陆,当然操作不当可能引起系统当机)0 E; Q4 [) J1 `! t7 S4 Y- z

- S0 o) B, Q7 Y, W$ `

编译之前有三点工作需要做:1、 安装交叉编译链。 2、 安装git工具。 3、 下载内核源码。

- N" y( L+ {2 Y- K. q# L5 O9 n# A' |6 y; h9 Z

交叉编译链在前面已经提过,这里直接说在linux 上安装的方法。安装前得从网上下载安装文件,我们选择linaro组织提供的ARM-linux编译链,linaro也在定时更新。https://launchpad.net/linaro-toolchain-binaries/trunk/  这里会列出每次发布出来的交叉编译下载地址。目前最新的版本是2013.10版。

7 Z7 l4 ]5 j$ M& A3 b在terminal 中输入7 j0 d& G5 [; \. K

wget https://launchpad.net/linaro-too ... 13.10_linux.tar.bz2- X* S. f; Y  u" l1 c6 v1 G* a0 F. }; Y' T/ I& V& K# Y, i1 @& L! b  w5 d. A7 E

O/ u% E# A1 w% ^# o) {下载编译链。(这里下载的位置可以任意,最好是新建一个专门的文件夹,免得乱了,我这里使用 /blog/toolchain 目录作为范例)1 ^# M: e6 P5 K( O- ~8 q* A. \0 U

完成后需要对文件解压,解压命令为:

1 T1 l. l0 f- W* B' s% T+ d( `/ G- Ntar jxvf gcc-linaro-arm-linux-gnueabihf-4.8-2013.10_linux.tar.bz2+ K# L8 _' v! X' F; l3 |: ^( E1 j! Z& m+ g. U+ ]( A: K1 Z$ ?$ V+ W- T

8 }; ?% F; D1 W1 M* A- x然后再终端中输入 8 d% T! O) C' ~! |6 H

export CROSS_COMPILE=/blog/toolchain/gcc-linaro-arm-linux-gnueabihf-4.8-2013.10_linux/bin/arm-linux-gnueabihf-

2 n4 U( x- i2 k6 F

* D& ?/ X8 Z3 Q) |3 K- T

% {) x+ o% e. p# l: |4 y) ]4 [9 y! z8 {! G1 W# i0 N; S; i; T9 Q

这样交叉编译链安装就算完成了。

- n/ _6 k7 @! w+ x- e& Q3 X; ~7 q/ z: R  m% d1 d

接下来就是安装git工具了。git 是类似于svn 的版本控制工具了。他的开发者就是linux内核的发明者linus torvalds。关于git 的安装可以参考http://www.douban.com/note/263056199/ 这个链接的源码安装方法。安装完成后输入git --version 命令可以查看到 git version 1.x.x的信息说明安装成功了。(在ubuntu 环境下也可以使用apt-get install git 命令安装git 工具)B; o. L& b3 G* A' s, B  B: x

/ J5 k: Y% d+ e) P

后面的工作就是从rocketboards的git 仓库中获取linux 的源码了。3 v' r0 a9 {; `/ l$ {  n, U

git clone gits://git.rocketboards.org/linux-socfpga.git

- a; G) k5 n# A9 Pcd linux-socfpga+ L: V" q5 Q) l  @7 a. C

git checkout -b kenel_3.12 origin/socfpga-3.12. _* ^: E, K  H. a/ D4 J5 F

. \9 J! ?- y# i9 ^" I2 G/ e" d9 c+ G: D: K

0 U5 f# {$ k2 J7 s( f8 v4 T

4 h1 x. c: s0 S8 R+ r(这里kernel 3.12可以任意命令, origin/socfpga-3.12 表示远程版本信息,Altera 从3.7版本开始都有上传到git server上。用户可以用 git branch -r 查看远程的版本号,目前最新的版本已经到3.14)

7 z: n8 L: m' {8 }这样内核源码就已经获取完成。

5 k. ^. n1 b  E1 x. U; }% W' _( P! |% l: j

接下来就是内核编译了。依次执行下面的命令$ J9 v: y& g7 o6 |) t

export CROSS_COMPILE=/blog/toolchain/gcc-linaro-arm-linux-gnueabihf-4.8-2013.10_linux/bin/arm-linux-gnueabihf-

' a4 a0 q/ X/ y6 G1 h

4 K0 E) w: r1 L# D# \

$ r3 F" K- N% y" X. `1 T

( s5 X( B7 ~* P6 o(前面有执行过此处可以不用再执行)5 J# a) M* S" ]$ b

make ARCH=arm socfpga_defconfig# X9 m  |) T, g; b& e/ S8 t

make ARCH=arm zImage LOADADDR=0x8000) p0 I/ m" Z5 `+ u2 C/ f

0 G' W- |* J$ O* ^3 n* b) U+ m. q4 I3 A0 M3 o% p% S+ ~/ }) p* W. t4 B

U1 m3 f( q. [# J/ }, o; Y# D

此时可以在内核的arch/arm/boot下看到刚编译出来的zImage文件。可以替换掉Boot SD card中的zImage文件后插入板上boot。

$ G/ U$ G/ L( z5 {( s& ^) X另外可以执行make dtbs 命令,会在arch/arm/boot/dts 目录中找到socfpga_cyclone5.dtb文件。将此文件更名为socfpga.dtb替换掉SD卡中的dtb文件也可以参与boot。+ \, {5 L; b5 e9 h4 ]* ?4 R

当然这里的dtb文件并不是完全符合DE1_SoC的板级描述,后面会介绍具体作些修改动作。

. y8 z- H* P! ~0 _9 p# m" L* h当然很多人对于dts文件的作用并不是那么清楚,后面也会根据frame_buffer的image编译和相关源码分析dts文件及在内核驱动中如何使用。# O9 {5 ]5 s6 V9 T8 g$ a

/ N8 |- f$ y1 J  E

附:

! s, [- l/ d  O5 n2 d. _如果有多次编译内核的需要,不每次打开电脑或者终端输入export 环境变量的方式比较麻烦,这里介绍每次打开终端自动添加环境变量的方法:

: k* m  Q1 r" C1 b使用编辑器打开 /etc/profile,在文件末尾添加语句0 l. Z9 L9 F2 S/ u- w

export CROSS_COMPILE=arm-none-linux-gnueabi-

}2 n- A% L! x* e( Iexport ARCH=arm! a$ M- q& G# T' U  b, Z

export LOADADDR=0x8000# A; ^1 h$ m5 J

2 ^* H1 D# ^2 O) V2 D

- `/ ~( M& B5 o0 A- \$ _2 J( s1 Z# b+ \% j* N5 O

1 _/ z; k: {' N* Y9 @2 I0 O; `

这样在编译内核时候直接执行下面两条命令1 M: e- A+ u  V) Q) q

make socfpga_defconfig

5 d. Q+ Y' o; Q. r; u+ o" Imake zImage7 x9 f/ C* \# C5 R! @

' E6 ]0 V- @" P: I7 o5 x

' _( q/ y( E8 K/ G! w- g5 Q0 b4 U. _+ Y

( Y2 V* o( M. G+ B, O( E+ F2 w

即可编译内核

7 L& Q" r8 g( d

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值