Перейти к содержанию
    

Desenix

Участник
  • Постов

    110
  • Зарегистрирован

  • Посещение

Сообщения, опубликованные Desenix


  1. Попахивает тем, что все шагают не в ногу, кроме одного Desenix :(.

    Ну а категорическое неприятие чтения документации, в которой, кстати и по поводу выбора в конфигурации трех образчиков менеджеров все сказано в документации и раздел называется

    User Documentation->Configuration->Memory Management (ну очень "неожиданное название" да???).

    В сочетании с амбициями собравщего аж цельный WinCE в визарде ) отбивает всякое желание чего-либо объяснять. Ламеризм это называется :( .За сим раскланиваюсь.

    Moderator:

    Тему перенес в раздел для начинающих.

    да вы правы, тут стало пованивать так же как и в телесистемах, когда вместо ответа на вопрос, все стремяться обосрать вопрошавшего, ну да бывает, моральное уродство в наше время сильно распространено.

  2. Перечитал. Полностью согласен с Сергеем.
    попахивает двойными стандартами, для своих и для чужих.

    Какое тут изучение ОС, когда Вы даже проект собрать не можете, а уже рветесь править эту самую ОС напильником?
    похоже со стенкой общаюсь.
  3. Ничего подобного заявлено не было. Если Вам не знакомы слова free, malloc и heap, то остается только отослать к букварю.
    перечитайте его реплику и цитату которую он привел, и подойдите к этому формально, все сразу станет на свои места. А слова я эти использовал, но только при программировании на PC, в контроллерах я их никогда не использую, ибо вред.

    Если бы Вы все сразу разложили по полочкам, то необходимости создавать эту дурнейшую тему просто не возникло бы.
    дурной ее сделали дурные советы, тема как раз для начинающих изучать ОС, всегда сначало хочется что то попробовать, а потом использовать. Поэтому я тему и создал с расчетом что еще кому нибудь понадобится, но отдельные личности постарались в помойку все превратить.
  4. Элементарные знания говорят, что какой-то из этих файлов подключить нужно, раз уж линкер ругается на malloc/free. Какой именно, можно уточнить, если снизойти до чтения раздела Configuration->Memory Management документации.
    нет уж, извольте указать в какой части букваря "(глава 4 букваря Кернигана и Ритчи) " сказано какой файл выборать heap_1.c heap_2.c heap_3.c, ведь это было заявлено. Не недо "гениев" защищать.

    Оскорбление общественности и конкретных лиц начали именно Вы.
    Мои слова относились к флудерам, коих сюда много набежало. Я сразу все разложил по полочкам и спросил каких файлов не хватает для счастья, вместо этого меня начали обсуждать, мне это терпеть ?

    я не собираюсь ничего терпеть, нечего сказать, лучше промолчать, иначе получите то же самое в ответ.

  5. Со стороны это выглядит примерно так:

     

    - Я крут, всем бояться:- Все козлы, понаписали какую-то ..ню, нифига не компилится:А выясняется, что элементарных знаний (глава 4 букваря Кернигана и Ритчи) то и нет, но все равно все козлы:

     

    Не волнуйтесь, ваши темы больше не буду "загаживать" даже если и будет что сказать. Успехов в компиляции.

    раньше думал вы умный, а теперь разочаровался, ну да ладно, люди не идеальны, дураки везде есть :)

    1. Всех козлами вы сами назвали, а это уже оскорбление общественности.

    2. т.е. элементарные знания говорят какой трех фалов heap_1.c heap_2.c heap_3.c надо подключить к проекту на LPC ? ссылку в студию. Этому видимо учат в школе, а я видимо урок прогулял. Неужели в школах уже гениев выпускают ?)

    "(глава 4 букваря Кернигана и Ритчи) " - там FreeRTOS рассматривают ? не знал не знал, как будет вермя почитаю :)

    3. да уж, потрудитесь более не флудить, а то когда мне тут что то надо, я почти ни когда тут не получал ответа, тем более от вас, зато флуду предостаточно.

  6. :) :) :) "Проблему" Вы решите, когда проект будет РАБОТАТЬ, а не "собираться".

    На данный момент просто детский сад - кастрироване в ядре всего, что "не собирается" к созданию работоспособного ядра и решению каких-бы то ни было "проблем" никакого отношения не имеет.

    P.S.

    Поскольку я работаю с ядром базирующемся на FreeRTOS, собираю его IAR и V4, и V5 и использую его на LPC21/22/23/24xx я отлично знаю о чем говорю.

    когда у меня встанет вопрос его работоспособности, я создам другую тему, ибо заголовок этой говорит о проблеме сборки ядра (проекта)

    И ядро я не кастрировал, а собрал со всеми файлами, по началу я некоторые исключал, с целью поиска ошибки, об чем и отписал.

    А хвастаться я тоже могу, WinCE на трех процессорах собирал и запускал, при этом дрова править местами серьезно приходилось. Только ни ВинЦЕ ни линух в LPC23xx не залезут.

     

    Да, вот залез в port.c для LPC, смотрю как прерывание таймера 0 захватывается, так написано, что или все железо там надо инициализировать или переписать его нафиг, ибо сделано все топорно. Этот захват или учитывать придется в своих драйверах, или переделать под свои драйвера. Видимо сделаю последнее.

  7. Moderator:

    Непрерывным флудом заниаетесь здесь Вы. Если чего-то совсем не получается - прочтите, наконец, документацию.

    странно, я решил проблему, написал как, а меня тут продолжают поучать, и ни на один вопрос ответа не дав, посылать читать док-ю, равносильно просто послать, чего и вам желаю, нет желания отвечать, м.б. лучше промолчать ??? не находите ваша политика - это политика флудера ?

  8. Ну вот и разберитесь что, для чего вы скачали
    скачал http://sourceforge.net/project/showfiles.p...ckage_id=120544

    там уже 5.0.3 есть

    и как это оно друг с другом и Вашим контроллером соотносится.
    как как, порт под LPC2xxx есть, разве еще что-то надо ? дрова я пользовать тамошние не собираюсь, примеры проектов так же.

    А ситуация такова

    - Под IAR V5 никакого порта FreeRTOS нет

    - И под IAR V4 тоже порта LPC23xx нет.

    а разве есть разница для этой ОС между IAR 4 и 5 ? По моему кроме файлов настроек проекта самого IAR ни какой разницы, а проект я с нуля свой создал. Вы готовый проект искали под используемый компилятор ?

    Что Вы там могли нагородить с подходом
    нормальный подход, раз в демо-исходниках ОС есть проект под LPC2368, то я содрал оттуда настройки и их пользовал, один только нюанс, я не знал какие файлы надо подключать к проекту, док-ии по этому поводу не нашел, ни кто на этом форуме мне ничего по этому поводу не подсказал.

    Один Аллах ведает :(
    и я :)

    Сделать-то проблем нет, только надо хоть немного чего-то знать и думать, а не шашкой размахивать.
    не люблю переливать из пустого в порожнее, проект не собирался, спросил что еще надо подключить, а меня тут поучают.

     

    Сначало на вопросы бы ответили, а потом бы поучали.

    Многие хвалятся что знают эту ОС, а хоть кто-то написал по пунктам как проект собрать, не зависимо от компилятора и контроллера ?

    а именно,

    1) какие файлы необходимо включать в проект и их комбинации в зависимости от компилятора и контроллера, и от конфигурации.

    2) взаимосвязь модулей ОС между собой, кто кого и по какому случаю вызывает, в виде граф. структуры.

    3) распределение памяти в ОС

    итд

    для начала достаточно п.1.

  9. Какие аппетиты??? Это память для ваших же задач.
    в настройках что я скопировал, чет многовато под кучу памяти выделяют.

    Правильно: разбираться не хотим, документацию (которой якобы нет) читать не хотим, будем крутить настройки. Или подождем, когда дядя Билли визард напишет? :)
    та его визардами только обезьян пугать :) разбираться хотим, там утрамбовано как-то не логично, по сути не вижу толковых документов, в основном API описаны.

    IAR, а не FreeRTOS.
    IAR ARM я 5.2 скачал, а FreeRTOS 5.0.2 где скачал не помню, файл называется FreeRTOSV5.0.2.zip
  10. FreeRTOS'у куча нужна только под TCB и стеки задач, раз уж очереди не используются. В дальнейшем пользоваться ей никто не заставляет.
    хорошо если так, тогда я поурежу ему аппетиты, а то мне буфера нужны будут большие.

    Если нужна именно тупая переключалка, то возьмите куски из \portable и пользуйтесь на здоровье.
    та зачем в чужом коде разбираться, вырезая куски, лучше настройками ОС лишнее по отключать.

     

    Ну и толку в этом? Для сборки под пятой версией сначала документ по миграции c V4.x почитайте, а потом шумите. Еще разберитесь в отличии LPC21xx от LPC23xx....
    а зачем его читать ? я сразу 5.0.2 и скачал, ни куда ни откуда не мигрировал :)
  11. из вас помощники как из меня балерина

    в portasm.s79

    закоментировал

    //#include "FreeRTOSConfig.h"

    и проект собрался,

    еще добавил heap_2.c

    не знаю тот или не тот, не важно, потом разберусь.

     

    PS: тут случаем ни кто икону дяди билла не молится ? :)

  12. А на какие ошибки, по-вашему, следует в первую очередь обращать внимание?

    Если ассемблер обломался на компиляции, то уж линкер тем более упадет, когда не сможет найти нужные метки.

    по ассемблеру я не вижу откуда проблема появляется, там такие файлы не инклудятся, и ошибка явно глюк компилятора.

    Аппаратная поддержка кучи (heap)? С MMU не путаете?
    не путаю, нормальную кучу лучше с MMU совместно пользовать, а то сильно дырявый сыр получится.

    Если уж Вы собираетесь перелопачивать FreeRTOS под свои нужды, то подобных вопросов (ошибки линкера, ассемблера etc) возникать не должно в принципе.
    судя по скудной док-ии, я быстрее напишу тупую переключалку сам.

     

    Все вокруг плохие, один я хороший. Не нравится FreeRTOS - не используй. Если требует много ресурсов - есть scmRTOS, уж компактнее, наверное, не бывает, или tnkernel, или еще куча чего. А когда человек готовый проект не может собрать, тут уж чего скажешь?
    где вы видели готовый проект под LPC2368 для IAR ARM 5.2 ???

    а готовое под IAR не конвертится в IAR ARM 5.2

    и потом, сегодня первый раз сел посмотреть что это за ...

    и уже прыгать на другое ?

    может сразу свое писать ? чтоб не терять время.

  13. лучше б что по делу сообщили.

    :07: Тогда почему удивляетесь, что лезут ошибки линковщика?
    потому что выбор не большой, или ошибки линковщика, или компилятора

    portasm.s79

    Error[3]: Invalid #include file name C:\Program Files\IAR Systems\Embedded Workbench 5.2 Evaluation\ARM\INC\DLib_Defaults.h 41

    Error while running Assembler

    ругается на эту строку

    #include _DLIB_CONFIG_FILE_HEADER_NAME

    файла DLib_Defaults.h

    Зато автор FreeRTOS не считает извращением и использует. Отсюда и:
    это он пускай сколько влезет использует, когда есть аппаратная поддержка, а когда нет, изволь отключить, а мне от его оси только переключалка нужна.
  14. в наличии

    IAR ARM 5.2 (30 дневная)

    FreeRTOS 5.0.2

    процессор типа LPC2368

     

    в проекте подключены файлы:

    croutine.c

    list.c

    port.c

    queue.c

    tasks.c

     

    еще мой main.c

     

    конфиг оси взял из демо проекта, в опциях компилятора указал LPC2000_IAR

    пока в моей функции main не делаю вызовов API OS, проблем нет,

    как только вставлю vTaskStartScheduler();

    в int main()

    лезут ошибки линковщика

     

    Error[Li005]: no definition for "vPortFree" [referenced from D:\Project\Cnt-FreeRTOS\Debug\Obj\tasks.o]

    Error[Li005]: no definition for "vPortStartFirstTask" [referenced from D:\Project\Cnt-FreeRTOS\Debug\Obj\port.o]

    Error[Li005]: no definition for "vPortPreemptiveTickEntry" [referenced from D:\Project\Cnt-FreeRTOS\Debug\Obj\port.o]

    Error[Li005]: no definition for "pvPortMalloc" [referenced from D:\Project\Cnt-FreeRTOS\Debug\Obj\tasks.o]

    Error while running Linker

     

    поискал функцию vPortFree

    она есть только в port.c для PIC18 и AVR32

     

    надо еще что то подключить ?

     

    и не нашел в документации, какие файлы для данного порта подключать в проект.

    Так например при подключении portasm.s79 лезут ошибки, пока выкинул.

     

    PS: мне от ОСи нужен только переключатель задач, всякое динамическое выделение памяти на контроллере без аппаратной поддержки динамического распределения, считаю извращением и использовать не планирую. Так же не нужны очереди, т.к. буду свои писать, более приспособленные под мою задачу.

  15. если сравнить

    J-TRACE-ARM-2M

    и

    J-LINK

    то станет понятно чем они по возможностям отличаются,

    вот только J-TRACE-ARM-2M стоит не гуманных денег :)

    А точки останова умеет добавлять не отладчик, а скорее драйвер, бо он прошивку правит перед заливкой.

  16. если хоть что то выводит, значит с большой вероятностью контроллер правильно настроил, а если не то что надо, значит неверно указал адрес FrameBuffer или он не верно заполнен информацией.

    PS: с этим контроллером не работал.

  17. Хотелось бы тут увидеть какой нить обзор по внутрисхемным отладчикам для ARM7/ARM9. Задумался о выборе.

    Интересует:

    Число точек останова поддержанных самим отладчиком

    Возможности отладчика

    Глючность дров/железа

    Гибкость настроек

    Цена и возможность купить.

  18. ну да, еще стандартный startup забыл приложить, забыл сказать, использовал IAR

     

    ;-----------------------------------------------------------------------------
    ; This file contains the startup code used by the ICCARM C compiler.
    ;
    ; The modules in this file are included in the libraries, and may be replaced
    ; by any user-defined modules that define the PUBLIC symbol _program_start or
    ; a user defined start symbol.
    ; To override the cstartup defined in the library, simply add your modified
    ; version to the workbench project.
    ;
    ; All code in the modules (except ?RESET) will be placed in the ICODE segment.
    ;
    ; $Revision: 1.2 $
    ;
    ;-----------------------------------------------------------------------------
        
    ;
    ; Naming covention of labels in this file:
    ;
    ;  ?xxx      - External labels only accessed from assembler.
    ;  __xxx  - External labels accessed from or defined in C.
    ;  xxx      - Labels local to one module (note: this file contains
    ;           several modules).
    ;  main      - The starting point of the user program.
    ;
    
    ;---------------------------------------------------------------
    ; Macros and definitions for the whole file
    ;---------------------------------------------------------------
    
    ; Mode, correspords to bits 0-5 in CPSR
    MODE_BITS    DEFINE    0x1F    ; Bit mask for mode bits in CPSR
    USR_MODE    DEFINE    0x10    ; User mode
    FIQ_MODE    DEFINE    0x11    ; Fast Interrupt Request mode
    IRQ_MODE    DEFINE    0x12    ; Interrupt Request mode
    SVC_MODE    DEFINE    0x13    ; Supervisor mode
    ABT_MODE    DEFINE    0x17    ; Abort mode
    UND_MODE    DEFINE    0x1B    ; Undefined Instruction mode
    SYS_MODE    DEFINE    0x1F    ; System mode
        
    ;---------------------------------------------------------------
    ; ?RESET
    ; Reset Vector.
    ; Normally, segment INTVEC is linked at address 0.
    ; For debugging purposes, INTVEC may be placed at other
    ; addresses.
    ; A debugger that honors the entry point will start the
    ; program in a normal way even if INTVEC is not at address 0.
    ;---------------------------------------------------------------
    
            MODULE    ?RESET
            COMMON    INTVEC:CODE:NOROOT(2)
            PUBLIC  __program_start
            EXTERN    ?cstartup
    ;        EXTERN    undef_handler, swi_handler, prefetch_handler
    ;        EXTERN    data_handler, fiq_handler
            EXTERN    irq_handler
            CODE32; Always ARM mode after reset    
            org    0x00
    __program_start
            ldr    pc,=?cstartup ; Absolute jump can reach 4 GByte
    ;        ldr    b,?cstartup   ; Relative branch allows remap, limited to 32 MByte
            org    0x04
    undef_handler    ldr    pc,=undef_handler
            org    0x08
    swi_handler    ldr    pc,=swi_handler
            org    0x0c
    prefetch_handler ldr    pc,=prefetch_handler
            org    0x10
    data_handler    ldr    pc,=data_handler
            org    0x18
            ldr    pc,=irq_handler
            org    0x1c
    fiq_handler    ldr    pc,=fiq_handler
    
        ; Constant table entries (for ldr pc) will be placed at 0x20
            org    0x20
            LTORG
    ;        ENDMOD    __program_start
                    ENDMOD
    
    ;---------------------------------------------------------------
    ; ?CSTARTUP
    ;---------------------------------------------------------------
            MODULE    ?CSTARTUP
    
            RSEG    IRQ_STACK:DATA(2)
            RSEG    SVC_STACK:DATA:NOROOT(2)
            RSEG    CSTACK:DATA(2)
            RSEG    ICODE:CODE:NOROOT(4)
            PUBLIC    ?cstartup
            EXTERN    ?main
    
    ; Execution starts here.
    ; After a reset, the mode is ARM, Supervisor, interrupts disabled.
    
            CODE32
    ?cstartup
    
    ; Add initialization nedded before setup of stackpointers here
    
    
    ; Initialize the stack pointers.
    ; The pattern below can be used for any of the exception stacks:
    ; FIQ, IRQ, SVC, ABT, UND, SYS.
    ; The USR mode uses the same stack as SYS.
    ; The stack segments must be defined in the linker command file,
    ; and be declared above.
                    mrs     r0,cpsr                            ; Original PSR value
                    bic     r0,r0,#MODE_BITS                   ; Clear the mode bits
                    orr     r0,r0,#IRQ_MODE                    ; Set IRQ mode bits
                    msr     cpsr_c,r0                          ; Change the mode
                    ldr     sp,=SFE(IRQ_STACK) & 0xFFFFFFF8    ; End of IRQ_STACK
    
                    bic     r0,r0,#MODE_BITS                   ; Clear the mode bits
                    orr     r0,r0,#SYS_MODE                    ; Set System mode bits
                    msr     cpsr_c,r0                          ; Change the mode
                    ldr     sp,=SFE(CSTACK) & 0xFFFFFFF8       ; End of CSTACK
    
    #ifdef __ARMVFP__
    ; Enable the VFP coprocessor.
                    mov     r0, #0x40000000                ; Set EN bit in VFP
                    fmxr    fpexc, r0                      ; FPEXC, clear others.
    
    ; Disable underflow exceptions by setting flush to zero mode.
    ; For full IEEE 754 underflow compliance this code should be removed
    ; and the appropriate exception handler installed.
                    mov     r0, #0x01000000               ; Set FZ bit in VFP
                    fmxr    fpscr, r0                      ; FPSCR, clear others.
    #endif
    
    ; Add more initialization here
    
    ; Continue to ?main for more IAR specific system startup
    
                    ldr     r0,=?main
                    bx      r0
    
                    LTORG
                    ENDMOD
                    END

  19. по поводу фрагментации, у меня еще мысль возникла, если использовать не просто прямой указатель на блок памяти, а указатель на указатель. Тогда второй(системный) можно перемещать вместе с блоком памяти, а первый(пользовательский) изменятся не будет. Правда все это надо учесть при написании кода.

  20. с данной ОС совсем не знаком, но тут прочитал что у нее есть менеджер памяти, а кто нибудь может кратенько объяснить как он устроен ? я не представляю себе такой менеджер без поддержки MMU в процессоре. Ведь фрагментация возникать должна, а как с ней бороться ? если указатели уже розданы задачам.

    PS: подумываю об использовании ОС.

  21. для армов EP9312, S3C2410, LPC2368 всегда писал и инициализировал обработчики прерывания сам, а не полагался на среду разработки, и не имел проблем.

    Если вы не хотите изучать тонкости процессора, то зачем вы взялись его программировать ?

    Отдайте эту задачу системному программисту, а сами пишите только пользовательский уровень.

     

    Изучите как работает контроллер прерываний, как и что в нем надо инициализировать, как надо построить обработчик прерываний, что надо инициализировать в переферии для разрешения прерываний итд.

     

    На самом деле контроллер в ARM хоть и "крутой", но мне кажется немного не доинтегрирован в ядро, в идеале надо было, чтоб не обработчик обрабатывал переход по адресу, а само ядро аппаратно.

     

    на всякий случай кусок кода, правда там таймер и Ethernet, но думаю суть понятна будет, главное что камень EP9312

     

    // Interrupt handlers.
    void TimerInterrupt()
    {
      (*timer_function)(); // Call timer callback function.
      Timer3Clear = 0x0; // Clear timer 3 interrupt line.
    }
    
    // IRQ interrupt handler.
    // Only the timer interrupt is used by this example.
    __irq __arm void irq_handler(void)
    {
      void (*interrupt_function)();
      unsigned int vector;
      // Called at 1000 Hz rate.
      vector = VIC2VectAddr; // Get interrupt vector.
      interrupt_function = (void(*)())vector;
      (*interrupt_function)(); // Call vectored interrupt function.
      VIC2VectAddr = 0; // Clear interrupt in VIC.
    }
    
    // Interrupt functions.
    void EP9312InitInterrupt(void(*timer_func)())
    {
      // Setup timer callback function.
      timer_function = timer_func;
    
      // Setup interrupt controller.
      VIC1Protection = 0;
      VIC2Protection = 0;
      // Disable all interrupts
      VIC1IntEnClear = 0xffffffff;
      VIC2IntEnClear = 0xffffffff;
    
      VIC2IntSelect &= ~TC3OI_bit; // IRQ on timer 3 line.
      VIC2VectAddr0 = (unsigned int)&TimerInterrupt;
      VIC2VectCntl0 = 0x20 | VIC2_TC3OI; // Enable vector interrupt for timer 3.
      VIC2IntEnable |= TC3OI_bit; // Enable timer 3 interrupt.
    
      VIC2IntSelect &= ~TC39OI_bit; // IRQ on MAC line.
      VIC2VectAddr1 = (unsigned int)&InterruptMac;
      VIC2VectCntl1 = 0x20 | VIC2_INT_MAC; // Enable vector interrupt for MAC.
      VIC2IntEnable |= TC39OI_bit; // Enable MAC interrupt.
    }

  22. какое-то время назад баловался камнями LPC2368/78, и китом на LPC2378, загружал примеры и пробовал, вроде как работали, но мне понадобилось через SSP по DMA передавать пакеты разной длины, загрузил я пример SSP.c - копирование одного блока памяти в другой через петлю на SSP, компильнул, запускаю, работает, смотрю в отладчике кусок памяти в 256 байт копируется. Далее поколдовал над кодом, сделал скажем 100 байт, запускаю, а эта зараза опять 256 копирует, и так с любыми меньшими значениями.

     

    Собственно вопрос, возможно ли DMA SSP канал запрограммировать на меньшее значение ?

    Если нет, то это баг или фича камешка ? в DS в своё время не нашел ничего.

     

    И просьба, если у кого есть возможность поковырять пример из IAR для SSP, проверить возможность передачи меньших объёмов. У меня в данный момент нет доступа к киту и проверить сам не могу.

     

    Для чего мне это нужно, есть мысль команды и данные во внешнюю flash передавать в пакетном режиме, а не побайтово, на что тратится много процессорного времени.

    Да и возник вопрос выбора камня под новый проект, если DMA все таки с недоработкой, то от камешка скорее всего откажусь.

  23. Кто работал с ADE7569, ADE7566, ADE7169, ADE7166 ???

    Купили под разработку несколько штук ADE7569, контроллер работает, а каналы измерения молчат, разве что шамана не вызывали, есть подозрения что подсунули не серийные образцы, а тестовые, которым место в помойке.

     

    Слышал что народ брал эти МС для разработок, но менеджеры не сознаются кто, хотелось бы узнать, как у других идут дела, что-то получается ?

    Если да, то где покупали, или что делали ?

×
×
  • Создать...