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

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

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
转——Altera SoC的Linux内核编译方法
) P# Q6 c7 e, s& k, Y6 a
" x2 {% i, Z( z2 g/ u+ G
) H4 P8 H  F6 A  h- ]

- i$ }4 I- y8 c' V. z# P+ A6 l这里介绍如何编译SD Card的image。这里并没有太多的原理需要讲述,但是大多数刚刚接触到linux 嵌入式的朋友还是需要花些时间找编译方法。这里提供了为SoCFPGA编译内核的整个流程。- t. J2 w4 W1 O/ H' t3 w! ~

1 y7 o, [7 q0 N( r  ]本人的编译环境:Ubuntu 12.10(说明:本人是使用root登陆执行所有命令的,所以我的命令不涉及到执行权限的问题,如果大家自己嫌每次都需要使用sudo很麻烦,也可以想办法使用root登陆,当然操作不当可能引起系统当机)7 H: B5 W% e9 r. F$ r

3 R8 S! s$ q8 x% x) d编译之前有三点工作需要做:1、 安装交叉编译链。 2、 安装git工具。 3、 下载内核源码。2 X5 W: O; }7 _6 k& n
+ C% h# H; z/ F5 Z9 I, v$ Y
交叉编译链在前面已经提过,这里直接说在linux 上安装的方法。安装前得从网上下载安装文件,我们选择linaro组织提供的ARM-linux编译链,linaro也在定时更新。https://launchpad.net/linaro-toolchain-binaries/trunk/  这里会列出每次发布出来的交叉编译下载地址。目前最新的版本是2013.10版。5 T1 c( Y, {' i" N5 O* l+ ^, z
在terminal 中输入( Y) z, m# A/ F; M, j6 K

% c7 F8 Z8 u7 k+ C) l2 W5 |$ w6 k$ n

- s$ l" y/ M. ~. _2 P
5 R' X' {% h0 |1 k, A3 r下载编译链。(这里下载的位置可以任意,最好是新建一个专门的文件夹,免得乱了,我这里使用 /blog/toolchain 目录作为范例)# d+ f' q0 y. v2 {) O
完成后需要对文件解压,解压命令为:2 S8 @7 q$ G: }& K8 }: s
  • tar jxvf gcc-linaro-arm-linux-gnueabihf-4.8-2013.10_linux.tar.bz2
    6 b6 N. @! D8 K( Q8 E2 I" `$ C

# v6 K$ u) u1 z

/ o: x! e3 ?' v, M6 ]8 N) K9 K$ T$ D! d! x
然后再终端中输入
4 g. t- {2 U4 D! K( d5 D
  • export CROSS_COMPILE=/blog/toolchain/gcc-linaro-arm-linux-gnueabihf-4.8-2013.10_linux/bin/arm-linux-gnueabihf-- u8 [  c7 }5 B1 S
! W, \: U3 V% h$ V9 z: H$ U

/ ]- J0 |( d3 u; v% U, Q" E$ @$ Z
  f% e- F. n/ m% n2 F# F. J这样交叉编译链安装就算完成了。, R) \7 A% q) G% E  f

, e. E& \, a  }2 l7 _9 ]4 ~接下来就是安装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 工具)4 z1 a$ Z& U7 ]1 N. s# ?
$ a+ s& j2 X$ n& w) r1 [
后面的工作就是从rocketboards的git 仓库中获取linux 的源码了。
2 X4 e. v( P6 A, X3 e+ W
  • git clone gits://git.rocketboards.org/linux-socfpga.git: i. {" \8 C+ b5 U7 i; O
    cd linux-socfpga
    5 {7 w, T# `$ N+ H, rgit checkout -b kenel_3.12 origin/socfpga-3.12
    " |) t+ C( @" x) \* g0 U* D+ r' v
    ( C2 K# i1 V4 r' L5 W

+ @. E) Z3 f7 i2 b5 c

/ C/ x: t% N- p2 w
# s! g$ d0 `6 L( C+ c(这里kernel 3.12可以任意命令, origin/socfpga-3.12 表示远程版本信息,Altera 从3.7版本开始都有上传到git server上。用户可以用 git branch -r 查看远程的版本号,目前最新的版本已经到3.14)
! s3 R: F. X  y% P  l3 |% M这样内核源码就已经获取完成。
" [+ t: e! S1 _) \% r3 s5 W* E- J0 b/ n% t
接下来就是内核编译了。依次执行下面的命令% A, y8 V# i3 t- t+ H- N
  • export CROSS_COMPILE=/blog/toolchain/gcc-linaro-arm-linux-gnueabihf-4.8-2013.10_linux/bin/arm-linux-gnueabihf-, j* O6 X. p. `8 h& u6 [8 z

% B$ v9 a) R' H6 e; x* b

  [. [3 v5 F) T
+ g! h. S; S& z& e* m2 k(前面有执行过此处可以不用再执行)3 N" N3 }7 E- N) s; q, Q, p) X; `/ W) r1 v
  • make ARCH=arm socfpga_defconfig
    ( O( A7 s- _0 I# ^: qmake ARCH=arm zImage LOADADDR=0x8000
    6 Q( G* e6 y. T8 Z" M( B
    ) c1 C0 H5 e4 L# \9 p$ k
% W4 w( N5 d4 w

3 ^# h$ e1 |2 L( k
9 z0 B0 N% p! ~% J( B此时可以在内核的arch/arm/boot下看到刚编译出来的zImage文件。可以替换掉Boot SD card中的zImage文件后插入板上boot。
8 p# R* r, z& ]- I4 ]! |另外可以执行make dtbs 命令,会在arch/arm/boot/dts 目录中找到socfpga_cyclone5.dtb文件。将此文件更名为socfpga.dtb替换掉SD卡中的dtb文件也可以参与boot。
/ [/ ?0 h0 G' D. X3 X当然这里的dtb文件并不是完全符合DE1_SoC的板级描述,后面会介绍具体作些修改动作。) w# A, `) W0 u3 c3 K3 A# l
当然很多人对于dts文件的作用并不是那么清楚,后面也会根据frame_buffer的image编译和相关源码分析dts文件及在内核驱动中如何使用。
6 d/ ]% Y" J& e- g8 B) D
$ l: c# b* [1 U) O) f$ S' ?+ O; l9 a6 I附:7 i  i  L6 X+ A& K& P- k' b
如果有多次编译内核的需要,不每次打开电脑或者终端输入export 环境变量的方式比较麻烦,这里介绍每次打开终端自动添加环境变量的方法:3 n) L6 K6 ^6 E9 A" h6 p/ x
使用编辑器打开 /etc/profile,在文件末尾添加语句
) g) z! |6 P# q3 o
  • export CROSS_COMPILE=arm-none-linux-gnueabi-
    3 n8 h( V0 C: m- L- aexport ARCH=arm
    ( y4 u+ {2 h1 ^. e' C1 h7 lexport LOADADDR=0x8000, q4 F5 f  g, I& ^( T
    ' H9 _, w: U5 P0 o/ {! O& E+ o& h; R3 `
/ E' P) b  m& S
* z2 w0 Q9 z8 O
" u$ l7 |& [0 d9 Y( A7 G
这样在编译内核时候直接执行下面两条命令
0 K& Z! G* C% J7 q3 K- V# B: ^
  • make socfpga_defconfig& M' @& Z4 C; w' x
    make zImage
    1 G- c# p' l: x0 G3 f. N& p& X/ d' M* R$ l. @/ M4 ~# ?
3 C1 w( y1 _' p9 G& e% b
: X; t  b( E' b: r" c2 K6 u) Z

, K* E0 j: c3 Y- B  ?即可编译内核 7 y' _( z+ d4 i7 _) @2 N

该用户从未签到

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

本版积分规则

关闭

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

EDA365公众号

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

GMT+8, 2025-10-9 01:03 , Processed in 0.109375 second(s), 23 queries , Gzip On.

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

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

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