Jump to content

Victor

Members
  • Posts

    13
  • Joined

  • Last visited

Posts posted by Victor

  1. Hello Joel,

    Yes. C interface is accessible, but don't correlate with C++ instance of FreeRTOS. Build without problems but when uGFX using FreeRTOS functions HardFaultHandler occurs as was expected.

    I tryed to replace original gos_freertos.h/c to my gos_freertos.h/cpp. It seems to me, builder apply C compiler to them. C compeler don't know these keywords like class, etc. I don't know, can I use functions declared as C functions and defined with C++, if I have correctly explained.

    As the result files, are something like these ( please excuse me for barbarism) :

    P.S. At the begining I compiled these files isolated with C++ compiler, and had been build well. But when I tryed to replace(and embed) original uGFX files, compiler began to sware to C++ lexis in my FreeRTOS wrapper. (excuse me for my english)

    my gos_freertos.h

    /*
     * This file is subject to the terms of the GFX License. If a copy of
     * the license was not distributed with this file, you can obtain one at:
     *
     *              http://ugfx.org/license.html
     */
    
    /**
     * @file    src/gos/gos_freertos.h
     * @brief   GOS - Operating System Support header file for FreeRTOS.
     */
    
    #ifndef _GOS_FREERTOS_H
    #define _GOS_FREERTOS_H
    
    #if GFX_USE_OS_FREERTOS
    
    //#include "FreeRTOS.h"
    //#include "FreeRTOSConfig.h"
    //#include "semphr.h"
    //#include "task.h"
    
    #include "frtosWrapper.h"
    
    
    /*===========================================================================*/
    /* Type definitions                                                          */
    /*===========================================================================*/
    
    /* Additional types are required when FreeRTOS 7.x is used */
    #if !defined(tskKERNEL_VERSION_MAJOR) && !tskKERNEL_VERSION_MAJOR == 8
    	typedef signed char					int8_t
    	typedef unsigned char				uint8_t
    	typedef signed int					int16_t
    	typedef unsigned int				uint16_t
    	typedef signed long int				int32_t
    	typedef unsigned long int			uint32_t
    	typedef signed long long int		int64_t
    	typedef unsigned long long int		uint64_t
    #endif
    
    /**
     * bool_t,
     * int8_t, uint8_t,
     * int16_t, uint16_t,
     * int32_t, uint32_t,
     * size_t
     * TRUE, FALSE
     * are already defined by FreeRTOS
     */
    #define TIME_IMMEDIATE		0
    #define TIME_INFINITE		((delaytime_t)-1)
    typedef int8_t				bool_t;
    typedef uint32_t			delaytime_t;
    typedef portTickType		systemticks_t;
    typedef int32_t				semcount_t;
    typedef void				threadreturn_t;
    typedef portBASE_TYPE		threadpriority_t;
    
    #define MAX_SEMAPHORE_COUNT	((semcount_t)(((unsigned long)((semcount_t)(-1))) >> 1))
    #define LOW_PRIORITY		0
    #define NORMAL_PRIORITY		configMAX_PRIORITIES/2
    #define HIGH_PRIORITY		configMAX_PRIORITIES-1
    
    /* FreeRTOS will allocate the stack when creating the thread, so pass the size instead of a working area */
    #define DECLARE_THREAD_STACK(name, sz)			size_t *name = (size_t *)sz
    #define DECLARE_THREAD_FUNCTION(fnName, param)	threadreturn_t fnName(void *param)
    #define THREAD_RETURN(retval)
    
    portTickType MS2ST(portTickType ms);  //Ok
    
    //typedef struct {
    //	xSemaphoreHandle	sem;
    //	semcount_t			limit;
    //	semcount_t  		counter;
    //} gfxSem;
    
    typedef struct {
      tSemaphoreHandle  sem;  //  xSemaphoreHandle  sem;
      semcount_t      limit;
      semcount_t      counter;
    } gfxSem;
    
    //typedef xSemaphoreHandle    gfxMutex;
    //typedef xTaskHandle*        gfxThreadHandle;
    
    typedef tSemaphoreHandle    gfxMutex;     //typedef xSemaphoreHandle    gfxMutex;
    typedef tTaskHandle*        gfxThreadHandle;   //typedef xTaskHandle*        gfxThreadHandle;
    
    /*===========================================================================*/
    /* Function declarations.                                                    */
    /*===========================================================================*/
    
    //#ifdef __cplusplus
    //extern "C" {
    //#endif
    
    //#define gfxHalt(msg)				{}
    //#define gfxExit()					{}
    //#define gfxAlloc(sz)				pvPortMalloc(sz)
    //#define gfxFree(ptr)				vPortFree(ptr)
    //#define gfxYield()					taskYIELD()
    //#define gfxSystemTicks()			xTaskGetTickCount()
    //#define gfxMillisecondsToTicks(ms)	MS2ST(ms)
    //#define gfxSystemLock()				{}
    //#define gfxSystemUnlock()			{}
    
    
    #define gfxHalt(msg)        {}
    #define gfxExit()         {}
    //#define gfxAlloc(sz)       oRTOS.Malloc(sz)  //pvPortMalloc(sz)
    //#define gfxFree(ptr)       oRTOS.Free(ptr) //vPortFree(ptr)
    //#define gfxYield()         oRTOS.TaskYield() //taskYIELD()
    //#define gfxSystemTicks()   oRTOS.TaskGetTickCount() //xTaskGetTickCount()
    
    void* gfxAlloc(size_t size);
    void gfxFree( void* p );
    void gfxYield(void);
    TickType_t gfxSystemTicks(void);
    
    
    #define gfxMillisecondsToTicks(ms)  MS2ST(ms)
    #define gfxSystemLock()       {}
    #define gfxSystemUnlock()     {}
    
    //void gfxMutexInit(xSemaphoreHandle* s);
    //#define gfxMutexDestroy(pmutex)		vSemaphoreDelete(*pmutex)
    //#define gfxMutexEnter(pmutex)		xSemaphoreTake(*pmutex,portMAX_DELAY)
    //#define gfxMutexExit(pmutex)		xSemaphoreGive(*pmutex)
    
    void gfxMutexInit(tSemaphoreHandle* s);//Ok
    void *gfxRealloc(void *ptr, size_t oldsz, size_t newsz); //Ok
    void gfxSleepMilliseconds(delaytime_t ms); //Ok
    void gfxSleepMicroseconds(delaytime_t ms); //Ok
    
    void gfxSemInit(gfxSem* psem, semcount_t val, semcount_t limit); //Ok
    void gfxSemDestroy(gfxSem* psem);  //Ok
    bool_t gfxSemWait(gfxSem* psem, delaytime_t ms); //Ok
    bool_t gfxSemWaitI(gfxSem* psem);  //Ok
    void gfxSemSignal(gfxSem* psem);  //Ok
    void gfxSemSignalI(gfxSem* psem); //Ok
    #define gfxSemCounterI(psem)		((psem)->counter)
    #define gfxSemCounter(psem)			((psem)->counter)
    gfxThreadHandle gfxThreadCreate(void *stackarea, size_t stacksz, threadpriority_t prio, DECLARE_THREAD_FUNCTION((*fn),p), void *param);//Ok
    
    #define gfxThreadWait(thread)		{} // never used, not imlpemented
    #define gfxThreadMe()				{} // never used, not implemented
    #define gfxThreadClose(thread)		{}
    
    //#ifdef __cplusplus
    //}
    //#endif
    
    #endif /* GFX_USE_OS_FREERTOS */
    #endif /* _GOS_FREERTOS_H */

     

    my gos_freertos.cpp

    /*
     * This file is subject to the terms of the GFX License. If a copy of
     * the license was not distributed with this file, you can obtain one at:
     *
     *              http://ugfx.org/license.html
     */
    #include "../../gfx.h"
    #include <string.h>
    
    #if GFX_USE_OS_FREERTOS
    
    extern cRTOS oRTOS;   //global instance of FreeRTOS
    
    
    #if INCLUDE_vTaskDelay != 1
    	#error "GOS: INCLUDE_vTaskDelay must be defined in FreeRTOSConfig.h"
    #endif
    
    #if configUSE_MUTEXES != 1
    	#error "GOS: configUSE_MUTEXES must be defined in FreeRTOSConfig.h"
    #endif
    
    #if configUSE_COUNTING_SEMAPHORES != 1
    	#error "GOS: configUSE_COUNTING_SEMAPHORES must be defined in FreeRTOSConfig.h"
    #endif
    
    void _gosInit(void)
    {
    	#if !GFX_OS_NO_INIT
    		#error "GOS: Operating System initialization for FreeRTOS is not yet implemented in uGFX. Please set GFX_OS_NO_INIT to TRUE in your gfxconf.h"
    	#endif
    	#if !GFX_OS_INIT_NO_WARNING
    		#warning "GOS: Operating System initialization has been turned off. Make sure you call vTaskStartScheduler() before gfxInit() in your application!"
    	#endif
    }
    
    void _gosDeinit(void)
    {
    }
    
    void* gfxRealloc(void *ptr, size_t oldsz, size_t newsz)
    {
    	void *np;
    
    	if (newsz <= oldsz)
    		return ptr;
    
    	np = gfxAlloc(newsz);
    	if (!np)
    		return 0;
    
    	if (oldsz) {
    		memcpy(np, ptr, oldsz);
    		oRTOS.Free(ptr);//vPortFree(ptr);
    	}
    
    	return np;
    }
    
    //#define gfxAlloc(sz)       oRTOS.Malloc(sz)  //pvPortMalloc(sz)
    //#define gfxFree(ptr)       oRTOS.Free(ptr) //vPortFree(ptr)
    //#define gfxYield()         oRTOS.TaskYield() //taskYIELD()
    //#define gfxSystemTicks()   oRTOS.TaskGetTickCount() //xTaskGetTickCount()
    
    void* gfxAlloc(size_t size)
    {
      return oRTOS.Malloc(size);
    }
    
    void gfxFree( void* p )
    {
      oRTOS.Free(p);
    }
    
    void gfxYield(void)
    {
      oRTOS.TaskYield();
    }
    
    TickType_t gfxSystemTicks(void)
    {
      return oRTOS.TaskGetTickCount();
    }
    
    void gfxSleepMilliseconds(delaytime_t ms)
    {
    	const portTickType ticks = ms / portTICK_PERIOD_MS;
    	oRTOS.taskDelay(ticks); //vTaskDelay(ticks);
    }
    
    void gfxSleepMicroseconds(delaytime_t ms)
    {
    	const portTickType ticks = (ms / 1000) / portTICK_PERIOD_MS;
    
    	// delay milli seconds
    	oRTOS.taskDelay(ticks); //vTaskDelay(ticks);
    
    	// microsecond resolution delay is not supported in FreeRTOS
    	// vUsDelay(ms%1000);
    }
    
    portTickType MS2ST(portTickType ms)
    {
    	return (ms / portTICK_PERIOD_MS);
    }
    
    void gfxMutexInit(tSemaphoreHandle *s)
    {
    	//*s = xSemaphoreCreateMutex();
    	*s = oRTOS.SemaphoreCreateMutex();
    	#if GFX_FREERTOS_USE_TRACE
    	//	vTraceSetMutexName(*s,"uGFXMutex"); // for FreeRTOS+Trace debug
      #warning "FreeRTO + Trace not wrapped"
    	#endif
    }
    
    void gfxSemInit(gfxSem* psem, semcount_t val, semcount_t limit)
    {
    	if (val > limit)
    		val = limit;
    
    	psem->counter = val;
    	psem->limit = limit;
    	psem->sem = oRTOS.CountingSemCreate(limit,val);//psem->sem = xSemaphoreCreateCounting(limit,val);
    
    	#if GFX_FREERTOS_USE_TRACE
    	//	vTraceSetSemaphoreName(psem->sem, "uGFXSema"); // for FreeRTOS+Trace debug
        #warning "FreeRTO + Trace not wrapped"
    	#endif
    }
    
    void gfxSemDestroy(gfxSem* psem)
    {
      oRTOS.SemaphoreDelete(psem->sem);//vSemaphoreDelete(psem->sem);
    }
    
    bool_t gfxSemWait(gfxSem* psem, delaytime_t ms)
    {
    	psem->counter--;
    
    	if (oRTOS.SemTake(psem->sem, MS2ST(ms)) == pdPASS) //if (xSemaphoreTake(psem->sem, MS2ST(ms)) == pdPASS)
    		return TRUE;
    
    	psem->counter++;
    
    	return FALSE;
    }
    
    bool_t gfxSemWaitI(gfxSem* psem)
    {
    	portBASE_TYPE xHigherPriorityTaskWoken = pdFALSE;
    
    	psem->counter--;
    
    	if (oRTOS.SemTakeFromISR(psem->sem,&xHigherPriorityTaskWoken) == pdTRUE)//if (xSemaphoreTakeFromISR(psem->sem,&xHigherPriorityTaskWoken) == pdTRUE)
    		return TRUE;
    
    	psem->counter++;
    
    	return FALSE;
    }
    
    void gfxSemSignal(gfxSem* psem)
    {
      oRTOS.EnterCritical();//taskENTER_CRITICAL();
    
    	if (psem->counter < psem->limit) {
    		psem->counter++;
    		oRTOS.SemGive(psem->sem);//xSemaphoreGive(psem->sem);
    	}
    
    	oRTOS.BranchToSheduler();//taskYIELD();
    	oRTOS.ExitCritical();//taskEXIT_CRITICAL();
    }
    
    void gfxSemSignalI(gfxSem* psem)
    {
    	portBASE_TYPE xHigherPriorityTaskWoken = pdFALSE;
    
    	if (psem->counter < psem->limit) {
    		psem->counter++;
    
    		oRTOS.SemGiveFromISR(psem->sem,&xHigherPriorityTaskWoken);//xSemaphoreGiveFromISR(psem->sem,&xHigherPriorityTaskWoken);
    	}
    }
    
    gfxThreadHandle gfxThreadCreate(void *stackarea, size_t stacksz, threadpriority_t prio, DECLARE_THREAD_FUNCTION((*fn),p), void *param)
    {
     // xTaskHandle task = NULL;
      tTaskHandle* task = NULL;
    	stacksz = (size_t)stackarea;
    
    	if (stacksz < configMINIMAL_STACK_SIZE)
    		stacksz = configMINIMAL_STACK_SIZE;
    
    	//if (xTaskCreate(fn, "uGFX_TASK", stacksz, param, prio, &task )!= pdPASS) {
    	if (oRTOS.TaskCreate(fn, "uGFX_TASK", stacksz, param, prio, task )!= pdPASS) {
    		for (;;);
    	}
    
    	return  task;
    }
    
    #endif /* GFX_USE_OS_FREERTOS */

     

  2. Manual How to implement uGFX lib in existing Eclipse project with autotool makefile.  

    1. Copy ugfx lib folder to your Eclipse project tree and exclude it from build( click right button on folder and choose Resource Configurations).
    2. Copy gfx_mk.c to your src from ugfx/src. Now all necessary sources and headers of ugfx include to build.
    3. Copy gfxconf.h to your include dir and config it.
    4. Choose or create necessary drivers and board files (BSP). You can choose them from ugfx/drivers  and ugfx/boards. Copy necessary folders to your project tree and check including them to build. For example, f7-discovery(LCD + Touch Screen) requires folowing drivers: ugfx/drivers/gdisp/STM32LTDC and ugfx/drivers/ginput/touch/FT5336. Also you can take something usefull from board files ugfx/boards/base/STM32F746-Discovery
    5. Specify following include paths: 

    "../ugfx"
    "../dviver1 folder"
    "../dviver2 folder"
    "../board folder"

    for f7-discovery them are: 

    "../ugfx"
    "../STM32LTDC"

    "../FT5336"
    "../STM32F746-Discovery"


    You can use startup files from board folder, but existing projects already has startup, peripheral init, linker script, etc.  Unnecessary files(.c) are excluded from build.

    Important, configure necessary peripherals before use  uGFX (UgfxInit()).  

     

     

     

     

     

     

  3. It seems to me, that jano try to use uGFX build system in eclipse ( using uGFX top-level Makefile ).  But He didn't specify driver, board and etc, which build system requires.

    Eclipse Autotools makefile has some places where user can define anything. ( -include ../makefile.init, -include ../makefile.defs, -include ../makefile.targets).

    For example in theory: Created  makefile.init  and described there somthing else for proper use uGFX build system. And then add GFXSRC /GFXINC to the sources/includes of Eclipse Autotools makefile. 

    It is theoretical way to use ugfx build system with eclipse, but it is not work.

    Now to implement uGFX to my eclipse neon project I do following steps:

    1. Copy ugfx lib to project tree and exclude ugfx folder from build

    2. Copy gfx_mk.c to src folder

    3. Copy  gfxconf.h to inc folder

    4. I use f7-discovery and i need folowing drivers: STM32LTDC, FT5336, STM32F746-Discovery. Find them in ugfx folder,copy them to project tree and inculude these folder to build

    (click right  mouse button on folder and check "Resource Configurations")

    5. Add to include paths:

    "../ugfx"
    "../STM32LTDC"
    "../STM32F746-Discovery"
    "../FT5336"

    6. in main.c define #include "gfx.h"

    Folder STM32F746-Discovery conteins some files for init hardware. You can use some of them and exclude from build those no need.

    For example: I don't use linker script(.ld), startup.s, system init, hal drivers etc from this folder. You have to config everything separatly before uGFXInit().  

    It is all, if I have nothing forgot.

  4. How do you intend to implement these settings in your project?
    For example:

        OPT_OS                    = raw32
        OPT_CPU                    = stm32m7
        GFXBOARD                = STM32F746-Discovery
        GFXDEMO                    =
        GFXDRIVERS                =
    STMHAL                        = ../STM32F7xx_HAL_Driver
    CMSIS                        = ../CMSIS
    
    ARCH     = arm-none-eabi-
    SRCFLAGS = -ggdb -O1
    CXXFLAGS = -fno-rtti
    .......

     

  5. Hi!  

    I am implementing ugfx to my project( f7-discovery, baremetal).

    I do this steps:

    1. add gfx_mk.c  with string #include "../ugfx/drivers/gdisp/STM32LTDC/gdisp_lld_STM32LTDC.c"  to source 

    2. add following include path:

    "../ugfx/drivers/gdisp/STM32LTDC"
    "../ugfx/src/gdisp"
    "../ugfx"
    "../ugfx/boards/base/STM32F746-Discovery"
     

    The problem is ../src/../ugfx/drivers/gdisp/STM32LTDC/gdisp_lld_STM32LTDC.c:37:2: error: unknown type name 'LLDCOLOR_TYPE'

    How I can configure necessary parts of ugfx to build successfully? 

     

  6. Hello everyone!

    I try to integrate uGFX library to existing Eclipse project and couldn't do it. I read "Getting Started -> Integrate uGFX" manual but it couldn't help me. I tried both methods. My Eclipse project has auto-generated makefile.  It couldn't be edited manually, only via project Properties. I searched way to include additional makefile in eclipse project properties, but there was no result. In Eclipse forum I was told that, I had to make two projects. First project is basic application project(my existing project), second project is library, based on eclipse makefile project. This library contain uGFX and I use it in my existing project. Probably, this way is right but I don't sure that the uGFX library dedicated for this without many changes. Also I tried to integrate uGFX library using second method described in  "Getting Started -> Integrate uGFX" manual, but failed. I  added file gfx_mk.c to project sources. I added the source and header files of  drivers to compiler including path. I faced with errors like 'undefined reference to', which I tried to solve it time from time but there was no result. It seemed to me, that i had done something wrong.

    Anybody could describe integrating uGFX library to existing Eclipse project in detail?

  7. There is file tree...

    FileTree.jpg

    I unzipped it to the folder template in my workspace without any changes and execute 'make all'. It seems, the same problem. See terminal out near..

    C:\Users\TSV\Desktop\NeonWS\template\project>"C:\Program Files\GNU ARM Eclipse\B
    uild Tools\2.6-201507152002\bin\make" all
    .
    C Compiler Options....
    arm-none-eabi-gcc -c -ggdb -O1 -mcpu=cortex-m7 -falign-functions=16 -mfloat-abi=
    hard -mfpu=fpv4-sp-d16 -fsingle-precision-constant -fomit-frame-pointer -Wall -W
    extra -Wstrict-prototypes -fverbose-asm -MMD -MP -MF .build/dep/fakethumbfile.o.
    d -I. -I../ugfx -I../ugfx/3rdparty/tinygl-0.4-ugfx/include -I../ugfx/boards/base
    /STM32F746-Discovery -I../CMSIS/Device/ST/STM32F7xx/Include -I../CMSIS/Include -
    I../STM32F7xx_HAL_Driver/Inc -I../ugfx/drivers/gdisp/STM32LTDC -DSTM32F746xx -DG
    FX_OS_PRE_INIT_FUNCTION=Raw32OSInit -DGFX_OS_INIT_NO_WARNING=TRUE -DGFX_USE_OS_R
    AW32=TRUE -DCORTEX_USE_FPU=TRUE -DUSE_FPU=hard -DTHUMB_PRESENT -DTHUMB_NO_INTERW
    ORKING -mthumb -DTHUMB fakethumbfile.c -o .build/obj/fakethumbfile.o
    .
    Assembler Options.....
    arm-none-eabi-gcc -c -ggdb -O1 -mcpu=cortex-m7 -falign-functions=16 -mfloat-abi=
    hard -mfpu=fpv4-sp-d16 -fsingle-precision-constant -fomit-frame-pointer -Wall -W
    extra -Wstrict-prototypes -fverbose-asm -MMD -MP -MF .build/dep/fakethumbfile.o.
    d -I. -I../ugfx -I../ugfx/3rdparty/tinygl-0.4-ugfx/include -I../ugfx/boards/base
    /STM32F746-Discovery -I../CMSIS/Device/ST/STM32F7xx/Include -I../CMSIS/Include -
    I../STM32F7xx_HAL_Driver/Inc -I../ugfx/drivers/gdisp/STM32LTDC -DSTM32F746xx -DG
    FX_OS_PRE_INIT_FUNCTION=Raw32OSInit -DGFX_OS_INIT_NO_WARNING=TRUE -DGFX_USE_OS_R
    AW32=TRUE -DCORTEX_USE_FPU=TRUE -DUSE_FPU=hard -DTHUMB_PRESENT -DTHUMB_NO_INTERW
    ORKING -mthumb -DTHUMB fakethumbfile.s -o .build/obj/fakethumbfile.o
    .
    Linker Options........
    arm-none-eabi-gcc -mcpu=cortex-m7 -falign-functions=16 -mfloat-abi=hard -mfpu=fp
    v4-sp-d16 -fsingle-precision-constant -nostartfiles -mthumb -T../ugfx/boards/bas
    e/STM32F746-Discovery/stm32f746nghx_flash.ld -lm .build/obj/fakethumbfile.o -o .
    build/project.elf
    .
    Compiling main.c
    process_begin: CreateProcess(NULL, arm-none-eabi-gcc -c -ggdb -O1 -mcpu=cortex-m
    7 -falign-functions=16 -mfloat-abi=hard -mfpu=fpv4-sp-d16 -fsingle-precision-con
    stant -fomit-frame-pointer -Wall -Wextra -Wstrict-prototypes -fverbose-asm -MMD
    -MP -MF .build/dep/main.o.d -I. -I../ugfx -I../ugfx/3rdparty/tinygl-0.4-ugfx/inc
    lude -I../ugfx/boards/base/STM32F746-Discovery -I../CMSIS/Device/ST/STM32F7xx/In
    clude -I../CMSIS/Include -I../STM32F7xx_HAL_Driver/Inc -I../ugfx/drivers/gdisp/S
    TM32LTDC -DSTM32F746xx -DGFX_OS_PRE_INIT_FUNCTION=Raw32OSInit -DGFX_OS_INIT_NO_W
    ARNING=TRUE -DGFX_USE_OS_RAW32=TRUE -DCORTEX_USE_FPU=TRUE -DUSE_FPU=hard -DTHUMB
    _PRESENT -DTHUMB_NO_INTERWORKING -mthumb -DTHUMB main.c -o .build/obj/main.o, ..
    .) failed.
    make (e=2): Can not find specified file.
    ../ugfx/tools/gmake_scripts/compiler_gcc.mk:242: recipe for target '.build/obj/m
    ain.o' failed
    make: *** [.build/obj/main.o] Error 2
    
    C:\Users\TSV\Desktop\NeonWS\template\project>

     

  8. Eclipse use PATHes specified in Preferences.

    Global tool path.jpg

    I execute 'make' manually using terminal. It gave the same as eclipse console. See near..

     

    C:\Users\TSV\Desktop\NeonWS\new> "C:\Program Files\GNU ARM Eclipse\Build Tools\2
    .6-201507152002\bin\make" all
    .
    C Compiler Options....
    arm-none-eabi-gcc -c -ggdb -O1 -mcpu=cortex-m7 -falign-functions=16 -mfloat-abi=
    hard -mfpu=fpv4-sp-d16 -fsingle-precision-constant -fomit-frame-pointer -Wall -W
    extra -Wstrict-prototypes -fverbose-asm -MMD -MP -MF .build/dep/fakethumbfile.o.
    d -I. -IC:UsersTSVDesktopNeonWS
    ewugfx -IC:UsersTSVDesktopNeonWS
    ewugfx/3rdparty/tinygl-0.4-ugfx/include -IC:UsersTSVDesktopNeonWS
    ewugfx/boards/base/STM32F746-Discovery -IC:UsersTSVDesktopNeonWS
    ew/CMSIS/Device/ST/STM32F7xx/Include -IC:UsersTSVDesktopNeonWS
    ew/CMSIS/Include -IC:UsersTSVDesktopNeonWS
    ewSTM32F7xx_HAL_Driver/Inc -IC:UsersTSVDesktopNeonWS
    ewugfx/drivers/gdisp/STM32LTDC -DSTM32F746xx -DGFX_OS_PRE_INIT_FUNCTION=Raw32OSI
    nit -DGFX_OS_INIT_NO_WARNING=TRUE -DGFX_USE_OS_RAW32=TRUE -DCORTEX_USE_FPU=TRUE
    -DUSE_FPU=hard -DTHUMB_PRESENT -DTHUMB_NO_INTERWORKING -mthumb -DTHUMB fakethumb
    file.c -o .build/obj/fakethumbfile.o
    .
    Assembler Options.....
    arm-none-eabi-gcc -c -ggdb -O1 -mcpu=cortex-m7 -falign-functions=16 -mfloat-abi=
    hard -mfpu=fpv4-sp-d16 -fsingle-precision-constant -fomit-frame-pointer -Wall -W
    extra -Wstrict-prototypes -fverbose-asm -MMD -MP -MF .build/dep/fakethumbfile.o.
    d -I. -IC:UsersTSVDesktopNeonWS
    ewugfx -IC:UsersTSVDesktopNeonWS
    ewugfx/3rdparty/tinygl-0.4-ugfx/include -IC:UsersTSVDesktopNeonWS
    ewugfx/boards/base/STM32F746-Discovery -IC:UsersTSVDesktopNeonWS
    ew/CMSIS/Device/ST/STM32F7xx/Include -IC:UsersTSVDesktopNeonWS
    ew/CMSIS/Include -IC:UsersTSVDesktopNeonWS
    ewSTM32F7xx_HAL_Driver/Inc -IC:UsersTSVDesktopNeonWS
    ewugfx/drivers/gdisp/STM32LTDC -DSTM32F746xx -DGFX_OS_PRE_INIT_FUNCTION=Raw32OSI
    nit -DGFX_OS_INIT_NO_WARNING=TRUE -DGFX_USE_OS_RAW32=TRUE -DCORTEX_USE_FPU=TRUE
    -DUSE_FPU=hard -DTHUMB_PRESENT -DTHUMB_NO_INTERWORKING -mthumb -DTHUMB fakethumb
    file.s -o .build/obj/fakethumbfile.o
    .
    Linker Options........
    arm-none-eabi-gcc -mcpu=cortex-m7 -falign-functions=16 -mfloat-abi=hard -mfpu=fp
    v4-sp-d16 -fsingle-precision-constant -nostartfiles -mthumb -TC:UsersTSVDesktopN
    eonWS
    ewugfx/boards/base/STM32F746-Discovery/stm32f746nghx_flash.ld -lm .build/obj/fak
    ethumbfile.o -o .build/new.elf
    .
    Compiling main.c
    process_begin: CreateProcess(NULL, arm-none-eabi-gcc -c -ggdb -O1 -mcpu=cortex-m
    7 -falign-functions=16 -mfloat-abi=hard -mfpu=fpv4-sp-d16 -fsingle-precision-con
    stant -fomit-frame-pointer -Wall -Wextra -Wstrict-prototypes -fverbose-asm -MMD
    -MP -MF .build/dep/main.o.d -I. -IC:\Users\TSV\Desktop\NeonWS\new\ugfx -IC:\User
    s\TSV\Desktop\NeonWS\new\ugfx/3rdparty/tinygl-0.4-ugfx/include -IC:\Users\TSV\De
    sktop\NeonWS\new\ugfx/boards/base/STM32F746-Discovery -IC:\Users\TSV\Desktop\Neo
    nWS\new/CMSIS/Device/ST/STM32F7xx/Include -IC:\Users\TSV\Desktop\NeonWS\new/CMSI
    S/Include -IC:\Users\TSV\Desktop\NeonWS\new\STM32F7xx_HAL_Driver/Inc -IC:\Users\
    TSV\Desktop\NeonWS\new\ugfx/drivers/gdisp/STM32LTDC -DSTM32F746xx -DGFX_OS_PRE_I
    NIT_FUNCTION=Raw32OSInit -DGFX_OS_INIT_NO_WARNING=TRUE -DGFX_USE_OS_RAW32=TRUE -
    DCORTEX_USE_FPU=TRUE -DUSE_FPU=hard -DTHUMB_PRESENT -DTHUMB_NO_INTERWORKING -mth
    umb -DTHUMB main.c -o .build/obj/main.o, ...) failed.
    make (e=2): Can not find specified file.
    C:\Users\TSV\Desktop\NeonWS\new\ugfx/tools/gmake_scripts/compiler_gcc.mk:242: re
    cipe for target '.build/obj/main.o' failed
    make: *** [.build/obj/main.o] Error 2
    
    C:\Users\TSV\Desktop\NeonWS\new>

     

  9. Hello.

    I work in Eclipse CDT. I tried to use "STM32F746G-Discovery Template BareMetal Makefile" but couldn't build it.

    I created new eclipse project, based on makefile, came with this template, I changed corresponding settings in makefile. Changed makefile is here....

     

    # Possible Targets:	all clean Debug cleanDebug Release cleanRelease
    
    ##############################################################################################
    # Settings
    #
    
    # General settings
    	# See $(GFXLIB)/tools/gmake_scripts/readme.txt for the list of variables
    	OPT_OS					= raw32
    	OPT_THUMB				= yes
    	OPT_LINK_OPTIMIZE		= no
    	OPT_CPU					= stm32m7
    
    # uGFX settings
    	# See $(GFXLIB)/tools/gmake_scripts/library_ugfx.mk for the list of variables
    #	GFXLIB					= ../ugfx
    	GFXLIB					= C:\Users\TSV\Desktop\NeonWS\new\ugfx
    	GFXBOARD				= STM32F746-Discovery
    	GFXDEMO					=
    	GFXDRIVERS				=
    	GFXSINGLEMAKE			= no
    
    # Special - Required for the drivers for this discovery board.
    #STMHAL						= ../STM32F7xx_HAL_Driver
    STMHAL						= C:\Users\TSV\Desktop\NeonWS\new\STM32F7xx_HAL_Driver
    
    # Special - Required for Raw32
    #CMSIS						= ../CMSIS
    CMSIS						= C:\Users\TSV\Desktop\NeonWS\new/CMSIS
    
    ##############################################################################################
    # Set these for your project
    #
    
    ARCH     = arm-none-eabi-
    SRCFLAGS = -ggdb -O1
    CFLAGS   =
    CXXFLAGS = -fno-rtti
    ASFLAGS  =
    LDFLAGS  =
    
    SRC      = main.c
    
    OBJS     = 
    DEFS     =
    DEFS     = 
    LIBS     =
    INCPATH  = 
    
    LIBPATH  =
    LDSCRIPT = 
    
    ##############################################################################################
    # These should be at the end
    #
    
    include $(GFXLIB)/tools/gmake_scripts/library_ugfx.mk
    include $(GFXLIB)/tools/gmake_scripts/os_$(OPT_OS).mk
    include $(GFXLIB)/tools/gmake_scripts/compiler_gcc.mk
    # *** EOF ***
    

    Build was finished with errors. Object files aren't created in their directory. The build directory specified as .build in project properties.
    Console output is near.

    13:19:50 **** Incremental Build of configuration Build (GNU) for project new ****
    make all 
    .
    C Compiler Options....
    arm-none-eabi-gcc -c -ggdb -O1 -mcpu=cortex-m7 -falign-functions=16 -mfloat-abi=hard -mfpu=fpv4-sp-d16 -fsingle-precision-constant -fomit-frame-pointer -Wall -Wextra -Wstrict-prototypes -fverbose-asm -MMD -MP -MF .build/dep/fakethumbfile.o.d -I. -IC:UsersTSVDesktopNeonWSnewugfx -IC:UsersTSVDesktopNeonWSnewugfx/3rdparty/tinygl-0.4-ugfx/include -IC:UsersTSVDesktopNeonWSnewugfx/boards/base/STM32F746-Discovery -IC:UsersTSVDesktopNeonWSnew/CMSIS/Device/ST/STM32F7xx/Include -IC:UsersTSVDesktopNeonWSnew/CMSIS/Include -IC:UsersTSVDesktopNeonWSnewSTM32F7xx_HAL_Driver/Inc -IC:UsersTSVDesktopNeonWSnewugfx/drivers/gdisp/STM32LTDC -DSTM32F746xx -DGFX_OS_PRE_INIT_FUNCTION=Raw32OSInit -DGFX_OS_INIT_NO_WARNING=TRUE -DGFX_USE_OS_RAW32=TRUE -DCORTEX_USE_FPU=TRUE -DUSE_FPU=hard -DTHUMB_PRESENT -DTHUMB_NO_INTERWORKING -mthumb -DTHUMB fakethumbfile.c -o .build/obj/fakethumbfile.o
    .
    Assembler Options.....
    arm-none-eabi-gcc -c -ggdb -O1 -mcpu=cortex-m7 -falign-functions=16 -mfloat-abi=hard -mfpu=fpv4-sp-d16 -fsingle-precision-constant -fomit-frame-pointer -Wall -Wextra -Wstrict-prototypes -fverbose-asm -MMD -MP -MF .build/dep/fakethumbfile.o.d -I. -IC:UsersTSVDesktopNeonWSnewugfx -IC:UsersTSVDesktopNeonWSnewugfx/3rdparty/tinygl-0.4-ugfx/include -IC:UsersTSVDesktopNeonWSnewugfx/boards/base/STM32F746-Discovery -IC:UsersTSVDesktopNeonWSnew/CMSIS/Device/ST/STM32F7xx/Include -IC:UsersTSVDesktopNeonWSnew/CMSIS/Include -IC:UsersTSVDesktopNeonWSnewSTM32F7xx_HAL_Driver/Inc -IC:UsersTSVDesktopNeonWSnewugfx/drivers/gdisp/STM32LTDC -DSTM32F746xx -DGFX_OS_PRE_INIT_FUNCTION=Raw32OSInit -DGFX_OS_INIT_NO_WARNING=TRUE -DGFX_USE_OS_RAW32=TRUE -DCORTEX_USE_FPU=TRUE -DUSE_FPU=hard -DTHUMB_PRESENT -DTHUMB_NO_INTERWORKING -mthumb -DTHUMB fakethumbfile.s -o .build/obj/fakethumbfile.o
    .
    Linker Options........
    arm-none-eabi-gcc -mcpu=cortex-m7 -falign-functions=16 -mfloat-abi=hard -mfpu=fpv4-sp-d16 -fsingle-precision-constant -nostartfiles -mthumb -TC:UsersTSVDesktopNeonWSnewugfx/boards/base/STM32F746-Discovery/stm32f746nghx_flash.ld -lm .build/obj/fakethumbfile.o -o .build/new.elf
    .
    Compiling main.c
    process_begin: CreateProcess(NULL, arm-none-eabi-gcc -c -ggdb -O1 -mcpu=cortex-m7 -falign-functions=16 -mfloat-abi=hard -mfpu=fpv4-sp-d16 -fsingle-precision-constant -fomit-frame-pointer -Wall -Wextra -Wstrict-prototypes -fverbose-asm -MMD -MP -MF .build/dep/main.o.d -I. -IC:\Users\TSV\Desktop\NeonWS\new\ugfx -IC:\Users\TSV\Desktop\NeonWS\new\ugfx/3rdparty/tinygl-0.4-ugfx/include -IC:\Users\TSV\Desktop\NeonWS\new\ugfx/boards/base/STM32F746-Discovery -IC:\Users\TSV\Desktop\NeonWS\new/CMSIS/Device/ST/STM32F7xx/Include -IC:\Users\TSV\Desktop\NeonWS\new/CMSIS/Include -IC:\Users\TSV\Desktop\NeonWS\new\STM32F7xx_HAL_Driver/Inc -IC:\Users\TSV\Desktop\NeonWS\new\ugfx/drivers/gdisp/STM32LTDC -DSTM32F746xx -DGFX_OS_PRE_INIT_FUNCTION=Raw32OSInit -DGFX_OS_INIT_NO_WARNING=TRUE -DGFX_USE_OS_RAW32=TRUE -DCORTEX_USE_FPU=TRUE -DUSE_FPU=hard -DTHUMB_PRESENT -DTHUMB_NO_INTERWORKING -mthumb -DTHUMB main.c -o .build/obj/main.o, ...) failed.
    make (e=2): Can not find specified file.
    
    make: *** [.build/obj/main.o] Error 2
    
    13:19:50 Build Finished (took 314ms)

    What, I have to change in my project or makefile to build and launch this template in eclipse CDT?

×
×
  • Create New...