U-boot脚本测试bits和bytes

应用场景源自于某款RTC的配置检测。某公司生产的某几种型号的RTC芯片在默认配置下竟然不会切换VDD和Vbackup,而是需要先对其Backup Switchover Mode进行配置,有一点好,但非常坏(bushi

于是想到了如下方法:

1
i2c read <ADDR> <REG> 1 $tmp_addr

寄存器读到内存中了之后要怎喵检测呢?

如果是整字节进行比对,就会简单一些:

1
2
3
if itest.b <VALUE> -ne *$tmp_addr; then
    # ...
fi

但是要拆出其中的几位来检测,就要曲线救国了:

1
2
3
4
setexpr rval *$tmp_addr \& <BITMASK>
if itest.b <VALUE> -ne $rval; then
    # ...
fi

或者…

1
itest.b <VALUE> -ne $rval && #...

甚至…

1
itest.b <VALUE> -ne rval && #...

但是用if ...; then ...; fi的话$rval的刀腊就不能省略,怪哉。