by [Theo Verelst] I used this test script to drive a serially connected xilinx chip using a apache (2.0 Fedora Core4,64bit) and get 4 bytes of info back from it, it serves as a display and external signal reader/driver. Basically, its just a cgi program which happens to be a tclsh script: #!/bin/sh # \ exec tclsh "$0" "$@" # must supply meta type puts stdout "Content-type: text/html\n" puts stdout "" puts stdout "
" puts stdout "\n"
puts "$env(QUERY_STRING)\n
\n"
# send a in this case fixed 4 bytes to the FPGA, which turn on the display here
w 00000000
after 1000
# and another 4 byte data to turn it off
w 40000000
puts ""
puts ""
flush stdout
# make the cgi end after a second
after 1000 exit
# meanwhile read the returning data bytes
while {1} {
flush $fh
vwait v
}
# should never be needed
exit
The board:
[http://82.170.247.158/Wiki/xilledson.jpg]
I'll make the fpga programming file available when I've time, it can set leds,
4 led displays and read switches and communicate at least a 100 or so external signals using the spartan-3.
To run the script, put it in /var/www/cgi-bin/test.tcl or where youre apache's cgis are supposed to go, don't forget to make it readable by the servers' uid, and use this url to make it run: http://yourhost/cgi-bin/test.tcl
In my case:
http://www.theover.org/cgi-bin/test.tcl
assuming the setup is unchanged when you read this. Getting this url will flash the display on the board a few seconds and return the 8 switches setting as one byte of data, example output:
Test.
00 52 15 00 40 52 15 00
If anyone's got a good idea they want with this setup, send me a mail, I might make it for them, I'll have some of my own and its a good example. In fact the MSB of the first databyte can put a 20 watt ligthbulb on and off.
Depending on server load, the seconds delay is probably a gross exageration to get all the data back. If you don't need the serial port stuff, strip everything exept the [puts] commands. One can consider it an excercise to the reader to deal with the case of access conflict on a busy server for this page when two accesses to the serial port happen at the same time, opening the serial port should fail for all but one.
See Also : [Bwise, a serial port tcl script and a Xilinx demo board]