Поставил с нуля
WINDRIVER.TORNADO.V2.2.FOR.ARM.CD1.ISO
WINDRIVER.TORNADO.V2.2.FOR.ARM.CD2.ISO
Нашел в TUTOR как загружать в симулятор и симулировать работу программы на PC.
Посимулировал, понравилось. :-)
Решил попробовать поближе к железу, у меня есть KIT c LPC2106.
Здесь нашел простой пример проекта для LPC2106
http://tnkernel.com/vxworks_lpc2106.htmlСоздал новый проект на основе templateARM, который нашел в инсталлированых папках Tornado.
Пошагово переделывая проект дошел до до обработчика прерывания от системного таймера
Код
void sysClkInt (void)
{
rTIMER0_IR = 0xFF; /* clear interrupt source */
/* call system clock service routine */
if(sysClkRoutine != NULL)
(* sysClkRoutine)
(sysClkArg);
}
Нашел как в VxWorks обращаться к регистрам отображенных на память:
Код
/* The default is to assume memory mapped I/O */
#ifndef TEMPLATE_READ
#define TEMPLATE_READ(reg, result) \
(result = *reg)
#endif /*TEMPLATE_READ*/
#ifndef TEMPLATE_WRITE
#define TEMPLATE_WRITE(reg, data) \
(*reg = data)
#endif /*TEMPLATE_WRITE*/
Определил регистр:
#define rTIMER0_IR 0xE0004000Вставил в программу:
TEMPLATE_WRITE(rTIMER0_IR, 0xFF); /* clear interrupt source */ Получил "желтую карточку":
"F:\Tornado\target\src\drv\timer\templateTimer.c", line 102: warning (dcc:1554): illegal t
ype(s): '*' uint*rTIMER0_IR=0xFF; аналогично вызывает warning.
Преобразовал так:
*(unsigned int*)rTIMER0_IR=0xFF;warning пропал.
Правильно ли я сделал?