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

建立LINUX开发环境并编译LINUX和UBOOT以及生成设备树过程总结

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2020-5-18 10:21 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

EDA365欢迎您登录!

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

x
文件linux-digilent-3.6-digilent-13.01.zip6 g4 g. z; p. D
文件u-boot-digilent-digilent-v2012.04.zip& K  n& N; E; u: n4 f9 @: }2 n
/WORK/Linux_Digilent/linux-digilent-3.6-digilent-13.01/arch/ARM
2 b3 F/ Q8 \- r0 k; `4 E! k/ o. K& _. F( S9 Z" M: ?
, B) a- i2 e2 ]2 Z  U8 s
1 安装xilinx 编译工具链: T, O$ {: B3 O5 f: p
进入Ubuntu系统,按Ctrl+Alt+T调出Terminal终端。输入sudo passwd root,会要求输入用户密码,然后重置root的密码,这里密码都不会显示。重置完后输入su root,再输入刚刚重置的root密码即可进入root' e1 C4 {/ g0 @9 B0 F$ L8 @% Q
这里要说明很关键的一点,一定要把目录设置好。
# N. c$ s/ q) ?( e3 I+ X# l7 ]在root目录下,输入mkdir /zed,在zed下创建tool,将下载的xilinx-2011.09-50-arm-xilinx-linux-gnueabi.bin拷贝到tool目录下。
2 D; ^: p# u, L" k) \1 S# i; F输入cd /root/zed/tool
/ c& r; y- u# O5 @然后./xilinx-2011.09-50-arm-xilinx-linux-gnueabi.bin
* @7 `7 a" J. a% T9 X* |1 T" Y/ U此时系统会提示权限不够,需要如下方式输入1 ~8 }7 V8 S6 k
chmod 777 xilinx-2011.09-50-arm-xilinx-linux-gnueabi.bin) B' A- O3 n! i, @& r5 `% a
之后再输入./xilinx-2011.09-50-arm-xilinx-linux-gnueabi.bin 弹出安装界面,每次都点击next即可。但是需要记住下图中安装的路径。, u/ W* h1 [7 I# F4 s0 W6 ]9 C4 g
' x- @5 I4 m* z& f0 q; A
" z- J5 W) N! V9 X
2 设置环境变量(root用户下设置); [" q) |0 P; T% S9 ]+ P
export CROSS_COMPILE=arm-xilinx-linux-gnueabi-+ p4 l8 F; H" Z5 ?- G0 G/ ?; y4 b7 E
export PATH=/root/CodeSourcery/Sourcery_CodeBench_Lite_for_Xilinx_GNU_Linux/bin: $PATH
' r6 P. C6 q. I(每次关闭终端再重新打开都需要设置)3 x$ p% v( B" X; m5 M
测试是否安装好:查看工具链的版本
+ E) c; W3 r' a% Garm-xilinx-linux-gnueabi-gcc -v ) S$ p% ^9 b1 P5 ~
回显变量是否设置好3 y7 R  R, h+ l
echo $CROSS_COMPILE& b0 t  v! G& ~. U
- I8 f( y% K/ O+ m: s7 t: C1 z

) B" `* O, d5 T" P
- z% N# m6 b9 y/ i; ~3 E$ Q/ q' o; R  ?$ K5 a- j$ N
3、编译uboot
5 _7 j. T: n% u% v! M6 f(1)解压缩uboot; i# W5 V* A- p8 M
解压缩命令是tar -zxvf7 c! ]1 h8 B* \( f
(2)编译uboot
/ R  H8 H, L: Omake  CROSS_COMPILE=arm-xilinx-linux-gnueabi-  zynq_zed_config  [注1]  4 F9 `* C# Z6 U
make  
( u: X( r( z& K' F/ y其中4 k, `: Q' f& F' V6 o/ \( F( _
"make <board_name>_config"  "include/configs/<board_name>.h"
0 m8 g3 Y/ M* C; e; T(新版本的uboot没有zynq_zed.h 需要下载旧的版本)
: H+ G. A' j( b- O3 z4 s- R5 f/ o4 @- \: ?

4 u- ^. A- @& [* _4、拷贝elf文件" o. D  w$ w" K: t
cp u-boot  u-boot.elf# a2 |( ~& K" W& Z& s, q" S
5、设定环境变量8 O  X2 A+ d; }; ]: ]2 ~$ P6 }; z5 X
export ARCH=arm% M7 C& e5 e" k3 U/ s# F

$ G5 Y) ^- e  m! f" ~# r
, \& C; ~* W" u% v. O1 P. r6、解压缩linux源码
. ~0 G  Z8 u: ftar  -zxvf linux-  ^/ h& z3 R6 @; k- `1 n
7 }9 E0 Q- V* Q

. A; B1 [" s6 ]% `, B$ C* }, m# U7 [4 q6 ]. K. B
9 |/ V* }$ I  g/ K
74 s" w0 @& v; y! ]& ^% W, d. Q
(1)make  ARCH=arm  CROSS_COMPILE=arm-xilinx-linux-gnueabi- xilinx_zynq_defconfig' q0 o- ^9 I3 ]9 M; ?
注意,当linux的版本不对的时候,会提示找不到 defconfig文件
  ]$ X+ F3 }$ z; b  j正确的版本是linux-digilent-3.6-digilent-13.01.zip
; r% s7 ~9 a" P1 y- o
6 @/ ^! m  J  L
( E% j8 _2 a" }: q! d* T9 R" t7 O(2)make  ARCH=arm  CROSS_COMPILE=arm_xilinx_linux_gnueabi-  menuconfig2 `# U+ z# @/ V' ^5 ~
但是一开始提示提示'make menuconfig' requires the ncurses libraries. P4 z8 g, a* `
要安装libncurses5-dev就可以了,执行如下命令:9 u# b5 P* Q% r& F
sudo apt-get install libncurses5-dev
" V7 |5 F/ |, }8 B* S然后再次make menuconfig
/ p# _2 d/ x. P: ~% p1 ]
' U. c9 |( N! W" k* F3 g: }% s) s4 R/ D# f
注意如果设置CROSS_COMPILE和ARCH 后,指令中就可以省略
# o4 w' u: p) Q- C, T2 J  V: r+ Nexport CROSS_COMPILE=arm-xilinx-linux-gnueabi-
! b. |9 R' J' g" r( f7 Fexport ARCH=arm
$ M+ E/ _8 ?: X* x8 V% w" ]( L (3)make  ARCH=arm  CROSS_COMPILE=arm_xilinx_linux_gnueabi-3 Z" ]% p3 ]2 O' b' o# L
在ARCH/ARM/BOOT/下有 Image文件和ZIMAGE 文件。% S+ k/ U- z5 g( C
ZIMAGE文件是我们所需要的。
9 ^% q6 Z. g5 v( ^1 A  J
8 J: g3 o1 k1 w0 f# r, Y7 G! W* }. C( w
9" ^( v. F( G& ]: t/ |- W* A
DTB 文件生成.是U-BOOT用来传递给LINUX内核的参数的一种文件形式。 DTB:device tree blob
9 n( p. d  `) T, x: j6 c' D1,arch/arm/boot/dts/digilent_zed.dts
4 v5 Q1 ]2 Y9 |% g5 {$ `( u2,生成EXT3 文件系统的设备树 ./scripts/dtc/dtc -I dts -O dtb -o ../devicetree_ext3.dtb arch/arm/boot/dts/digilent-zed.dts; v" B5 h" Y4 k1 k% h& K8 T) h+ H
3, 生成RAMDISC的设备树文件。修改arch/arm/boot/dts/digilent_zed.dts 。
6 ^$ K+ D  \, I  q! b6 n4,./scripts/dtc/dtc -I dts -O dtb -o ../devicetree_ram8m.dtb arch/arm/boot/dts/digilent-zed.dts 5 {1 @' K( j6 |  K! A

6 X5 b0 k; q* q  B  Y, A- J+ K; v1 h6 N8 }: S4 O: O) r5 w

8 m+ u) A) X5 v  l+ M$ g* r$ @- @5 I* Q6 x$ x+ T
10 拷贝出zImage文件( e* h. k0 ]) \. o( o# M% d
在z@ubuntu:~/WORK/Linux_Digilent/linux-digilent-3.6-digilent-13.01/arch/arm/boot目录下/ G! G# D) Z* A
cp zImage ../../../../zImage/ @* t" D/ D3 o/ R" _! o6 L/ R
  拷贝出需要的文件+ ?# l1 v$ j4 T9 ?& ?
从linux_digilent文件夹下拷贝出 dtb文件和boot.elf 和zimage 文件
; @( N. J6 s! H4 Q" @* K$ ?
) i. @$ Z% L- d; ~. j. S
/ {) L7 Q- v$ T( V
. @4 V# l! F+ C8 F

该用户从未签到

2#
发表于 2020-5-18 11:10 | 只看该作者
LINUX开发环境并编译LINUX和UBOOT以及生成设备树过程总结
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

EDA365公众号

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

GMT+8, 2025-7-3 11:26 , Processed in 0.078125 second(s), 23 queries , Gzip On.

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

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

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