EDA365电子论坛网
标题:
建立LINUX开发环境并编译LINUX和UBOOT以及生成设备树过程总结
[打印本页]
作者:
mytomorrow
时间:
2020-5-18 10:21
标题:
建立LINUX开发环境并编译LINUX和UBOOT以及生成设备树过程总结
文件linux-digilent-3.6-digilent-13.01.zip
1 q# \4 h" C9 b! r E
文件u-boot-digilent-digilent-v2012.04.zip
9 O7 |8 u5 U7 y
/WORK/Linux_Digilent/linux-digilent-3.6-digilent-13.01/arch/arm
* _4 U3 K7 Y' {. Z, ]: J3 `
% i6 q. I5 l [0 m. I8 P4 [9 T* w
: J) T z9 n7 v1 k5 g
1 安装xilinx 编译工具链
; i. Y6 L2 \3 {/ ]
进入Ubuntu系统,按Ctrl+Alt+T调出Terminal终端。输入sudo passwd root,会要求输入用户密码,然后重置root的密码,这里密码都不会显示。重置完后输入su root,再输入刚刚重置的root密码即可进入root
8 e6 Q+ {9 v5 H, m. E8 q
这里要说明很关键的一点,一定要把目录设置好。
8 U- `( P9 ~, i1 O
在root目录下,输入mkdir /zed,在zed下创建tool,将下载的xilinx-2011.09-50-arm-xilinx-linux-gnueabi.bin拷贝到tool目录下。
/ D% g8 l- U" i6 z: j, R
输入cd /root/zed/tool
V9 b! v* h6 N2 L+ P9 u+ c
然后./xilinx-2011.09-50-arm-xilinx-linux-gnueabi.bin
* D- o# G$ s6 m, A' ^
此时系统会提示权限不够,需要如下方式输入
/ [' l: ~8 p- K% ]4 G
chmod 777 xilinx-2011.09-50-arm-xilinx-linux-gnueabi.bin
+ R5 x- X0 f9 `% [* B
之后再输入./xilinx-2011.09-50-arm-xilinx-linux-gnueabi.bin 弹出安装界面,每次都点击next即可。但是需要记住下图中安装的路径。
) f1 o8 |8 E2 ?: E" L4 ~7 d
; O) F) W3 F7 T# Q" \2 q- `2 J* `* ^3 r
5 v0 Z% @7 P& d) i+ `+ G1 Y9 d4 i
2 设置环境变量(root用户下设置)
1 h% p [$ v, L: ]0 v: \* C
export CROSS_COMPILE=arm-xilinx-linux-gnueabi-
$ ~! I" X8 v( V
export PATH=/root/CodeSourcery/Sourcery_CodeBench_Lite_for_Xilinx_GNU_Linux/bin: $PATH
' [, ~8 U+ a: A, Y) [; ^1 ^
(每次关闭终端再重新打开都需要设置)
/ C7 a; r. `. T+ W5 h
测试是否安装好:查看工具链的版本
, M$ \: E* s8 ~+ p4 h1 V
arm-xilinx-linux-gnueabi-gcc -v
& C4 f- _% d# a) w* X
回显变量是否设置好
( O7 ]; U( G6 H' k* s
echo $CROSS_COMPILE
' A" v8 L$ a; A5 p9 y [
; B' m) Z" f H5 F
; @) [% I6 x* x2 ]: k+ C. B
$ V$ ]* B" K7 e5 v
* g: F& F# Z2 P# q0 @9 \5 w
3、编译uboot
( K/ ]' V3 ]2 q. e3 P# n
(1)解压缩uboot
1 d- V# a% c6 }! I2 f
解压缩命令是tar -zxvf
+ s$ @( N1 K" g# W3 ^
(2)编译uboot
% p* e8 k n# _9 O9 G" r1 v
make CROSS_COMPILE=arm-xilinx-linux-gnueabi- zynq_zed_config [注1]
5 Y6 r* V5 r g V3 @
make
0 g3 J0 ?0 l1 `0 n) N/ Y
其中
& W; ^- d$ i9 f7 W) s
"make <board_name>_config" "include/configs/<board_name>.h"
4 Q* k; v3 v! w7 z
(新版本的uboot没有zynq_zed.h 需要下载旧的版本)
7 |3 j& @; o3 _7 |/ l
' }) v6 ^( f! z! l+ s
- \9 L0 \. ?. V5 V2 k
4、拷贝elf文件
8 [5 z3 d, I: E; i& _
cp u-boot u-boot.elf
) `. c- e2 `' [5 F' ^- B( v
5、设定环境变量
0 @* _7 ?5 s8 g% g9 g' ]
export ARCH=arm
2 B( W+ {0 E4 l1 M
6 A5 w" ^0 U+ ^
6 D! \+ h- t% p: t5 Y, J
6、解压缩linux源码
5 y) }4 ^/ i2 G* {3 ^
tar -zxvf linux-
' n& e. ^" f, d, t( w5 m- u& i
& _; E6 F. ]5 H7 V& ^ }# e$ s( v2 ~
% S# x1 G# _5 ^' Q' K
3 J+ b' w0 M1 o+ ~- w6 |% _
0 p* C& w" ^& j3 ~7 \, J
7
; W, o2 L6 J# x% X
(1)make ARCH=arm CROSS_COMPILE=arm-xilinx-linux-gnueabi- xilinx_zynq_defconfig
9 x5 V" x3 F0 l( L
注意,当linux的版本不对的时候,会提示找不到 defconfig文件
+ B. r% k! M1 W) w
正确的版本是linux-digilent-3.6-digilent-13.01.zip
! C4 g4 h: u0 E& b
* q. y3 w3 A3 ~
' K6 U' o. y; }2 {2 v; |2 N- k
(2)make ARCH=arm CROSS_COMPILE=arm_xilinx_linux_gnueabi- menuconfig
9 Y; b3 H0 r% ^- R4 t" B) x
但是一开始提示提示'make menuconfig' requires the ncurses libraries
+ h1 ?- e. a' o0 L' D
要安装libncurses5-dev就可以了,执行如下命令:
' [. G6 Y3 Y) t7 n
sudo apt-get install libncurses5-dev
+ W2 J! f7 e% h: A
然后再次make menuconfig
: U: s# w: L+ [0 e8 l) Y0 O
, z7 J0 v& z: C* x5 `
5 m- Z' i0 h7 V! s1 w" f
注意如果设置CROSS_COMPILE和ARCH 后,指令中就可以省略
$ ?% @4 `( e6 N
export CROSS_COMPILE=arm-xilinx-linux-gnueabi-
# J W R# Y; E. {
export ARCH=arm
% [7 N3 b' U1 ^$ x# _
(3)make ARCH=arm CROSS_COMPILE=arm_xilinx_linux_gnueabi-
q( \( F* `+ _3 }1 W
在ARCH/ARM/BOOT/下有 Image文件和ZIMAGE 文件。
- K, w+ G, l9 Q. a( M! _
ZIMAGE文件是我们所需要的。
$ j, `8 M5 \' K$ d1 E$ s" p
7 H2 \1 z9 h* P; W4 Z
% ]% F# v1 J3 }) ^
9
2 `5 k: G# R1 p" i) `
DTB 文件生成.是U-BOOT用来传递给LINUX内核的参数的一种文件形式。 DTB:device tree blob
! J& R) n" u4 V) p# `( W: S
1,arch/arm/boot/dts/digilent_zed.dts
5 [+ e( F8 n9 V! s
2,生成EXT3 文件系统的设备树 ./scripts/dtc/dtc -I dts -O dtb -o ../devicetree_ext3.dtb arch/arm/boot/dts/digilent-zed.dts
* R" c1 A: e& x
3, 生成RAMDISC的设备树文件。修改arch/arm/boot/dts/digilent_zed.dts 。
- L2 X) N7 h/ I3 g0 o8 B- N; K
4,./scripts/dtc/dtc -I dts -O dtb -o ../devicetree_ram8m.dtb arch/arm/boot/dts/digilent-zed.dts
2 ^' ]( T0 ^+ a# V
/ z: v2 D. L) V1 B7 e
! U2 s# I; \% b1 B8 J {. [2 x
7 i! c- G/ ]0 F& P( _. B; l7 R, w
- c% a$ n4 v% \- l' c* K
10 拷贝出zImage文件
) V, P7 v, c0 M1 ^
在z@ubuntu:~/WORK/Linux_Digilent/linux-digilent-3.6-digilent-13.01/arch/arm/boot目录下
) t# ?2 ]' \/ m3 |
cp zImage ../../../../zImage
+ _4 d U6 x# d7 R
拷贝出需要的文件
! K' F1 B/ F; {. A
从linux_digilent文件夹下拷贝出 dtb文件和boot.elf 和zimage 文件
3 P3 h/ [) B7 h$ O* P& \) o
* l1 L* A0 \( n, r1 v
! z' h9 q; M) ^6 j3 `6 Q
+ h! h R: M3 W/ S$ T
作者:
CCxiaom
时间:
2020-5-18 11:10
LINUX开发环境并编译LINUX和UBOOT以及生成设备树过程总结
欢迎光临 EDA365电子论坛网 (https://bbs.eda365.com/)
Powered by Discuz! X3.2