Zynq-7000系列之linux开发学习笔记:编译Linux内核和制作设备树(六)
开发板:Zynq7030数据采集板
PC平台:Ubuntu-18.04 + MobaXterm
开发环境:Xilinx Vivado + SDK -18.3
交叉编译工具:arm-linux-gnueabihf-
学习目标:生成 uImage、devictree.dtb 文件
一、下载Linux内核源码
在第一篇文章Zynq-7000系列之linux开发学习笔记:开发前准备(一)中已经提供过Linux内核源码的下载链接,这里再提供一下,方便中途看本文章的人进行下载,链接如下:
kernel 2018.3 :https://github.com/Xilinx/linux-xlnx/tree/xilinx-v2018.3
下载完Linux内核源码后,将文件解压到相应目录,我这里还是解压到前几篇文章使用的目录。进到目录可以看到如下的文件结构:
claude1009@ubuntu:~/xc7030$ cd linux-xlnx-xilinx-v2018.3/
claude1009@ubuntu:~/xc7030/linux-xlnx-xilinx-v2018.3$ ls
arch certs CREDITS Documentation firmware include ipc Kconfig lib MAINTAINERS mm README scripts sound usr
block COPYING crypto drivers fs init Kbuild kernel LICENSES Makefile net samples security tools virt
二、编译Linux内核
同样,首先我们要设置好交叉编译工具和环境变量,操作如下:
claude1009@ubuntu:~$ source /home/claude1009/Xilinx/SDK/2018.3/settings64.sh
claude1009@ubuntu:~$ export ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf-
如果直接就开始编译Linux内核,可能会出现下面问题:“mkimage” command not found – uImage will not be built,这是由于缺少相关依赖包,执行下面命令安装即可。
claude1009@ubuntu:~$ sudo apt-get install uboot-mkimage
然后进入到Linux内核源码的主目录,使用下面使命令进行编译,生成uImage。
claude1009@ubuntu:~/xc7030/linux-xlnx-xilinx-v2018.3$ make clean
claude1009@ubuntu:~/xc7030/linux-xlnx-xilinx-v2018.3$ make xilinx_zynq_defconfigHOSTCC scripts/basic/fixdepHOSTCC scripts/kconfig/conf.oSHIPPED scripts/kconfig/zconf.tab.cSHIPPED scripts/kconfig/zconf.lex.cHOSTCC scripts/kconfig/zconf.tab.oHOSTLD scripts/kconfig/conf
#
# configuration written to .config
#
claude1009@ubuntu:~/xc7030/linux-xlnx-xilinx-v2018.3$ make uImage LOADADDR=0x00008000
然后等待比较长时间,就完成了。生成的内核文件所在位置为生成 linux-xlnx-xilinx-v2018.3/arch/arm/boot 。
三、下载设备树devicetree.dtb
在第一篇文章Zynq-7000系列之linux开发学习笔记:开发前准备(一)中已经提供过设备树devicetree源码的下载链接,这里再提供一下,方便中途看本文章的人进行下载,链接如下:
device-tree 2018.3 :https://github.com/Xilinx/device-tree-xlnx/tree/xilinx-v2018.3
下载完设备树devicetree源码后,将文件解压到相应目录,我这里还是解压到前几篇文章使用的目录。进到目录可以看到如下的文件结构:
claude1009@ubuntu:~/xc7030$ cd device-tree-xlnx-xilinx-v2018.3/
claude1009@ubuntu:~/xc7030/device-tree-xlnx-xilinx-v2018.3$ ls
ams axi_emc axi_sysace axi_xadc demosaic framebuf_rd hdmi_rx_ss mipi_csi2_rx pl310ps scene_change_detector sdps ttcps vtc
audio_embed axi_ethernet axi_tft canps devcfg framebuf_wr hdmi_tx_ss mipi_dsi_tx pmups scugic slcrps uartlite wdtps
audio_formatter axi_gpio axi_timebase_wdt cpu device_tree gamma_lut i2s_receiver mixer pr_decoupler scutimer smccps uartns xadcps
axi_can axi_iic axi_traffic_gen cpu_cortexa53 dmaps generic i2s_transmitter multi_scaler qspips scuwdt spips uartps
axi_cdma axi_pcie axi_usb2_device cpu_cortexa9 dp globaltimerps iicps nandps ramps sdfec tmrctr usbps
axi_clk_wiz axi_perf_mon axi_vcu ddrcps emaclite gpiops intc norps rfdc sdi_rx tpg vid_phy_ctrl
axi_dma axi_qspi axi_vdma ddrps emacps hdmi_ctrl mig_7series ocmcps RM sdi_tx tsn vproc_ss
四、制作设备树devicetree.dtb
首先将下载好的设备树源码device-tree-xlnx-xilinx-v2018.3文件夹复制到已经安装好的Vivado安装目录下的~/Xilinx/SDK/2018.3/data/embeddedsw/lib/bsp文件下,如图所示。
然后打开生成fsbl.elf文件的那个工程,进入到SDK软件中。打开 Xilinx Tools->Respositories 工具。
在Local Repositories中点击New,找到并加载刚才复制的设备树文件夹目录,然后点击Rescan Repositories,点击OK完成配置,如下图所示:
点击 File -> New -> Xilinx Board Support Package ,并命名为 devicetree_zc703 ,并在 Board Support Package OS 选择device_tree,如下图所示:
然后在弹出的窗口中,在bootargs一栏输入: console=ttyPS0,115200 root=/dev/mmcblk0p2 rw earlyprintk rootfstype=ext4 rootwait devtmpfs.mount=0 ,其他可保持不变,点击OK即可。
然后就在该工程目录下生成了一个设备树文件夹,目录如下图:
可以将此文件夹devicetree_zc703复制到Linux内核源码的目录中,然后进入目录可以看到有如下文件:
claude1009@ubuntu:~/xc7030/linux-xlnx-xilinx-v2018.3$ cd devicetree_zc703/
claude1009@ubuntu:~/xc7030/linux-xlnx-xilinx-v2018.3/devicetree_zc703$ ls
Makefile pcw.dtsi skeleton.dtsi system.dts system.mss system-top.dts zynq-7000.dtsi
这里我们要使用的文件有: pcw.dtsi、system-top.dts、zynq-7000.dtsi ,其中zynq-7000.dtsi是Zynq系列通用的设备树文件;而pcw.dtsi则包含我们在fsbl工程创建时,在原理框图设计中进行IO配置的外设接口;system-top.dts通过include方式包含了pcw.dtsi和zynq-7000.dtsi,是我们需要进行编译的文件,最终生成可用的设备树。
使用的命令是Linux内核源码中的dtc工具,具体操作如下:
claude1009@ubuntu:~/xc7030/linux-xlnx-xilinx-v2018.3$ ./scripts/dtc/dtc -I dts -O dtb -o devicetree.dtb ./devicetree_zc703/system-top.dts
Error: ./devicetree_zc703/system-top.dts:9.2-10 syntax error
FATAL ERROR: Unable to parse input tree
这里出现了错误,是因为在system-top.dts文件中使用include有误,修改如下:
/include/ "zynq-7000.dtsi"
/include/ "pcw.dtsi"
再次执行命令即可生成devicetree.dtb设备树文件。
四、启动Linux系统
将上述得到的uImage和devicetree.dtb文件,和之前得到的BOOT.bin文件都复制到SD卡中。
然后插入到板子。打开PC端的MobaXterm,设置好串口,连接好USB线和电源线,就可以看到下图的系统启动过程,并成功登录系统。
到此,我们的Linux系统就搭建完成啦0.0.0.0.0
Zynq-7000系列之linux开发学习笔记:编译Linux内核和制作设备树(六)相关推荐
- linux系统管理学习笔记之一-------linux解压缩命令
linux系统管理学习笔记之一-------linux解压缩命令 2009-12-29 11:52:55 标签:linux tar [推送到技术圈] 版权声明:原创作品,允许转载,转载时请务必以超链接 ...
- linux系统管理学习笔记之八---linux文件与目录的管理及权限
linux系统管理学习笔记之八---linux文件与目录的管理及权限 2010-01-05 09:00:49 标签:权限 管理 文件目录 linx [推送到技术圈] 版权声明:原创作品,允许转载,转载 ...
- Linux+javaEE学习笔记之Linux网络环境配置
Linux+javaEE学习笔记之Linux网络环境配置 网络知识简单介绍: Ip地址是:IP地址是IP协议提供的一种统一的地址格式,它为互联网上的每一个网络和每一台主机分配一个逻辑地址,以此来屏蔽物 ...
- Linux开发学习笔记(二)
(温馨提示:内容有点多,可点右边的目录进行跳转) Shell编程 1.简单介绍 Shell 脚本(shell script),是一种为 shell 编写的脚本程序.Shell 编程跟 java.php ...
- linux服务器学习笔记:linux如何远程登录?
Linux一般作为服务器使用,而服务器一般放在机房,你不可能在机房操作你的Linux服务器. 这时我们就需要远程登录到Linux服务器来管理维护系统. Linux系统中是通过ssh服务实现的远程登录功 ...
- linux服务器学习笔记:linux忘记密码怎么办?
当然,除了重装系统,也有另外的方式.进入单用户模式更改一下root密码即可. 具体方法请参考:Linux 忘记密码解决方法
- 【Linux入门学习笔记】Linux命令查阅方法及文件操作命令简介
文章目录 一.指令构成 1. `man`帮助命令 1.1 如何阅读`SYNOPSIS` 1.2 如何阅读`DESCRIPTION`[^2] 2. 其他帮助命令 二.具体指令 1. `ls`(查看文件或 ...
- Linux教程学习笔记
Linux教程学习笔记 目录 Linux教程学习笔记 写在前面 虚拟机 Linux目录结构 远程登录Linux系统 vi和vim编辑器 关机.重启和用户登录注销 用户管理 实用指令 组管理和权限管理 ...
- linux系统管理学习笔记之八---进程与作业的管理
linux系统管理学习笔记之八---进程与作业的管理 2010-01-05 13:00:42 标签:linux 进程 [推送到技术圈] 版权声明:原创作品,允许转载,转载时请务必以超链接形式标明文章 ...
最新文章
- js弹出一段html,html js 弹出层
- 20165302第八周总结
- hadoop multipleoutputs
- linux下的各种系统错误errno描述一览
- 前端学习(97):psd切图流程
- 转自: http://blog.csdn.net/xiaxiaorui2003/article/details/3838631
- 苹果新iPad Pro代工订单或将推升富士康4月份营收
- U盘量产及在虚拟机中测试
- 20190815:(leetcode习题)两数之和(2种方法)
- 初识Git-GitHub
- Linux-软件包管理-rpm命令管理-安装-卸载
- 人脸识别打卡机怎么调sj_人脸识别考勤机怎么代打卡
- win10计算机变成了英文,Win10系统中自带的Office(Word,Excel)突然变成英文怎么变回中文...
- proxy_cfw全局代理_浏览器代理配置(chromium based(edge)/firefox/IDM)
- mysql8.0怎么设置中文版_MySQL 8.0 版本修改字符编码
- 郝斌c语言链表源码,链表的创建(郝斌视频)
- 【评测】各种细胞治疗处理技术设备
- CAD-CASS免费增强测绘工具CASS++
- 自然人如何开发票-以广西为例
- Android开发 屏幕截图