# RFID board based on RoadRunner SOM

## Connections, Signals & Ports :

* Ethernet /POE
* USB To WiFi Module:
	* USB B (HHSDB_P /HHSDB_N)
* USB Aux:
	* USB A (HHSDA_P /HHSDA_N)
* Serial for Debug : UART 1
	* PD2=RXD
	* PD3=TXD
* SPI to RFID : FLEXCOM 3
	* PA15=MOSI
	* PA13=MISO
	* PA14=SCLK
	* PA16=SS
* INTERRUPT DA LETTORE RFID:
	* PAB0=Interrupt input
* I2C to Acme Sensor : FLEXCOM 4
	* PC28=SDA
	* PC29=SCL
	* PA30=GPIO
	* PD00=GPIO
* GPIOs 
	* AUXILIARY OUTPUTS : 
		* IO_1 = PC3
		* IO_2 = PC2
		* IO_3 = PC1
* RFID LEDS :
	* CARD_ERROR = PD8
	* CARD_READ_ PD10
	* CARD_RUNNING = PD7
* USER BUTTON:
	* USER = PA11
* USER LED:
	* HB_LED = PA12


## File vari

* [Schema elettrico](./rfid.pdf)
* [Chip RFID ST25R3911B](https://www.st.com/en/nfc/st25r3911b.html)

## Compilazione Buildroot

Verificare che ci siano i pacchetti elencati in questo articolo:

* <http://buildroot.uclibc.org/downloads/manual/manual.html#requirement-mandatory>

Scaricare Buildroot 2024.02.1:

	wget https://buildroot.org/downloads/buildroot-2024.02.1.tar.gz
	tar -xvf buildroot-2024.02.1.tar.gz
	cd buildroot-2024.02.1

Creare un repository Git:

	git init ; git add . ; git commit -m "vanilla" ; git branch rfid ; git checkout rfid
	
Scaricare la patch di Sergio:

	wget https://www.acmesystems.it/www/rfid/sergio.patch
	
Applicare la patch:	
	
	patch -p1 < sergio.patch

Lanciare il make:

	make rfid_defconfig

Programmare la microSD con l'immagine disponibile in:

	output/images/sdcard.img

## Appunti vari su Buidroot

Per cambiare la configurazione su rootfs:

	make menuconfig
	make

Per salvare la configurazione del rootfs in /configs:

	make savedefconfig	


Per cambiare la configurazione del kernel:

	make linux-menuconfig
	make linux-rebuild
	make
	
Per salvare la configurazione del kernel:

	make linux-savedefconfig	

## Appunti vari usati durante lo sviluppo

## SPI

Script da lanciare al boot per abilitare la /dev/spi0.0

	#! /bin/sh
	echo spidev > /sys/bus/spi/devices/spi0.0/driver_override
	echo spi0.0 > /sys/bus/spi/drivers/spidev/bind

* [Kernel doc SPI userspace API](https://github.com/linux4sam/linux-at91/blob/master/Documentation/spi/spidev.rst)


S52-rfid

	#!/bin/sh
	#
	# sshd        Starts spidev.
	#

	start() {
			# Rising up spidev driver on /dev/spi*

			printf "Starting spidev: "
			echo spidev > /sys/bus/spi/devices/spi0.0/driver_override
			echo spi0.0 > /sys/bus/spi/drivers/spidev/bind
			ifconfig
			echo "spidev on " $(ls /dev/spi*)
			cd /root
			./nfc_demo_st25r3911b -w 5
	}
	stop() {
			echo "spidev no op"
	}
	restart() {
			stop
			start
	}

	case "$1" in
	  start)
			start
			;;
	  stop)
			stop
			;;
	  restart|reload)
			restart
			;;
	  *)
			echo "Usage: $0 {start|stop|restart}"
			exit 1
	esac

	exit $?

## Programmi di test

* [sendtophp.c](./sendtophp.c) Esempio in C di invio dati ad un server http remoto
* [blink.c](./blink.c) Blink di tutti i led in sequenza 
* [http://erp.acmesystems.it:1880](http://erp.acmesystems.it:1880) Server https di test
