修改如下:
Gvim n101_cct/riscv-tests/n100-sdk/bsp/core/env/common.mk
第55行:增加如下
ifeq ($DOWNLOAD), flashxip)
LINKER_SCRIPT := $(ENV_DIR)/link_flashxip.lds
endif
现象
make upload后串口的输出与flash, ilm比较,明显较慢,应该在flashxip运行。
观测生成的.dasm和.dump的地址数据也是匹配的。
flash模式,upload后,printf,后每次按mcu_rst也继续printf.
ilm模式,upload后,printf,后继续按mcu_rst,是按flash里头先前烧录的软件数据,进行的flash模式,printf;
这个现象与FPGA rtl的代码设计一致。Reset_vector,FPGA模式下是直接跳到0x20000;
flashxip模式,upload后, printf,后继续按mcu_rst,串口没任何输出。
run_openocd 和 run_gdb都可以正常debug,就是串口没输出。仅仅upload时串口是正常输出的。
因为仿真环境只有ilm模式,没法追踪,该如何追踪定位这个问题?
是不是还需要其他地方的设置和修改?谢谢!
1. 打印没输出的话,测下串口波形,看看有没有波形
2. 单步调试看看uart配置有没有成功
3. 可以用fpga的ILA捕捉下内部信号调试看看
1. 改代码,reset_vector不做判断,直接都是连接到rom起始地址。
2. 在rom代码中去修改跳转地址到FPGA,下载FPGA后运行正常。
仿真环境中也按上述进行修改,把QSPI FLASH挂上去运行了,可以进行正常printf,调出来波形进行观测,发现跑的两线模式的XIP,是目前给的QSPI的代码只能运行两线XIP么?还是需要进行额外的配置??
1. 打印没输出的话,测下串口波形,看看有没有波形
2. 单步调试看看uart配置有没有成功
3. 可以用fpga的ILA捕捉下内部信号调试看看
谢谢!如果我的修改是正确的话,那就暂时不深究了。
目前项目较急,暂时没办法花时间去测试。
1. upload时,串口是正常输出的。run_openocd和run_gdb,看着也是正常的。
2. 与其去fpga ila捕捉,可能还不如去建立带外置flash的仿真的来一步步跟踪或许还更快一些。
等后续有找到原因,再来此汇报。