0. 本文目的

有关sof和elf文件的合并方法非常多,但真正好用而且经得起推敲的寥寥无几。通过相关资料的学习以及工程实践,现将个人的操作方法及收获进行总结,希望能给正在学习FPGA的伙伴们提供一点点帮助!

Nios工程开发包括两个环节,前期的内核硬件开发和后期的内核软件开发。前期开发环境为Quartus II 10.0和 SOPC builder,对应的下载文件为*.sof和*.pof。后期开发环境为Nios IDE10.0,对应下载文件为*.elf。项目调试时,先通过Quartus II 10.0将*.sof下载至FPGA的RAM中,完成FPGA 内核的硬件化,接着通过Nios IDE10.0 flash programmer将*.sof和*.elf一同烧写至flash中,最后将开发板重新上电,便完成了FPGA的程序固化。为了方便FPGA产品调试,可将*.sof和*.elf文件分步下载。但是为了提高生产效率,必须将它们合并成单个*.jic文件,再通过下载平台一次完成程序固化。

本文首先使用Nios II 10.0sp1 Command Shell [gcc3]软件和sh脚本程序,实现了sof和elf的合并与转换,得到了一个hex的临时文件。接着,使用Quartus II 软件将hex文件转换成jic文件。最后,通过下载平台将jic文件下载至flash芯片中,进行功能验证。

1. 开发平台简介

开发软件:Quartus II 10.0,Nios II 10.0

电脑主机:win7_64

FPGA开发板:YJ-DZ(易津-USB驱动开发板)

下载器:USB Blaster

2. 具体操作方法

2.1 编写sh脚本程序

在win7下新建空记事本中,文件另存为yj.sh,在里面输入以下代码:

sof="EP4.sof"
elf="YJ_NiosTest.elf"
echo "sof>flash ..."; sof2flash --epcs --input=$sof --output=sof.flash --quiet
echo "elf>flash ..."; elf2flash --epcs --after=sof.flash --input=$elf --output=elf.flash
echo "cat flash ..."; cat  elf.flash >> sof.flash
echo "flash>hex ..."; nios2-elf-objcopy --input-target srec --output-target ihex sof.flash sof.hex
echo "del flash ..."; rm -f *.flash

代码注释:

代码第一行和第二行分别定义了两个变量sof和elf。

第三行和第四行分别完成了sof到flash文件、elf到flash文件的转换,--after=sof.flash应该表示等待sof.flash的生成。

第五行使用了cat命令,表示将elf.flash接在sof.flash后面,并覆盖原sof.flash文件,cat的具体用法详见参考(2)

第六行实现了flash到hex文件的转化,最后一行执行清除所有*.flash文件的命令。

2.2 使用Nios II 10.0sp1 Command Shell [gcc3]执行sh脚本文件

脚本文件存放于D盘的JIC目录下,打开Nios II 10.0sp1 Command Shell [gcc3],依次输入:

cd /cygdrive/d/JIC

./yj.sh

具体操作如下:

通过ls命令可以发现JIC文件下多了一个sof.hex文件,下一步将会将它转换为jic文件。

2.3 hex到jic文件的转换

打开Quartus II软件,单击File->Convert Programming File,具体设置如下:

(1)Programming amming file type:JTAG Indirect Configuration File(.jic)

(2)Configuration device:EPCS16

(3)JIC文件存放路径: D:/JIC/out1014.jic

(4)Flash Loader->Add Device,选择Cyclone Ⅳ EP4CE10,SOF Data一栏->Remove,添加hex文件。

具体操作如下:

点击Add Hex file,地址选择绝对地址,Hex file路径:D:/JIC/sof.hex

最后点击Generate,提示成功生成out1014.jic文件。

2.4 烧写jic文件

打开quartus II下载平台,单击Add File选择D:/JIC/out1014.jic,烧录选项Program/Configure、Verify 、Blank-Check均打上勾,最后点击Start!

3. 参考

(1)Altera FPGA带NiosII内核程序的JTAG下载方法总结_百度文库
https://wenku.baidu.com/view/5fd49863f18583d048645950.html

(2)linux cat 使用方法详解_aq1sw2_新浪博客
http://blog.sina.com.cn/s/blog_52f6ead0010127xm.html

(3)(2)Altera FPGA带NiosII内核程序的JTAG下载方法总结_百度文库
https://wenku.baidu.com/view/5fd49863f18583d048645950.html

FPGA开发中sof和elf文件的合并与格式转换相关推荐

  1. FPGA开发过程中常见的一些文件后缀

    1. 前言 从FPGA的设计,仿真,综合,布局布线,嵌入式开发,烧录固化过程中的一系列文件后缀 2. 设计 .v 最基本的Verilog设计文件 .hdl VHDL设计文件 很多主流设计会定义一个.v ...

  2. FPGA开发中全局复位置位(GSR)

    最近几天读了Xilinx网站上一个很有意思的白皮书(white paper,wp272.pdf),名字叫<Get Smart About Reset:Think Local, Not Globa ...

  3. 关于Asp.Net开发中导入外部JavaScript文件的问题

    一直认为在html元素应用的时候,每个元素大都这样子(<hr />或者<script />)格式就对的,但今天就发现了,其实在不同的开发中是不一样的,这次遇到的就是导入外部Js ...

  4. FPGA开发中全局复位置位(GSR)简介

      最近几天读了Xilinx网站上一个很有意思的白皮书(white paper,wp272.pdf),名字叫<Get Smart About Reset:Think Local, Not Glo ...

  5. FPGA基础知识极简教程(5)什么是锁存器以及如何在FPGA开发中避免生成锁存器?

    博文目录 写在前面 正文 什么是D锁存器? 锁存器是如何生成的? 如何避免生成锁存器? 参考资料 交个朋友 写在前面 个人微信公众号: FPGA LAB 个人博客首页 注:学习交流使用! 本文我们将讨 ...

  6. android开发 apk文件,android开发中,将数据库文件与APK一起发布?

    2015-11-11 回答 可以将xx.db文件复制到eclipse android工程中的res\raw目录中.所有在res\raw目录中的文件不会被压缩,这样可以直接提取该目录中的文件. 使用op ...

  7. 批量文档处理软件推荐,同时处理 Word、Excel、PPT、PDF 等办公文件,支持批量格式转换、重命名和查找替换等

    概要:今天给大家带来的这款专门针对 Word.PPT.Excel.PDF 和记事本文本文件批量处理格式转换的软件--我的ABC软件工具箱.它集合了批量修改文件名称.批量修改文件内容.批量设置页眉页脚. ...

  8. php文件怎么转换jpg文件怎么打开方式,heic文件如何打开 heic格式转换JPG方法【步骤教程】...

    heic文件怎么打开?heic格式怎么转换JPG?自iOS 11正式版发布,iPhone 7及其以上的新机型在拍摄照片后,图片自动保存成HEIC格式.HEIC是一种高保真画质的图片封装格式,这种格式在 ...

  9. PDF 文件编辑修改与格式转换

    将pdf文件导出转换为doc.txt的软件网上很多,然而pdf格式的文件也是很多电子书粉丝的最好,其轻巧易读性是难得的格式,网上讲doc转换成pdf的却不多,wps文档可以将doc文档另存为pdf之外 ...

  10. 【强烈推荐】音频文件免费批量一键格式转换好工具——酷狗音乐

    简介: 最近买了一个U盘,想把偶像JAY的歌曲拷贝到U盘里面,放到车里听,类似车载U盘.但是我的歌曲格式是无损FLAC格式的,车载系统对FLAC格式的音乐兼容性不好,一首歌没听多久就解析失败放下一首了 ...

最新文章

  1. 人工智能与区块链交换了眼神儿,之后呢……
  2. linux服务器视窗,linux窗口管理器介绍
  3. JavaScript中常用的事件代码及实例
  4. oracle notes,Oracle Notes
  5. Powershell-获取DHCP地址租用信息
  6. 捕获标志位_如何通过捕获标志挑战来提高网络安全技能-PicoCTF演练
  7. 分享到:空间等各大网站 代码
  8. 擅长排列的小明(nyoj19)
  9. Problem(三):工作中的记录。。。。
  10. django html中文乱码,如何使用Python/Django执行HTML解码/编码?
  11. Google Code Review 如何编写代码评论
  12. Mirth Connect 源码用eclipse启动
  13. 【黑马程序员西安中心】一个内向青年的转变
  14. 吐血给女朋友讲解spring循环依赖
  15. JavaScript 常见安全漏洞和自动化检测技术
  16. [HDOJ 4889] Scary Path Finding Algorithm [SPFA]
  17. c# winform 制作统计图
  18. 软件项目管理学习(一)
  19. 关于闲鱼测试数据构造,我有几条心得
  20. CYUSB3014类别

热门文章

  1. JDK8中Lambda 表达式语法糖脱糖[非原创]
  2. 算法创作|什么是数据结构
  3. 关于吴恩达深度学习总结
  4. 第一章 公共政策学的学科要素
  5. 【报错记录】MybatisPlus报Mapped Statements collection does not contain value for...
  6. Linux服务器挂载ntfs硬盘,Linux中挂载NTFS格式的硬盘的方法
  7. 计算机学院优秀主讲教师评选细则,重庆师范大学计算机学院教学优秀奖评选办法.doc...
  8. 儿子:特训营归来,许三多算个屁!(转)
  9. 【C语言】size与strlen的区别解析
  10. 腾讯云服务器地域节点IP速度测试表