找回密码
 注册
关于网站域名变更的通知
查看: 671|回复: 1
打印 上一主题 下一主题

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

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2019-4-22 09:58 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

EDA365欢迎您登录!

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

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

5 c* d8 m5 `- f* k5 T7 E9 I! W) o& ?" n

" q" s9 p9 c7 X7 b$ Z9 Q& [2 w' T/ c* \
这里介绍如何编译SD Card的image。这里并没有太多的原理需要讲述,但是大多数刚刚接触到linux 嵌入式的朋友还是需要花些时间找编译方法。这里提供了为SoCFPGA编译内核的整个流程。7 U, A( |. D9 t  d  \( D& y
1 V' v/ A! V' {% J- R
本人的编译环境:Ubuntu 12.10(说明:本人是使用root登陆执行所有命令的,所以我的命令不涉及到执行权限的问题,如果大家自己嫌每次都需要使用sudo很麻烦,也可以想办法使用root登陆,当然操作不当可能引起系统当机)
% f5 p) {. v* P( [& D3 I5 K/ }& H
2 W* l/ u! b% h( y' S! R+ g编译之前有三点工作需要做:1、 安装交叉编译链。 2、 安装git工具。 3、 下载内核源码。  s" {5 G5 ]! U5 ~

4 r7 R9 ]! b! N6 q6 q交叉编译链在前面已经提过,这里直接说在linux 上安装的方法。安装前得从网上下载安装文件,我们选择linaro组织提供的ARM-linux编译链,linaro也在定时更新。https://launchpad.net/linaro-toolchain-binaries/trunk/  这里会列出每次发布出来的交叉编译下载地址。目前最新的版本是2013.10版。5 S" ~; A* l( S5 y$ e+ l" O4 z, v
在terminal 中输入
, Q  x  G2 A& @% X: T8 n" ~) X$ V- s4 e" `7 ]0 Z: n9 d: I/ ]# w: B
; a' [/ D! k" i: R: F2 u

" J) q' g' i4 m8 v9 ]. \+ y下载编译链。(这里下载的位置可以任意,最好是新建一个专门的文件夹,免得乱了,我这里使用 /blog/toolchain 目录作为范例)7 z( y2 n) U3 o+ s" ~
完成后需要对文件解压,解压命令为:- D* \3 j$ e' i, n& [4 G9 T% g4 S
  • tar jxvf gcc-linaro-arm-linux-gnueabihf-4.8-2013.10_linux.tar.bz2' g8 n4 P8 @0 V/ L" S. z% U$ L
! [; r) B5 d8 \0 W3 Z, Y
0 z7 F  r9 f- ~% R5 A
$ x% v" E, j' i2 N) T2 I
然后再终端中输入 9 a6 ~$ [, w1 ^9 J0 Y/ Z
  • export CROSS_COMPILE=/blog/toolchain/gcc-linaro-arm-linux-gnueabihf-4.8-2013.10_linux/bin/arm-linux-gnueabihf-
    8 u' ^8 V: m( X9 ]1 X/ ~0 \
9 k' ^* u: d" E6 g6 J1 w
2 i$ W% R+ A( F  {4 x5 R

1 ]1 z, B7 |+ f5 I这样交叉编译链安装就算完成了。! ^) {7 @/ [7 W& l
8 a) x) Y' r0 p3 f# `) s2 W
接下来就是安装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 工具)8 {* p/ M0 {# h6 U' M  @% v
0 ?% I6 |9 n5 c% q6 R
后面的工作就是从rocketboards的git 仓库中获取linux 的源码了。0 p+ x3 F2 g8 Q+ B; G* m6 c% ]7 r
  • git clone gits://git.rocketboards.org/linux-socfpga.git
    6 r1 R9 m; h7 u& g6 zcd linux-socfpga
    8 F; N! M  |6 m6 v, K& N$ J0 t! m4 {git checkout -b kenel_3.12 origin/socfpga-3.12- b6 a& Q: y# h' b

    7 \  S. Z+ G( A! i  s2 P! u/ L
& o6 \& H/ l$ }5 X' h) w- v
7 P% @5 g7 I0 C6 k! G: w
; F3 [5 V2 Q" H& X! W
(这里kernel 3.12可以任意命令, origin/socfpga-3.12 表示远程版本信息,Altera 从3.7版本开始都有上传到git server上。用户可以用 git branch -r 查看远程的版本号,目前最新的版本已经到3.14)
# Y/ |. y( h9 J' o* |$ s& Y这样内核源码就已经获取完成。/ M) o1 o- j( b
2 d, Y# X* d4 L* |& j' N1 \
接下来就是内核编译了。依次执行下面的命令
" M' A% T8 L9 x3 `/ o
  • export CROSS_COMPILE=/blog/toolchain/gcc-linaro-arm-linux-gnueabihf-4.8-2013.10_linux/bin/arm-linux-gnueabihf-  P! Y' j! o1 x4 g4 }7 h5 }3 A5 ]

* J2 Z$ W4 J$ w2 H6 W  E1 n! f: b
1 y6 K+ ~' k0 Y, M( _- r/ K
2 q2 s) h: c9 S6 ^
(前面有执行过此处可以不用再执行)
# V, W; T$ z' h" F# {/ N& C7 g) w
  • make ARCH=arm socfpga_defconfig1 L5 ?3 h! y; }: d% _4 d
    make ARCH=arm zImage LOADADDR=0x8000
    1 K$ B4 S; \+ p, R0 @% a* M3 `# p/ W* [

% i) k( ~0 M4 g# `1 W; x+ @0 p

3 z& T0 a' O0 {  f2 q
: f% u  M' m* d: Q8 G此时可以在内核的arch/arm/boot下看到刚编译出来的zImage文件。可以替换掉Boot SD card中的zImage文件后插入板上boot。5 {. V8 M2 g! \, q
另外可以执行make dtbs 命令,会在arch/arm/boot/dts 目录中找到socfpga_cyclone5.dtb文件。将此文件更名为socfpga.dtb替换掉SD卡中的dtb文件也可以参与boot。
! w8 d. v7 N6 t: ?9 n2 p- n当然这里的dtb文件并不是完全符合DE1_SoC的板级描述,后面会介绍具体作些修改动作。2 |" l7 \% h2 f- ?8 T1 F% d" V
当然很多人对于dts文件的作用并不是那么清楚,后面也会根据frame_buffer的image编译和相关源码分析dts文件及在内核驱动中如何使用。" C, W" n2 S$ a+ U  ]

3 n% a8 x4 Q9 |  Q; t附:
! `3 Q" o5 U: a  _如果有多次编译内核的需要,不每次打开电脑或者终端输入export 环境变量的方式比较麻烦,这里介绍每次打开终端自动添加环境变量的方法:- p/ `9 m' @. r0 r, Y- @0 f, a
使用编辑器打开 /etc/profile,在文件末尾添加语句1 M" f. y. f" m4 z  |
  • export CROSS_COMPILE=arm-none-linux-gnueabi-
    4 j+ J& q3 m6 F4 s( L! Jexport ARCH=arm
    7 A) j! g3 \6 g& d4 cexport LOADADDR=0x8000) K" G% }# H, h
    3 w: t" y/ Y; r/ O5 L

& j$ Z, ~; w. E. ^, z

9 g' I. G0 e2 A7 [/ B9 }# U4 Q5 e% e0 O$ E5 U4 [& \
这样在编译内核时候直接执行下面两条命令( p% D; u1 K2 F! i, r7 ^8 C5 Z1 D
  • make socfpga_defconfig
    ( m3 i( l1 y# l, D- U% k  {( h+ Pmake zImage
    7 v4 A/ E& D3 u: b3 `( o1 \! a8 q0 v
      @0 k, E8 |+ f$ f4 Z$ d
% ]! A  f1 f! u- b

- V5 Q* b6 k# N: {! f8 |2 M9 Z) I/ O3 C$ F1 V3 M6 d0 L, a" i
即可编译内核 3 f' n  ]5 u9 f( K; h3 l" i% F

该用户从未签到

2#
发表于 2019-4-22 17:20 | 只看该作者
thanks for sharing
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

推荐内容上一条 /1 下一条

EDA365公众号

关于我们|手机版|EDA365电子论坛网 ( 粤ICP备18020198号-1 )

GMT+8, 2025-7-30 21:47 , Processed in 0.109375 second(s), 23 queries , Gzip On.

深圳市墨知创新科技有限公司

地址:深圳市南山区科技生态园2栋A座805 电话:19926409050

快速回复 返回顶部 返回列表