I plan to use the module to program drone control. However, there are 40 pins-J21 that are already programmed. Some of pins-J26 may be used for exterior devices.
-Is there a way to program on TX1 without any extra plug-in devices？If it is, which software/package I should use?
-Or… I need extra kit connecting between TX1 and drone to program them. Which pins are available?
Are you referring to GPIO? There are several exposed which can be used as desired. There may be a pinmux setup, but custom use is what GPIO is generally for.
The question though is what do you mean by program without extra plug-in device? Do you want to flash the Jetson, program access to external GPIO, or just create programs running purely as software?
Much documentation is available, some of which is at the L4T download page for your version of L4T. Additional documentation can be seen here (click on the “Jetson TX1” link; you may need to add a free login):
The main document for the Tegra X1 chip itself is the “Technical Reference Manual”…just search for that. This contains information on I/O. Once you know the type of I/O you are interested in you can compare it to the schematic (search for “carrier board design files”) and pick a suitable connector pin.
Thanks linuxdev. I mean create programs running purely as software to control the drone. Is it possible? I read the pin instruction, J21 pins are programmed and unchangeable.
Any pins listed as GPIO can be reprogrammed. PINMUX software (perhaps in combination with the device tree firmware file) can be used to add or remove binding to a function for those pins. For example, the J21 pin 13 is listed as an audio-related function, but is provided through a pin the TRM lists as GPIO_PE6 (Linux kernel naming gpio38)…this means you could disable the audio part of this and use it instead for your own GPIO purpose.
However, I imagine to control a drone you must have a wire somewhere unless you are wanting to use a wireless receiver between the Jetson and the drone. Wireless would be ordinary network programming, but I imagine using one of the serial UART interfaces, I2C, or GPIO would be easier (serial ports are fairly common use and easy to work with). You do not necessarily have to use the pins of J21, there are other connectors available with either UART or GPIO. A real answer would require more details on exactly which part of drone control you are interested in…lots of people do this, I’m sure someone would have suggestions if there were more details available on what you want to accomplish.
Also know that the developer carrier board is not the only way to mount the JTX1 module. There are several third-party carrier boards available, some of which provide a lot of I/O beyond what the developer carrier board provides.
Check the auvidea boards, I think there are several that would allow you to use the GPIOs
you really want to think about if you want to control a drone with a TX1. There will be serveral problems you will have to deal with:
- the TX1 one is not a low power device. you will have to rely on battery power and need something around 12V to power the TX1.
- the wifi is normal wifi. keep this in mind. it will not take you far
- you need PWM output for the common ESCs out there - dont know if there are dedicated libs for creating the waves on linux
- you want to deal with gps and multiple sensors for flight control. I2C might not be the best choice to use on a vehicle that uses multiple radios
i would recommend you to use dedicated hardware for the flight control and use the TX1 as a additional onboard computer if you really need the computing power onboard. have a look at APM or PIXHAWK for flight control computers out there. Opensource and tremendous software work done already