二进制(或 STK3700 repl)文件在 Renode 项目中无法正常工作

问题描述 投票:0回答:1

我在 Simplicity Studio 中运行了一些简单的代码来设置 LED,然后将二进制文件加载到 Renode 中,但是,每当我尝试读取相关 LED 的状态时,它都会返回 false,即使它应该打开并返回 true .

repl文件中的GPIO端口是根据文档设置的。

我不确定出了什么问题。代码应该是好的,我已经在硬件上测试过了,也许是 STK3700 repl 文件有问题?我从这个 GitHub 链接中获取了它们:

https://github.com/renode/renode/blob/master/platforms/boards/silabs/stk3700.repl

设置 LED0 的代码(同样,这是经过测试的,只是将其发布以备不时之需):

#include <stdint.h>
#include "em_device.h"
#include "em_chip.h"
#include "em_cmu.h"
#include "em_gpio.h"

int main(void)
{
  /* Chip errata */
  CHIP_Init();

CMU_ClockEnable(cmuClock_GPIO,1);

  /* Infinite loop */
  while (1) {

      GPIO_PinModeSet(gpioPortE,2, gpioModePushPull, 1);
  }
}

这是我用于测试的 Renode 进程,它应该返回 true:

Renode, version 1.14.0.34213 (81da46c1-202308081855)

(monitor) mach create "test"
(test) machine LoadPlatformDescription @platforms/boards/silabs/stk3700.repl 
(test) sysbus LoadBinary @C:/code/renode_test.bin 0x000
(test) start
Starting emulation...
(test) sysbus.gpioPort.led0 State
False

我尝试过其他测试方法,但无论我编写什么代码,我都没有得到所需的输出。

embedded renode
1个回答
0
投票

GPIO_PinModeSet 配置 GPIO 引脚,只需执行一次。您没有

GPIO_PinOutSet
GPIO_PinOutClear
GPIO_PinOutToggle
来实际断言引脚状态。

在实际硬件上这是否会点亮 LED 取决于 LED 的连接方式以及输出的初始状态。颠倒逻辑很常见;低为开。

使用闪烁的 LED 作为“活动”指示始终是个好主意,静态状态不能证明任何事情,除了你有电之外。

© www.soinside.com 2019 - 2024. All rights reserved.