Jump to content

    

asket

Участник
  • Content Count

    91
  • Joined

  • Last visited

Community Reputation

0 Обычный

About asket

  • Rank
    Частый гость
  • Birthday 01/12/1986

Информация

  • Город
    Array

Recent Profile Visitors

1245 profile views
  1. Я начинаю программировать на НИОС, хотел бы уточнить есть ли возможность использовать CFI-flash в качестве ПЗУ для хранения пользовательских данных, помимо хранения в ней прошивки, и где можно посмотреть пример использования cfi-flash на си? Спасибо.
  2. Я в ниосе использую printf для отображения на консоли eclipse отладочной информации, но почему то без аргументов printf("hello world!") выводит один раз, а с аргументами printf("key = %d", key) - выводит на экран постоянно, хотя вызывается один раз, использую встроенную ОС uC/OS II? вывод происходит через Jtag-uart Спасибо
  3. Покопался, так и не удалось запустить, требуется драйвер на флешку, которого у меня нет, к тому же Redboot сделал за меня эту работу по инициализации флешки и файловой системы FIS. Я чую, что можно обойтись и без того объемного кода, воспользуясь командами Redboot так, как будто приложение вводит команду типа fis create, fis load через какой то макрос или функцию. Может кто-знает как? Я нашел стандартную функцию flashiodev_lookup и там обнаружил вот этот макрос CYGACC_CALL_IF_FLASH_FIS_OP(CYGNUM_CALL_IF_FLASH_FIS_GET_FLASH_BASE, (char *)&name[4], &flash_base), я так понял через него можно осушествлять доступ к флеш, и манипулировать им в зависимости от кода операции, в вышеупомянутом примере читаем адрес флеша. Есть какие-то соображения как получить доступ к FIS с приложении?
  4. это как? весь fis пихать? а если использовать макрос CYGACC_CALL_IF_FLASH_FIS_OP? Дело в том, что у меня исходника на Redboot нет, есть либы и инклюд для ecos-приложений, так что пересобрать сборку у меня не представляется возможным.
  5. Пишу приложение с использованием РТОС eCOS, бинарник загружается в оперативку c NOR-flash под управлением загрузчика redboot, вопрос такой, требуется записать данные в NOR-flash для долгосрочного хранения что-то вроде параметры системы, как это сделать в приложении с использованием функции redbooot (fis create, fis delete ..)? jffs просьба не предлагать..
  6. Разобрался! windows будет работать с классом устройств ACM, а у меня по умолчанию стоит generic. Может кому-то будет интересно.
  7. Хорошо поставлю вопрос по другому, обязательно ли в пакете конфигурации USB должен быть присутствовать класс устройства USB CDC=0x02 для virtual com port, в нынешной сборке ecos почему-то не указали класс устройств USB (0x00), может ли из-за этого драйвер некорректно работать с данным устройством? вот так выглядет пакет описания дескриптора Device Descriptor eCos USB Serial Device Offset Field Size Value Description 0 bLength 1 12h 1 bDescriptorType 1 01h Device 2 bcdUSB 2 0200h USB Spec 2.0 4 bDeviceClass 1 00h Class info in Ifc Descriptors (!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!) 5 bDeviceSubClass 1 00h 6 bDeviceProtocol 1 00h 7 bMaxPacketSize0 1 08h 8 bytes 8 idVendor 2 FFFFh 10 idProduct 2 0001h 12 bcdDevice 2 0000h 0.00 14 iManufacturer 1 01h "eCos" 15 iProduct 1 02h "eCos USB Serial Device" 16 iSerialNumber 1 00h 17 bNumConfigurations 1 01h
  8. Прошу помочь разобраться с проблемой, пишу приложение для at91sam9263 под rtos eCos с использованием встроенных функции eCOS serial USB. Нашел драйвер под win xp/7 ecosusbserial.inf как было описано в доке по eCos, и установил, однако win 7 обнаружила данное устройство, но отказывается его обслуживать, в диспетчере устройств напротив порта восклицательный знак и выдает сообщение, что не в состоянии его запустить, код 10. Если через тот же шнур подключить SAM-BA в режиме RomBoot, то работает нормально, без нареканий. Привожу исходник тестового приложения на ecos: #define BUF_SIZE 4096 static cyg_uint8 rx_buf[2][BUF_SIZE+1], tx_buf[BUF_SIZE+1]; // -------------------------------------------------------------------------- // Thread receives packets from the USB and sends them out the serial port // It uses a buffered stdio input, an un-buffered low-level file output. // This isn't terribly efficient, but rather an example of both methods. void usb2ser_func(cyg_addrword_t data) { int n; unsigned ibuf, next_buf; DBG("Usb2Ser: Thread starting\n"); // Give the USB receiver an adequate buffer. // setvbuf(rxf, usb2ser_buf, _IOFBF, BUF_SIZE); ibuf = 0; while (1) { // ----- Wait for the host to configure ----- DBG("Usb2Ser: Waiting for USB configuration\n"); usbs_serial_wait_until_configured(); cyg_thread_delay((cyg_tick_count_t) 10); // ----- While configured read data & send out serial port ----- DBG("Usb2Ser: USB configured\n"); usbs_serial_start_rx(&usbs_ser0, rx_buf[ibuf], BUF_SIZE); while (usbs_serial_is_configured()) { n = usbs_serial_wait_for_rx(&usbs_ser0); next_buf = ibuf ^ 1; usbs_serial_start_rx(&usbs_ser0, rx_buf[next_buf], BUF_SIZE); if (n < 0) { DBG("*** I/O Error: %d ***\n", n); } else { rx_buf[ibuf][n] = '\0'; DBG("%s", rx_buf[ibuf]); } ibuf = next_buf; } } } // -------------------------------------------------------------------------- // Thread receives packets from the serial port and sends them out the USB // It uses a buffered stdio input, an un-buffered low-level file output. // This isn't terribly efficient, but rather an example of both methods. void ser2usb_func(cyg_addrword_t data) { int n; DBG("Ser2Usb: Thread starting\n"); while (1) { // ----- Wait for the host to configure ----- DBG("Ser2Usb: Waiting for USB configuration\n"); usbs_serial_wait_until_configured(); cyg_thread_delay((cyg_tick_count_t) 10); // ----- While configured read data & send out serial port ----- DBG("Ser2Usb: USB configured\n"); while (usbs_serial_is_configured()) { n = 5; memset(tx_buf, 0xAA, n); usbs_serial_tx(&usbs_ser0, tx_buf, n); cyg_thread_delay((cyg_tick_count_t) 1000); } } } // -------------------------------------------------------------------------- // Application Startup // -------------------------------------------------------------------------- int main(void) { DBG("Entering usb_serial_send function\n"); cyg_thread_create(4, usb2ser_func, (cyg_addrword_t) 0, "Usb2Serial", (void *) stack[0], THREAD_STACK_SIZE, &usb2ser_thread, &thread[0]); cyg_thread_create(4, ser2usb_func, (cyg_addrword_t) 1, "Serial2Usb", (void *) stack[1], THREAD_STACK_SIZE, &ser2usb_thread, &thread[1]); // Start USB subsystem usbs_serial_start(); // Start the threads running. cyg_thread_resume(usb2ser_thread); cyg_thread_resume(ser2usb_thread); #if 1 char ch = 0; while (ch != 'q') { printf("\r\nPress `q' to quit"); scanf("%c", &ch); } #else for (;;) { } #endif CYGACC_CALL_IF_RESET(); //CYGACC_CALL_IF_MONITOR_RETURN(0); // return to RedBoot return 0; } Это измененный пример тестового исходника из пакета eCos. Вот что выдает приложение при подключении к ПК. Entering usb_serial_send function ### 4:Reset ### Usb2Ser: Thread star### 132:<null> ### ting Usb2Ser: Waiting for USB configuration Ser2Usb: Thread starting Ser2Usb: Waiting for USB configuration Press `q' to quit### 4:Reset ### ### 3:Powered ### ### 4:Reset ### ### 3:Powered ### ### 4:Reset ### ### 5:Addressed ### ### 6:Configured ### ### 6:Configured ### Usb2Ser: USB configured Ser2Usb: USB configured Прошу помочь, на что нужно обратить внимание. Спасибо
  9. eCOS в IAR

    Господа! Кто-нибудь использовал IAR для построения проекта на базе ОС eCOS, такое возможно? Поделитесь как создавать проекты, мне удобно было бы на IAR.
  10. Спасибо! А насчет покупки, заходим сюда http://www.ecoscentric.com/ecos/ecospro.shtml, там есть контактные данные, по которым можно связаться с ихними менагерами, обычно через email, и договариваемся о покупке, по почте пришлют DVD или наверное дадут ссылку на скачивание с паролем, я пытался скачать порт на at91sam9263, но меня на халяву не пустили.. И еще вопрос, можно ли бинарники с помощью redboot перекачать с NOR-флеша на ПК и затем снова залить на другую плату, как это сделать? Спасибо
  11. Помогите установить Insight на ОС Xubuntu, для отладки на ARM9, скачал версию Insight 6.8 из http://sources.redhat.com/insight, делал по инструкции строго user> ls src/ user> mkdir insight-arm; cd insight-arm user> ../src/configure --target=arm-eabi --prefix=/opt/insight-arm user> sudo make user> sudo make install Этап конфигурирования прошел успешно, а вот на команду make огрызается make[4]: Вход в каталог `/home/user/insight-6.8/insight-arm/bfd' /bin/bash ./libtool --tag=CC --mode=compile gcc -DHAVE_CONFIG_H -I. -I../../bfd -I. -I. -I../../bfd -I../../bfd/../include -W -Wall -Wstrict-prototypes -Wmissing-prototypes -Werror -g -O2 -c -o elf32-arm.lo ../../bfd/elf32-arm.c libtool: compile: gcc -DHAVE_CONFIG_H -I. -I../../bfd -I. -I. -I../../bfd -I../../bfd/../include -W -Wall -Wstrict-prototypes -Wmissing-prototypes -Werror -g -O2 -c ../../bfd/elf32-arm.c -o elf32-arm.o ../../bfd/elf32-arm.c: In function 'record_vfp11_erratum_veneer': ../../bfd/elf32-arm.c:2980:7: error: variable 'errcount' set but not used [-Werror=unused-but-set-variable] ../../bfd/elf32-arm.c: In function 'bfd_elf32_arm_vfp11_erratum_scan': ../../bfd/elf32-arm.c:3904:23: error: variable 'errcount' set but not used [-Werror=unused-but-set-variable] ... ... что не так делаю? Команды выполняю под суперпользователя (root), кстати toolchain у меня от ecoscentric arm-eabi c eCOS'ом У меня есть подозрение на -Werror=unused-but-set-variable.. Спасибо Проблему решил случайно, оказывается надо было на этапе конфигурирования добавить ключ --disable-werror user> ../src/configure --target=arm-eabi --prefix=/opt/insight-arm --disable-werror это связано с тем, что по умолчанию GCC трактует предупреждения как ошибки, что не есть гуд! Требуется дополнительно установки libncurses5-dev
  12. Да нет, меня RedBoot вполне устраивает, иногда возникает ситуация, когда требуется отладка в пошаговом режиме.. короче, я под Windows поставил набор GCCDF из CD, прилагаемого к эмулятору Olimex ARM-USB-Tiny, там все окей, достаточно ввести всего две строчки mon soft_reset_halt load Мне вот интересно, под Win версия OpenOCD 1.0 , а под Linux стоит 0.5.0, причем файлы конфигурации несовместимы, хотелось бы понять какая линуховая версия является аналогом 1.0-версии openocd под Win? Ставил линуксовый 0.1.0, но это не то же самое, что 1.0 виндовая..
  13. Нормальный способ это какой? Через RedBoot все окей, но только бинарники, я бы воспользовался IAR, к которому я привык, но вся библиотека написана с использованием eCOS, вынужден в Линуксе на GNUtools программировать..
  14. Похоже никто не может ответить на мой вопрос, выскажу свою мысль, если что, поправьте пожалуйста.. Я так понимаю, что иницализацию контроллера SDRAM делает встроенный RedBoot (не мною создан и встроен), когда устанавливается связь gdb с openocd, gdb сбрасывает процессор и соответственно все регистры "обнуляются", что вследствии процессор не видит SDRAM, попробывал ввести команду программного сброса типа mon soft_reset_halt, ситуация аналогична, где ошибка, не могу понять.. в Eclipse в настройках Debug configuration мне досталось по умолчанию 'run' в таком виде: target remote localhost:3333 mon reset halt load Может не стоит сбрасывать процессор, а сразу остановить halt и загрузить прошивку load?
  15. Россия тут ни причем, я имею ввиду eCOS PRO, который небесплатно поставляется ecoscentric.. Ну ладно, вот такой вопрос, можно ли восстановить конфигурационный файл ecc имея папку Install, который включает в себя include и lib и ничего больше? К сожалению, такое жалкое наследие оставили предыдущие разработчики..