Menu Close

RISC-V asm_compile 工具使用

asm_compile软件包下载(注册用户可见):

本文隐藏内容 登陆 后才可以浏览

 

在RISC-V 的学习中, 我们提供一种方法,通过uart 口,将软件人员编写的代码下载到fpga 开发板上, 这样用户就可以快速编写软件程序并且验证软件,而不需要每次都去综合fpga, 配置fpga 才能进行验证。 大大方便了软件人员的开发。这个功能有些类似jtag 的程序下载。

相关参考文章:

RISC-V 教学教案

 

软件工程包:

在我们学习RISC-V 的教程中, 会给大家一个软件工程包。 (asm_compile 目录,具体目录按照当前下载的版本为准):

 

%title插图%num
asm_compile directory

 

创建自建工程:

在这个工程中包含一些已经存在demo 工程, 和gcc 的编译软件。在asm_compile 目录下有很多目录, 每个目录可以认为是一个单独的工程。 如果用户想建立自己的一个工程, 只要在asm_compile 目录下,建立一个自己的目录即可,同时自建的目录也是自建工程名称。

 

%title插图%num
my_project

 

在my_project 目录下建立src 目录, 将用户所写的 .s  .c 文件放到src 目录下,(注: src 目录下仍然可以还有其他源文件子目录),如果有头文件 ,将在 my_project 下 创建inc 目录; 如果没有头文件需要,则不需要建立这个目录。注:src,inc这两个目录名字必须是固定的,不要更改为其他名称。

%title插图%num
my_prj_sub_dir

添加自建文件到相应的目录中去,如果需要头文件,需要建立inc 目录

%title插图%num
my_prj_inc_dir
%title插图%num
my_prj_src_dir

 

到此,工程文件建立成功,如果用户还需要添加其他的.s  .c 文件, 直接放到src 目录下即可; 如果需要再次添加 头文件 ,只要添加到inc 目录下即可。

最后组织可以执行文件时,所需要的连接文件在asm_compile 目录下的sys.lds 文件, 这个文件对当前目前下的所有工程都是适用的(这个文件和fpga 的相关硬件资源相关,比如itcm的大小(rom), dtcm 的大小(ram))

工程编译:

win + R 键组合,输入cmd  打开命令行窗口, 进入asm_compile 所在的目录下

%title插图%num
cmd_asm_compile

运行 run my_project   (run + 工程名字)

%title插图%num
run_my_prj

如果出现 fii_asm.exe convert OK.  则整个工程编译成功, 如果不成功, 可以查看命令行内的错误信息。run命令 + 工程名字 会自动检查工程目录下的.s .c .h 文件,将工程下的文件进行编译,连接,最终输出相关的可执行文件,提供给fpga 开发者使用。包括coe,sim,mif ,bin 文件等。 同时也可以查看相关的反汇编文件,检查软件的相关错误。

查看生成文件:

%title插图%num
my_prj_output

在my_project目录下,会生成obj 目录, 这个目录下包括所有工程需要编译的文件所生成的obj 文件。

在my_project 目录下,会生成fii.bin , fii.coe,  fii.map,  fii.mif, fii.sim, fii.txt 文件. 其中:

fii.bin :工程可执行文件(二进制)。 这个文件 可以使用uart 工具软件下载到fpga 开发板上,并且自动运行。

fii.coe:  这个文件可以在vivado 工程中使用, 放入ITCM memory 中, 在综合后的fpga 工程中, 只要上电,就可以直接运行。相当于将软件烧录到fpga 中一样。  

fii.mif:  这个文件可以在quartus 工程中使用, 放入ITCM memory 中, 在综合后的fpga 工程中, 只要上电,就可以直接运行。相当于将软件烧录到fpga 中一样。  

fii.map: 查看软件中各种函数,变量所在的位置。

fii.sim: 用于vivado 仿真使用, vivado 可以直接调用这个文件,在vivado 工程中,直接仿真软件刚刚编写的工程,详情请参考:Vivado 仿真工程中coe 文件的装载

fii.txt:  用于查看反汇编文件。 如果使用run my_project ,反汇编文件中32个通用寄存器为 x0 – x31;

%title插图%num
x0-x31

如果使用的命令为 run my_project  abi ,  则反汇编形成的是abi 格式的文件:

%title插图%num
x0-x31_abi

 

my_project.*  和fii.* 的内容都是一样的, 同时将fii.*  复制了一份 ,放入到 asm_compile 目录下, 方便下载使用。

 

FPGA 载入软件工程

  1. 首先, fpga 下载risc-v fpga 工程。  (让risc-v cpu 跑起来)。
  2. 按“OK” 键, 暂停risc-v cpu 工作,(准备下载,这里以prx100t 开发板为例 参考:FII-PRX100-D(ARTIX 100T,XC7A100T)硬件参考指南
%title插图%num
my_prj_ok

3.通过uart 软件,选择my_project.bin文件,hex文件发送,这时,软件就可以在fpga 开发板上跑起来了。

%title插图%num
riscv-uart

最后 点击发送文件, 这样软件所编写的工程(my_projcet) 就被成功的下载到fpga 中去了

 

Posted in FPGA, FPGA, IC, RISC-V, RISC-V 教案, 应用开发, 开发板使用, 教材与教案, 文章

6 Comments

    • Yvonne

      在asm_compile_2021_0716_compress和fii.bin之间还有一级目录,比如asm_run_led工程生成的fii.bin的路径是C:\Users\asm_compile_2021_0716_cmpress\asm_run_led\fii.bin

        • Yvonne

          在运行asm_compile,即在命令行敲“ run asm_run_led “时,需要在 C:\Users\asm_compile_2021_0716_cmpress 目录下进行,因为只有在asm_compile_2021_0716_cmpress层才有GCC的编译工具链。

          如果这解决不了你的问题,请再详细描述一下问题。

发表评论

相关链接