Hi,
I am trying to toggle led using GPIO on apalis imx8(apalis eval board) using python
Please let me know some pointers on how to configure the same.
Thanks,
Shardul
Hi,
I am trying to toggle led using GPIO on apalis imx8(apalis eval board) using python
Please let me know some pointers on how to configure the same.
Thanks,
Shardul
Hi @ShardulC ,
Thanks for writing Toradex Community!
One can install pyhton package for libgpiod that is python3-libgpiod in application container. python3-libgpiod can be used with in python script to manage gpio lines.
sudo apt update
sudo apt install python3-libgpiod
For example, let’s assume we need to access MXM3 X1 pin 5 (Apalis GPIO3) from an Apalis iMX8, which is accessible at LSIO.GPIO0_IO12 . This means we need to access GPIO bank 0 line 12.
Here is the short python script to make the pin logic high
import gpiod
chip=gpiod.Chip('gpiochip0')
lines = chip.get_lines([ 12 ])
lines.request(consumer='gpio', type=gpiod.LINE_REQ_DIR_OUT)
lines.set_values([ 1 ])
Important: While running docker run it is important to pass gpio chip so that can be accessed inside container.
Please check below article for more detail.
Let me know if you face any issue.
Best Regards
Ritesh Kumar
Hey @ShardulC -
I work in C#/C++ but I found the hard part was identifying the bank and line for a given header pin on the carrier board. Here is my recipe using the iMX8 and Ixora board. The algorithm should be the same for your hardware.
// To find bank and line:
// 1. Identify pin on carrier board. Sample code is using GPIO1 which is pin 13 on X27 connector
// on Ixora carrier board.
// 2. From carrier board data sheet, find MXM3 pin, here it’s pin 1
// 3. From the SOM data sheet, identify the GPIO bank and line for the given pin
// Most of the SOM pins have multiple uses. Look for the LSIO.GIPOx.IOyy entry in the
// alternate functionality columns. For pin 1, alt3 has LSIO.GPIO0.IO08 which corresponds
// to bank 0, line 8. ^ ^^
// For the Ixora carrier board:
// Name X27 pin MXM3 pin Bank Line
// GPIO1 13 1 0 8
// GPIO2 14 3 0 9
// GPIO3 15 5 0 12
// GPIO4 16 7 0 13
// GPIO5 17 11 4 1
// GPIO6 18 13 4 2
// GPIO7 19 15 3 26
// GPIO8 20 17 3 28
Also, you will need to expose the appropriate driver to your system. I’m using pins on bank 0 so I exposed /dev/gpiochip0.
Good luck!
Jeff
Hi @ritesh.tx Thanks for the reply. I tried following steps..
Ran the command …
docker run --rm -it --device /dev/gpiochip0 torizonextras/arm64v8-gpiod
Ran commands you mentioned in the open container..
sudo apt update
sudo apt install python3-libgpiod
created a file in nano editor led.py with following…
import gpiod
chip=gpiod.Chip(‘gpiochip0’)
lines = chip.get_lines([ 12 ])
lines.request(consumer=‘gpio’, type=gpiod.LINE_REQ_DIR_OUT)
lines.set_values(1)
Any clues/pointers about this..
Thanks,
Shardul
Hi @ShardulC ,
Please check we have updated the reply for lines.set_values([ 1 ]).
Let us know if this also not working for you.
Best Regards
Ritesh Kumar
@jpinterp Thanks a lot for help..could understand the relation between eval board pins and corresponding imx8 functions with the details provided. Led toggle worked.
Thanks,
Shardul
Thanks a lot @ritesh.tx Led functionality worked with the python sample provided.
Thanks,
Shardul