Dear Sir,
I'm using STM32F4-DISCOVERY kit with BB board and tft-lcd from Embest. I've run the STemWin standalone demo on my board successfully. Now I've to switch to RL-RTX to run this demo. But I'm having these linking errors:
""linking... emWin.axf: Error: L6218E: Undefined symbol MainTask (referred from main2.o). emWin.axf: Error: L6218E: Undefined symbol GUI_X_GetTaskId (referred from gui_task.o). emWin.axf: Error: L6218E: Undefined symbol GUI_X_InitOS (referred from gui_task.o). emWin.axf: Error: L6218E: Undefined symbol GUI_X_Lock (referred from gui_task.o). emWin.axf: Error: L6218E: Undefined symbol GUI_X_Unlock (referred from gui_task.o). ""
How can I use KEIL RL-RTX to do this job. I've only modified my main.c like this:
""
#include <RTL.h> #include "stm32f4xx.h" #include "stm32f4_discovery.h" #include "GUI.h" #include "bsp.h"
#include "DIALOG.h"
OS_TID t_GRAPHICS; OS_TID t_STEPPER;
extern void MainTask(void); extern void LED_Init (void); U16 COUNTER1;
/********************************************************************* * Externals *********************************************************************/ WM_HWIN CreateIntro(void); uint8_t GUI_Initialized = 0;
* Main */ __task void GRAPHICS (void) {
os_evt_wait_and(0x0002,0xffff); NVIC_PriorityGroupConfig(NVIC_PriorityGroup_4);
//STM32f4_Discovery_LCD_Init();
/* Initilize the BSP layer */ BSP_Init();
/* Activate the use of memory device feature */ WM_SetCreateFlags(WM_CF_MEMDEV);
RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_CRC, ENABLE);
/* Init the STemWin GUI Library */ GUI_Init();
/*WM_SelectWindow(WM_HBKWIN); WM_SetDesktopColor(GUI_BLACK);*/
GUI_Initialized = 1;
MainTask(); for (;;); }
__task void STEPPER (void) {
os_evt_wait_and(0x0001,0xffff); /* my code*/
}
void BSP_Background (void) { static uint32_t LED_ticks = 0; static uint32_t POINTER_ticks = 0;
if ( LED_ticks++ > 100 ) { LED_ticks = 0;
/* toggle LED1..4 each 100ms */ /* STM_EVAL_LEDToggle(LED4); STM_EVAL_LEDToggle(LED3); STM_EVAL_LEDToggle(LED5); STM_EVAL_LEDToggle(LED6);*/ }
if ( POINTER_ticks++ > 50 ) { POINTER_ticks = 0; /* Capture input event and updade cursor */ if(GUI_Initialized == 1) { BSP_Pointer_Update(); } } }
#ifdef USE_FULL_ASSERT /** * @brief Reports the name of the source file and the source line number * where the assert_param error has occurred. * @param file: pointer to the source file name * @param line: assert_param error line source number * @retval None */ void assert_failed(uint8_t* file, uint32_t line) { /* User can add his own implementation to report the file name and line number, ex: printf("Wrong parameters value: file %s on line %d\r\n", file, line) */
/* Infinite loop */ while (1) {} } #endif
void delay(__IO uint32_t nCount) { __IO uint32_t index = 0; for (index = (100000 * nCount); index != 0; index--); }
__task void init (void) {
//os_sem_init (semaphore1, 1); t_GRAPHICS= os_tsk_create(GRAPHICS,0); t_STEPPER= os_tsk_create(STEPPER,1); os_evt_set (0x0001, t_STEPPER); /* send signal event to task phaseA */ os_tsk_delete_self (); }
int main (void) { LED_Init(); os_sys_init (init); /* Initialize RTX and start init */} ""
kindly someone help me...