Hi David, thanks for the response!
I guess I wasn't really sure which ioreg_mode value corresponded to
which, so I just tried them both. So <1=binary> and <0=ascii>. Armed
with that knowledge (plus your mad BASH chops), I successfully
controlled some registers through BORPH. Still no luck in ASCII mode,
but I don't really need it. Also, tcpborphserver didn't work when I
programmed the ROACH through BASH. See below:
(tcpborphserver fails)
$ telnet 192.168.1.92 7147
Trying 192.168.1.92...
Connected to 192.168.1.92.
Escape character is '^]'.
#version poco-0.1
#build-state poco-0.2804
?read spec_count 0 4
#log error 4294538676790 poco register\_spec_count\_not\_found
!read fail program
(successful write)
root@roach:/proc/618/hw/ioreg# echo 1 > ../ioreg_mode
root@roach:/proc/618/hw/ioreg# echo -en "\x00\x00\x01\x00" > acc_len_m1
root@roach:/proc/618/hw/ioreg# echo -en "\x00\x00\x00\x01" >
acc_always_valid
root@roach:/proc/618/hw/ioreg# echo -en "\x00\x00\x00\x01" > acc_sw_rst
root@roach:/proc/618/hw/ioreg# echo -en "\x00\x00\x00\x00" > acc_sw_rst
root@roach:/proc/618/hw/ioreg# cat spec_count
Lroot@roach:/proc/618/hw/ioreg# cat -An spec_count
1 ^@^A^UBroot@roach:/proc/618/hw/ioreg#
root@roach:/proc/618/hw/ioreg# cat spec_count | hd
00000000 00 05 d1 4d |...M|
00000004
Looks good! Thanks everyone
--Ryan
On 03/18/2013 02:49 PM, David MacMahon wrote:
Hi, Ryan,
On Mar 18, 2013, at 2:21 PM, Ryan Monroe wrote:
root@roach:/proc/618/hw/ioreg# echo 0 > ../ioreg_mode
root@roach:/proc/618/hw/ioreg# echo -e \x00\x00\x00\x00 > acc_always_valid
-bash: echo: write error: Invalid argument
You need to either double up the backslashes or put the \x00\x00\x00\x00 in
quotes. Also adding -n is probably needed to suppress the newline. I think
the invalid argument error is due to writing too many bytes (when ioreg_mode is
0).
root@roach:/proc/618/hw/ioreg# echo 1 > ../ioreg_mode
root@roach:/proc/618/hw/ioreg# echo -e \x00\x00\x00\x00 > acc_always_valid
root@roach:/proc/618/hw/ioreg# cat acc_always_valid
x00xroot@roach:/proc/618/hw/ioreg#
Here the shell ate the backslashes so you as before you tried to write "x00x00x00x00" to
the register. I guess ioreg_mode of 1 is more tolerant of trailing data, so only the first 4
bytes, "x00x" got written to the register (as confirmed by the output of the cat command).
Hope this helps,
Dave