GPIO

chkbox
Erleuchteter
Erleuchteter
Beiträge: 440
Registriert: Samstag 10. April 2004, 15:17

GPIO

Beitrag von chkbox »

Da ich nur Halbwissen dazu habe:

Ich will GPIO Pins möglichst im user space steuert. Auf x86 war da was mit ioperm, iopl, inb und so. Für den MPC habe ich schon mal das http://forum.tuxbox.org/forum/viewtopic ... 419#127419 (CAM Treiber Source) gefunden. Leider keine Ahnung wie ich das in den user space zum Laufen bekommen :(

Auch habe ich bisher nicht mit Makefiles gearbeitet. Kennt jemand einen Crashkurs, der auch auf das CDK anwendbar ist? Oder wäre so nett einen zu schreiben? Suche liefert nur Linux Guru Zeug :roll:

Noch genialer wäre es, wenn jemand das hier zum Laufen bringt (Ich hoffe, das wackelt an PB[16])

Code: Alles auswählen

void setPort(short p,short val)
{
	volatile immap_t *immap = (volatile immap_t *)IMAP_ADDR;
	volatile cpm8xx_t *cp = &immap->im_cpm;

	/* 0xabc */
	cp->cp_pbpar &= ~(1<<16);	// GPIO (not cpm-io)

	/* 0xac0 */
	cp->cp_pbodr &= ~(1<<16);	// driven output (not tristate)

	/* 0xab8 */
	cp->cp_pbdir |= (1<<16);	// output (not input)

	/* 0xac4 */
	(void)cp->cp_pbdat;

    if (p==TCK) {
		if(val)
			cp->cp_pbdat |= (1<<16);
		else
			cp->cp_pbdat &= ~(1<<16);
    }
}
Npq
Senior Member
Beiträge: 1339
Registriert: Donnerstag 24. April 2003, 12:12

Beitrag von Npq »

Das geht nicht ohne Kernel-Treiber, die Trickserei mit ioperm geht nur bei x86/x86-64 (und da auch nur für den IO-Bereich, nicht für alle Adressen), beim ppc ist der dazugehörige systemaufruf soweit ich weiß gar nicht erst implementiert.

Ob das Bittoggeln jetzt das macht was du erhoffst weiß ich aber gerade nicht, müßte ja aus dem User Manual hervorgehen.
chkbox
Erleuchteter
Erleuchteter
Beiträge: 440
Registriert: Samstag 10. April 2004, 15:17

Beitrag von chkbox »

Hab vergessen, dass hier zu löschen. Habs mit einem Modul schon geschaft. Wäre halt schöner gewesen ohne.

Weißt du was zu mmap oder /dev/port? Das soll als Ersatz taugen...