KOLOBOK1386
Участник-
Постов
14 -
Зарегистрирован
-
Посещение
-
Xilinx SP-605 отладочная плата Минск
KOLOBOK1386 ответил KOLOBOK1386 тема в Продам
Цена 250 у.е., реальному покупателю - хороший торг -
Xilinx SP-605 отладочная плата Минск
KOLOBOK1386 ответил KOLOBOK1386 тема в Продам
Цена 400 у.е., реальному покупателю - хороший торг -
Xilinx SP-605 отладочная плата Минск
KOLOBOK1386 ответил KOLOBOK1386 тема в Продам
Цена 500 у.е., реальному покупателю - хороший торг -
Xilinx SP-605 отладочная плата Минск
KOLOBOK1386 опубликовал тема в Продам
Продам б/у отладочную плату на spartan-6 - Xilinx sp-605 г. Минск https://www.xilinx.com/products/boards-and-kits/ek-s6-sp605-g.html 550 у.е. реальному покупателю торг -
eCos 3.0 for Microblaze
KOLOBOK1386 ответил KOLOBOK1386 тема в Операционные системы
Здравствуйте! Спасибо за Ваши ответы. Как оказалось в системе обнаруживается устройство /dev/ttydiag и когда с помощью cyg_io_lookup получаю handler на него то затем нормально работает cyg_io_write. Но возникли проблемы по работе cyg_io_read. cyg_io_read(handle, read_string, &len_read); printf("Reading successful!!!\n"); printf(read_string); При выполнении этого кода плата принимает по UART и сразу же выдает наружу до получения кода клавиши Enter. В смысле cyg_io_read принимает и сразу же выдает, после получения кода клавиши Enter я получаю сообщение "Reading succesful!!!" и выдается весь принятый массив. Это корректно??? потому как в документации не совсем понял функционал команды cyg_io_read. -
eCos 3.0 for Microblaze
KOLOBOK1386 ответил KOLOBOK1386 тема в Операционные системы
Здравствуйте, спасибо за ответы. Я понимаю что CYGACC_COMM_IF_DBG_ISR_SET(*comm, cyg_hal_plf_serial_isr); привязывает обработчик прерывания, но не совсем понятен механизм привязки. У меня сейчас при появлении прерывания проц переходит на адрес 0x00000010 где содержится команда перехода на стандартный обработчик прерывания, который как я уже писал представляет собой простую затычку. Вопрос в том к какому прерыванию привязывает эта функция CYGACC_COMM_IF_DBG_ISR_SET(*comm, cyg_hal_plf_serial_isr);??? Потому как cyg_hal_plf_serial_isr корректный обработчик прерывания, так как он выполняет HAL_INTERRUPT_ACKNOWLEDGE и по коду должен сбрасывать флаги прерывания и корректно его обрабатывать но нет привязки его к прерыванию от UART. Насколько я понял в eCos существует 2 так называемых канала связи - консоль и отладочный канал через который как я понял работают стандартные diag_printf для вывода сообщений при выполнении тестов. Вот как раз отладочный канал работает без нареканий, то есть diag_printf выводит)) а вот если проводить запись с помощью API функций типа cyg_io_write то - все глухо, причем API функция cyg_io_lookup находит устройства /dev/ser0, /dev/tty но при записи в в эти устройства ничего не выводится.И еще такой вопрос - физически устройства для консольного и отладочного каналов должны быть разными?? потому как на плате только 1 UART порт, не совсем ясно потому как если они должны работать с разными физическими устройствами то rx tx надо распиновать отдельно и ставить еще один UART компонент, заранее спасибо за любую помощь в понимании вопроса -
eCos 3.0 for Microblaze
KOLOBOK1386 ответил KOLOBOK1386 тема в Операционные системы
Нужна помощь в запуске UART под eCos. На данный момент при появлении прерывания с UART проц переходит к обработчику прерывания по умолчанию - простой затычке, которая делает только return. Вообще должна вызываться функция обработки прерывания UART, которая описана в файле hal_diag.c cyg_hal_plf_serial_isr(channel_data_t *chan, int *ctrlc,. CYG_ADDRWORD vector, CYG_ADDRWORD data) { chan->ctrlc = ctrlc; XUartNs550_InterruptHandler(&chan->dev); HAL_INTERRUPT_ACKNOWLEDGE(chan->isr_vector); return CYG_ISR_HANDLED; } При инициализации channel 0 обявляется этот обработчик void cyg_hal_plf_serial_init(void) { hal_virtual_comm_table_t* comm; int cur = CYGACC_CALL_IF_SET_CONSOLE_COMM(CYGNUM_CALL_IF_SET_COMM_ID_QUERY_CURRENT); // Disable interrupts. HAL_INTERRUPT_MASK(channels[0].isr_vector); // Init channels init_serial_channel(&channels[0]); // Setup procs in the vector table // Set channel 0 CYGACC_CALL_IF_SET_CONSOLE_COMM(0); comm = CYGACC_CALL_IF_CONSOLE_PROCS(); CYGACC_COMM_IF_CH_DATA_SET(*comm, &channels[0]); CYGACC_COMM_IF_WRITE_SET(*comm, cyg_hal_plf_serial_write); CYGACC_COMM_IF_READ_SET(*comm, cyg_hal_plf_serial_read); CYGACC_COMM_IF_PUTC_SET(*comm, cyg_hal_plf_serial_putc); CYGACC_COMM_IF_GETC_SET(*comm, cyg_hal_plf_serial_getc); CYGACC_COMM_IF_CONTROL_SET(*comm, cyg_hal_plf_serial_control); CYGACC_COMM_IF_DBG_ISR_SET(*comm, cyg_hal_plf_serial_isr); CYGACC_COMM_IF_GETC_TIMEOUT_SET(*comm, cyg_hal_plf_serial_getc_timeout); // Restore original console CYGACC_CALL_IF_SET_CONSOLE_COMM(cur); } Но в итоге при появлении прерывания не проходит подтверждение прерывания (interrupt acknowledge), прерывание не сбрасывается и проц крутит постоянно обработку прерывания в виде return. Помогите разобраться в чем проблема? -
eCos 3.0 for Microblaze
KOLOBOK1386 ответил KOLOBOK1386 тема в Операционные системы
Доброго всем времени суток! Настройка таймера прошла успешно, теперь запускается таймер, соответственно планировщик, появились наконец то системные тики, успешно запускаются тесты ядра, а именно tm_basic, вывод у них осуществляется через diag_printf(). Сейчас стоит задача запустить UART. С этим возникла проблема, а именно с обработчиком прерывания UART. При появлении прерывания от UART проц переходит на выполнение default_interrupt_isr, то есть затычки которая делает только return. Вообще судя по коду должен выполняться cyg_hal_plf_serial_isr, но этого не происходит. При запуске тестов из каталога io процессор просто крутит idle process. Помогите пожалуйста в чем может быть проблема? -
eCos 3.0 for Microblaze
KOLOBOK1386 ответил KOLOBOK1386 тема в Операционные системы
Спасибо большое - все заработало -
eCos 3.0 for Microblaze
KOLOBOK1386 ответил KOLOBOK1386 тема в Операционные системы
Здравствуйте! Возникла новая проблема при портировании eCos на Microblaze - сейчас работает UART, пытаюсь запустить тест tm_basic но при этом в системе не определяются системные тики. На сколько я понял тики генерятся от прерываний таймера, я настроил таймер чтобы давал прерывания каждые 10 мс. Что мне нужно допилить для определения в системе тиков??? Уже неделю бьюсь, помогите люди(( -
eCos 3.0 for Microblaze
KOLOBOK1386 ответил KOLOBOK1386 тема в Операционные системы
Доброго всем времени суток! Теперь такая проблема: использую GNU tools из дистрибутива SDK 13.2, собираю с их помощью образ eCos 3.0. В итоге компиляция вылетает с ошибками в ассемблерном файле /opt/project/s605_install/include/cyg/hal/arch.inc:78: Error: Macro with this name was already defined /opt/project/s605_install/include/cyg/hal/arch.inc:84: Error: Macro with this name was already defined /opt/project/s605_install/include/cyg/hal/arch.inc:111: Error: Macro with this name was already defined никаких повторяющихся объявлений макросов нет. Может кто сталкивался или есть советы куда копать по поводу этих ерроров?? -
eCos 3.0 for Microblaze
KOLOBOK1386 опубликовал тема в Операционные системы
Доброго всем времени суток. Работаю над портированием eCos 3.0 для Microblaze 8.2 в EDK 13.2. В качестве примера использовал mONeCos (http://www.monstr.eu/wiki/doku.php?id=ecos:ecos) - это порт eCos 2.0 на Microblaze 7.0. Много чего почерпнул оттуда, подправил код в соответствие со своей конфигурацией. Успешно запустил на своей плате eCos 2.0 из дистрибутива. Для сборки своего образа eCos 3.0 использовал GNU тулзы из дистрибутива mONeCos - microblaze-uclinux. Но при линковке получал ошибку : ../microblaze-uclinux/bin/ld.real: --relax and -r may not be used together. Потому линковал библиотеку extras.o из консоли командой. Затем собрал тесты eCos, но что насторожило, что размер всех тестов от 300 до 500 kb а вот тест, который собственно и нужен а именно tm_basic получился размером 50,5 Mb)) причем основную часть занимает .bss секция. Пробовал залить tm_basic тест и попрыгать по коду через GDB но в итоге Microblaze загибался с ошибкой “Microblaze pipeline stalled on a blocking instruction or invalid bus access” Какие нибудь идеи по этому поводу?? в частности причины ошибки линовки и какой то чересчур большой размер tm_basic.elf