Elektroda.pl
Elektroda.pl
X

Wyszukiwarki naszych partnerów

Wyszukaj w ofercie 200 tys. produktów TME
Europejski lider sprzedaży techniki i elektroniki.
Proszę, dodaj wyjątek elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

lwip - kompilacja i konfiguracja

miro1024 20 Wrz 2011 21:17 2703 27
  • #1 20 Wrz 2011 21:17
    miro1024
    Poziom 8  

    Opis problemu:
    Po ściągnięciu biblioteki lwip 1.3.2 próbuję ją skompilować wg domyślnych ustawień. Niestety nie wychodzi...
    1.pliki headery generalnie są umieszczone w folderze include->lwip oraz odwołują się do siebie (jeden .h wywołuje drugiego .h) inkludując
    w sposób:

    Code:
    #include "lwip/opt.h"

    lwip - kompilacja i konfiguracja


    efekt podczas kompilacji to oczywiście
    Cytat:
    no such file ...
    . Pliki te powinny się wywoływać w sposób
    Code:
    #include "opt.h"
    bo wszystkie są w tym samym katalogu i rzeczywiście jak tak zrobie to działa - problem w tym, takie coś należałoby zrobić we wszystkich plikach .h z czym jest mnustwo roboty. Zapewne da się to zrobić inaczej - po prostu czegoś nie wiem. Byłbym wdzięczny za wskazówki dt. kompilacji tejże biblioteki.
    2. wyskakują błędy typu: nieznajomość
    Cytat:
    u8_t
    u16_t ..

    czy do tej biblioteki należy dołączyć plik <stdint.h> i podmienić jej u8_t na uint8_t ?

  • Pomocny post
    #2 20 Wrz 2011 21:31
    paw789
    Poziom 18  

    Dodaj scieżkę dostępu do folderu lwip z projektu: prawym przyciskiem na folder projektu "Example_OpenSource" -> Properties -> C/C++ Build -> Settings -> Tool Settings -> Directories w okienkku "Include paths" masz scieżki dostępu do folderów z plikami które są używane w projekcie, dodaj tam folder lwip z Twojego projektu.

    Co do braku "u8_t"... to pewnie brakuje jakiegoś pliku z deklaracjami typów zmiennych. Sprawdź czy w którymś z plików w lwip nie są zdefiniowane te typy zmiennych. Na szybko możesz sam stworzyc te typy poprzez typedef.

  • #3 20 Wrz 2011 22:10
    miro1024
    Poziom 8  

    lwip - kompilacja i konfiguracja

    ale dalej to samo..
    próbowałem z zewnęrznego folderu -z poza projektu - z podobnym skutkiem
    lwip - kompilacja i konfiguracja

    #include "../lwip/opt.h" wtedy też kompiluje, ale nie chce ruszać tych plików

  • Pomocny post
    #4 20 Wrz 2011 22:43
    Freddie Chopin
    Specjalista - Mikrokontrolery

    Dodaj do include directories katalog główny projektu, a nie podfolder lwip.

    4\/3!!

  • #5 29 Wrz 2011 17:29
    miro1024
    Poziom 8  

    1.Próbuję skonfigurować ową bibliotekę. Przetestowane funkcje

    Code:
    void enc28j60PacketSend(U16 len, U08* packet)
    
    unsigned int enc28j60PacketReceive(U16 maxlen, U08* packet)

    zajmujące się bezpośrednio wysyłaniem i odbieraniem ramek ethernetowych działają ok. Z opisu biblioteki lwip czytam że należy je 'podłączyć' pod stos. I tak stos wysłając spreparowaną ramkę powinien użyć funkcji low_level_output
    Napisałem taką na podst.

    Kod: c
    Zaloguj się, aby zobaczyć kod

    http://www.koders.com/c/fidFE7A631BF76B7665FBF552EB8D9EA16CBB39E303.aspx?s=crc
    Zastanawiam się czy aby na pewno jest ona dobrze napisana tzn. cała ramka do wysłania będzie/może byc trzymana w łańcuchu buforów pbuf z których ostatni ma pole next ustawione na null a wiec tak zaimplementowana funkcja nie wyśle danych z ostatniego bufora (warunek w pętli for). Czy to błędnie?

    2. Czy stos posiada własny timer do odmierzania czasu czy też trzeba jakis samemu napisać. Czy w ogóle jest konieczny?

  • #6 29 Wrz 2011 17:41
    Freddie Chopin
    Specjalista - Mikrokontrolery

    miro1024 napisał:
    Zastanawiam się czy aby na pewno jest ona dobrze napisana tzn. cała ramka do wysłania będzie/może byc trzymana w łańcuchu buforów pbuf z których ostatni ma pole next ustawione na null a wiec tak zaimplementowana funkcja nie wyśle danych z ostatniego bufora (warunek w pętli for). Czy to błędnie?

    Mieszają mi się w oczach literki "p" i "q", ale generalnie dane zostaną wysłane, bo najpierw sprawdzany jest warunek, czy to na co wskazujesz TERAZ istnieje (a istnieje, bo jest to ostatni element), potem następuje przesunięcie wskaźnika i w tym momencie ma on wartość NULL. Do kolejnego obiegu pętli już nie wejdzie, bo warunek nie będzie spełniony.

    4\/3!!

  • #7 29 Wrz 2011 18:39
    miro1024
    Poziom 8  

    Code:
    struct pbuf {
    
      /** next pbuf in singly linked pbuf chain */
      struct pbuf *next;

      /** pointer to the actual data in the buffer */
      void *payload;
      ..

    Załóżmy, że mamy 3 bufory odpowiednio buf1(100),buf2(200),buf3(300).
    W nawiasie przykł. adres początku początku każdego z buforów. Pola next w każdym z buforów są wypełnione:
    buf1.next=200;
    buf2.next=300;
    buf3.next=null;
    Wywołanie funkcji: (jako argument podany jest adres buf1)
    a.spr. warunek: pole buf1.next=200 a wiec różne od null - petla wykonana a na koniec 'wchodzimy' na bufor buf2
    b.spr. wrunek: pole buf2.next=300;a wiec różne od null - petla wykonana a na koniec 'wchodzimy' na bufor buf3
    c. spr. warunek: buf3.next=null; ..... dane z buf3. nie wysłane
    ------
    ok, przeciez to nie pole next jest sprawdzane.

  • #9 05 Paź 2011 21:26
    miro1024
    Poziom 8  

    Udało się skompilować lwip i ... nagle przerwania przestały działać. Proc. lpc2148 Startup.S plik .ld i vector.S brałem z jakiegoś innego projektu z sieci (na mniejszy proc lpc zmieniając jedynie rozmiar sekcji ram rom) zapewne tu jest problem. Znalazłem na sieci projekt typowo pod LPC2148
    http://gudjon.org/electronics/source_code/lpc2148-r2_examples/rs232/
    wziąłem rozbiegówkę ale kompilator wyrzucił

    Kod: c
    Zaloguj się, aby zobaczyć kod
    [code]
    O jaki adres może mu chodzić?

  • #10 05 Paź 2011 21:47
    Freddie Chopin
    Specjalista - Mikrokontrolery

    miro1024 napisał:
    Udało się skompilować lwip i ... nagle przerwania przestały działać. Proc. lpc2148 Startup.S plik .ld i vector.S brałem z jakiegoś innego projektu z sieci (na mniejszy proc lpc zmieniając jedynie rozmiar sekcji ram rom) zapewne tu jest problem.

    Nie wiem jakim sposobem coś takiego mogłoby być problemem. Możesz wziąć te pliki z mojego przykładowego projektu dla LPC2103 - do pobrania z mojej strony.

    4\/3!!

  • #11 09 Paź 2011 21:00
    miro1024
    Poziom 8  

    Tak Freddie Chopin, Twoja rozbiegówka LPC2103 po zmianie rozmiaru pamięci i przydzeleniu troche dla obsługi przerwań zadziałała.

    Code:
    MEMORY
    
    {
       rom (rx)   : org = 0x00000000, len = 512k
       ram (rwx)   : org = 0x40000000, len = 32k

    }

    __user_system_stack_size = 1024;
    __fiq_stack_size = 0;
    __irq_stack_size = 128;
    __supervisor_stack_size = 32;
    __abort_stack_size = 32;
    __undefined_stack_size = 32;

    Jednak od razu pojawił sie nowy problem nie związany póki co jeszcze z LWIP:

    Code:
    //----------------------------------
    
    main()
    {
    init();
     while(1)
        {

          if(!((50*sTimer.x50xMiniSecond) % 250))
          {
             FIO1SET|=1<<(16+1);
          }
        }
    }
    //----------------------------------
    typedef struct
    {
       volatile  uint32_t Hour;
       volatile uint8_t Minute;
       volatile uint8_t Second;
       volatile uint64_t x50xMiniSecond;
    }_sTimer;
    volatile _sTimer sTimer;


    opis:
    x50xMiniSecond jest uaktualniana w przerwaniu od timera1. Ten prosty przykład wysypuje sie do
    Code:
    __Default_Handler:
    
       b .

    Powodem jest sprawdzany warunek w if. Dziwne - bo faktycznie warunek jest złożony - sama zmienna jest 64b a proc 32b a do tego są przerwania włączone w trakcie sprawdzania, jednak w najgorszym przypadku spodziewałem sie błędu przy wyliczeniu warunku a nie zwieszenia systemu. Po usunięciu if'a program działa zgodnie z przypuszczeniem. Jest jakies logicznie wytłumaczenie?

  • #12 09 Paź 2011 23:08
    Freddie Chopin
    Specjalista - Mikrokontrolery

    Przypuszczalnie powodem takiego wyjątku jest niewyrównany dostęp do zmiennej. Nie wiem dlaczego jest niewyrównany, w listingu assemblera możesz sprawdzić spod jakiego adresu następuje odczyt.

    Aby to sprawdzić jeszcze szybciej, możesz spróbować odwrócić zawartość tej struktury - najpierw 64-bitowa zmienna, potem 32-bitowa, na końcu dwie 8-bitowe. Choć i to niekoniecznie musi pomóc, bo już pierwsza wersja powinna być automatycznie wyrównana prawidłowo. Wszystko zależy od opcji kompilacji oraz od pozostałych plików (linker, Makefile itd.). Co dokładnie wziąłeś z mojego przykładowego projektu?

    4\/3!!

  • #13 10 Paź 2011 06:54
    miro1024
    Poziom 8  

    Sprawdziłem wczoraj na szybkości jak się zachowa program przy zmianie zmiennej na 8bit i wtedy jest ok. Z Twojego projektu wziąłem Startup, Vector, i plik .ld.Wieczorem sprawdzę spod jakiego adresu odnosi się program do tej zmiennej.

  • #14 10 Paź 2011 09:13
    Freddie Chopin
    Specjalista - Mikrokontrolery
  • #16 10 Paź 2011 11:41
    Freddie Chopin
    Specjalista - Mikrokontrolery

    Tutaj nie ma się czym zajmować - uniwersalny Makefile działa bardzo dobrze w 99% przypadków.

    Jeśli koniecznie upierasz się przy tej wtyczce, to zrób make clean, potem make all i wrzuć cały log kompilacji. Możesz też sprawdzić, czy przypadkiem po make clean nie zaczęło działać <:

    4\/3!!

  • #17 10 Paź 2011 22:02
    miro1024
    Poziom 8  

    Make clean - nic nie dało.
    Przykłowy program w ujmujący problem:

    Kod: c
    Zaloguj się, aby zobaczyć kod


    Zrzut assemb.
    Code:

     90                if(!((sTimer.x50xMiniSecond) % 250))
    000004e0:   ldr r3, [pc, #116]      ; 0x55c <main+184>
    000004e4:   add r4, r3, #8
    000004e8:   ldm r4, {r3, r4}
    000004ec:   mov r0, r3
    000004f0:   mov r1, r4
    000004f4:   mov r2, #250    ; 0xfa
    000004f8:   mov r3, #0
    000004fc:   bl 0xd1c <__aeabi_uldivmod>
     94                if((sTimer.Second)%2)
    00000500:   ldr r3, [pc, #84]       ; 0x55c <main+184>
    00000504:   ldrb r3, [r3, #1]
    00000508:   and r3, r3, #255        ; 0xff
    0000050c:   and r3, r3, #1
    00000510:   and r3, r3, #255        ; 0xff
    00000514:   cmp r3, #0
    00000518:   beq 0x53c <main+152>
     96                   FIO1SET|=1<<(16+1);
    0000051c:   mvn r3, #16320  ; 0x3fc0
    00000520:   sub r3, r3, #-1073741817        ; 0xc0000007
    00000524:   mvn r2, #16320  ; 0x3fc0
    00000528:   sub r2, r2, #-1073741817        ; 0xc0000007
    0000052c:   ldr r2, [r2]
    00000530:   orr r2, r2, #131072     ; 0x20000
    00000534:   str r2, [r3]
    102           }


    A więc wyrównanie do 4 jest.

    Kompilacja:
    Cytat:
    **** Build of configuration Debug for project Example_OpenSource ****

    cs-make all
    Building file: ../LWIP_ticker.c
    Invoking: ARM Sourcery Windows GCC C Compiler
    arm-none-eabi-gcc -I"C:\Users\miro\Desktop\qq\Example_OpenSource" -O0 -Wall -std=gnu99 -Wa,-adhlns="LWIP_ticker.o.lst" -c -fmessage-length=0 -MMD -MP -MF"LWIP_ticker.d" -MT"LWIP_ticker.d" -mcpu=arm7tdmi-s -g3 -gdwarf-2 -o"LWIP_ticker.o" "../LWIP_ticker.c"
    Finished building: ../LWIP_ticker.c

    Building file: ../hw_SystemSetup.c
    Invoking: ARM Sourcery Windows GCC C Compiler
    arm-none-eabi-gcc -I"C:\Users\miro\Desktop\qq\Example_OpenSource" -O0 -Wall -std=gnu99 -Wa,-adhlns="hw_SystemSetup.o.lst" -c -fmessage-length=0 -MMD -MP -MF"hw_SystemSetup.d" -MT"hw_SystemSetup.d" -mcpu=arm7tdmi-s -g3 -gdwarf-2 -o"hw_SystemSetup.o" "../hw_SystemSetup.c"




    Finished building: ../hw_SystemSetup.c

    Building file: ../main.c
    Invoking: ARM Sourcery Windows GCC C Compiler
    arm-none-eabi-gcc -I"C:\Users\miro\Desktop\qq\Example_OpenSource" -O0 -Wall -std=gnu99 -Wa,-adhlns="main.o.lst" -c -fmessage-length=0 -MMD -MP -MF"main.d" -MT"main.d" -mcpu=arm7tdmi-s -g3 -gdwarf-2 -o"main.o" "../main.c"
    ../hw_SystemSetup.h:36: warning: 'mam_start' declared 'static' but never defined
    ../hw_SystemSetup.h:37: warning: 'pll_feed' declared 'static' but never defined
    ../hw_SystemSetup.h:38: warning: 'pll_start' declared 'static' but never defined
    Finished building: ../main.c

    Building file: ../startup.S
    Invoking: ARM Sourcery Windows GCC Assembler
    arm-none-eabi-gcc -x assembler-with-cpp -Wall -Wa,-adhlns="startup.o.lst" -c -fmessage-length=0 -MMD -MP -MF"startup.d" -MT"startup.d" -mcpu=arm7tdmi-s -g3 -gdwarf-2 -o"startup.o" "../startup.S"
    Finished building: ../startup.S

    Building file: ../syscalls.c
    Invoking: ARM Sourcery Windows GCC C Compiler
    arm-none-eabi-gcc -I"C:\Users\miro\Desktop\qq\Example_OpenSource" -O0 -Wall -std=gnu99 -Wa,-adhlns="syscalls.o.lst" -c -fmessage-length=0 -MMD -MP -MF"syscalls.d" -MT"syscalls.d" -mcpu=arm7tdmi-s -g3 -gdwarf-2 -o"syscalls.o" "../syscalls.c"
    Finished building: ../syscalls.c

    Building file: ../start_hardware/vectors.S
    Invoking: ARM Sourcery Windows GCC Assembler
    arm-none-eabi-gcc -x assembler-with-cpp -Wall -Wa,-adhlns="start_hardware/vectors.o.lst" -c -fmessage-length=0 -MMD -MP -MF"start_hardware/vectors.d" -MT"start_hardware/vectors.d" -mcpu=arm7tdmi-s -g3 -gdwarf-2 -o"start_hardware/vectors.o" "../start_hardware/vectors.S"
    Finished building: ../start_hardware/vectors.S

    Building file: ../.metadata/.plugins/org.eclipse.cdt.make.core/specs.c
    Invoking: ARM Sourcery Windows GCC C Compiler
    arm-none-eabi-gcc -I"C:\Users\miro\Desktop\qq\Example_OpenSource" -O0 -Wall -std=gnu99 -Wa,-adhlns=".metadata/.plugins/org.eclipse.cdt.make.core/specs.o.lst" -c -fmessage-length=0 -MMD -MP -MF".metadata/.plugins/org.eclipse.cdt.make.core/specs.d" -MT".metadata/.plugins/org.eclipse.cdt.make.core/specs.d" -mcpu=arm7tdmi-s -g3 -gdwarf-2 -o".metadata/.plugins/org.eclipse.cdt.make.core/specs.o" "../.metadata/.plugins/org.eclipse.cdt.make.core/specs.c"
    Finished building: ../.metadata/.plugins/org.eclipse.cdt.make.core/specs.c

    Building target: Example_OpenSource.elf
    Invoking: ARM Sourcery Windows GCC C Linker
    arm-none-eabi-gcc -T"C:\Users\miro\Desktop\ETH\Example_OpenSource\start_hardware\lpc2148_rom.ld" -nostartfiles -L"C:\Users\miro\Desktop\qq\Example_OpenSource" -Wl,-Map,Example_OpenSource.map -mcpu=arm7tdmi-s -g3 -gdwarf-2 -o"Example_OpenSource.elf" ./LWIP_ticker.o ./hw_SystemSetup.o ./main.o ./startup.o ./syscalls.o ./start_hardware/vectors.o ./.metadata/.plugins/org.eclipse.cdt.make.core/specs.o
    Finished building target: Example_OpenSource.elf

    Invoking: ARM Sourcery Windows GNU Create Flash Image
    arm-none-eabi-objcopy -O ihex -j .text -j .data Example_OpenSource.elf "Example_OpenSource.hex"
    Finished building: Example_OpenSource.hex

    Invoking: ARM Sourcery Windows GNU Create Listing
    arm-none-eabi-objdump -h -S Example_OpenSource.elf >"Example_OpenSource.lst"
    Finished building: Example_OpenSource.lst

    Invoking: ARM Sourcery Windows GNU Print Size
    arm-none-eabi-size --format=berkeley Example_OpenSource.elf
    text data bss dec hex filename
    9004 2128 1112 12244 2fd4 Example_OpenSource.elf
    Finished building: Example_OpenSource.siz


    Kompilator w wersji z 2010r.

  • #18 10 Paź 2011 22:06
    Freddie Chopin
    Specjalista - Mikrokontrolery

    Niekoniecznie jest wyrównanie - pokaż wartość spod adresu 0x55c - adres tej struktury.

    4\/3!!

  • #19 10 Paź 2011 22:29
    miro1024
    Poziom 8  

    Code:
    102           }
    
    00000558:   b 0x4e0 <main+60>
    0000055c:   mulmi r0, r0, r8
    115       {


    lwip - kompilacja i konfiguracja

    Nie za każdym razem się tak dzieje - tutaj np. 20cia kilka razy sprawdził warunek i sie nie wysypał(debbagowanie krokowe). Jednak wystarczy go puścić bez breakpointa i wiesza się zawsze (no chyba, że zmienie 64b na 8b )

  • #20 10 Paź 2011 22:47
    Freddie Chopin
    Specjalista - Mikrokontrolery

    Trochę słaba ta wartość, bo niekoniecznie jestem w stanie sobie ten rozkaz zakodować w pamięci <:

    Jak masz debugger, to możesz zatrzymać program na assemblerowych operacjach (breakpointem) i sprawdzić wartość z odpowiedniego rejestru.

    EDIT: skoro nie wiesza Ci się zawsze, to na pewno nie jest problem wyrównania. W tym momencie stawiałbym na problemy z przerwaniami. Wyłącz je i sprawdź czy też będzie się wykrzaczało.

    4\/3!!

  • #21 11 Paź 2011 18:56
    miro1024
    Poziom 8  

    Po wyłączeniu przerwań (w zasadzie tego jednego - bo tylko jedno było aktywne program nie wiesza się. I znowu wracam do kwestii rozbiegówki bo chyba tylko tam może cos być nie tak.

  • #22 11 Paź 2011 19:15
    Freddie Chopin
    Specjalista - Mikrokontrolery

    miro1024 napisał:
    Po wyłączeniu przerwań (w zasadzie tego jednego - bo tylko jedno było aktywne program nie wiesza się. I znowu wracam do kwestii rozbiegówki bo chyba tylko tam może cos być nie tak.

    Ciekawe założenie (; Jeśli wziąłeś przykład dla LPC2103 i zmieniłeś w nim tylko rozmiar stosu dla przerwań i używasz tego na LPC2148 to nic tam nie może być źle, bo niby co?

    Nie wiem jednak skąd przekonanie, że Twoja konfiguracja przerwań jest bezbłędna... Błędna jest na przykład deklaracja przerwania, bo powinna ona wyglądać tak:

    Kod: C
    Zaloguj się, aby zobaczyć kod


    Bez tego z przerwania wywołujesz zwyczajną funkcję, która chce wrócić "normalnie", a powinna zrobić to raczej "nienormalnie" [;

    Co najmniej tyle jest źle w tym co pokazałeś, a Ty szukasz już błędu wszędzie tylko nie u siebie.

    4\/3!!

  • #23 11 Paź 2011 19:37
    miro1024
    Poziom 8  

    Z tego co znalazłem na w necie dla LPC2148 jedna z rozbiegówek wyglądała tak:

    Code:
    MEMORY
    
    {
      flash         : ORIGIN = 0x00000000,
      ram         : ORIGIN = 0x40000200,

    W Twoim przykładzie: ram : ORIGIN = 0x40000000
    Ale nie to powoduje błąd.
    Kod: c
    Zaloguj się, aby zobaczyć kod

    oczywiście...
    Pisałem,że to podałem przykład ujmujący o co chodzi. Rozbiorę ten przykład na kawałki i znajde błąd

  • #24 11 Paź 2011 19:48
    Freddie Chopin
    Specjalista - Mikrokontrolery

    miro1024 napisał:
    Z tego co znalazłem na w necie dla LPC2148 jedna z rozbiegówek wyglądała tak:
    Code:
    MEMORY
    
    {
      flash         : ORIGIN = 0x00000000,
      ram         : ORIGIN = 0x40000200,

    Bez znaczenia. Ten skrypt linkera uwzględnia, że pierwsze ileśtam bajtów może być używane przez ISP, IAP, bootloader czy cośtam jeszcze - też widziałem takie skrypty i zupełnie nie wiem po co to niby jest. Jedyne co tam ma sens to zostawienie miejsca na końcu RAMu dla IAP, ale jak się go nie używa, to po co mu miejsce?

    Cytat:
    /* The boot loader uses RAM memory and we MUST NOT load variables or code in these areas. */
    /* */
    /* RAM used by boot loader: 0x40000120 - 0x400001FF (223 bytes) for ISP variables */
    /* 0x4000FFE0 - 0x4000FFFF (32 bytes) for ISP and IAP variables */
    /* 0x4000FEE0 - 0x4000FFDF (256 bytes) stack for ISP and IAP */


    Cytat:
    Pisałem,że to podałem przykład ujmujący o co chodzi. Rozbiorę ten przykład na kawałki i znajde błąd

    Wrzuć assemblera CAŁEGO przerwania, bo w starych wersjach kompilatorów były błędy z obsługą przerwań dla ARMv4. Teoretycznie to naprawili, ale nie wiemy jakiej wersji kompilatora używasz. Problemem - z tego co pamiętam (a było to dawno temu, więc mogę się mylić) - było dwukrotne przesunięcie o 4 adresu powrotu.

    4\/3!!

  • #25 11 Paź 2011 20:36
    miro1024
    Poziom 8  

    Dodałem przed tym warunkiem funkcję, która wprowadza opóźnienie i w zależności jakie to opóźnienie jest program sie wykrzacza lub nie. Czyli w zależności od częstości sprawdzania warunku program działa lub nie.
    Całość w C:

    Kod: c
    Zaloguj się, aby zobaczyć kod

    oraz jego assembler w zał.
    Sourcery G++ Lite 2010q1-188 4.4.1

  • #26 11 Paź 2011 21:12
    Freddie Chopin
    Specjalista - Mikrokontrolery

    Bug o którym pisałem wcześniej nie dotyczy tego kodu.

    Szukałbym jednak problemu nie w sprawdzaniu warunku, tylko w przerwaniach. Zmieniając częstotliwość sprawdzania warunku po prostu sprawiasz, że przerwanie trafia w problematyczne miejsce prędzej lub później.

    Twój kompilator jest już dosyć stary - proponuję zainstalować nową wersję i sprawdzić co to zmieni.

    4\/3!!

  • #27 12 Paź 2011 21:46
    miro1024
    Poziom 8  

    Przeinstalowałem i...
    kompilacja działających (w sensie dających się kompilować wer. z 2010)projektów wygląda;

    Code:
    **** Build of configuration Debug for project Example_OpenSource ****
    

    cs-make all


    czyli wogóle teraz nie chce kompilować, chociaż z linii komend działa:|

  • #28 23 Paź 2011 16:48
    miro1024
    Poziom 8  

    1.Pod win7 należy w eclipsie podać pełną ścieżkę cs-make w zakładne C/C++ Build jeśli chodzi o najnowszy kompilator (z 2011). W starszych wersjach działało samo
    cs-make.
    2. Opisywany powyżej problem sam się rozwiązał po zainstalowaniu nowej wersji kompilatora - czyli trzeba się pilnować bo są bugi.
    3. lwip zamieniam na stos microchipa także temat nie aktualny.

    Pzdr

 Szukaj w ofercie
Zamknij 
Wyszukaj w ofercie 200 tys. produktów TME