Volani funkci v C pres tabulku vektoru
Petr Labaj
labaj na volny.cz
Středa Březen 28 03:09:22 CEST 2012
From: "Jindroush" <kubecj na asw.cz>
From: "Miroslav Šinko" <sinkomiro na gmail.com>
Takze jeste jednou diky obema.
Nakonec se to da udelat takhle:
typedef void (*tGPIO_func1)(int par1);
typedef int (*tGPIO_func2)(int par1, char *par2);
(*(tGPIO_func1 *)(0x100000)) (1);
vysl = (*(tGPIO_func2 *)(0x100004)) (2, "ahoj");
Zatim to nemam jak spustit a proverit bojem, ale prelozene do
assembleru to vypada dobre. Nepotrebuje to zadnou RAM,
tu adresu si to vezme primo z Flash do registru a podle neho
to zavola knihovni funkci (na Cortex-M4).
8000006: f44f 1380 mov.w r3, #1048576 ; 0x100000
800000a: 681b ldr r3, [r3, #0]
800000c: f04f 007c mov.w r0, #1 ; 0x1
8000010: 4798 blx r3
Takze super.
Ted jeste na to napsat nejake makro, aby se to dalo lidsky pouzivat.
PL
Další informace o konferenci Hw-list