Desenix
-
Постов
110 -
Зарегистрирован
-
Посещение
Сообщения, опубликованные Desenix
-
-
попахивает двойными стандартами, для своих и для чужих.Перечитал. Полностью согласен с Сергеем.
похоже со стенкой общаюсь.Какое тут изучение ОС, когда Вы даже проект собрать не можете, а уже рветесь править эту самую ОС напильником? -
перечитайте его реплику и цитату которую он привел, и подойдите к этому формально, все сразу станет на свои места. А слова я эти использовал, но только при программировании на PC, в контроллерах я их никогда не использую, ибо вред.Ничего подобного заявлено не было. Если Вам не знакомы слова free, malloc и heap, то остается только отослать к букварю.
дурной ее сделали дурные советы, тема как раз для начинающих изучать ОС, всегда сначало хочется что то попробовать, а потом использовать. Поэтому я тему и создал с расчетом что еще кому нибудь понадобится, но отдельные личности постарались в помойку все превратить.Если бы Вы все сразу разложили по полочкам, то необходимости создавать эту дурнейшую тему просто не возникло бы. -
нет уж, извольте указать в какой части букваря "(глава 4 букваря Кернигана и Ритчи) " сказано какой файл выборать heap_1.c heap_2.c heap_3.c, ведь это было заявлено. Не недо "гениев" защищать.Элементарные знания говорят, что какой-то из этих файлов подключить нужно, раз уж линкер ругается на malloc/free. Какой именно, можно уточнить, если снизойти до чтения раздела Configuration->Memory Management документации.
Мои слова относились к флудерам, коих сюда много набежало. Я сразу все разложил по полочкам и спросил каких файлов не хватает для счастья, вместо этого меня начали обсуждать, мне это терпеть ?Оскорбление общественности и конкретных лиц начали именно Вы.я не собираюсь ничего терпеть, нечего сказать, лучше промолчать, иначе получите то же самое в ответ.
-
раньше думал вы умный, а теперь разочаровался, ну да ладно, люди не идеальны, дураки везде есть :)Со стороны это выглядит примерно так:- Я крут, всем бояться:- Все козлы, понаписали какую-то ..ню, нифига не компилится:А выясняется, что элементарных знаний (глава 4 букваря Кернигана и Ритчи) то и нет, но все равно все козлы:
Не волнуйтесь, ваши темы больше не буду "загаживать" даже если и будет что сказать. Успехов в компиляции.
1. Всех козлами вы сами назвали, а это уже оскорбление общественности.
2. т.е. элементарные знания говорят какой трех фалов heap_1.c heap_2.c heap_3.c надо подключить к проекту на LPC ? ссылку в студию. Этому видимо учат в школе, а я видимо урок прогулял. Неужели в школах уже гениев выпускают ?)
"(глава 4 букваря Кернигана и Ритчи) " - там FreeRTOS рассматривают ? не знал не знал, как будет вермя почитаю :)
3. да уж, потрудитесь более не флудить, а то когда мне тут что то надо, я почти ни когда тут не получал ответа, тем более от вас, зато флуду предостаточно.
-
когда у меня встанет вопрос его работоспособности, я создам другую тему, ибо заголовок этой говорит о проблеме сборки ядра (проекта):) :) :) "Проблему" Вы решите, когда проект будет РАБОТАТЬ, а не "собираться".На данный момент просто детский сад - кастрироване в ядре всего, что "не собирается" к созданию работоспособного ядра и решению каких-бы то ни было "проблем" никакого отношения не имеет.
P.S.
Поскольку я работаю с ядром базирующемся на FreeRTOS, собираю его IAR и V4, и V5 и использую его на LPC21/22/23/24xx я отлично знаю о чем говорю.
И ядро я не кастрировал, а собрал со всеми файлами, по началу я некоторые исключал, с целью поиска ошибки, об чем и отписал.
А хвастаться я тоже могу, WinCE на трех процессорах собирал и запускал, при этом дрова править местами серьезно приходилось. Только ни ВинЦЕ ни линух в LPC23xx не залезут.
Да, вот залез в port.c для LPC, смотрю как прерывание таймера 0 захватывается, так написано, что или все железо там надо инициализировать или переписать его нафиг, ибо сделано все топорно. Этот захват или учитывать придется в своих драйверах, или переделать под свои драйвера. Видимо сделаю последнее.
-
Moderator:
Непрерывным флудом заниаетесь здесь Вы. Если чего-то совсем не получается - прочтите, наконец, документацию.
странно, я решил проблему, написал как, а меня тут продолжают поучать, и ни на один вопрос ответа не дав, посылать читать док-ю, равносильно просто послать, чего и вам желаю, нет желания отвечать, м.б. лучше промолчать ??? не находите ваша политика - это политика флудера ?
-
Позабавило :)
а ты че этот тут флудом занимаешься ?
нечего сказать, так зачем тему загаживать мозговым мусором ?
-
скачал http://sourceforge.net/project/showfiles.p...ckage_id=120544Ну вот и разберитесь что, для чего вы скачалитам уже 5.0.3 есть
как как, порт под LPC2xxx есть, разве еще что-то надо ? дрова я пользовать тамошние не собираюсь, примеры проектов так же.и как это оно друг с другом и Вашим контроллером соотносится.
а разве есть разница для этой ОС между IAR 4 и 5 ? По моему кроме файлов настроек проекта самого IAR ни какой разницы, а проект я с нуля свой создал. Вы готовый проект искали под используемый компилятор ?А ситуация такова- Под IAR V5 никакого порта FreeRTOS нет
- И под IAR V4 тоже порта LPC23xx нет.
нормальный подход, раз в демо-исходниках ОС есть проект под LPC2368, то я содрал оттуда настройки и их пользовал, один только нюанс, я не знал какие файлы надо подключать к проекту, док-ии по этому поводу не нашел, ни кто на этом форуме мне ничего по этому поводу не подсказал.Что Вы там могли нагородить с подходом
и я :)Один Аллах ведает :(
не люблю переливать из пустого в порожнее, проект не собирался, спросил что еще надо подключить, а меня тут поучают.Сделать-то проблем нет, только надо хоть немного чего-то знать и думать, а не шашкой размахивать.Сначало на вопросы бы ответили, а потом бы поучали.
Многие хвалятся что знают эту ОС, а хоть кто-то написал по пунктам как проект собрать, не зависимо от компилятора и контроллера ?
а именно,
1) какие файлы необходимо включать в проект и их комбинации в зависимости от компилятора и контроллера, и от конфигурации.
2) взаимосвязь модулей ОС между собой, кто кого и по какому случаю вызывает, в виде граф. структуры.
3) распределение памяти в ОС
итд
для начала достаточно п.1.
-
в настройках что я скопировал, чет многовато под кучу памяти выделяют.Какие аппетиты??? Это память для ваших же задач.
та его визардами только обезьян пугать :) разбираться хотим, там утрамбовано как-то не логично, по сути не вижу толковых документов, в основном API описаны.Правильно: разбираться не хотим, документацию (которой якобы нет) читать не хотим, будем крутить настройки. Или подождем, когда дядяБилливизард напишет? :)
IAR ARM я 5.2 скачал, а FreeRTOS 5.0.2 где скачал не помню, файл называется FreeRTOSV5.0.2.zipIAR, а не FreeRTOS. -
хорошо если так, тогда я поурежу ему аппетиты, а то мне буфера нужны будут большие.FreeRTOS'у куча нужна только под TCB и стеки задач, раз уж очереди не используются. В дальнейшем пользоваться ей никто не заставляет.
та зачем в чужом коде разбираться, вырезая куски, лучше настройками ОС лишнее по отключать.Если нужна именно тупая переключалка, то возьмите куски из \portable и пользуйтесь на здоровье.
а зачем его читать ? я сразу 5.0.2 и скачал, ни куда ни откуда не мигрировал :)Ну и толку в этом? Для сборки под пятой версией сначала документ по миграции c V4.x почитайте, а потом шумите. Еще разберитесь в отличии LPC21xx от LPC23xx.... -
В писании сказано, не поминай имя его всуе :) Ты че заповеди нарушаешь ?)Боже мой, какая каша в голове у человека. -
из вас помощники как из меня балерина
в portasm.s79
закоментировал
//#include "FreeRTOSConfig.h"
и проект собрался,
еще добавил heap_2.c
не знаю тот или не тот, не важно, потом разберусь.
PS: тут случаем ни кто икону дяди билла не молится ? :)
-
по ассемблеру я не вижу откуда проблема появляется, там такие файлы не инклудятся, и ошибка явно глюк компилятора.А на какие ошибки, по-вашему, следует в первую очередь обращать внимание?Если ассемблер обломался на компиляции, то уж линкер тем более упадет, когда не сможет найти нужные метки.
не путаю, нормальную кучу лучше с MMU совместно пользовать, а то сильно дырявый сыр получится.Аппаратная поддержка кучи (heap)? С MMU не путаете?
судя по скудной док-ии, я быстрее напишу тупую переключалку сам.Если уж Вы собираетесь перелопачивать FreeRTOS под свои нужды, то подобных вопросов (ошибки линкера, ассемблера etc) возникать не должно в принципе.
где вы видели готовый проект под LPC2368 для IAR ARM 5.2 ???Все вокруг плохие, один я хороший. Не нравится FreeRTOS - не используй. Если требует много ресурсов - есть scmRTOS, уж компактнее, наверное, не бывает, или tnkernel, или еще куча чего. А когда человек готовый проект не может собрать, тут уж чего скажешь?а готовое под IAR не конвертится в IAR ARM 5.2
и потом, сегодня первый раз сел посмотреть что это за ...
и уже прыгать на другое ?
может сразу свое писать ? чтоб не терять время.
-
лучше б что по делу сообщили.
потому что выбор не большой, или ошибки линковщика, или компилятора: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 не считает извращением и использует. Отсюда и: -
в наличии
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: мне от ОСи нужен только переключатель задач, всякое динамическое выделение памяти на контроллере без аппаратной поддержки динамического распределения, считаю извращением и использовать не планирую. Так же не нужны очереди, т.к. буду свои писать, более приспособленные под мою задачу.
-
если сравнить
J-TRACE-ARM-2M
и
J-LINK
то станет понятно чем они по возможностям отличаются,
вот только J-TRACE-ARM-2M стоит не гуманных денег :)
А точки останова умеет добавлять не отладчик, а скорее драйвер, бо он прошивку правит перед заливкой.
-
если хоть что то выводит, значит с большой вероятностью контроллер правильно настроил, а если не то что надо, значит неверно указал адрес FrameBuffer или он не верно заполнен информацией.
PS: с этим контроллером не работал.
-
Хотелось бы тут увидеть какой нить обзор по внутрисхемным отладчикам для ARM7/ARM9. Задумался о выборе.
Интересует:
Число точек останова поддержанных самим отладчиком
Возможности отладчика
Глючность дров/железа
Гибкость настроек
Цена и возможность купить.
-
ну да, еще стандартный 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
-
по поводу фрагментации, у меня еще мысль возникла, если использовать не просто прямой указатель на блок памяти, а указатель на указатель. Тогда второй(системный) можно перемещать вместе с блоком памяти, а первый(пользовательский) изменятся не будет. Правда все это надо учесть при написании кода.
-
с данной ОС совсем не знаком, но тут прочитал что у нее есть менеджер памяти, а кто нибудь может кратенько объяснить как он устроен ? я не представляю себе такой менеджер без поддержки MMU в процессоре. Ведь фрагментация возникать должна, а как с ней бороться ? если указатели уже розданы задачам.
PS: подумываю об использовании ОС.
-
для армов 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. }
-
какое-то время назад баловался камнями LPC2368/78, и китом на LPC2378, загружал примеры и пробовал, вроде как работали, но мне понадобилось через SSP по DMA передавать пакеты разной длины, загрузил я пример SSP.c - копирование одного блока памяти в другой через петлю на SSP, компильнул, запускаю, работает, смотрю в отладчике кусок памяти в 256 байт копируется. Далее поколдовал над кодом, сделал скажем 100 байт, запускаю, а эта зараза опять 256 копирует, и так с любыми меньшими значениями.
Собственно вопрос, возможно ли DMA SSP канал запрограммировать на меньшее значение ?
Если нет, то это баг или фича камешка ? в DS в своё время не нашел ничего.
И просьба, если у кого есть возможность поковырять пример из IAR для SSP, проверить возможность передачи меньших объёмов. У меня в данный момент нет доступа к киту и проверить сам не могу.
Для чего мне это нужно, есть мысль команды и данные во внешнюю flash передавать в пакетном режиме, а не побайтово, на что тратится много процессорного времени.
Да и возник вопрос выбора камня под новый проект, если DMA все таки с недоработкой, то от камешка скорее всего откажусь.
-
Кто работал с ADE7569, ADE7566, ADE7169, ADE7166 ???
Купили под разработку несколько штук ADE7569, контроллер работает, а каналы измерения молчат, разве что шамана не вызывали, есть подозрения что подсунули не серийные образцы, а тестовые, которым место в помойке.
Слышал что народ брал эти МС для разработок, но менеджеры не сознаются кто, хотелось бы узнать, как у других идут дела, что-то получается ?
Если да, то где покупали, или что делали ?
FreeRTOS 5.0.2 проблема со сборкой исходников под IAR ARM
в FreeRTOS
Опубликовано · Пожаловаться
да вы правы, тут стало пованивать так же как и в телесистемах, когда вместо ответа на вопрос, все стремяться обосрать вопрошавшего, ну да бывает, моральное уродство в наше время сильно распространено.