前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >快速实现Flash自动烧写功能

快速实现Flash自动烧写功能

作者头像
hankfu
发布2020-07-16 11:32:16
1.3K0
发布2020-07-16 11:32:16
举报
文章被收录于专栏:hank

快速实现Flash自动烧写功能

Xilinx SDK Flash Programmer 支持Flash烧写。但是市场上Flash型号众多。不是所有的Flash型号,Xilinx SDK Flash Programmer都支持。如果遇到不支持的Flash型号,可以自己通过U-Boot实现一个简易的Flash Programmer。 本文以Xilinx SDK 2018.3为例。

windows批处理文件

代码语言:javascript
复制
call C:\Xilinx\Vivado\2018.3\settings64.bat
xmd -tcl write_flash.tcl

XSCT TCL文件

代码语言:javascript
复制
source ps7_init.tcl
connect
targets -set -filter {name =~ "ARM*#0"}
rst -proc 
ps7_init
dow u-boot.elf
dow -data BOOT.bin 0x08000000
con

windows批处理文件的执行记录

有了上述文件,双击上述windows批处理文件,或者在命令行执行上述windows批处理文件,会自动下载和执行U-Boot。

代码语言:javascript
复制
Microsoft Windows [Version 10.0.17134.1184]
(c) 2018 Microsoft Corporation. All rights reserved.

C:\prj\zynq7000\zc702\2018.3-zc702-release\program>write_flash.bat

C:\prj\zynq7000\zc702\2018.3-zc702-release\program>call C:\Xilinx\Vivado\2018.3\settings64.bat
Downloading Program -- C:/prj/zynq7000/zc702/2018.3-zc702-release/program/u-boot.elf
        section, .text: 0x00400000 - 0x0045ab8f
        section, .rodata: 0x0045ab90 - 0x0046e342
        section, .hash: 0x0046e344 - 0x0046e35b
        section, .dtb.init.rodata: 0x0046e360 - 0x004732ff
        section, .data: 0x00473300 - 0x00475ef3
        section, .got.plt: 0x00475ef4 - 0x00475eff
        section, .u_boot_list: 0x00475f00 - 0x00477393
        section, .efi_runtime: 0x00477398 - 0x00477497
        section, .efi_runtime_rel: 0x00477498 - 0x00477527
        section, .rel.dyn: 0x00477528 - 0x00483b77
        section, .bss_start: 0x00477528 - 0x00477527
        section, .bss: 0x00477528 - 0x004b86e7
        section, .bss_end: 0x004b86e8 - 0x004b86e7
100%    0MB   0.4MB/s  00:01
Setting PC to Program Start Address 0x00400000
Successfully downloaded C:/prj/zynq7000/zc702/2018.3-zc702-release/program/u-boot.elf
100%    0MB   0.1MB/s  00:06
Successfully downloaded C:/prj/zynq7000/zc702/2018.3-zc702-release/program/BOOT.bin

U-Boot更改

为了自动烧写Flash,需要修改U-Boot。

在include\configs\xilinx_zynqmp.h添加如下内容

代码语言:javascript
复制
	"qspi_flash_program=sf probe 0 0 0 && sf write boot_ddr_address boot_flash_address boot_size && " \
		  "sf read boot_verify_ddr_address boot_flash_address boot_size && " \
		  "cmp boot_verify_ddr_address boot_ddr_address boot_size \0" \

在board\xilinx\zynqmp\Zynqmp.c把jtagboot改为qspi_flash_program

代码语言:javascript
复制
	case JTAG_MODE:
		puts("JTAG_MODE\n");
		mode = "pxe dhcp";
		//env_set("modeboot", "jtagboot");
		env_set("modeboot", "qspi_flash_program");
		break;

这样U-Boot启动后,就会自动执行Flash烧写操作。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2020-01-20 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档