Getting started with Uart and SPI on bpi-m64

Hi I’m working on a project containing bpi-m64 as main controller and some other devices that are connected to M64 with Uart and SPI. As an amateur I need to find a start point to learn how to develop a program that controls GPIO, UART, SPI, and any other achievable interface on my board. Unfortunately I couldn’t find any good tutorial for this and in the forum i just find the posts that show a GPIO is swithching on and off and there is no information about how it works and how should start a project like this.

what I need to know is:

  1. are there different ways and different languages for accessing GPIO, UART, SPI and other interfaces of these boards? if there are, what are they?

  2. should I use any classes that are presented for this boards or should I go through the datasheet of the processor and find something? If there are any classes, where are they?

  3. Is it possible to develop this kind of programming on Android or it’s just possible to do it on linux? if it’s possible how could I do that?

  4. If I want to do it on Linux, which distribution of Linux should I use?

  5. Is there a way to develop a program that controls GPIO that is common in any OS(Android, Linux, Win10 IoT)? is Python what I’m searching for?

you can use wiringpi for BPI-M64