Jump to content

    

grinux

Участник
  • Content Count

    99
  • Joined

  • Last visited

Community Reputation

0 Обычный

About grinux

  • Rank
    Частый гость

Recent Profile Visitors

1175 profile views
  1. A20 Allwinner

    Есть ли референс схема на этот процессор?
  2. Опыт проектирования высокоскоростных плат. Расчет стека, контроль импеданса дифпар, выравнивание внутри и между дифпар, топология Интерфейсы DDR, RGMII, PCI express и т.п. Работа через репозиторий, удаленная, сдельная. Подробности в ЛС
  3. Предпочтительно на Альтере. Совместимость USB Audio Class 2. Нужен только FPGA дизайн, аппаратная часть будет сделана.
  4. Вы меня с кем то путаете. Исполнитель на работы найден.
  5. Поправил описание. Работа всех 16 каналов должна осуществляться одновременно. Т.е. нужен не мух на входе, а разветвитель. Речь идет только об аналоговой и радиочасти. Микроконтроллерная часть уже готова.
  6. Необходимо схемотехнически и топологически спроектировать аналоговую часть 16 канального FM приемника. BNC вход с пассивной антены - разветвитель - 16x TEA5767 или RDA5807 - 16 аналоговых стереопар. Работа всех 16 каналов одновременно.
  7. Да, сейчас есть только обработка GET. Страница статически прилинковывается к образу прошивки в виде /* Contents of file index.html */ const long int index_html_size = 106876; const unsigned char index_html[106876] = { 0x3C, 0x21, 0x44, 0x4F, 0x43, 0x54, 0x59......} Никаких файлов и дисков нет и не планируется.
  8. Всем привет. Есть устройство, в котором есть настройки, которые храняться с формате структур C. Например, вот описание небольшого кусочка настроек: typedef struct _CTRL_ITEM { char obj_idx; enum { MORE=0, LESS, EQU, NEQU, RISING, FALLING, CHANGED }condition; struct { union { unsigned int val_u; float val_f; }; char state; }ctrl_val; }CTRL_ITEM; Далее для примера может использоваться массив такого блока настроек: struct { char enable; struct { CTRL_ITEM ctrl_item[PROG_BLOCK_LENGTH]; ACT_ITEM act_item; }ControlBlock[PROG_LOGIC_BLOCKS]; }ProgrammingSettings; Сейчас изменение настроек осуществляется через telnet командную строку. На устройстве также есть самописный HTTP сервер с тестовой страницей на js+jquery, визуализирующей состояние прибора. Сейчас размышляю над тем, как организовать полноценное взаимодействие с html страницей для возможности не только визуализации но и полноценной настройки прибора, чтобы полностью отказаться от терминального меню. Основное затруднение в следующем. Когда мы используем терминальное командное меню или терминальную псевдографику нет проблем с идентификацией переменной, значение которой мы выводим на экран или получаем в результате ввода пользователем. В каждый конкретный момент времени у нас есть активный item, однозначно идентифицируемый своим адресом в памяти. Когда же нам требуется передать набор настроек на html страницу а потом обратно, возникает необходимость идентификации сущностей, которые мы выгружаем на страницу, а потом измененные выгружаем со страницы на сервер. В классическом случае это реализуется хранением настроек в виде xml json yaml и тому подобных форматах. Мне же для экономии ресурсов не хотелось бы отказываться от структурированного хранения. Но при этом возникает вопрос идентификации элементов. Ничего элегантного мне пока придумать не удалось, поэтому обращаюсь за советом, как лучше всего организовать такое взаимодействие. Пока в голову пришла только одна мысль. Сделать движок, который бы на html страницу выгружал для каждого параметра набор адрес или смещение параметра в блоке настроек, значение параметра, тип параметра. После манипуляций со значением параметра на html странице скриптом выгружать аналогичный набор обратно в устройство(на сервер), где движок производит запись значения в память по принятому адресу или смещению. Это решение не кажется мне эффективным и элегантным, хотя возможно я и ошибаюсь. Прошу совета гуру. Вопрос серьезный, хочется сделать правильно и масштабируемо. В распоряжении TnKernel TNnet LPC2387 (96RAM 512FLASH). Настройки хранятся во внешней 8Mbit flash.
  9. Это функции bootrom. Я сделал так place in ROM_region { readonly, first block VER_INFO}; place in RAM_region { section SYS_RAM, block CSTACK, block SVC_STACK, block IRQ_STACK, block FIQ_STACK, block UND_STACK, block ABT_STACK, block HEAP }; place in RAM_region | USB_DMA_RAM_region | EMAC_DMA_RAM_region { readwrite }; char iap_buf[xxx] @ "SYS_RAM";
  10. И не только инициализированных. Например, только что случилось: функция записи IAP не работает, если данные для записи лежат в USB памяти.
  11. Спасибо, то что нужно. Новое не пишет, а старое развивается и поджирает память потихоньку. Спасибо, буду иметь ввиду.
  12. Всем привет. Может кто-нибудь знает, как заставить линкер автоматически раскидывать rw данные по памяти, состоящей, например, у NXP LPC23xx из трех кусков. define symbol __ICFEDIT_region_RAM_start__ = 0x40000040; define symbol __ICFEDIT_region_RAM_end__ = 0x40007FFF; define region RAM_region = mem:[from __ICFEDIT_region_RAM_start__ to __ICFEDIT_region_RAM_end__]; define symbol __region_USB_DMA_RAM_start__ = 0x7FD00000; define symbol __region_USB_DMA_RAM_end__ = 0x7FD01FFF; define region USB_DMA_RAM_region= mem:[from __region_USB_DMA_RAM_start__ to __region_USB_DMA_RAM_end__]; define symbol __region_EMAC_DMA_RAM_start__ = 0x7FE00000; define symbol __region_EMAC_DMA_RAM_end__ = 0x7FE03FFF; define region EMAC_DMA_RAM_region= mem:[from __region_EMAC_DMA_RAM_start__ to __region_EMAC_DMA_RAM_end__]; place in RAM_region { readwrite, block CSTACK, block SVC_STACK, block IRQ_STACK, block FIQ_STACK, block UND_STACK, block ABT_STACK, block HEAP }; place in USB_DMA_RAM_region { section USB_DMA_RAM }; place in EMAC_DMA_RAM_region { section EMAC_DMA_RAM }; сейчас если я хочу положить в область USB или EMAC что то, то нужно явно указывать: int var @ "USB_DMA_RAM"; Хотелось бы так определить эти три зоны в icf файле, чтобы не нужно было явно указывать расположение для переменных. Вот такой трюк не прокатил: place in RAM_region { readwrite, block CSTACK, block SVC_STACK, block IRQ_STACK, block FIQ_STACK, block UND_STACK, block ABT_STACK, block HEAP }; place in USB_DMA_RAM_region { readwrite }; place in EMAC_DMA_RAM_region { readwrite };
  13. Всем привет. Обычно удается решить все вопросы самостоятельно. С гуглом и английским дружу. Но этой проблемой занимаюсь уже третий день безрезультатно. Задача следующая. Есть три источника опорной частоты. Порядок 25Мгц. Все источники cmos single ended. Требуется завести их на PLL clock translator AD9553, который имеет только два входа опорной частоты. Т.е. необходимо на один из входов AD9553 заводить частоту через мультиплексор. Рылся два дня по сайтам производителей. Адекватного по цене решения не нашел. Даже дорогие решения это PECL или LVDS и нужно дополнительно к ним ставить преобразователь, который: - удорожает еще сильнее решение. - сводит запас по джитттеру к нулю. (максимальный вносимый RMS джиттер между входом синхры и выходом AD9553 - 2ps). Последнее, что я нашел это аналоговый мукс по вполне вменяемой цене ADG904. Он 4 канальный. Мне нужно из них 2. Проблема в том, что изоляция канальная 37dB на 1GHz и я никак не соображу, как это повлияет на джиттер соседнего канала при их расфазировке.
  14. плата нарисована в allegro.