OpenCores

regular user parallel port access using adv_jtag_bridge

Back to bugtracker overview.

Information:
Type :: IDEA
Status :: CLOSED
Assigned to :: nobody

Description:
I needed to debug using a computer connected to a network having a server account management, thus I couldn't get superuser access. I solved that by changing the direct memory access to the port for operating system calls on a file descriptor. Your user account has to have read and write permissions to the "/dev/parport0". In my case "/dev/parport0" gives read and write permissions to the group lp and the user was registered to this group. In linux it has been tested and is working. Also compatibility issues with impact have been solved. How To? Includes: #include #include #include #include #include #include create a global variable called fd to carry the file descriptor pointing to the device. int fd; Initialize the device: int mode = IEEE1284_MODE_COMPAT; fd = open("/dev/parport0", O_RDWR | O_NONBLOCK); if (fd == -1) { perror("Not able to acquire the device desriptor\n"); return APP_ERR_INIT_FAILED; } if (ioctl(fd, PPCLAIM) == -1) { perror("Fail to claim the interface for itself.\n"); return APP_ERR_INIT_FAILED; } if (ioctl(fd, PPSETMODE, &mode) == -1) { perror("Setting compatibility mode failed.\n"); return APP_ERR_INIT_FAILED; } Read from the device: ioctl(fd, PPRSTATUS, inval); Write to the device: ioctl(fd, PPWDATA, &value); inval and value as shown here work with cable_parallel.c. Actually both should be pointers to "unsigned char".

Comments:

Yawn, Nathan Jan 11, 2012
This has been implemented as of the 3.0.0 release.
Fajardo, Raul Dec 4, 2009
This solution does not work for cygwin users.

To connect to devices through parallel port using different systems and guessing the right way to do it one can use:
http://cyberelk.net/tim/software/libieee1284/
or possibly:
https://launchpad.net/libieee1284

Anyways this only bloats everything. The above linux solution is based on ppdev which does not exist for cygwin as far as I know.

Another option is that there is different code for linux and cygwin. Well, that's pretty much all I can say about it.

I hope it helps someone,
Raul
Fajardo, Raul Dec 4, 2009
In order for it to work you have to include the files:
sys/types.h
sys/stat.h
fcntl.h
linux/ppdev.h
linux/ioctl.h
linux/parport.h

That's it :-)

Post a comment:
Login to post comments!

Back to bugtracker overview.

© copyright 1999-2012 OpenCores.org, equivalent to ORSoC AB, all rights reserved. OpenCores®, registered trademark.