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



Reply via email to