视频八:建立LINUX开发环境并编译LINUX和UBOOT以及生成设备树
打开虚拟机;打开Ubuntu系统;这个系统是在视频八里面网盘里面的Ubuntu
STEP 1:
1,几条简单LINUX命令: cd 进入文件夹。 ls 列表文件 。 sudo super do
以当前登陆管理员方式运行 ,su 获取最高管理员权限【注3】,exit
是当前用户退出终端。
2,解压缩命令是**tar -zxvf ,**强制删除目录命令是 rm -rf .关机命令 sudo
shutdown -h now .
3, TAB键有文件名(或者文件夹名)自动补齐的功能。
4,虚拟机的ip地址在虚拟机里面用ifconfig 获取。
其实连接虚拟网桥服务软件连接。
5,虚拟机装有ftp服务器,以用户z身份登录,可以任意添加删除文件,实现在windows里面像操作本地文件一样操作虚拟机里面的文件。
6,虚拟机装有ssh服务器,默认端口号是22,以ssh终端登录上去以后可已经命令行操作。
(这个视频主要是熟悉这开发环境,后面还会用到的)
命令输入:
(查看虚拟机的ip地址,可以在外面进行ftp访问Ubuntu内部文件。
这个就是内部文件:
STEP 2
U-BOOT 编译:
1,解压缩UBOOT.
2,make CROSS_COMPILE=arm-xilinx-linux-gnueabi- zynq_zed_config [注1]
3,make
4,cp u-boot …/u-boot.elf 这个文件是我们所需要的。
[注1]“make <board_name>_config” “include/configs/<board_name>.h”
红色标注为输入:
(目的:确认编译器是否编译好)
然后 在这个文件夹下面就可以找到(黄色标注)的两个源代码;
然后再解压缩:后面很长的话 输入一个u 然后按键tab就可以自动补齐了
解压缩:(tai -zxuf u-boot-diglient-…)
在看里面的文件:
也可以通过其他的像操作window系统一样在桌面有个主文件夹进去;
环境变量替换:把CROSS_COMPILE换成arm-xilinx-linux-gnueabi-(是在make
file文件夹里面)
下面第二个echo¥CROSS_COMPILE为回写就是验证它是否替换成功;(黄色部分为替换成功显示)
输入这个
在read me里面找到这个他的路径
进入include ,再进入configs
看到以下文件:标红的为要用到的文件;
在输入gedit zynq_zed.h就可以打开了;
这个里面是配置文件
下一步退出到前面的目录
输入cd …两次;就可以回去
再配置板子:
make zynq_zed_config
下一步:输入make;这个时候会生成许多文件需要时间;(生成uboot文件)
红色标注为输入:把uboot复制到上一级目录;黄色的就是复制过去的;
这就完成了。
时间:0:28:55
STEP 3:
Linux 编译:
1,首先解压缩内核。
2,make ARCH=arm CROSS_COMPILE=arm-xilinx-linux-gnueabi- digilent_zed_defconfig
[注2]
3, make ARCH=arm CROSS_COMPILE=arm_xilinx_linux_gnueabi- menuconfig
4, make ARCH=arm CROSS_COMPILE=arm_xilinx_linux_gnueabi-
5, 在ARCH/ARM/BOOT/下有 Image文件和ZIMAGE 文件。
6,ZIMAGE文件是我们所需要的。
[注2]digilent_zed_defconfig 在 arch/arm/config
设置环境变量:(输入)export ARCH=arm
解压:tar zxvf linux-digilent-3.6-digilent-13.01
然后在进入linux-digilent-3.6-digilent-13.01 下的arch/arm/config里面的以下文件:
可以看到里面的配置方式(make方式生成的)
下一步:make digilent_zed_defconfig(让上面的文件生效)
下一步:make menuconfig(进行菜单配置)
下一步:make
STEP 4:
DTB 文件生成.是U-BOOT用来传递给LINUX内核的参数的一种文件形式。 DTB:device tree
blob 设备树(容器)
1,arch/arm/boot/dts/digilent_zed.dts
2,生成EXT3 文件系统的设备树 ./scripts/dtc/dtc -I dts -O dtb -o
…/devicetree_ext3.dtb arch/arm/boot/dts/digilent-zed.dts
3, 生成RAMDISC的设备树文件。修改arch/arm/boot/dts/digilent_zed.dts 。
4,./scripts/dtc/dtc -I dts -O dtb -o …/devicetree_ram8m.dtb
arch/arm/boot/dts/digilent-zed.dts
STEP 5:
生成启动文件BOOT.BIN (原料1:FSBL 2,PL配置比特流 3,U-BOOT
FSBL是根据模板来写的,配置流牵扯到用的FPGA的逻辑单元,这里用官方自带的出厂代码).
1,使用官方的BIT文件和FSBL文件。使用新产生的BOOT.ELF。
2,使用命令行调用BOOTGEN产生BOOT.BIN
注意BOOT.BIN默认查找devicetree.dtb文件。
组建一个RAM_DISK启动的SD文件集合
组建一个EXT4做为文件系统的SD文件结合。使用的时候要主机将第个分区格式化成EXT3并放好好文件系统。
小技巧:
简单的判别一个DTB文件是RAMDISC或EXT4文件系统的方法。用文本文件打开,查找启动参数字符串。
小结论:
我们在启动桌面LINUX的时候,用的是LINARO的SD卡上的文件系统。
在启动仅有命令行LINUX的时候用的是RAMDISC文件系统,其他的BOOT文件(主要是UBOOT)以及内核文件ZIMAGE都一样,所以看到了内核可以相对独立。
这也就不难理解基于某一个固定版本的多种界面和多种用途的不同LINUX的发布。
件系统的方法。用文本文件打开,查找启动参数字符串。
小结论:
我们在启动桌面LINUX的时候,用的是LINARO的SD卡上的文件系统。
在启动仅有命令行LINUX的时候用的是RAMDISC文件系统,其他的BOOT文件(主要是UBOOT)以及内核文件ZIMAGE都一样,所以看到了内核可以相对独立。
这也就不难理解基于某一个固定版本的多种界面和多种用途的不同LINUX的发布。