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...
Isn't there anyone who can give some light on this... I badly need it. I've done all my project on keil RL-RTX. And at the end have stuck at this no-man's-land!!!
Remember to use PRE tags when posting source code, otherwise the formatting is a mess.
The "Undefined symbol" error from the linker means the same as it does in any other context, your project does not contain source, object, or libraries including the function it is complaining about. Review the construction of the project, and the files therein.
Thanks for your reply. Yes I've corrected those errors. Now it compiles and links without any error. I've included GUI_X_RTX file from Segger folder in uvision and the errors are corrected. But that is not enough to run the program. Is there any reference program for running STemWin demo with Keil RL-RTX?? I've seen couple of examples with freertos and embos. But they are completely different. Can't use them as reference to modify my program. Keil uses emWin, but I need some reference program to run emwin with keil rtos. Thanking in advance...
Maybe you should broaden your search from STemWin to emWin in general, does that have a support forum? Do they have examples there? Can you purchase the library/support from Segger. Or engage a consultant with such experience?
STemWin is free for ST customers. Keil uvision contains a folder named 'Segger' which contains this GUI_X_RTX, and other necessary emWin files. Since this is totally related to the particular RTOS kernel I'm using, which is in this case the keil RL-RTX, I don't think no one else but Keil can provide me help to fix this problem. And surely I just can't switch to some other RTOS kernel only for this reason, as I've done all my programs till date in Keil RTX. So if anyone has implemented this emWin with RL-RTX on any processor kindly share some help for me.