Jump to content

    

zuy

Свой
  • Content Count

    172
  • Joined

  • Last visited

Community Reputation

0 Обычный

About zuy

  • Rank
    Частый гость
  • Birthday 01/26/1981

Контакты

  • Сайт
    Array
  • ICQ
    Array

Информация

  • Город
    Array
  1. Тут вопрос терминологии, я бы не назвал это запуском под Андроид т.к. от Андроида может быть загружено только ядро. Это больше похоже на то, что делается чтобы встроить Busybox в rootfs андроида. Нам нужно тоже самое, добавить в rootfs некоторые программы от Linux чтобы запускать их из консоли. Особенность в том, что они должны работать с графикой.
  2. Не мешали, в смысле Android выводит картинку в свой видеоинтерфейс, а Linux в свой. Под Linux тут имеется ввиду, не полноценная система, а некоторый набор програм с необходимыми бибилиотеками, чтобы паралельно андроиду на другом мониторе рисовать свой интерфейс и взаимодействовать с пользователем. Для начала достаточно запустиь любую демку EGL/OpenGLES, которые у нас есть. Все это работает на одном ядре.
  3. Для помощи в сборке програмного обеспечения системы на базе процессора iMX6 от Freescale требуется человек хорошо понимающий, как собираются Android и Linux и как они работают. Кандидат должен соответствовать следующим требованиям: 1. Иметь возможность и желание работать удаленно и быть на связи в skype/ICQ 2-3 часа в период с 9-12 часового пояса UTC-08(Pacific time) 2. Быть уверенным пользователем Linux. Знать как работать и настраивать стандартные сервисы и как работать с Git и repo. 3. Глубоко понимать, как работают системы Android и Linux. Быть знакомым со структурой AOSP и ядра Linux. Знать как аппаратные устройства разных типов поддерживаются в ядре Linux и каким образом они доступ к ним появляется в режиме пользователя. Понимать, каким образом доступ к аппаратным устройсвам появляется во фреймворке Android. 4. Знания как работает аппаратное ускорение 2D/3D графики. Знать, что такое EGL, OpenGLES, OpenCL, Wayland, Weston, DirectFB. 5. Понимать как работают системы сборки Android, YOCTO, LTIB. Знать как их настраивать. 6. Уметь читать и понимать программный код на C/C++, Java, Python или любом другом языке используемом в Android и Linux. 7. Иметь возможность написать небольшие программы на C/C++, Java чтобы проверить какую-либо идею. 8. Необходимо уметь читать и понимать электрические схемы. 9. Опыт работы с embedded linux/Android. 10. Способность искать решение поставленной задаче, находить и решать проблемы. 11. Большой плюс - знание и опыт работы с процессором iMX6. Доступ к какой-нибудь плате на базе iMX6 так же очень поможет. На данный момент у нас есть аппаратная платформа на базе процессора iMX6. Есть рабочие сборки Android 4.0.4 и Linux на основе LTIB и YOCTO. Человек нужен для того, чтобы помочь из этих сборок собрать рабочую систему под наши требования. Для примера одна из самых первых задач будет следующая: Устройство имеет несколько видео выходов: HDMI, Paralel RGB, LVDS. Имеются рабочие драйверы. Есть Android который выводит картинку в HDMI. Необходимо собрать Linux на основе Yocto в которой бы работала графика через аппаратное ускорение. В качестве графического фреймворка планируется использовать QT5 и Wayland. Эту систему нужно обьеденить с Android так чтобы они друг другу не мешали. Android должен выводить картинку в HDMI а Linux в любой другой видео интерфейс. Т.к. еще не определено, как будет архитектурно выглядеть ПО системы, кандидат должен, на основе своего опыта и знания систем, участвовать в обсуждении как лучше реализовать то или иное требование к системе. На данный момент планируется частичная занятость. Компания американская, находится в районе Сан Франциско. Очень важно умение кандидата планировать свое время и ответственно относиться к работе. Если заинтересовала вакансия, отправьте резюме на адрес ivan@x-mediatech.com и продублируйте в личку сообщением, что отправили, чтобы ни одно письмо не пропало. Я подтвержу получение.
  4. Заменил все присваивания на неблокирующие. И упростил код, убрал второй блок Always и соеденил регистр ADDR_r напрямую с шиной данных. Т.е. теперь код просто через 2 такта после активации OE запоминает адрес в ADDR_r, который соединен с шиной данных. module sram_test( input [7:0] ADDR, output[7:0] DATA, input wire OE, input wire RESET, input wire CLK_IN, output TEST_1, output TEST_2, output TEST_3 ); reg[ 7 : 0 ] ADDR_r; reg[ 7 : 0 ] time_r; reg[ 1 : 0 ] state_r; reg rd_strobe; always @( posedge CLK_IN ) begin if( ~RESET ) begin state_r <= 0; end else begin case( state_r ) 0: if( ~OE ) begin state_r <= 1; time_r <= 2; end 1: begin time_r <= time_r - 1'b1; if( time_r == 0 ) begin rd_strobe <= 1; ADDR_r <= ADDR; state_r <= 2; end end 2: if( OE ) state_r <= 0; default: state_r <= 0; endcase end end assign TEST_1 = OE; assign TEST_2 = ADDR_r[ 0 ]; assign TEST_3 = rd_strobe; assign DATA = ADDR_r; endmodule Помех стало меньше и они изменили свой вид. Правильно ли я понимаю, что теперь это похоже на то, что я иногда не верно детектирую сигнал OE ?
  5. Получил. Но я и нигде и не использую биты старше 8-го от шины адреса. Я так решил, что синтезатор это понял и выкинул их из проекта, выдав это предупреждение. Разве это может привести к такому результату, как у меня на картинке? На всякий случай, урезал шину адреса до 8 бит. Пересобрал, ни одной ошибки и ни одного предупреждения больше нет, все стадии с зелеными галочками. Но результат никак не поменялся.
  6. Спасибо за ссылку, почитал. Правильно я понял, что вы думаете, у меня проявляется метастабильность из-за отсутствия констрейнов? Но я не понимаю где она может проявляться. Значение на шине адреса уже устоялось на тот момент, когда OE стал активным. Далее только через 2 такта системного клока я генерирую строб для вывода данных, а это 20нс задержки. За это время шина адреса не меняет своего значения и, как я думаю, значение шины адреса уже запомнилось в регистре ADDR_r. Не могу понять саму суть, откуда такие выпады могут появляться :(
  7. Похоже осталось после экспериментов. Я пробовал в обоих блоках блокирующие, в обоих неблокирующие и разные. Результат никак не меняется.
  8. Чтобы потренироваться работать с FPGA подключил я Spartan 6 к микроконтроллеру на шину статической памяти в режиме 8 бит. И для начала решил просто выдавать на шину данных последние 8 бит шины адреса. Планировалось получить что-то типа пилы. Тактовая частота CLK_IN 100 МГц. Набросал код: module sram_test( input [12:0] ADDR, output[7:0] DATA, input wire OE, input wire RESET, input wire CLK_IN, output TEST_1, output TEST_2, output TEST_3 ); reg[ 7 : 0 ] DATA_r; reg[ 12: 0 ] ADDR_r; reg[ 7 : 0 ] time_r; reg[ 1 : 0 ] state_r; reg rd_strobe; always @( posedge CLK_IN ) begin if( ~RESET ) begin state_r = 0; end else begin case( state_r ) 0: if( ~OE ) begin state_r = 1; time_r = 2; ADDR_r = ADDR; end 1: begin time_r = time_r - 1'b1; if( time_r == 0 ) begin rd_strobe = 1; time_r = 2; state_r = 2; end end 2: begin time_r = time_r - 1'b1; if( time_r == 0 ) begin rd_strobe = 0; state_r = 3; end end 3: if( OE ) state_r = 0; default: state_r = 0; endcase end end always @( posedge rd_strobe ) begin DATA_r <= ADDR_r[ 7 : 0 ]; end assign TEST_1 = OE; assign TEST_2 = DATA_r[ 0 ]; assign TEST_3 = rd_strobe; assign DATA = DATA_r; endmodule Задумал такую логику: 1. Жду активности OE, и запоминаю состояние шины адреса в этот момент 2. Через 2 такта делаю активным сигнал строба длиной также два такта. По фронту строба выдаю на шину данных младшие 8 бит запомненого адреса. 3. Жду пока OE станет неактивным и обратно к п.1. Для проверки, я контроллером читаю последовательно 1024 байт и смотрю на прочитанный массив. В результате получается пила но на ней постоянно в разных местах есть какие-то помехи и имеют они разную форму( синий график на картинке ). Если я в послднем Always блоке заменяю сохраненый регистр ADDR_r на прямое подключение к шине адреса ADDR то картинка становится идеальной( зеленый график ). Помогите понять, почему так происходит.
  9. Уверен, что косяк у вас в коде. Довольно часто использовал подобные конструкции на разных уровнях оптимизации, никогда проблем не было. Думаю, что обьяснение данное выше KnightIgor довольно точно описывает причину происходящего.
  10. Вот я когда-то писал насчет зависания хоста в LPC http://electronix.ru/forum/index.php?showt...st&p=942917 За прошедшее время всплыло еще пара моментов: 1. Допустим хост делает In транзакцию. Девайс ничего не передает и мы решаем ее отменить. Выставляем Skip бит у ED. ждем пару фреймов, и запускаем следующую OUT транзакцию у другого ED. Так вот если это сделать, когда хост начал прием то следующие пара транзакций после отмены IN, независимо IN или OUT, будет переноситься в Done с неизменяемыми битами статуса. При этом они будут исполняться нормально. 2. Делаем IN длинной более чем один пакет. Девайс присылает в ответ количество банных кратно пакету, но меньше чем мы запросили. Хост ставит у транзакции статус что она исполнилась без ошибок, но не переносит ее в Done. При этом на шине продолжаются попытки сделать IN, которые естественно получают NAK по таймауту. Если девайс передас количество байт не кратно пакету, то такого эффекта не возникает. Возможно это мои косяки, может я не доконца разобрался в чем-то. Интересно было бы услышать мысли знающих людей по этому поводу.
  11. Настроил WD LPC_SYSCON->SYSAHBCLKCTRL |= ( 1 << 15 ); LPC_SYSCON->WDTCLKSEL = 1; // Main OSC as CLK source LPC_SYSCON->WDTCLKDIV = 48; // CLK devider LPC_SYSCON->WDTCLKUEN = 1; // Enable WD CLK LPC_WDT->TC = WDT_PERIOD_SECONDS * 250000; LPC_WDT->MOD = ( 1 << 0 ) | ( 1 << 1 ); // WDT Enable, WDT reset Работает, когда надо ресетит проц через нужное время. Проблема в том, что когда проц уходит в sleep то WD продолжает его ресетить но период возрастает в 4 раза. При этом отключение клока в SYSAHBCLKCTRL, или изменение параметров в WDTCLKSEL/WDTCLKDIV/WDTOSCCTRL никак не влияет на период, через который происходит ресет в слипе. Как будто в слипе он считает совсем от другого источника. Как сделать так, чтобы WD не срабатывал в слипе и почему он вообще продолжает работать?
  12. LPC vs STM32 cortex-M3

    Знающие люди, подскажите такой момент. В каком корпусе с минимальным количеством ног доступен Cortex M3 от STM с контроллером внешней SRAM ? У NXP я нашел только 208 ногий, а что может предложить STM ?
  13. А, точно, не работает. Тогда у кого не работает пишите емайл тут, я скину адрес куда резюме отправлять. В личку тоже вроде всем ответил.
  14. Нужен человек для работы удаленно над схематиками и печатными платами в области цифрового и аналогового звука. Понимание особенностей аналога и цифры необходимо. Желательно использование Altium Или PCad. Опыт от 3-х лет. Если есть интерес, кидайте в личку контактные данные.