Jump to content

    

RomanG

Участник
  • Content Count

    36
  • Joined

  • Last visited

Community Reputation

0 Обычный

About RomanG

  • Rank
    Участник
  1. Цитата(HardEgor @ Oct 24 2013, 16:03) А где должны храниться загружаемые значения перед загрузкой, а также форматы обмена с микросхемой и i2c адреса микросхем? Данные и адреса - в какой-то энергонезависимой памяти. С форматами сложнее. Цитата(DmitryM @ Oct 25 2013, 11:03) IMHO, проще поставить копеечный МК, чем городить I2C-master. И в сопровождении и в разработке. Видимо так считает большинство разработчиков, поэтому такого устройства не видно. Кроме того, как заметил HardError, форматы посылок могут немного отличаться. Поставим МК.
  2. Добрый день всем! Многие микросхемы, например, видео кодеры/декодеры требуют настройки регистров по I2C. В проектируемом мной устройстве эти настройки не нужно менять в процессе работы, поэтому ставить для загрузки микроконтроллер совсем не хочется. Может кто-нибудь предложить микросхему, reference desing, открытый проект, который обеспечивал бы загрузку регистров по I2C по включениию питания?
  3. Переносимость на embedded Linux

    Цитата(A. Fig Lee)Разницы не будет. Проблема с портированием самого Линукса (ядра) на платформу. А юзерленду все равно фактически. Ну у вас вариантов нет, что Линух, что Андроид придется портировать. А если предположить, что для обоих платформ существуют готовые дистрибутивы Android и Linux с необходимыми драйверами (про совместимость драйверов данных нет)? С андроидом, как я уже писал, наблюдаем очень хорошую переносимость: экранчик, USB, мышка/тачпад работают на всех протестированных устройствах без какого бы то ни было портирования нашего ПО. После обсуждения в данной теме складывается впечатление, что от Linux такого ожидать не стоит. Это так?
  4. Переносимость на embedded Linux

    Цитата(A. Fig Lee @ Sep 18 2013, 15:38) Я так понял что драйвер есть, на Интеле пашет, надо на АРМ? Задача следующая: выбираем вычислительную платформу для одного мобильного устройства, то есть как аппаратуру, так и ОС. Хотелось бы иметь возможность перехода на другую аналогичную аппаратуру, если выбранный OEM-модуль снимут с производства. Меня сейчас интересует выбор ОС: Linux, либо Android ( Windows будет тяжеловат). Android в наших экспериментах обеспечивал 100% переносимость (как и следовало ожидать). Программа работает на разных платах, устройствах, смартфонах одинаково. Минус - ограниченный набор интерфейсов и потери производительности на Java-машине. Цитата(Tarbal @ Sep 18 2013, 16:34) Поищите в этом треде. Три фреймворка здесь обсуждались. http://electronix.ru/forum/index.php?showtopic=113476 ZIO должен быть серьёзным. Один из авторов соавтор библии линуксовских драйверов. Спасибо!
  5. Переносимость на embedded Linux

    Цитата(psL @ Sep 18 2013, 11:56) Под более менее распространненые порты (GPIO, SPI, I2C) существуют фреймворки, которые обеспечивают стандартный интерфейс. Нельзя ли примерчик такого фреймворка? Цитата(psL @ Sep 18 2013, 11:56) Тут весь вопрос в реализации нижнего слоя драйвера, который непосредственно общается с аппаратурой. А именно кто и как его будет/должен реализовывать. В таком случае, если я использую такой фреймворк и перехожу, например, на OEM-модуль Colibri от Toradex для которого драйверы имеются, шанс на переносимость кода по работе с аппаратурой на другую платформу есть? (То, что грабли, в принципе, могут встретиться в любом месте я уже понял )
  6. Переносимость на embedded Linux

    Цитата(_3m @ Sep 17 2013, 16:41) Тут нужно в первую очередь рассматривать ресурсы чипа и реализацию BSP а не тип дистритутива. В порядке убывания стандартизированности: Ethernet USB LCD GPIO +100500 Честно говоря, я предполагал, что где-то так: Цитата(A. Fig Lee @ Sep 17 2013, 16:29) представьте себе поле. Большое. И там везде грабли, грабли, грабли.. До самого горизонта. Но все же хотелось верить во все хорошее.... Цитата(_3m)В порядке убывания стандартизированности: Ethernet USB LCD GPIO Насколько я понял, чем менее стандартный драйвер, тем более вероятны проблемы при каких бы то ни было переходах. Поэтому при использовании не очень стандартной аппаратуры (GPIO, I2C, LCD(?)) "светлого будущего" с полной переносимостью кода между разными embedded платформами на Linux пока нет. Может, конечно, повезет, но рассчитывать на это, наверное, не стоит. Такое вот впечатление... Спасибо всем за ответы, жаль, что тема (как это часто бывает) перерастает во flame
  7. Доброго времени суток всем! Сейчас выпускается много плат на микроконтроллерах с поддержкой того или иного дистрибутива Linux. Насколько переносим код, например, для Linux Ubuntu при переходе к другой плате на таком же дистрибутиве? Существуют ли в Linux (и Ubuntu в частности) стандартные драйверы для LCD, GPIO, UART, USB, Ethernet? Для более специфических интерфейсов, таких как I2C, SPI, PWM? Как изменится ситуация, если придется переходить на другой дистрибутив?
  8. Добрый день всем! Работаю над проектом для МК XC2765 Infineon, среда разработки Tasking C166 VX Lite. Проблема: в обработчике прерывания (обычное прерывание, не FIRQ) вызываю функцию и передаю ей в качестве параметра указатель на структуру. Вызываемая функция записывает данные в структуру, но после возвращения в вызывающую ISR данные в структуре изменены до неузнаваемости да еще попорчены соседние переменные ((. Эта же функция при ее вызове из main работает совершенно нормально. Фрагмент программы: // обработчик прерывания _interrupt(CAN_INT_VECT1) void CAN_IRQRcvHiPriority(void) { stCAN_SWObj RcvMessage_local; // структура, которая передается и портится uword msg_id = 0x0020; .... CAN_GetMsgObj( (ubyte)msg_id, &RcvMessage_local); // та самая проблемная функция .... } //Прототип функции CAN_GetMsgObj uword CAN_GetMsgObj(ubyte ubObjNr, stCAN_SWObj __far *pstObj); Пробовал использовать глобальную, а не локальную переменную типа stCAN_SWObj - никакой разницы После возврата из функции портится и msg_id Pls помогите....
  9. Не хочет инлайнить

    Цитата(Сергей Борщ @ May 31 2011, 00:52) и добавить __arm. Проект глобально, вероятно, в thumb собирается. Точно! Большое спасибо! Зарботало! Не подумал, что код-то получается разный - в обработчике Arm, а функция в interwork. Весь проект действительно собирается в режиме Thumb. Замена _interwork на _arm решила проблему.
  10. Не хочет инлайнить

    Цитата(IgorKossak @ May 30 2011, 17:36) Попробуйте так: __interwork static int HexToBin( char* chr) ... Не помогло.
  11. Не хочет инлайнить

    Пишу программу в IAR Kickstart for ARM 6.10. Есть небольша функция, которая вызывается из обработчика перываний. Объявил ее как inline при чем force: Код #pragma inline=forced   __interwork int HexToBin( char* chr)   {     if ( *chr <= 0x39 )                     ..........                else                        return (ERR_BAD_SYMBOL);     return (OK);   }; Вызываю так Код__irq __nested __arm void UART1_Handler( void ) {   char chr[2]; ..........................       if ( HexToBin(chr) != OK )       {         RS485_buff.RxLastError = ERR_BAD_SYMBOL;         continue;       } ..................... Компановщик как ни в чем не бывало выдает предупреждение: [Go004] Could not inline function. Больше эту функцию нигде не использую. Фунция определена в одном файле с вызывающей. Уровень оптимизации максимальный. Ради эксперимента пытался заменить в параметре указатель на char просто - ноль эмоций. Может быть кто-нибудь подскажет как с этим бороться? Можно ли где-нибудь прочитать при каких условиях возможен inline, а при каких нет? В IAR C/C++ Development Guide сведения крайне скудные.
  12. USB с DMA в UC3A3

    Цитата(jasper @ Oct 27 2009, 16:33) В новом фрэймворке есть примеры работы с DMA: SERVICES/USB/CLASS/AUDIO/EXAMPLES/EXAMPLE2/ . Receive data stream from the USB and send it to the SSC/I2S using the DMA К сожалению в данном примере USB не использует DMA, возможно используется DMA для доступа к SSC/I2S. Сами атмелевцы сказали, что у них пока примера USB с DMA нет, поэтому и обращаюсь к народу в надежде на то, что кто-то из наших уже это делал на AVR32.
  13. USB с DMA в UC3A3

    Цитата(Xenia @ Oct 27 2009, 15:27) Есть резон заглянуть в софт, поставляемый к демонстрационной плате EVK1100 с установленном на ней AT32UC3A0512. Речь идет об архиве AVR32-SoftwareFramework-AT32UC3A-1.4.0.zip или -1.5.0.rc1.zip. См. http://www.atmel.com/dyn/products/tools_ca...sp?tool_id=4192 Там в этом архиве среди всякой всячины встречаются определения (через #define) следующих функций: Is_usb_endpoint_dma_interrupt(epdma) Is_usb_endpoint_dma_interrupt_enabled(epdma) Is_usb_endpoint_int_dis_hdma_req_enabled(ep) Usb_disable_endpoint_dma_interrupt(epdma) Usb_disable_endpoint_int_dis_hdma_req(ep) Usb_enable_endpoint_dma_interrupt(epdma) Usb_enable_endpoint_int_dis_hdma_req(ep) Usb_get_dma_buffer_size() Usb_get_dma_channel_nbr() Usb_get_dma_fifo_word_depth() Usb_raise_endpoint_dma_interrupt(epdma) Судя по их названиям, есть вероятность, что USB с участием DMA там реализован. Архив слишком большой - 66 Мб исходников и текстовых материалов, поэтому я глубоко в нем не копалась. Если того, что вам надо, там нет, то извиняйте. Насколько мы поняли эти макросы ничего не делают. Это просто заглушки. Поддержка Атмеля отсылает к примерам по DMACA, а они, к сожалению, не отражают специфики USB.
  14. USB с DMA в UC3A3

    Пытаемся работать с USB на МК AT32UC3A3 с использованием DMA. Задачу затрудняет практически полное отсутствие описания работы USB DMA контроллера в data sheet, а также примеров его использования. Может быть кто-нибудь сможет поделиться примерами использования USB с DMA на AVR32, желательно AT32UC3A? Также помогло бы описание использования DMA для USB, подозреваю, что у DMA USB есть некоторая специфика по сравнению с обычным DMA.
  15. Кто-нибудь имел опыт общения с фирмой Фидэс? Ассортимент у них как-будто неплохой и сроки радуют, только вот сайт очень очень куцый. Настораживает и существенное отличие по срокам поставки от конкурентов, не есть ли это все "липа"?