Zynq-Linux移植学习笔记
1、相关网站
zynq linux软件网站:www.wiki.xilinx.com
zynq u-boot github地址:https://github.com/xilinx
2、启动过程
3、u-boot配置
3.1 下载u-boot
UBOOT有多个版本,可以去网站上下载相应的版本。14.5及早期的版本对Micron的QSPI Flash芯片支持不完整。建议下载后期版本
$ git clone git://git.xilinx.com/u-boot-xlnx.git(下载u-boot源码命令)
3.2 u-boot参数修改
1) .\u-boot\arch\arm\cpu\armv7\zynq\clk.c
由于使用的是50M参考时钟,需要更改参考时钟
# define CONFIG_ZYNQ_PS_CLK_FREQ 33333333UL更改为
# define CONFIG_ZYNQ_PS_CLK_FREQ 50000000UL
2) .\u-boot\include\configs\zynq_zc70x.h
由于使用的是串口0,需要更改串口定义
#define CONFIG_ZYNQ_SERIAL_UART1更改为
#define CONFIG_ZYNQ_SERIAL_UART0
3) .\u-boot\include\configs\zynq_zc70x.h
根据DDR实际大小修改内存配置参数
#define CONFIG_SYS_SDRAM_SIZE (1024* 1024 * 1024)更改为
#define CONFIG_SYS_SDRAM_SIZE (512 * 1024 * 1024)(根据实际内存大小修改)
3.3 u-boot编译
在linux系统下进入u-boot
$ cd u-boot
$ git apply 0001-Xilinx.patch
(这条命令可以不执行,该命令的目的是将ramdisk8M.image.gz改为ramdisk32M.image.gz)
$ make distclean
$ make zynq_xxx_config
(zynq_xxx是在/include/configs/下的h文件名,根据需要编译的文件名而定。在执行命令之前,如果要求文件进行编辑,执行gedit xxx.h)
$ make
编译结束后会在当前文件夹下生成u-boot文件,拷贝后,改成u-boot.elf文件
4、Linux配置
4.1 下载Linux
$ git clonegit://git.xilinx.com/linux-xlnx.git(下载Linux源码)
4.2 Linux编译
$su
$cp mkimage /bin
(转换为root用户,将.\u-boot\tools\mkimage文件拷贝到根目录的bin目录下,生成uImage文件需要使用)
$ cd linux-xlnx
$ make distclean
$make ARCH=arm xilinx_zynq_defconfig
(xilinx_zynq_defconfig可根据实际情况选择,目录为.\linux-xlnx\arch\arm\configs)
$ make ARCH=arm menuconfig
选择 Exit
$make ARCH=arm UIMAGE_LOADADDR=0x8000uImage
编译完成后,生成的uImage文件和zImage文件存放在.\linux-xlnx\arch\arm\boot下
5、Linux设备树配置
5.1 修改dts文件
从\linux-xlnx\arch\arm\boot\dts目录下选择对应的开发板修改,本设计选择zynq-zc706.dts
$ gedit xxx.dts
(如果不用编辑,可略过此步骤)
对xxx.dts的修改,根据实际配置进行修改,本设计需修改三个地方,一个是更改为串口0,一个是修改参考时钟(由33333333改为50000000),最后修改内存大小配置
1、 修改串口地址,修改为串口0的地址
2、 修改clocks数组中的数值(串口0对应23和40),按照下图中的clks数组,从0开始。
3、修改串口0的中断号,根据UG585中的中断号分配表,查找对应的设备中断号,减去32
4、修改参考时钟
5、修改内存配置(根据硬件实际使用的内存大小修改,本设计中内存大小为512MB)
将修改好的dts文件拷贝到linux-xlnx /scripts/dtc目录下
5.2 编译devicetree
$ cd linux-xlnx
$ ./scripts/dtc/dtc -O dtb -I dts -odevicetree.dtb xxx.dts
(如果前面没有编译生成uImage文件,此命令会报错,找不到dtc命令)
将linux-xlnx目录生成的devicetree.dtb拷贝到相应的地方
5.3 下载ramdisk
从网上下载ramdisk32M.image.gz
由于git clonegit://git.xilinx.com/apps/busybox.git无法正常运行,所以直接拷贝了zed板的文件,未做任何改动。下载地址见:http://download.csdn.net/detail/jj12345jj198999/9717091
6、启动Linux
6.1 JTAG启动
超级终端的速率选择115200
将u-boot.elf,uImage,devicetree.dtb和ramdisk32M.image.gz文件拷贝到工程路径的/hw目录下
进入XMD命令窗口
cdD:/shen/switch/v20/20130825prj1/project_1/project_1.sdk/SDK/SDK_Export/hw
(根据实际的工程路径选择)
connect arm hw
source ps7_init.tcl
ps7_init
dow -data devicetree.dtb 0x2a00000
(地址可以根据实际情况更改)
dow -data ramdisk32M.image.gz 0x2000000
(地址可以根据实际情况更改)
dow -data uImage 0x3000000
(地址可以根据实际情况更改)
dow u-boot.elf
con
在超级终端上回车
在超级终端上运行 bootm 0x30000000x2000000 0x2a00000(和上面下载地址一致)
对于14.5以前的版本,如果使用的还是ramdisk32M或ramdisk8M,需要注意:
dow -data ramdisk32M.image.gz 0x2000000
(这一步的偏移量和下载文件有关,如果是ramdisk8M.image.gz,偏移量为0x800000;如果是ramdisk32M.image.gz,偏移量为0x2000000)
6.2 SD卡启动
1)在SDK中将FSBL、XXX.bit和u-boot.elf文件生成xxx.bin和xxx.mcs文件,把xxx.bin命名为boot.bin。
2)SD卡格式化为FAT32格式,将boot.bin,zImage,devicetree.dtb和ramdisk32M.image.gz(注意使用同一版本)拷贝到SD卡里。
6.3 QSPI启动
在SDK中,生成启动文件xxx.bin,运行界面如下所示。
图2 生成QSPI启动文件
备注:可以根据uImage、devicetree和ramdisk的实际文件大小调整offset,这样可以调整最终生成的可烧写文件的大小,在 做了offset调整后,在uboot目录下.\include\configs\zynq-common.h作相应的修改,注意三个文件在QSPI flash中所处的偏移地址一定要和sfread中的一致。另外还要注意读取到内存中时的数据大小,不能小于文件的实际大小。
进入XMD命令窗口
connect arm hw
cdD:/shen/switch/v20/20130825prj1/project_1/project_1.sdk/SDK/SDK_Export/hw
(根据实际的工程路径选择)
source ps7_init.tcl
ps7_init
dow u-boot.elf
dow -data xxx.bin 0x08000000
(需要烧写的文件,缓存地址可以改变,如变为0x04000000)
con
在超级终端中Enter
sf probe 0 0 0
sf erase 0 0x02000000
(32MB,根据实际flash大小调整)
(如果是Micron的Flash,删除时间比较久,一个subsector(4KB)需要花费0.3s,8192个subsector需要40.96s)
sf write 0x08000000 0 0x01ffffff
(根据实际flash大小调整,缓存地址需要和前面的缓存地址一致)
点个在看你最好看
Zynq-Linux移植学习笔记相关推荐
- zynq linux找不到flash,Zynq—Linux移植学习笔记(十八):Zynq下NOR_FLASH挂载文件系统...
1. 背景介绍 板子上的zynq通过emc外接一块nor flash,地址分配如下: Nor flash的起始地址为0x80000000.当zynq上运行Linux后可以通过对该地址起始的区域进行擦除 ...
- zc706开发板的linux移植,Zynq—Linux移植学习笔记(十)
在zynq开发板zc706上,网络通路由下面三个设备组成: 其中zynq负责对phy进行配置,当zynq上的网络控制器以及phy完成正确配置时,能够看到RJ45上面的黄灯亮,此时表明链路已经通了.如果 ...
- 5、赛灵思-Zynq UltraScale+ MPSoC学习笔记:Petalinux 的设计流程及定制Linux系统
5.赛灵思-Zynq UltraScale+ MPSoC学习笔记:Petalinux 的设计流程及定制Linux系统 声明:本文是学习赛灵思 Zynq UltraScale+ MPSoC 5EV过程中 ...
- Zynq-7000系列之linux开发学习笔记:编译Linux内核和制作设备树(六)
开发板:Zynq7030数据采集板 PC平台:Ubuntu-18.04 + MobaXterm 开发环境:Xilinx Vivado + SDK -18.3 交叉编译工具:arm-linux-gnue ...
- linux系统管理学习笔记之三----软件的安装
linux系统管理学习笔记之三----软件的安装 2009-12-29 19:10:02 标签:linux 系统管理 [推送到技术圈] 版权声明:原创作品,允许转载,转载时请务必以超链接形式标明文章 ...
- linux系统管理学习笔记之一-------linux解压缩命令
linux系统管理学习笔记之一-------linux解压缩命令 2009-12-29 11:52:55 标签:linux tar [推送到技术圈] 版权声明:原创作品,允许转载,转载时请务必以超链接 ...
- 操作系统进程学习(Linux 内核学习笔记)
操作系统进程学习(Linux 内核学习笔记) 进程优先级 并非所有进程都具有相同的重要性.除了大多数我们所熟悉的进程优先级之外,进程还有不同的关键度类别,以满足不同需求.首先进程比较粗糙的划分,进程可 ...
- linux系统管理学习笔记之八---进程与作业的管理
linux系统管理学习笔记之八---进程与作业的管理 2010-01-05 13:00:42 标签:linux 进程 [推送到技术圈] 版权声明:原创作品,允许转载,转载时请务必以超链接形式标明文章 ...
- linux系统管理学习笔记之八---linux文件与目录的管理及权限
linux系统管理学习笔记之八---linux文件与目录的管理及权限 2010-01-05 09:00:49 标签:权限 管理 文件目录 linx [推送到技术圈] 版权声明:原创作品,允许转载,转载 ...
- 韩顺平Linux教程学习笔记
Linux系统学习笔记 新装了deepin v23系统,结果磁盘没设置好,玩崩了,百度半天修复不了,看看韩顺平老师的Linux操作课程,做做笔记(只记录对自己有用的). B站网址 基础篇·Li ...
最新文章
- 客快物流大数据项目(十三):Docker镜像
- Go 学习笔记(13)— 指针定义、指针特点、空指针、指针数组、指向指针的指针、指针作为函数入参
- 【廖雪峰Python学习笔记】高阶函数
- JS 实现MVC的写法
- 数据库事务转载基础二:oracle事务隔离级别
- 【渝粤题库】陕西师范大学202081 管理学 作业 (专升本、高起本、高起专)
- ORA-06550 PLS-00172 字符串太长 超过3W 处理方式
- ESP8266:(1)向手机传输温度
- 147.对链表进行插入排序
- iframe 返回上一页_Swagger权限认证上:基于Apache Shiro
- GitHub使用教程详解(上)——官网操作指南[翻译]
- Android MediaCodec硬解码H264文件
- 定时任务cron表达式规则
- MicroPython之ADS1115+平滑滤波NTC温度采集
- php qq邮箱验证码不显示图片,qq邮箱邮件图片不显示怎么解决-解决qq邮箱邮件图片不显示的方法 - 河东软件园...
- 李治军操作系统 笔记
- 基于Jeecg的权限获取
- 十分钟搭建自己的QA问答社区
- Bellman-Ford与spfa算法
- 如何在win7 64下安装ipython notebook
热门文章
- BUUCTF RE [SUCTF2019] SignIn
- JS组件Bootstrap实现弹出框和提示框效果代码
- 安装Google三件套
- Fabric.js 橡皮擦的用法(包含恢复功能)
- 成功解决Win10连接上wifi但是却显示“无Internet,安全”
- Chapter~3 Python基础
- 锐捷交换机系统版本升级11.X平台
- 解决CentOS下boost安装后不能使用的问题
- 解决数组转对象后,key自动排序
- eslint 换行_预计的换行符是apos;LFapos;,但在Eslint中使用gulp发现apos;CRLFapos;换行符 Dovov编程网...