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