Как проверить возврат команды в U-Boot CLI - PullRequest
0 голосов
/ 27 марта 2019

Я хотел бы использовать возврат команды 'gpio input' в операторе if в U-Boot, но, похоже, она не работает.

Итак, я попробовал что-то вроде:

if test {gpio status 50} -eq 1; then echo 1; else echo 0; fi;

Но всегда возвращается 1 независимо от того, высокий или низкий GPIO.

Я также пытался сохранить результат команды gpio status в переменную с помощью команды setenv, но она тоже не работает.

PS: я изменил файл gpio.c в исходном коде U-boot, чтобы команда возвращала только «0» или «1» вместо «gpio: значение pin 50 (gpio 50) равно 1», но я думаю, это не имеет значения. Просто уточнение, так как иначе '-eq 1' не имеет смысла.

Есть ли у вас какие-либо идеи о том, как я могу это сделать?

Заранее спасибо!

1 Ответ

1 голос
/ 29 марта 2019

Возвращаемое значение команды можно найти в переменной среды $ ?, например,

gpio input 50; echo $?

Если оператор if существует, зависит от конфигурации при компиляции U-Boot. Используйте CONFIG_HUSH_PARSER = y, чтобы включить его. Когда включено, вы можете написать

if gpio input 102; then setenv board_name revA ; else setenv board_name revB;fi
...