Parallel port
-
-
I am using a real machine, an old laptop, and the only other option I specified was the output file:
root@.box/home/admin# gcc -o WGXepc WGXepc.c
Is this a 32bit vs 64bit problem?
Steve
-
Okey, but it should work with a Virtual Machine aswell. I am running a 32bit-machine.
-
Yep, should work. :-
I'm out of my depth here. ;)Steve
-
Found out that this means that the libraries the headers refer to are not found in the system:
/libexec/ld-elf.so.1: /root/program/a.out: Shared object has no run-time symbol tableAre there no libs present in pfsense? And can someone tell me how to statically link libraries to the program?
-
About the only thing I can think you may have done is used some cut down version of FreeBSD. Alternatively I have installed some extra stuff in my FreeBSD install. :-
I don't remember doing that but some package or other may have pulled in some dependencies. It's a few years since I installed it.Steve
-
I installed with the dvd image, which I think is the full version and I installed all standard packets or something like that. But it seems like the problem is not with my virtual FreeBSD, it's with my pfsense missing libraries which I suppose is normal. From what I understand, the only possible solution is for me to somehow statically link the required libraries into the program so that they are not needed on pfsense when I execute the program. But what I really don't understand is why I can run your program with no problem but if I compile it by myself it won't work. Especially when you didn't use any option with gcc to compile it.
-
what I really don't understand is why I can run your program with no problem but if I compile it by myself it won't work. Especially when you didn't use any option with gcc to compile it.
It's exactly that reason makes me think it's a problem with your compile box.
One way to test would be if I compile your code (unless it's top secret).Steve
-
It's exactly that reason makes me think it's a problem with your compile box.
One way to test would be if I compile your code (unless it's top secret).Steve
You are welcome to compile it, maybe that would do the trick :P But I'm not sure the program is working correctly yet since I haven't been able to try it at all.
-
Ok, Here is your compile code.
However it doesn't seem to work. It's hard to say because it doesn't have many printf statements so it just does nothing. ;)Running it on the compile box:
root@.box/home/admin# ./readio 378 Reading 378 :4 root@.box/home/admin# ./code 2 378 fel antal argroot@.box/home/admin# ./code 2 root@.box/home/admin# ./readio 378 Reading 378 :32
Running on my pfSense box:
[2.0.1-RELEASE][root@pfsense.fire.box]/tmp(6): ./code fel antal arg[2.0.1-RELEASE][root@pfsense.fire.box]/tmp(7):
Seems to run fine. I didn't try to actually write any registers as that box needs to stay up!
When I was investigating the firebox LED I wrote a program almost the same as yours: writeio and another to compliment it: readio. I now think there is a function in FreeBSD to do this already but it was a fun exercise. See attachments.
Steve
Edit: Actually your code seems to work, just not as I'd expected.
-
Thanks!
I know, but as I said it's not really complete :P I want to add some messages that tell me what I am doing, and I want to be able to control specific pins like this: "./code 1h 2l" which would set the first pin to 1 and the second to 0. This program was a test to see if me and my friend had found the right way to communicate with the port.What does Readio and writeio do?
I tried to statically link the library libc.a to my program while compiling(thought that might have been what was missing in pfsense) and after that I didn't get the same error message on my pfsense box. Instead it was a segmentation fault. Don't know which of the error-messages I prefer :P
I haven't received my equipment that is going to be connected to the parallel port yet, so I can't try if it works correctly right now. I am thinking that I might be able to use a multimeter/multitester to see If I can change one of the datapins to 1. The supported command for the program should be: 0, 1, 2 or 3.
That would translate to:
0= set both to 0
1= set first datapin to 1
2= set second datapin to 1
3= set first and second datapin to 1 -
readio and writeio allow you to read and write any memory mapped io space, such as the parallel port or in my case the southbridge gpio pins.
They are used:
readio (address)
writeio (address, value)
Values in Hex.e.g.:
root@.box/home/admin# ./readio 378 Reading 378 :34 root@.box/home/admin# ./writeio 378 21 Setting 378 to 21 root@.box/home/admin# ./readio 378 Reading 378 :21
Steve
-
I just tried your programs(writeio and readio) and they are great :) I used a multimeter to verify that the port did output 50 mA when I set a pin to 1 and it seems to work. I tried my program as well and it worked :) Can't understand why it works when you compile it, but I am happy it does :P
I received the equipment I've been waiting for today, so now I will start to build the circuit to control my power strip.
Thank you for all the help you have given me!//Matumbo