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-bootarcharmcpuarmv7zynqclk.c
由于使用的是50m参考时钟,需要更改参考时钟
# define config_zynq_ps_clk_freq 33333333ul更改为
# define config_zynq_ps_clk_freq 50000000ul
2) .u-bootincludeconfigszynq_zc70x.h
由于使用的是串口0,需要更改串口定义
#define config_zynq_serial_uart1更改为
#define config_zynq_serial_uart0
3) .u-bootincludeconfigszynq_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 oolsmkimage文件拷贝到根目录的bin目录下,生成uimage文件需要使用)
$ cd linux-xlnx
$ make distclean
$make arch=arm xilinx_zynq_defconfig
(xilinx_zynq_defconfig可根据实际情况选择,目录为.linux-xlnxarcharmconfigs)
$ make arch=arm menuconfig
选择 exit
$make arch=arm uimage_loadaddr=0x8000uimage
编译完成后,生成的uimage文件和zimage文件存放在.linux-xlnxarcharmoot下
5、linux设备树配置 5.1 修改dts文件 从linux-xlnxarcharmootdts目录下选择对应的开发板修改,本设计选择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目录下.includeconfigszynq-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大小调整,缓存地址需要和前面的缓存地址一致)
一加6体验 在多个维度的表现均配得上旗舰之名
NVIDIA Omniverse升级为3D内容创作者带来非凡优势
拆解显示iPhone12Pro Max的广角镜头比Pro大47%
蓄电池的发展历史与未来
具有 FET 的过压和过流充电器前端保护IC(BQ24350) 参考设计
u-boot/Linux设备树配置及启动
双11空调买格力、大金、卡萨帝谁更值?进来看防止踩雷!
摩托罗拉重组家庭网络部门
超声波传感器的工作模式有哪些
马斯克“出圈”!学《七步诗》、被联合国“逼捐”,更放出特斯拉“0”首付大招!
国资委:下半年抢抓5G等新基建投资机遇
Butterfly获2.5亿美元投资研发便携式全身超声扫描仪
“紫光学苑”揭牌成立,紫光集团董事长李滨担任校长
承德科胜全自动立式封口机|腻子粉封口机|河北封口机
瞬态抑制二极管的工作原理及参数
Qorvo® 推出业界首款 20电池组智能电池管理单芯片解决方案
公司业务中采用区块链技术之前需要考虑的五种策略
边缘计算如何在5G时代爆发出来
浅谈PCB中金手指的处理方式和细节处理
面向嵌入式系统的基于PUF架构的OTP竞争解决方案