Jump to content

pur300

Members
  • Posts

    10
  • Joined

  • Last visited

Posts posted by pur300

  1. I reorganized my program and it seems to work now. I have one more question which is not related to the problem described above. Does gwinDestroy() free all resources if i destroy a container which has also other containers and widgets such as buttons and labels? Does gwinDestroy() free images which are used by buttons and a main container as a background? I analyzed a code and i found a function static void _destroy(GWindowObject *gh), but it is not called anywhere in my code. So i suppose i have to call gdispImageClose() for every background image used by a widget?

  2. Thank you for an explanation. Here is my test code:

    #include "testThrd.h"

    char** files;

    int numOfFiles;

    threadreturn_t test_t(void* param){

    GFILE* file;

    gfileList* fileList;

    const char* filename;

    // Directory

    char dir[] = "gallery";

    // get number of files from the directory

    numOfFiles = countFiles(dir);

    if(numOfFiles){

    int i = 0;

    // Allocate space

    files = chHeapAlloc(NULL, numOfFiles * sizeof(char*));

    // !! Open file !!

    /*file = gfileOpen("configuration/calibration.txt", "r");

    gfileClose(file);*/

    // Read file names in the directory

    fileList = gfileOpenFileList('F', dir, FALSE);

    if(fileList){

    while((filename = gfileReadFileList(fileList)) != NULL){

    // Allocate space

    files[i] = chHeapAlloc(NULL, MAX_FILE_NAME_LENGTH * sizeof(char));

    // Copy chars

    strlcpy(files[i], filename, MAX_FILE_NAME_LENGTH);

    i++;

    }

    }

    }

    for(;;

    }

    int countFiles(char* dir){

    GFILE* file;

    gfileList* fileList;

    int i = 0;

    // !! Open file !!

    /*file = gfileOpen("configuration/calibration.txt", "r");

    gfileClose(file);*/

    // Read file names in the directory

    fileList = gfileOpenFileList('F', dir, FALSE);

    if(fileList){

    while(gfileReadFileList(fileList) != NULL)
    i++;

    // Close fileList

    gfileCloseFileList(fileList);

    return i;

    }

    return 0;

    }

    If i comment out gfileOpen() and gfileClose() then this code doesn't work. numOfFiles is zero and a space for char** files is not allocated. If i uncomment gfileOpen() and gfileClose() then this code works well.

  3. I disabled all threads except a thread which reads themes from a directory. I figured out that i have to open and close a random file on the sd card before i can use a gfileOpenFileList() function. If i don't do that then the function gfileOpenFileList() returns NULL.

  4. Hello,

    I have a problem with a gfileOpenFileList() function. I have two threads. One is used to get names of all pictures from a gallery directory and the other one is used to get themes from a theme directory. A problem is that the function gfileOpenFileList() works only in the first thread and not in the second one. I've also tried to open and read name of files from the same directory(themes) and the function always returns a pointer to a gfileList struct in the first thread but NULL in the second thread. Where could be a problem?

  5. I configured ugfx lib and now it finally reads files from an sd card. Is it necessary to add sdcStart() and sdcConnect() function calls before i can use gfile module? Doesn't ugfx lib call all the necessary underlying chibios initialization functions for its modules? Do i have to explicitly call halInit() and chSysInit() before i can use ugfx and gos module, or is it enough just to call gfxInit()?

  6. I've managed to read a content of a file in chibios, but i haven't been able to do it in ugfx. I have also configured all pins in board.h file which is located under ugfx/boards/base/STM32F407/chibios_board directory(i copied board files from chibios dir) the same as i did in the chibios board.h file.

    Do i have to add #define GFILE_NEED_CHIBIOSFS TRUE or #define GFILE_NEED_FATFS TRUE in ugfxconf.h file?

  7. I've tried to configure pins in a board.h header file. I've configured GPIOC pins 8,9,10,11,12 and GPIOD pin 2 as an alternate function(AF12).

    Here is my board.h file: http://pastebin.com/MPenTVWT

    After that i've tried to configure and activate SDC peripheral with functions sdcStart() and sdcConnect(). Function sdcConnect() which initializes an sd card always returns false.

    Here is my test code:

    #include "ch.h"
    #include "hal.h"

    bool_t test = false;

    SDCConfig conf = {0};

    int main(void){

    halInit(); // board/device initialization

    chSysInit(); // brings up the kernel and sets up "main" as a thread

    sdcStart(&SDCD1, &conf);

    test = sdcConnect(&SDCD1);

    while(1){

    chThdSleepMilliseconds(1000);

    }

    return 0;

    }

  8. Hello,

    I'm currently working on a project(STM32f4) which uses a chibios and ugfx library and i have a problem reading from a file. When i use a method gfileOpen() it always returns zero(NULL). I've added all necessary define statements into a gfxconf.h config file(#define GFX_USE_OS_CHIBIOS TRUE, #define GFX_USE_GFILE TRUE, #define GFILE_NEED_FATFS TRUE and #define GFILE_NEED_NOAUTOMOUNT FALSE) and i've also enabled a SDC subsystem in a halconf.h config file(#define HAL_USE_SDC TRUE).

    Here is my test code:

    #include "gfx.h"

    GFILE *file;

    long length = -1;

    int main(void) {

    gfxInit();

    file = gfileOpen("test.txt", "r");

    if(file != NULL){

    length = gfileGetSize(file);

    }

    while(1) {

    gfxSleepMilliseconds(1000);

    }

    return 0;
    }

    Here is my makefile:

    ##############################################################################
    # Build global options
    # NOTE: Can be overridden externally.
    #

    # Compiler options here.
    ifeq ($(USE_OPT),)
    USE_OPT = -O2 -ggdb -fomit-frame-pointer -falign-functions=16
    endif

    # C specific options here (added to USE_OPT).
    ifeq ($(USE_COPT),)
    USE_COPT =
    endif

    # C++ specific options here (added to USE_OPT).
    ifeq ($(USE_CPPOPT),)
    USE_CPPOPT = -fno-rtti
    endif

    # Enable this if you want the linker to remove unused code and data
    ifeq ($(USE_LINK_GC),)
    USE_LINK_GC = yes
    endif

    # Linker extra options here.
    ifeq ($(USE_LDOPT),)
    USE_LDOPT =
    endif

    # Enable this if you want link time optimizations (LTO)
    ifeq ($(USE_LTO),)
    USE_LTO = no
    endif

    # If enabled, this option allows to compile the application in THUMB mode.
    ifeq ($(USE_THUMB),)
    USE_THUMB = yes
    endif

    # Enable this if you want to see the full log while compiling.
    ifeq ($(USE_VERBOSE_COMPILE),)
    USE_VERBOSE_COMPILE = no
    endif

    #
    # Build global options
    ##############################################################################

    ##############################################################################
    # Architecture or project specific options
    #

    # Enables the use of FPU on Cortex-M4 (no, softfp, hard).
    ifeq ($(USE_FPU),)
    USE_FPU = no
    endif

    #
    # Architecture or project specific options
    ##############################################################################

    ##############################################################################
    # Project, sources and paths
    #

    # Define project name here
    PROJECT = ch

    # Imported source files and paths
    CHIBIOS = ../../chibios
    GFXLIB = ../../ugfx
    include $(CHIBIOS)/boards/ST_STM32F4_DISCOVERY/board.mk
    include $(CHIBIOS)/os/hal/platforms/STM32F4xx/platform.mk
    include $(CHIBIOS)/os/hal/hal.mk
    include $(CHIBIOS)/os/ports/GCC/ARMCMx/STM32F4xx/port.mk
    include $(CHIBIOS)/os/kernel/kernel.mk
    include $(GFXLIB)/gfx.mk
    include $(GFXLIB)/boards/base/STM32F407/board.mk # board

    # Define linker script file here
    LDSCRIPT= $(PORTLD)/STM32F407xG.ld
    #LDSCRIPT= $(PORTLD)/STM32F407xG_CCM.ld

    # C sources that can be compiled in ARM or THUMB mode depending on the global
    # setting.
    CSRC = $(PORTSRC) \
    $(KERNSRC) \
    $(TESTSRC) \
    $(HALSRC) \
    $(PLATFORMSRC) \
    $(BOARDSRC) \
    $(GFXSRC) \
    $(CHIBIOS)/os/various/devices_lib/accel/lis302dl.c \
    $(CHIBIOS)/os/various/chprintf.c \
    main.c

    # C++ sources that can be compiled in ARM or THUMB mode depending on the global
    # setting.
    CPPSRC =

    # C sources to be compiled in ARM mode regardless of the global setting.
    # NOTE: Mixing ARM and THUMB mode enables the -mthumb-interwork compiler
    # option that results in lower performance and larger code size.
    ACSRC =

    # C++ sources to be compiled in ARM mode regardless of the global setting.
    # NOTE: Mixing ARM and THUMB mode enables the -mthumb-interwork compiler
    # option that results in lower performance and larger code size.
    ACPPSRC =

    # C sources to be compiled in THUMB mode regardless of the global setting.
    # NOTE: Mixing ARM and THUMB mode enables the -mthumb-interwork compiler
    # option that results in lower performance and larger code size.
    TCSRC =

    # C sources to be compiled in THUMB mode regardless of the global setting.
    # NOTE: Mixing ARM and THUMB mode enables the -mthumb-interwork compiler
    # option that results in lower performance and larger code size.
    TCPPSRC =

    # List ASM source files here
    ASMSRC = $(PORTASM)

    INCDIR = $(PORTINC) $(KERNINC) $(TESTINC) \
    $(HALINC) $(PLATFORMINC) $(BOARDINC) \
    $(GFXINC) \
    $(CHIBIOS)/os/various/devices_lib/accel \
    $(CHIBIOS)/os/various

    #
    # Project, sources and paths
    ##############################################################################

    ##############################################################################
    # Compiler settings
    #

    MCU = cortex-m4

    #TRGT = arm-elf-
    TRGT = arm-none-eabi-
    CC = $(TRGT)gcc
    CPPC = $(TRGT)g++
    # Enable loading with g++ only if you need C++ runtime support.
    # NOTE: You can use C++ even without C++ support if you are careful. C++
    # runtime support makes code size explode.
    LD = $(TRGT)gcc
    #LD = $(TRGT)g++
    CP = $(TRGT)objcopy
    AS = $(TRGT)gcc -x assembler-with-cpp
    OD = $(TRGT)objdump
    SZ = $(TRGT)size
    HEX = $(CP) -O ihex
    BIN = $(CP) -O binary

    # ARM-specific options here
    AOPT =

    # THUMB-specific options here
    TOPT = -mthumb -DTHUMB

    # Define C warning options here
    CWARN = -Wall -Wextra -Wstrict-prototypes

    # Define C++ warning options here
    CPPWARN = -Wall -Wextra

    #
    # Compiler settings
    ##############################################################################

    ##############################################################################
    # Start of default section
    #

    # List all default C defines here, like -D_DEBUG=1
    DDEFS =

    # List all default ASM defines here, like -D_DEBUG=1
    DADEFS =

    # List all default directories to look for include files here
    DINCDIR =

    # List the default directory to look for the libraries here
    DLIBDIR =

    # List all default libraries here
    DLIBS =

    #
    # End of default section
    ##############################################################################

    ##############################################################################
    # Start of user section
    #

    # List all user C define here, like -D_DEBUG=1
    UDEFS =

    # Define ASM defines here
    UADEFS =

    # List all user directories here
    UINCDIR =

    # List the user directory to look for the libraries here
    ULIBDIR =

    # List all user libraries here
    ULIBS =

    #
    # End of user defines
    ##############################################################################

    RULESPATH = $(CHIBIOS)/os/ports/GCC/ARMCMx
    include $(RULESPATH)/rules.mk

    What could be wrong? Microsd card is partitioned in FAT and there is also test.txt file on it which i would like to read. P.S i'm using Open407V-D development board(http://www.wvshare.com/product/Open407V-D-Standard.htm) which has a SDIO socket.

×
×
  • Create New...