在使用platformio对nexys a7进行riscv开发时,编写了用开关控制led的程序,启动pio debug后调试到getswitch()函数时读取不到开关设置的值,无论如何一直显示0。图一显示了demo教程手册中可以看到val的值,但是我在调试时(图二)val总显示为0(开关的值是已经设置好的)
I cannot read mandarin, so I used Google Translate.
When using platformio to develop riscv on nexys a7, I wrote a program to control the led with a switch. After starting pio debug and debugging to the getswitch() function, the value of the switch setting cannot be read, and 0 is always displayed anyway.
Figure 1 shows that the value of val can be seen in the demo tutorial manual, but when I debug (Figure 2) val always shows 0 (the value of the switch is already set)
- What is the full source code and
platformio.ini
? - is it show something different with a different optimization level? Add
debug_build_flags = -O0 -ggdb3 -g3
(documentation) and retry.
; PlatformIO Project Configuration File
;
; Build options: build flags, source filter, extra scripting
; Upload options: custom port, speed and extra flags
; Library options: dependencies, extra library storages
;
; Please visit documentation for the other options and examples
; Redirecting...
[env:swervolf_nexys]
platform = chipsalliance
board = swervolf_nexys
framework = wd-riscv-sdk
monitor_speed = 115200
debug_tool = whisper
debug_build_flags = -O0 -ggdb3 -g3
board_build.bitstream_file = /home/minyang/RVfpga/src/rvfpga.bit
board_debug.verilator.binary = /home/minyang/RVfpga/verilatorSIM/Vrvfpgasim
我按照您的要求把debug_build_flags = -O0 -ggdb3 -g3添加到platformio.ini后仍然检测不到val的值
That is really not enough information to be able to help.
以下内容是按键点灯源码
#define GPIO_SWs 0x80001400
#define GPIO_LEDs 0x80001404
#define GPIO_INOUT 0x80001408
#define READ_GPIO(dir) (*(volatile unsigned *)dir)
#define WRITE_GPIO(dir, value) { (*(volatile unsigned *)dir) = (value); }
int main ( void )
{
int En_Value=0xFFFF, switches_value;
WRITE_GPIO(GPIO_INOUT, En_Value);
while (1) {
switches_value = READ_GPIO(GPIO_SWs);
switches_value = switches_value >> 16;
WRITE_GPIO(GPIO_LEDs, switches_value);
}
return(0);
}
是这样的,我们把该程序build后直接upload到开发板上是可以正常运行的。但是当我连上开发板后直接点pio debug开始按钮(三角形状),在不断点击单步跳过按钮过程中,开发板上的灯并没有亮,并且开关的值(val)不能读到数据,这让我很困惑。是否是该调试器是虚拟的,点击pio debug并没有将程序下载到开发板上?但这点又与rvfpga给出的教程不一致(教程上正确显示了开关的值,并且灯是亮的)