logo elektroda
logo elektroda
X
logo elektroda
REKLAMA
REKLAMA
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

mmc + nut/os problem

piotrbocian 25 Lut 2009 19:31 2424 6
REKLAMA
  • #1 6203928
    piotrbocian
    Poziom 10  
    Witam wszystkich, mam problem z kompilacja prostego programu uzywajacego systemu nut/os i karty MMC. Kiedy wklepuje kod z przykladu ze strony http://www.ethernut.de/en/documents/phat.html :
    
    #include <dev/nplmmc.h>
    
    (...)
    
    /* Register the MMC block device. */
    if (NutRegisterDevice(&devNplMmc0, 0, 0)) {
        /* Handle error */
    }


    i robie "make all" w WinAvr dostaje taki komunikat o bledzie:
    mc_phat.o: In function `NutAppMain':
    mmc_phat.c:(.text+0x6e): undefined reference to `devNplMmc0'
    mmc_phat.c:(.text+0x70): undefined reference to `devNplMmc0'
    

    Podejrzewam, ze problemem jest dodawanie bibliotek, ale nie wiem jak sprawdzic w czym dokladnie jest problem i tym bardziej jak go rozwiazac.

    Uzywam Ethernut 4.7.4 na plytce: http://www.propox.com/products/t_124.html?lang=pl , z nastepujacym plikiem konfiguracyjnym:

    
    
    PLATFORM = "MMNET01"
    AVR_GCC = ""
    MCU_ATMEGA128 = ""
    RTL_BASE_ADDR = "0xFF00"
    NUTMEM_START = "0x100"
    NUTMEM_RESERVED = "64"
    NUTXMEM_SIZE = "60928"
    NUTXMEM_START = "0x1100"
    NUT_CPU_FREQ = "16000000"


    Dziekuje z gory za wszelka pomoc,
    Pozdrawiam, Piotr
  • REKLAMA
  • #2 6204042
    elektryk
    Poziom 42  
    piotrbocian napisał:
    mc_phat.o: In function `NutAppMain':
    mmc_phat.c:(.text+0x6e): undefined reference to `devNplMmc0'
    mmc_phat.c:(.text+0x70): undefined reference to `devNplMmc0'
    
    To wygląda na błąd linkowania, ale uciąłeś kawałek z góry i nie mam pewności. Wygląda na to że powinieneś dołączyć podczas linkowania bibliotekę od PHAT.
  • REKLAMA
  • #3 6204199
    piotrbocian
    Poziom 10  
    Caly output:
    > "make.exe" all
    avr-gcc mmc_phat.o -mmcu=atmega128 -Wl,--defsym=main=0,-Map=mmc_phat.map,--cref -L../../nutbld/lib -Wl,--start-group ../../nutbld/lib/nutinit.o -lnutfs -lnutos -lnutcrt -lnutdev -lnutarch -lnutcontrib  -Wl,--end-group -o mmc_phat.elf
    mmc_phat.o: In function `NutAppMain':
    mmc_phat.c:(.text+0x6e): undefined reference to `devNplMmc0'
    mmc_phat.c:(.text+0x70): undefined reference to `devNplMmc0'
    make.exe: *** [mmc_phat.elf] Error 1
    
    > Process Exit Code: 2
    > Time Taken: 00:01


    Dolaczam biblioteke -lnutfs i chyba dziala bo nie wyrzuca bledu przy inicjalizacji phata tylko przy mmc...

    Dodano po 1 [minuty]:

    Caly kod programu:
    #include <stdio.h>
    #include <io.h>
    
    #include <cfg/arch.h>
    #include <dev/board.h>
    
    #include <sys/thread.h>
    #include <sys/timer.h>
    
    
    #include <dev/nplmmc.h>
    #include <fs/phatfs.h>
    
    
    int main(void)
    {
        u_long baud = 115200;
    
        /*
         * Register the UART device, open it, assign stdout to it and set 
         * the baudrate.
         */
        NutRegisterDevice(&DEV_UART, 0, 0);
        freopen(DEV_UART_NAME, "w", stdout);
        _ioctl(_fileno(stdout), UART_SETSPEED, &baud);
    
        puts("\nThread Test");
    
    	/* Register the PHAT file system. */
    	if (NutRegisterDevice(&devPhat0, 0, 0)) {
    		/* Handle error */
    	}
    	
    	
    	/* Register the MMC block device. */
    	if (NutRegisterDevice(&devNplMmc0, 0, 0)) {
    		/* Handle error */
    	}
    	
     
        /*
         * Endless loop in main thread.
         */
        for (;;) {
            putchar('M');
            NutSleep(125);
        }
        return 0;
    }
  • #4 6205757
    elektryk
    Poziom 42  
    A spróbuj ten projekt skompilować http://www.ethernut.de/arc/ftpd-phat.zip być może w makefile jest rozwiązanie, jeśli ten projekt się nie kompiluje, być może coś w konfiguracji systemu jest wyłączone.
  • REKLAMA
  • #5 6220884
    piotrbocian
    Poziom 10  
    Jesli zmienie w konfiguratorze
    Platform macro na ETHERNUT3
    i z takim ustawieniem skompiluje calego Nut/OS to wciaz dostaje ten sam blad.

    Czy da sie jakos podejrzec co dokladnie robi konfigurator nut/os gdy nacisne Build Nut/OS? Bo podejrzewam, ze nie kompiluje mi tego fragmentu kodu, ktory jest odpowiedzialny za obsluge karty pamieci i chcialbym to jakos sprawdzic.
  • REKLAMA
  • #6 6989583
    Przemek_100
    Poziom 11  
    Mi się wydaje ze masz biblioteke a nie masz w bibliotece obslugi tych kart. Zalozenia Ethernut1 nie obsluguje tych kart. Moze by nalezalo skompilowac jeszcze raz biblioteki, ale czy bedzie dzialac z ethernut01??. Jesli Ci sie udalo odpalic MMC na MNet01 to koniecznie daj znac to by byla super sprawa
  • #7 7239683
    Szafir84
    Poziom 12  
    Niestety z devNplMmc0 na Ethernucie1 to raczej nie da rady, bo devNplMmc0 nie wchodzi w skład Ethernut1 z ATmegą tylko w Ethernut3 z ARM-em. W wersji 4.8.4 w konfiguratorze pojawiły się chyba opcje programowego dostępu do MMC. Może za ich pomocą się uda.
REKLAMA