# aagrv2k_sdk **Repository Path**: uyami/aagrv2k_sdk ## Basic Information - **Project Name**: aagrv2k_sdk - **Description**: 使用cmake构建agrv2k的项目(交叉编译). 主要源码来自于PIO的AGRV_pio的模块 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 2 - **Forks**: 0 - **Created**: 2023-06-04 - **Last Updated**: 2024-07-20 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README #### 依赖工具 cmake ninja lua make ## 编译项目 (SRAM模式下运行) mkdir build &&cd build cmake ../ -DCMAKE_TOOLCHAIN_FILE=../rv32.cmake ninja ## 编译项目 (FLASH模式下运行) mkdir build_flash &&cd build_flash cmake ../ -DCMAKE_TOOLCHAIN_FILE=../rv32_flash.cmake ninja # 执行写FPGA操作 make -f make_fpga.mk write_prg # 执行写FLASH程序操作 make -f make_program.mk ### 运行openocd连接仿真器 (可能有些supra版本命令会不同) af_openocd.bat -c "variable ADAPTER cmsis-dap; variable CONNECT_UNDER_RESET 1" -c "variable ADAPTER_SPEED 12000" -f K:/Supra-2023.11.b0-84524805-win32-all/pio/agrv2k.cfg -c "flash probe 0;" ### 运行项目 需要在连接仿真器的状态下运行下面命令 ninja load_sram ### 综合FPGA比特流 make -f make_fpga.mk prg 或者 (直接写入flash) make -f make_fpga.mk write_prg ### 烧录FPGA配置文件 打开supra,选择生成的.bin文件.然后烧录 ##### 由于现在项目刚开始.使用最简单的cmake处理. 交叉编译器使用的是riscv-none-embed-gcc (MounRiver_Studio自带的) 主要源码基本来自于PIO的AGRV_PIO 修改了一些符号问题(_init函数改为_init_x) ##### 添加与使用源码,以及使用工具生成目标数据 详细说明转CMakelists.txt ##### 使用其他交叉编译器的注意事项 在rv32.cmake 中修改交叉编译器的工具 CMAKE_EXE_LINKER_FLAGS_INIT 为cmake检查的参数.有一些小问题.但能完成ninja生成 CMAKE_EXE_LINKER_FLAGS 默认链接的参数 MAP_FILE 生成目标map的文件 LINKER_SCRIP 链接脚本 ### 有关使用YOSYS生成网表并由supra综合 * [使用说明](./doc/使用yosys综合程序.md) * [使用GPIO项目](./doc/使用操作GPIO的源码.md) * [板子图片](./板子与截图/IMG_20230605.png) ### 有关AGRV2K的一些逆向数据 * [内存映射](./doc/内存映射关系.txt) * [启动流程](./doc/启动流程说明) * [时钟树](./doc/时钟树.md) ### 编译FPGA * [yosys](./doc/使用yosys综合程序.md) * 或者使用命令(在源码目录下) make -f make_fpga.mk prg * 在使用supra烧录fpga目录下的*.bin文件 * 修改make_fpga.mk 文件内容适应新项目 * PROJ_PATH := 为verilog的目录 * PROJ_NAME := 为子目录的名称. * TOP_NAME := 为top模块名 * V_FILES := 为需要的v源码列表 * DEDEVICE := AGRV2KL64 | AGRV2KL100 | AGRV2KL48 设备名 * ASF_FILE := 引脚定义文件 * 类似定义使用 new_verilog/test_io 作为新的源码目录步骤可以如下 * 新建 new_verilog/test_io/test_io.v 源码 * 新建 new_verilog/test_io/test_io.asf 引脚文件 * 新建 new_verilog/test_io/test_io.sdc 随便复制一个.sdc文件 * 复制 af_run.tcl 到new_verilog/test_io/ 目录下 * 修改make_fpga.mk文件如下 * PROJ_PATH := new_verilog * PROJ_NAME := test_io * TOP_NAME := test_io * ASF_FILE := test_io.asf ### 目录结构 * user/ 用户源码 * src/ AGRV_pio源码 * misc/ gcc初始化已经链接脚本(ld)目录 * io3/ supra生成的数据.(实际上这个目录不需要). 因为fpga编程文件与程序分开 * etc/ 暂时不需要. 实际上是一些ve生成工具.命令如(python3 gen_vlog) * doc/ 一些文档数据 * tools/ 一些辅助工具 ### 如果加载数据到目标板的SRAM (默认SRAM运行) ##### 注意是SUPRA自带的openocd.现在已经支持cmsis-dap(两线模式). ##### 需要仿真器是bulk传输模式.(supra仅仅支持bulk模式,编译没有添加hid模式) ##### 如果是仿真器是bulk传输.但却无法识别(很大概率是libusb.dll的问题.换个兼容性高的dll) ###### 有关仿真器是否是bulk传输.使用usbview工具 $SUPRA_PATH/openocd/bin/openocd.exe -c "set ADAPTER cmsis-dap; variable CONNECT_UNDER_RESET 1" -c "set ADAPTER_SPEED 14000" -f agrv2k.cfg -c "agrv progress 0" -c "reset init" * 如果想要知道详细加载sram步骤.转到<有关GDB的详细步骤说明> * 如果只是简单的加载.转到 ##### ninja load_sram (执行下列命令) ninja load_sram * (注:需要openocd重写连接板子.因为load_sram目标需要等待板子的$PC执行到0x80000000) ##### 有关GDB的详细步骤说明 打开另一个命令行 (详细命令参数) riscv-none-embed-gdb >target remote :3333 (远程连接) >hb *0x80000000 (设置硬件中断) >c (run) >d br (删除断点) < y >restore main.bin binary 0x20000000 (把程序加载到sram里) >set $pc=0x20000000 (设置PC地址) >c ### 仓库固件(拖动文件设置FPGA配置,不写入flash) 写入以下固件后,连接AGM USB就可以弹出U盘,拖动FPAG配置文件(.bin),就可以写入.现在暂时支持60KB以下的配置文件 非写入FLASH模式,重新断电重启则覆盖 firmware/12MHz_usb.bin 为USB基础FPGA配置文件,可由supra写入 firmware/12MHz_MSC_FPGA.bin 为MCU程序文件,由openocd写入,地址为0x80000000