Dziwny problem podczas kompilacji.

Odpowiedz Nowy wątek
2010-09-02 07:22
coler
0

Witam próbuje skompilować program do komunikacji ze sterownikiem i wyskakuje mi taki problem, dodam że program powinien działać bo to przykładowy program:

expected '=', ',', ';', 'asm' or '__attribute__' before '*' token   tk_crnos.h

Oto kod plik tk_crnos.h:


#ifndef TK_CRNOS_H
#define TK_CRNOS_H

#ifndef CHRONOS
#error - must define CHRONOS in ipport.h to use this file
#endif

extern void TK_OSTaskResume(u_char * Id);

#define  NET_PRIORITY   0 

#ifdef NOT_DEF

#ifdef ALT_INICHE
#include "ucos_ii.h"
#else
#define OS_PRIO_SELF 0xFF
#endif /* ALT_INICHE */

#endif

/* macros for task type, entry, and name */
#define  TK_ENTRY(name)       void  name(void * parm)
#define  TK_OBJECT(name)      u_char   name
#define  TK_OBJECT_PTR(name)  u_char * name
#define  TK_OBJECT_REF(name)  TK_OBJECT(name)
#define  TK_ENTRY_PTR(name)   void(*name)(void*)

#define  TK_THIS              TK_OSTaskQuery()

#ifndef  TK_RETURN_ERROR
#define  TK_RETURN_ERROR()   return
#endif
#ifndef  TK_RETURN_OK
#define  TK_RETURN_OK()      return
#endif

extern void LOCK_NET_RESOURCE(int res);
extern void UNLOCK_NET_RESOURCE(int res);
extern void irq_Mask(void);
extern void irq_Unmask(void);

#define  ENTER_CRIT_SECTION(p)      irq_Mask()
#define  EXIT_CRIT_SECTION(p)       irq_Unmask()

#ifdef NOTDEF

#ifndef NET_RESID
extern   void *      net_task_sem_ptr;
#define  NET_RESID   (net_task_sem_ptr)
#endif
#ifndef PINGQ_RESID
extern   void *      pingq_sem_ptr;
#define  PINGQ_RESID  (pingq_sem_ptr)
#endif
#ifndef FTPCQ_RESID
extern   void *      ftpcq_sem_ptr;
#define  FTPCQ_RESID  (ftpcq_sem_ptr)
#endif
#ifndef RXQ_RESID
extern   void *      receiveq_sem_ptr;
#define  RXQ_RESID   (receiveq_sem_ptr)
#endif
#ifndef FREEQ_RESID
extern   void *      freeq_sem_ptr;
#define  FREEQ_RESID (freeq_sem_ptr)
#endif

#endif

extern   TK_OBJECT(to_pingcheck);
extern   TK_OBJECT(to_netmain);
extern   TK_OBJECT(to_emailer);
extern   TK_OBJECT(to_ftpclnt);

#define  TK_BLOCK()          OSTaskSuspend(OS_PRIO_SELF)
extern OS_EVENT *rcvdq_sem_ptr;
#define  TK_NETRX_BLOCK()    { \
                           INT8U err; \
                           OSSemPend(rcvdq_sem_ptr, TPS, &err); \
                           if ((err != OS_NO_ERR) && (err != OS_TIMEOUT)) \
                                  dtrap(); \
                         }

#define  TK_SLEEP(count)     OSTimeDly(count + 1)

#define  TK_WAKE(Id)         OSTaskResume(*(u_char*)(Id))

#define  TK_WAKE_EVENT(ev)   OSTaskResume((u_char)(ev))

void tk_yield(void);
#define TK_YIELD()           tk_yield()

#define  SignalPktDemux()     OSSemPost(rcvdq_sem_ptr)
#define  SignalEmailTask()    OSTaskResume(to_emailer)
#define  SignalFtpClient()    OSTaskResume(to_ftpclnt)

#endif  /* TK_CRNOS_H */

A błąd pokazuje w tej linicje:

extern OS_EVENT *rcvdq_sem_ptr;

Jakieś pomysły o co może mu chodzić??

Pozostało 580 znaków

2010-09-02 08:28
0

ja się nie bawiłem w mikrokontrolery itp, ale wiem, że początkujący z tym mają wieczne problemy ;)

popytaj lepiej na forach dla elektroników...

Pozostało 580 znaków

2010-09-02 08:34
coler
0

tak tylko wg mnie to jest czysto programowy błąd może ktoś miał coś podobnego bo ten program jest od komunikacji po Ethernecie a plik 'tk_crnos.h' jest wywoływany przez plik 'ipport.c'

Pozostało 580 znaków

2010-09-02 19:21
0

A czy w tym pliku "ucos_ii.h" jest deklaracja/makro/cokolwiek co określa czym jest OS_EVENT ?


Masz problem? Pisz na forum, nie do mnie. Nie masz problemów? Kup komputer...

Pozostało 580 znaków

2010-09-02 19:40
coler
0

jest coś takiego:

#if (OS_EVENT_EN) && (OS_MAX_EVENTS > 0)
typedef struct os_event {
    INT8U    OSEventType;                    /* Type of event control block (see OS_EVENT_TYPE_xxxx)    */
    void    *OSEventPtr;                     /* Pointer to message or queue structure                   */
    INT16U   OSEventCnt;                     /* Semaphore Count (not used if other EVENT type)          */
#if OS_LOWEST_PRIO <= 63
    INT8U    OSEventGrp;                     /* Group corresponding to tasks waiting for event to occur */
    INT8U    OSEventTbl[OS_EVENT_TBL_SIZE];  /* List of tasks waiting for event to occur                */
#else
    INT16U   OSEventGrp;                     /* Group corresponding to tasks waiting for event to occur */
    INT16U   OSEventTbl[OS_EVENT_TBL_SIZE];  /* List of tasks waiting for event to occur                */
#endif

#if OS_EVENT_NAME_SIZE > 1
    INT8U    OSEventName[OS_EVENT_NAME_SIZE];
#endif
} OS_EVENT;
#endif

elo ktoś wie jak to rozwiązać??

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0