Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Скоростной АРМ - использование в качестве МК
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > ARM
Страницы: 1, 2
greenie
Уважаемые форумчане, долго не могу разобраться в вопросе. Периодический поиск на просторах инета и форумах результата не дает, вот даже зарегистрировался, чтобы создать тему.
Исходные данные. Нужно обрабатывать изображения падающего предмета раз 20 в сек. Т.е. за 50мс нужно получить изображение с фотокамеры, провести все алгоритмы обработки и приступить к следующему кадру. Есть опыт работы с АВР и АРМ с встроенной памятью.
Думаю, что можно использовать ARM Cortex-A8 к примеру. Частота 1ГГц должно хватить. Линукс или другие ОС нежелательны, потому что во-первых, их нужно осваивать, во-вторых, нужна реакция на результат обработки изображения (вовремя включить исполнительный механизм, чтобы в полете поймать предмет). Вопрос, который меня мучает, собственно вот в чем. Могу ли я программировать этот ARM Cortex-A8 как обычный МК (вот например, сейчас на работе я использую STM32F103, раньше были атмеги и иксмеги)? Плату можно купить любую отладочную с этим или похожим АРМом, мне важна частота и объем оперативки.
ПРосто не пойму, как программировать контроллеры с внешней флэш. Вот например сейчас все просто - написал в Keil'е программу, скомпилировал, залил ее ST-Link'ом. А как это все делать для ARM Cortex-A8... И чтобы без всяких линуксов - принцип точно такой же, как обычный МК?
kovigor
Цитата(greenie @ Jul 4 2012, 16:37) *
Могу ли я программировать этот ARM Cortex-A8 как обычный МК (вот например, сейчас на работе я использую STM32F103, раньше были атмеги и иксмеги)? Плату можно купить любую отладочную с этим или похожим АРМом, мне важна частота и объем оперативки.
ПРосто не пойму, как программировать контроллеры с внешней флэш. Вот например сейчас все просто - написал в Keil'е программу, скомпилировал, залил ее ST-Link'ом. А как это все делать для ARM Cortex-A8... И чтобы без всяких линуксов - принцип точно такой же, как обычный МК?

Да, можете. Если не нужен Linux, можете пойти двумя путями. Первый - писать всю инициализацию с нуля, но это сложно и долго. Второй - не грузить Linux, а грузить только U-Boot, который сам сделает за вас всю необходимую инициализацию. И свои программы запускать из-под U-Boot'а, предварительно скомпилировав их тем же CodeSourcery и загрузив в ОЗУ платы по TFTP (последнее можно сделать из командной строки U-Boot'а). отладочная плата от Freescale на i.MX53 (Cortex-A8) стоит $149. Вот ее и можно приобрести. U-Boot и Linux там уже предустановлены:

http://www.freescale.com/webapp/sps/site/t...X53_FAMILY#nogo
AlexandrY
Цитата(greenie @ Jul 4 2012, 16:37) *
ПРосто не пойму, как программировать контроллеры с внешней флэш. Вот например сейчас все просто - написал в Keil'е программу, скомпилировал, залил ее ST-Link'ом. А как это все делать для ARM Cortex-A8... И чтобы без всяких линуксов - принцип точно такой же, как обычный МК?


Не вижу чтобы Keil имел сейчас компилятор для A8.
Надо либо переходить на IAR либо прикручивать к uVision компилятор ARM RVCT.
У IAR есть очень простые примеры инициализации A8.
А чтобы внешнюю флеш программировать и в IAR и в Keil есть шаблоны для разработки модулей программирования подгружаемых в RAM микроконтроллера по JTAG.
Чтобы потом инициализировать остальную периферию советую обратиться к примерам для чипов того же производителя, но на ARM9
Если это Freescale, то смотреть примеры для i.MX27
sharikov
Цитата(greenie @ Jul 4 2012, 17:37) *
Нужно обрабатывать изображения падающего предмета раз 20 в сек. Т.е. за 50мс нужно получить изображение с фотокамеры, провести все алгоритмы обработки и приступить к следующему кадру. Есть опыт работы с АВР и АРМ с встроенной памятью.
Думаю, что можно использовать ARM Cortex-A8 к примеру. Частота 1ГГц должно хватить. Линукс или другие ОС нежелательны, потому что во-первых, их нужно осваивать, ...
ПРосто не пойму, как программировать контроллеры с внешней флэш. Вот например сейчас все просто - написал в Keil'е программу, скомпилировал, залил ее ST-Link'ом. А как это все делать для ARM Cortex-A8... И чтобы без всяких линуксов - принцип точно такой же, как обычный МК?

Вы пытаетесь идти по неправильному пути. Для камней класса Cortex-A8 работать без linux/winCE можно, но глупо. Камни зело тяжелы. На программировании аппаратных блоков видеопрецессинга ввода с камеры вы закопаетесь. В операционках программированием аппратных интерфейсов занимался вендор при создании bsp, реалистичный путь - использовать то что дает производитель.
Без посторонней нагрузки под линуксом время реакции будет зависеть только от вашего алгоритма.
SergeyDDD
Цитата(sharikov @ Jul 5 2012, 06:47) *
Вы пытаетесь идти по неправильному пути. Для камней класса Cortex-A8 работать без linux/winCE можно, но глупо. Камни зело тяжелы. На программировании аппаратных блоков видеопрецессинга ввода с камеры вы закопаетесь. В операционках программированием аппратных интерфейсов занимался вендор при создании bsp, реалистичный путь - использовать то что дает производитель.


Глупости.
Все зависит от того, какая периферия нужна, так как с ней больше всего работы.
А по объему работы Cortex-A8 это или Cortex-M3 разница не особо большая.

Kovigor посоветовал отладочную плату Freescale MCIMX53-START-R за $149 (реальная цена будет несколько больше).
Действительно очень хороший вариант, правда есть два но...
- Пересмотрите схему платы и документацию процессора, так как интерфейс CMOS сенсора выведен не полностью на плате.
- На плате используется не очень доставаемый низкопрофильный разъем для вывода периферии. Для решения проблемы я вынужден был докупить плату HDMI с ответником этого разъема.
У Freescale довольно неплохая поддержка своей продукции. Для быстрого запуска документации достаточно.
Я бы наверное сначала посоветовал бы ознакомится с Linux SDK этой платы и запуститься под Линуксом.
Думаю с этим вариантом сэкономите массу времени. А потом будет виднее - нужна ОС или нет.

И еще...
К этому процессору существует библиотека "On-Board Diagnostics Suite (OBDS) for the Freescale i.MX53 SBRTH LCB platform" с исходниками периферии.
* Debug UART (used for communication with the host PC), transmit and receive test
* DDR test
* Audio out only test
* IPU TFT (Chunwa WVGA), LVDS and VGA display test
* I2C peripheral connectivity test
* MMC/SD test for SD Slot 2, where SD Slot 1 implicitly tested as OBDS boots from SD
* LED test – test for the on board GPIO controlled LED
* Ethernet FEC loopback test (requires loopback cable)
* USBH1 Device enumeration test (requires USB device, like USB-mouse connected to top USB port of J2)
* SRTC test
* SATA test
* DA9053 PMIC device ID check test
* HDMI
AlexandrY
Цитата(sharikov @ Jul 5 2012, 06:47) *
Вы пытаетесь идти по неправильному пути. Для камней класса Cortex-A8 работать без linux/winCE можно, но глупо. Камни зело тяжелы. На программировании аппаратных блоков видеопрецессинга ввода с камеры вы закопаетесь. В операционках программированием аппратных интерфейсов занимался вендор при создании bsp, реалистичный путь - использовать то что дает производитель.
Без посторонней нагрузки под линуксом время реакции будет зависеть только от вашего алгоритма.


Забавная логика.
Все знают, что нормальный, безглючный и полнофункциональный BSP под линукс стоит диких денег особенно если под заказную платформу.
В данном случае речь видимо идет о оригинальной камере.
Но даже получив BSP придется платить дальше поскольку драйверы для графических ускорителей будут в бинарном виде и самим их поддерживать никак не возможно будет. Уже не говорю о цене инструментов, того же JTAG который мог бы отлаживать под линуксом.

Еще три года назад Segger портировал свою RTOS на Cortex-A8, раньше чем чипы вообще на доступном рынке появились. Т.е. для серьезных, корпоративных клиентов.
А embOS от Segger-а это по сути работа с голым железом без всяких MMU и прочих виртуализаций.
Уже не говорю о том что такие серьезные конторы как Mentor Graphics вообще свою RTOS портируют на все новые чипы с Cortex-A8.
А Nucleus OS от Mentor Graphics это в сущности тот-же старый добрый uc/OS-II работающий напрямик с железом без виртуализаций.
greenie
Может, использовать линукс правильнее с данным процессором. Просто я имел дело только с МК, из армов это только stm32f100 и stm32f103. А в этой работе (кстати, это аспирантура в свободное от работы время, а в универах с закупом нужного оборудования у нас дело плохо обстоит, поэтому надо по-минимуму за свой счет и нельзя ошибиться в выборе компонентов)))) мне от проца нужно только управлять ногами, ну и пару уартов иметь - двухстрочный дисплейчик подключить и с компом по компорту общаться. Камеру я тоже не выбрал, думаю что-то вроде матрицы LUPA-300. Если на плате порты ввода\вывода выведены, я ее как-нибудь прицеплю... Конечно, вся работа с камерой вручную - кадры считывать с ног, но я не нашел скоростную камеру с каким-нибудь интерфейсом, которым я могу к ней прицепиться и получать изображения так быстро (20 раз в секунду) и еще успевать все обработать до прихода нового.
greenie
Кстати, от KEIL придется отказаться, наверное, там бесплатно только до 32КБ, IAR тоже по причине платности не подходит. Сейчас ищу инфу что такое CodeSourcery и с чем его едят)
sharikov
Цитата(greenie @ Jul 5 2012, 15:58) *
Может, использовать линукс правильнее с данным процессором. Просто я имел дело только с МК, из армов это только stm32f100 и stm32f103.
...
поэтому надо по-минимуму за свой счет и нельзя ошибиться в выборе компонентов)))) мне от проца нужно только управлять ногами, ну и пару уартов иметь - двухстрочный дисплейчик подключить и с компом по компорту общаться. Камеру я тоже не выбрал, думаю что-то вроде матрицы LUPA-300. Если на плате порты ввода\вывода выведены, я ее как-нибудь прицеплю... Конечно, вся работа с камерой вручную - кадры считывать с ног, но я не нашел скоростную камеру с каким-нибудь интерфейсом, которым я могу к ней прицепиться и получать изображения так быстро (20 раз в секунду) и еще успевать все обработать до прихода нового.

у как все запущено...
Ногодрыгом получать изображение скамеры...
Наверно вы думаете что гигагерцовый кортекс и ногами машет на гигагерце...
Увы, это далеко не так.
kovigor
Цитата(greenie @ Jul 5 2012, 15:58) *
Сейчас ищу инфу что такое CodeSourcery и с чем его едят)

Компилятор такой. Для i.MX53 качайте виртуальную машину (Ubuntu) с сайта FreeScale, ставьте в ней CodeSourcery, собирайте библиотеку NewLib и пробуйте писать простейшие программки:

Ubuntu:
http://www.freescale.com/webapp/sps/site/p...esign_Tools_Tab
Выберите: "Board Support Packages"

CodeSourcery:
https://sourcery.mentor.com/GNUToolchain/su...757fcaeae081292
Выберите: "Download Sourcery CodeBench Lite 2012.03-56"

Вот статья, по которой я разбирался с newlib:
https://balau82.wordpress.com/2010/12/16/us...metal-programs/
KRS
greenie,
посмотрите ARM DS-5, там есть все необходимое и для bare-metal
и если есть beagleboard (а освоение Cortex-A8 IMHO проще всего начать с нее или beaglebon), то там все есть для быстрого старта т.е. за 5 мин можно Hello World! написать и отладить через gdb server прямо на плате (образы angstrom тоже есть)

еще есть среда от TI - Code Composer Studio, тоже сейчас на эклипсе, там все есть для быстрого старта с beaglebone, в отличии от DS-5 поддерживает, например XDS100 (просто FTDI) в качестве железного отладчика. Для beaglebon там есть много примеров инициализации и т.п. что бы без линукса работать!
dinam
Цитата(greenie @ Jul 5 2012, 18:58) *
Камеру я тоже не выбрал, думаю что-то вроде матрицы LUPA-300. Если на плате порты ввода\вывода выведены, я ее как-нибудь прицеплю... Конечно, вся работа с камерой вручную - кадры считывать с ног, но я не нашел скоростную камеру с каким-нибудь интерфейсом, которым я могу к ней прицепиться и получать изображения так быстро (20 раз в секунду) и еще успевать все обработать до прихода нового.
Насчет матрицы LUPA-300. Я попробовал штук 6 разных матриц разных производителей. Так вот эта оказалась самой паршивой по качеству изображения, может и я что-то где-то накосячил, но с другими такого не было. Плюс был аппаратный глюк в самой матрице, да и её производитель поменялся. Так что с поддержкой, будет наверное совсем плохо.
Рекомендую попробовать MT9V034. Дешевая, легко покупаемая, беспроблемная.
SergeyDDD
Цитата(greenie @ Jul 5 2012, 15:58) *
Кстати, от KEIL придется отказаться, наверное, там бесплатно только до 32КБ, IAR тоже по причине платности не подходит. Сейчас ищу инфу что такое CodeSourcery и с чем его едят)


Читайте доки Фрискейла. Там все вполне доступно разжевано

На семинаре по iMX53 работали под виндой в Eclipse (Win32), а компилятор был на виртульной машине, работающей под Linux Ubuntu.
С такой связкой примеры собирались как для Linux так и для Android.

Теоретически можно воспользоваться компилятором и тулчейном Yagarto Win32 (Known ARM CPUs (for use with the -mcpu= and -mtune= options): ... cortex-a9, cortex-a8, cortex-a5, ...) + Eclipse.
Если iMX53 без ОС, то и jLink для отладки
andrewlekar
Мне кажется или описанную задачу можно с наименьшим геммороем решить на ПК? По-моему, вполне реально обрабатывать видеопоток с указанной скоростью и сервоприводом пошевелить с заданной реакцией.
sasamy
Цитата(SergeyDDD @ Jul 5 2012, 09:40) *
И еще...
К этому процессору существует библиотека "On-Board Diagnostics Suite (OBDS) for the Freescale i.MX53 SBRTH LCB platform" с исходниками периферии.


Используя эти примеры максимум что вы сделаете- аналог u-boot, который ни по скорости ни по функционалу рядом не лежит с Linux. Как вы собираетесь использовать 2D,3D графические процессоры, видеопроцессор ? к примеру контроллер dma (sdma - smart dma) это отдельный 16 битный risc-процессор для которого фирмвари пишут специально обученые люди sm.gif с тем же видеозахватом и программированием IPU заплюхаетесь разбираться.
AlexMik1
Цитата(greenie @ Jul 5 2012, 14:58) *
Конечно, вся работа с камерой вручную - кадры считывать с ног, но я не нашел скоростную камеру с каким-нибудь интерфейсом, которым я могу к ней прицепиться и получать изображения так быстро (20 раз в секунду) и еще успевать все обработать до прихода нового.

у меня почти аналогичная задача
про работу вручную вы наверное имеете ввиду через какой-то спец интерфейс проца?
Я заказал плату на таком проце AT91SAM9XE512, по скорости он вам вряд ли подойдет, но в нем есть ISI интерфейс для руления камерой, как бы в теории все просто, настроить нужные регистры, кадр пишется напрямую в память, по окончании кадра получаем прерывание, обрабатываем кадр. Как будет на практике еще не знаю sm.gif
по поводу самой камеры, то вроде бы сейчас не проблема 30 fps (кадров в секунду), видел много 60 fps, так что получать кадры с 20fps вроде бы не проблема, проблема успеть обработать
SergeyDDD
Цитата(sasamy @ Jul 6 2012, 12:09) *
Используя эти примеры максимум что вы сделаете- аналог u-boot, который ни по скорости ни по функционалу рядом не лежит с Linux.

Глупость.
Оптимален Linux или нет - зависит от поставленной задачи. Перечитайте задачу топикстартера.
Написанный Вами софт работающий под Linux-ом ну никак не может быть быстрее софта, работающего без оси.
Правда это зависит и от программиста.

Цитата(sasamy @ Jul 6 2012, 12:09) *
Как вы собираетесь использовать 2D,3D графические процессоры, видеопроцессор ?

Я не собираюсь этого делать и судя по задаче топикстартер тоже.

Цитата(sasamy @ Jul 6 2012, 12:09) *
к примеру контроллер dma (sdma - smart dma) это отдельный 16 битный risc-процессор для которого фирмвари пишут специально обученые люди sm.gif

Что представляет из себя контроллер SDMA я знаю, так как работаю с iMX257.
Что касается скриптов контроллера, то писать ничего не надо, так как они уже написаны "специально обученными людьми".
Бери и пользуйся.

Цитата(sasamy @ Jul 6 2012, 12:09) *
с тем же видеозахватом и программированием IPU заплюхаетесь разбираться.

Заплюхается товарищ или нет зависит только от него. Главное терпение и желание.
В свое время под свою задачу полностью поднял iMX21, который работает без ОС, но при этом кроилась память с использованием MMU.
Был поднят декодер H.263, мультимедиа ускоритель eMMA, интерфейс CMOS сенсора + VGA сенсор и много другое.
Не заплюхался
sasamy
Цитата(SergeyDDD @ Jul 6 2012, 15:13) *
Оптимален Linux или нет - зависит от поставленной задачи.


Глупость - в любом случае оптимальней использовать готовое чем изобретать велосипеды.

Цитата
Написанный Вами софт работающий под Linux-ом ну никак не может быть быстрее софта, работающего без оси.


еще одна глупость - заапросто будет потому что смогу использовать всю мощь gpu и vpu.

Цитата
Заплюхается товарищ или нет зависит только от него. Главное терпение и желание.


главное - голова на плечах, а у кого она есть берет ОС и не парится над низкоуровневым программированием а решает свои задачи.

Цитата
Что касается скриптов контроллера, то писать ничего не надо, так как они уже написаны "специально обученными людьми".
Бери и пользуйся.


вот - есть же зачатки рационализма, не все потеряно у вас еще sm.gif
SergeyDDD
Цитата(sasamy @ Jul 6 2012, 15:07) *
Глупость - в любом случае оптимальней использовать готовое чем изобретать велосипеды.

еще одна глупость - заапросто будет потому что смогу использовать всю мощь gpu и vpu.

главное - голова на плечах, а у кого она есть берет ОС и не парится над низкоуровневым программированием а решает свои задачи.


Мы видимо говорим о разных вещах. При чем здесь gpu и vpu.
Еще раз перечитайте тему топика и что нужно топикстартеру.

Я не против ОС.
Просто там где она нужна я ее использую, а где не нужна - нет.
Желаете пихать линух куда угодно и не париться над низкоуровневым программированием?
Удачи!!!

...

"вот - есть же зачатки рационализма, не все потеряно у вас еще"

Ну Ё маЁ.
У меня все зашибись.
А Ваш сомнительный "рационализм" девайте сами знаете куда.
sasamy
Цитата(SergeyDDD @ Jul 6 2012, 17:31) *
Еще раз перечитайте тему топика и что нужно топикстартеру.


ему нужно вот это
http://gstreamer.freedesktop.org/data/doc/...ns-v4l2src.html

можно и напрямую работать с v4l, для Linux у фрискейл есть неплохая библиотека unit test. gpu и vpu в основном для вас ответ - почему вы никогда не станете майором sm.gif
scifi
Я не модератор, но всё равно напомню про правила форума. Личные оскорбления запрещены.
IgorKossak
Цитата(scifi @ Jul 6 2012, 16:51) *
Личные оскорбления запрещены.

Личных оскорблений пока не усматриваю. Пока всё в рамках.
Тем не менее, прошу избежать характеристик личностей.
Модератор.
SergeyDDD
Цитата(sasamy @ Jul 6 2012, 16:38) *
ему нужно вот это
http://gstreamer.freedesktop.org/data/doc/...ns-v4l2src.html

можно и напрямую работать с v4l, для Linux у фрискейл есть неплохая библиотека unit test. gpu и vpu в основном для вас ответ - почему вы никогда не станете майором sm.gif


[DELETED]
Сообщение №5 топика
" У Freescale довольно неплохая поддержка своей продукции. Для быстрого запуска документации достаточно.
Я бы наверное сначала посоветовал бы ознакомится с Linux SDK этой платы и запуститься под Линуксом.
Думаю с этим вариантом сэкономите массу времени. А потом будет виднее - нужна ОС или нет. "

Или "рацональней" прикручивать левое "нечто"?
sasamy
Цитата(SergeyDDD @ Jul 6 2012, 18:42) *
[Или "рацональней" прикручивать левое "нечто"?


Рациональнее не витать в облаках - Linux тут просто очевидное решение. Какой смысл разбираться с работой конкретного устройства конкретного производителя когда можно написать код _один раз_ и он будет работать на любом процессоре где работает Linux, а это без преувеличения все процессоры на баз cortex-a8. При этом автоматически сюда попадут и устройства UVC и сенсоры с цифровым выходом и платы с АЦП. Завтра вам предложат китайцы процессоры по полбакса за мешок и вы сядете в лужу потому что не сможете им воспользоваться, потому что документации на них нет вообще никакой кроме портированного ядра Linux, а я смогу даже не пересобирая свой код sm.gif
greenie
Очень рад, что обсуждение бурное, надеюсь хоть немного все прояснить.

Цитата(kovigor @ Jul 6 2012, 03:14) *
Компилятор такой. Для i.MX53 качайте виртуальную машину (Ubuntu) с сайта FreeScale, ставьте в ней CodeSourcery, собирайте библиотеку NewLib и пробуйте писать простейшие программки:

Ubuntu:
http://www.freescale.com/webapp/sps/site/p...esign_Tools_Tab
Выберите: "Board Support Packages"

CodeSourcery:
https://sourcery.mentor.com/GNUToolchain/su...757fcaeae081292
Выберите: "Download Sourcery CodeBench Lite 2012.03-56"

Вот статья, по которой я разбирался с newlib:
https://balau82.wordpress.com/2010/12/16/us...metal-programs/


Coce Sourcery скачал, теперь хочу объединить с Eclipse по инструкции https://sites.google.com/site/stm32discover...ery-development Линукс для компиляции программы ведь необязателен, или я неправильно понял?

Цитата(dinam @ Jul 6 2012, 08:51) *
Насчет матрицы LUPA-300. Я попробовал штук 6 разных матриц разных производителей. Так вот эта оказалась самой паршивой по качеству изображения, может и я что-то где-то накосячил, но с другими такого не было. Плюс был аппаратный глюк в самой матрице, да и её производитель поменялся. Так что с поддержкой, будет наверное совсем плохо.
Рекомендую попробовать MT9V034. Дешевая, легко покупаемая, беспроблемная.


Читаю даташит к MT9V034C12STM, но не могу найти диапазон регистрируемых длин волн. Мне нужно ИК светом освещать предмет и регистрировать проходящий, чтобы узнать степень поглощения. Какой бы вы сенсор еще посоветовали?
Вначале я вообще надеялся найти готовый модуль - сенсор с контроллером, чтобы подключиться к нему по spi, usb или ethernet, благо сейчас эти все порты в контроллерах есть, а в таких продвинутых, как мне нужен из-за быстродействия, и подавно. Но такого не нашел, решил подцеплять сенсор вручную на ноги, правда пока смутно представляю, как я это дело все запущу и подозреваю, что не один месяц уйдет на запуск железа, что совсем не касается научной работы, а есть только инструмент.


Цитата(andrewlekar @ Jul 6 2012, 15:48) *
Мне кажется или описанную задачу можно с наименьшим геммороем решить на ПК? По-моему, вполне реально обрабатывать видеопоток с указанной скоростью и сервоприводом пошевелить с заданной реакцией.


ПК просто это лишнее, тем более ситуация следующая: предмет свободно падает, на одном уровне я его фотографирую, пока обрабатываю изображение, он летит дальше, а внизу орган воздействия - мне нужно его включить четко вовремя, а как это сделать с ОС, пусть и ОСРВ, я не знаю. Зато знаю, что такое прерывания, таймеры и т.д. в МК sm.gif Поэтому и выбрал данный путь - управлять процессором как микроконтроллером. Мне бы только к регистрам обращаться возможность получить, а там уж дело техники sm.gif

Цитата(AlexMik1 @ Jul 6 2012, 16:48) *
у меня почти аналогичная задача
про работу вручную вы наверное имеете ввиду через какой-то спец интерфейс проца?
Я заказал плату на таком проце AT91SAM9XE512, по скорости он вам вряд ли подойдет, но в нем есть ISI интерфейс для руления камерой, как бы в теории все просто, настроить нужные регистры, кадр пишется напрямую в память, по окончании кадра получаем прерывание, обрабатываем кадр. Как будет на практике еще не знаю sm.gif
по поводу самой камеры, то вроде бы сейчас не проблема 30 fps (кадров в секунду), видел много 60 fps, так что получать кадры с 20fps вроде бы не проблема, проблема успеть обработать


А вы камеру подобрали? Это больной вопрос... Дело даже не в частоте смены кадра, а скорее в выдержке, если можно так выразиться. Предмет же падает, поэтому время экспонирования должно быть минимальным, т.к. смаз в 2-3 пиксела это уже плохо.

Цитата(sasamy @ Jul 6 2012, 19:07) *
Глупость - в любом случае оптимальней использовать готовое чем изобретать велосипеды.
еще одна глупость - заапросто будет потому что смогу использовать всю мощь gpu и vpu.
главное - голова на плечах, а у кого она есть берет ОС и не парится над низкоуровневым программированием а решает свои задачи.
вот - есть же зачатки рационализма, не все потеряно у вас еще sm.gif


Просто тут ОС не знаю даже, зачем нужна. Мне только изображение получить нужно и все. Обработка - это просто алгоритм над массивом байтов, ну и дернуть ногой через заданное количество миллисекунд...
SergeyDDD
Цитата(sasamy @ Jul 6 2012, 18:20) *
Рациональнее не витать в облаках - Linux тут просто очевидное решение. Какой смысл разбираться с работой конкретного устройства конкретного производителя когда можно написать код _один раз_ и он будет работать на любом процессоре где работает Linux, а это без преувеличения все процессоры на баз cortex-a8. При этом автоматически сюда попадут и устройства UVC и сенсоры с цифровым выходом и платы с АЦП. Завтра вам предложат китайцы процессоры по полбакса за мешок и вы сядете в лужу потому что не сможете им воспользоваться, потому что документации на них нет вообще никакой кроме портированного ядра Linux, а я смогу даже не пересобирая свой код sm.gif


Глупо спорить с человеком, который слышит только себя. Перечитайте мое сообщение №5 может тогда все станет на свои места.
Надеюсь моя информация помогла топикстартеру.
А майорам желаю заслуживать свои погоны.
Ув. sasamy, предлагаю завершить сей глупый спор.
greenie
Цитата(sasamy @ Jul 6 2012, 22:20) *
Рациональнее не витать в облаках - Linux тут просто очевидное решение. Какой смысл разбираться с работой конкретного устройства конкретного производителя когда можно написать код _один раз_ и он будет работать на любом процессоре где работает Linux, а это без преувеличения все процессоры на баз cortex-a8. При этом автоматически сюда попадут и устройства UVC и сенсоры с цифровым выходом и платы с АЦП. Завтра вам предложат китайцы процессоры по полбакса за мешок и вы сядете в лужу потому что не сможете им воспользоваться, потому что документации на них нет вообще никакой кроме портированного ядра Linux, а я смогу даже не пересобирая свой код sm.gif


Если линукс позволит пользоваться драйвером порта, к которому штатно можно подключить скоростную камеру и я воспользуюсь готовой функцией для получения кадра, а потом еще и дрыгнуть нужной ногой, то это было бы замечательно и стоило бы времени на освоения "ембеддед линукс". Отсчитать миллисекунды можно параллельно подключенным маленьким МК, который только и будет, что регистрировать начало отсчета и включать, если надо, воздействие. Только вот я пока не нашел такую камеру.
AlexMik1
Цитата(greenie @ Jul 6 2012, 18:23) *
А вы камеру подобрали? Это больной вопрос... Дело даже не в частоте смены кадра, а скорее в выдержке, если можно так выразиться. Предмет же падает, поэтому время экспонирования должно быть минимальным, т.к. смаз в 2-3 пиксела это уже плохо.

это зависит от динамического диапазона сенсора, освещения, ... в общем можно смотреть разные сенсоры (aptina.com ...) и потом искать какие есть камеры на них
с сенсорами вроде бы все просто, а вот с камерами ... как то плохо находятся, я еще не выбрал

Цитата(greenie @ Jul 6 2012, 18:23) *
Просто тут ОС не знаю даже, зачем нужна. Мне только изображение получить нужно и все. Обработка - это просто алгоритм над массивом байтов, ну и дернуть ногой через заданное количество миллисекунд...

ОС нужна только чтобы не иметь гемороя с камерой, мне аналогично, нужен кадр, и его обработка (чистый С++)
если не думать о переносе на другое железо или камеру, то как бы все нормально, если думать, то ... х.з. может и под линукс делать
greenie
Цитата(SergeyDDD @ Jul 5 2012, 12:40) *
У Freescale довольно неплохая поддержка своей продукции. Для быстрого запуска документации достаточно.
Я бы наверное сначала посоветовал бы ознакомится с Linux SDK этой платы и запуститься под Линуксом.
Думаю с этим вариантом сэкономите массу времени. А потом будет виднее - нужна ОС или нет.

И еще...
К этому процессору существует библиотека "On-Board Diagnostics Suite (OBDS) for the Freescale i.MX53 SBRTH LCB platform" с исходниками периферии.


Простите за чайниковский вопрос, но к примеру если пользоваться линуксом, то компилировать программу так же в "Eclipse+CodeSourcery"?

sasamy
Цитата(greenie @ Jul 6 2012, 19:34) *
Если линукс позволит пользоваться драйвером порта, к которому штатно можно подключить скоростную камеру и я воспользуюсь готовой функцией для получения кадра, а потом еще и дрыгнуть нужной ногой, то это было бы замечательно и стоило бы времени на освоения "ембеддед линукс". Отсчитать миллисекунды можно параллельно подключенным маленьким МК, который только и будет, что регистрировать начало отсчета и включать, если надо, воздействие. Только вот я пока не нашел такую камеру.



Отсчитывать миллисекунды вам не нужно - драйвер сам ставит таймштампы на буфер
http://v4l2spec.bytesex.org/spec-single/v4l2.html#BUFFER
дрыгать ножкой элементарно через sysfs, 20 fps даст любая камера - смотря какое разрешение нужно, а вот конкретно это
Цитата
предмет же падает, поэтому время экспонирования должно быть минимальным, т.к. смаз в 2-3 пиксела это уже плохо.

тут не знаю что сказать. Кстати - gstreamer тут будет избыточен, вам достаточно напрямую кадры брать
http://v4l2spec.bytesex.org/spec-single/v4...CAPTURE-EXAMPLE
Petka
Цитата(greenie @ Jul 6 2012, 19:58) *
Простите за чайниковский вопрос, но к примеру если пользоваться линуксом, то компилировать программу так же в "Eclipse+CodeSourcery"?

Почти так. CodeSourcery это всего-лишь сборка GCC. Для сборки программы к линуксу у вас будет аналогичный кросс-компилятор (тоже сборка GCC). Eclipse может работать с любым GCC.
kovigor
Цитата(greenie @ Jul 6 2012, 18:23) *
Coce Sourcery скачал, теперь хочу объединить с Eclipse по инструкции https://sites.google.com/site/stm32discover...ery-development Линукс для компиляции программы ведь необязателен, или я неправильно понял?

Я компилирую в виртуальной машине (Ubuntu), а саму машину запускаю из-под XP. Возможно, есть сборки CodeSourcery под Windows, я просто не интересовался. Тогда и Linux для запуска компилятора не нужен. А вот Эклипс нужен здесь, как рыбе зонтик. Просто лишнее усложнение на ровном месте. Но это мое личное мнение, и я не навязываю его другим. Для сборки проекта достаточно написать make - файл, а для написания кода хватает простого текстового редактора.
P.S. Советую не бояться Linux, а начать его осваивать. Рано или поздно он вам все равно потребуется ...
greenie
Цитата(kovigor @ Jul 7 2012, 02:17) *
P.S. Советую не бояться Linux, а начать его осваивать. Рано или поздно он вам все равно потребуется ...


Линукс, в принципе, не страшен. Он даже стоял когда-то второй системой, только Дебиан. Кстати, Дебиан или Убунту - не принципиально? Когда я выбирал линукс для ознакомления, то сложилось впечатление по прочитанному в сети, что Дебиан - самый старый, самый стабильный и т.д., вот его и выбрал.
scifi
Цитата(greenie @ Jul 7 2012, 08:04) *
Кстати, Дебиан или Убунту - не принципиально?

Удобнее выбрать более популярный дистрибутив, так как при возникновении вопросов легче будет найти ответы. Следовательно, убунту.
Petka
Цитата(scifi @ Jul 7 2012, 10:29) *
Удобнее выбрать более популярный дистрибутив, так как при возникновении вопросов легче будет найти ответы. Следовательно, убунту.

Поддерживаю. Тем более убунту исторически вросла из дебиана. По этой причине они по большей части совместимы.
P.S. Для человека сильно привыкшего к windows рекомендую попробовать Kubuntu (Ubuntu + KDE). Кубунту внешне очень похожа на Win. Первое время будет более привычно выглядеть.
pdk
Предложу еще один вариант: пачку Cortex-M4 ( stm32F4 168Mhz ), один принимает (есть аппаратный интерфейс под камеру) и раздает остальным покадрово для обработки.
Получаем:
-знакомый Keil
-20кадров в секунду, правда время обработки кадра будет ~100мс
-паябельные корпуса (хоть tqfp 64 )без необходимости ставить внешнюю память
kovigor
Цитата(pdk @ Jul 7 2012, 10:20) *
Предложу еще один вариант: пачку Cortex-M4

Мне эта задача чем-то напомнила систему авторегистрации нарушений ПДД, используемую ГАИ. Вот интересно, на чем там обработка реализована ? Скорее всего, мощный ARM, работающий под управлением Linux ...
dinam
Цитата(greenie @ Jul 6 2012, 22:23) *
Читаю даташит к MT9V034C12STM, но не могу найти диапазон регистрируемых длин волн. Мне нужно ИК светом освещать предмет и регистрировать проходящий, чтобы узнать степень поглощения. Какой бы вы сенсор еще посоветовали?
Вначале я вообще надеялся найти готовый модуль - сенсор с контроллером, чтобы подключиться к нему по spi, usb или ethernet, благо сейчас эти все порты в контроллерах есть, а в таких продвинутых, как мне нужен из-за быстродействия, и подавно. Но такого не нашел, решил подцеплять сенсор вручную на ноги, правда пока смутно представляю, как я это дело все запущу и подозреваю, что не один месяц уйдет на запуск железа, что совсем не касается научной работы, а есть только инструмент.
Мы занимаемся подобными задачами. Нужные вам графики есть на странице 79. Готовых камер на этой матрице полно, но цены на них раз в 100 больше, чем на саму матрицу.

Цитата(greenie @ Jul 6 2012, 22:23) *
А вы камеру подобрали? Это больной вопрос... Дело даже не в частоте смены кадра, а скорее в выдержке, если можно так выразиться. Предмет же падает, поэтому время экспонирования должно быть минимальным, т.к. смаз в 2-3 пиксела это уже плохо.
У этой матрицы есть вывод LED_OUT, позволяющий управлять осветителем с нужной длительностью. Мы в качестве осветителей, используем мощные светодиоды. На сегодняшний момент самые яркие светодиоды с одним кристаллом делает Luminus. Я попробовал красный и зеленый SST-90. Импульсный ток наших осветителей с этими светодиодами может достигать до 15А. Средний до 4А. Светят ослепляюще, но в итоге света маловато получилось biggrin.gif.
Есть ещё один момент - влияние внешней засветки во время длинных пауз. Аппаратно делаем запуск сразу двух кадров, первый - "стирающий", второй уже обрабатываем.
PoReX
Кстати у Texas Instruments есть хорошая линейка микропроцессоров для обработки видео вплоть до FULL HD 60fps. Называется линейка DaVinci, в каждом микропроцессоре ARM ядро + DSP. Знаю что многие производитель IP видеокамер используют именно DaVinci.
greenie
Цитата(dinam @ Jul 9 2012, 09:12) *
Мы занимаемся подобными задачами. Нужные вам графики есть на странице 79. Готовых камер на этой матрице полно, но цены на них раз в 100 больше, чем на саму матрицу.

У этой матрицы есть вывод LED_OUT, позволяющий управлять осветителем с нужной длительностью. Мы в качестве осветителей, используем мощные светодиоды. На сегодняшний момент самые яркие светодиоды с одним кристаллом делает Luminus. Я попробовал красный и зеленый SST-90. Импульсный ток наших осветителей с этими светодиодами может достигать до 15А. Средний до 4А. Светят ослепляюще, но в итоге света маловато получилось biggrin.gif.
Есть ещё один момент - влияние внешней засветки во время длинных пауз. Аппаратно делаем запуск сразу двух кадров, первый - "стирающий", второй уже обрабатываем.


А как вы успеваете еще и стирающий кадр, если этот сенсор только 60кадров в секунду выдает? Я вот еще сенсор присмотрел LUPA-1300-2 LUPA-1300-2-datasheet.pdf. Вроде быстрый очень.
Только вот два вопроса возникают. У этого сенсора и у MT9V034 выходной интерфейс LVDS, а у процессора i.MX53 этот LVDS для подключения дисплея, а не для ввода изображения с камеры, как я понял из даташита. Помогите, пожалуйста, прояснить этот момент - подключение сенсора к контроллеру. И второе: сенсор сенсором, а он без объектива не используется же? Как-то нужно еще лепить туда объектив... нужно делать корпус, куда ставить этот сенсор и объектив? Я правильно понимаю?
dinam
Используем внешний запуск по ножке. Делаем запуск второго кадра сразу как закончится первый. Время через которое изображение становится доступной в памяти равно 1/60*2+ время экспозиции. Кадр считываем по десятиразрядной параллельной шине. Вроде правильно понял ваш вопрос.
Ещё мы применяем IBIS4-6600 тоже не очень. Есть ещё серия Vita, но я решил больше с ними не связываться. Хватило двух раз, в третий раз решил не рисковать. Тем более есть альтернатива - Cmosis.
Попробовал быстрый сенсор фирмы Cmosis - CMV2000. CMV4000 - вообще родной братец CMV2000, но разрешение получше. Ну есть ещё быстрые сенсоры с большим разрешением этой же фирмы. Вот CMV2000 нам понравился - быстрый, global shutter, шумит не сильно.
Мы намаявшись с видеокамерами других фирм стали делать для себя. С матрицы кадр(ы) льётся в буфер, оттуда по USB2.0 в компьютер, далее обработка уже в PC. Матрицы у нас подключаются к FPGA, на ней же сделан контроллер SDRAM, поэтому я вам вряд ли смогу помочь в подключении к МК или DSP. Камера представляет из себя "бутерброд" из двух плат, заключенных в корпус. В корпус можно прикрутить(закрепить) нужный объектив.
greenie
В сторону FPGA я даже не смотрел... А CMV300 600к/с - тоже подошла бы. В принципе, сенсоры есть. Осталось прояснить вопрос их подключения к процессору.
dinam, а мы с вами соседи, я чуть южнее в АлтГТУ sm.gif
AVR
Цитата(greenie @ Jul 4 2012, 17:37) *
Линукс или другие ОС нежелательны, потому что во-первых, их нужно осваивать
бьюсь об заклад что освоить правильную инициализацию периферии и памяти "большого процессора" может оказаться сложнее чем освоить несчастный простейший (и довольно однообразный по способу работы и освоения на широком спектре платформ) как три копейки Linux (из чего и следует мой статус под ником) sm.gif

Цитата
во-вторых, нужна реакция на результат обработки изображения (вовремя включить исполнительный механизм, чтобы в полете поймать предмет).
о величинах каких порядков идет речь? готов поспорить что Linux тут как раз подойдёт

Цитата
Вопрос, который меня мучает, собственно вот в чем. Могу ли я программировать этот ARM Cortex-A8 как обычный МК
выше уже ответили что можно, без особых проблем в принципе

P.S.
прошу прощения, просто не мог пройти мимо, ведь автор темы может ошибочно полагать что Linux это сложнее чем то что он собрался покорять sm.gif

Цитата(AlexandrY @ Jul 5 2012, 10:15) *
Все знают, что нормальный, безглючный и полнофункциональный BSP под линукс стоит диких денег особенно если под заказную платформу.
В данном случае речь видимо идет о оригинальной камере.
чиво?! О_о
Цитата
Но даже получив BSP придется платить дальше поскольку драйверы для графических ускорителей будут в бинарном виде и самим их поддерживать никак не возможно будет.
чиво?! О_о
Цитата
Уже не говорю о цене инструментов, того же JTAG который мог бы отлаживать под линуксом.
чиво?! О_о

особенно последний пункт улыбнул, я вижу человек уже не первый год сидит на этом форуме и рассказывает байки про Linux как встраиваемую ОС, причем комментарий про JTAG накрепко убедил меня в том что я не ошибся =)))
greenie
Цитата(AVR @ Jul 10 2012, 20:53) *
бьюсь об заклад что освоить правильную инициализацию периферии и памяти "большого процессора" может оказаться сложнее чем освоить несчастный простейший (и довольно однообразный по способу работы и освоения на широком спектре платформ) как три копейки Linux (из чего и следует мой статус под ником) sm.gif


Линукс даже интересно бы запустить... ембеддед в смысле sm.gif Я даже один раз пробовал отладочную плату запускать, даже скрипт писал на SH для общения с дисплейчиком по I2C, но это было давно и не считается. А вот как для линукса программу написать, в которой я буду с периферией общаться и как ее запустить при старте - я пока не понимаю.

Цитата(AVR @ Jul 10 2012, 20:53) *
о величинах каких порядков идет речь? готов поспорить что Linux тут как раз подойдёт


Свободное падение тела, но маленький размер, поэтому надо четко рассчитать время, через которое тело будет на определенной высоте. Если, я школьную кинематику не забыл, то с точностью до 100мкс надо бы ножкой дернуть суметь sm.gif
kovigor
Цитата(greenie @ Jul 10 2012, 18:24) *
Свободное падение тела, но маленький размер, поэтому надо четко рассчитать время, через которое тело будет на определенной высоте. Если, я школьную кинематику не забыл, то с точностью до 100мкс надо бы ножкой дернуть суметь sm.gif


Изображение обязательно обрабатывать ? Или в вашей задаче падают разные тела, и нужно обнаруживать тела определенного вида ? Простого пересечения телом светового лучика недостаточно ?
greenie
Цитата(kovigor @ Jul 10 2012, 22:41) *
Изображение обязательно обрабатывать ? Или в вашей задаче падают разные тела, и нужно обнаруживать тела определенного вида ? Простого пересечения телом светового лучика недостаточно ?

Да, нужно выделить объект, посчитать его размеры, найти степень поглощения ИК-излучения, а потом, в зависимости от размеров, формы и поглощения принять решение и "ловить" его или нет. А эти объекты будут сыпаться один за другим. А по пересечению светового лучика я начну фотографировать и отсчет времени для "ловли". Ну и надо, чтобы в кадр попал объект полностью, поэтому и думаю скоростную камеру и скоростной процессор, чтобы много кадров потоком обрабатывать, а среди них будут появляться нужные с объектом целиком.

Подскажите, кто работал с видеосенсорами. Я так понимаю, что продаются они без платы, под них еще плату нужно делать? Корпус тоже нужно свой делать, чтобы объектив прицепить? В общем, если выбрать только сенсор, то его непросто начать использовать...
И вопрос про подключение сенсора к АРМу я так и не понял - что кортекс М4, что А8 - у них "камера интерфейс", а у сенсоров LVDS - это одно и то же?
AVR
Цитата(greenie @ Jul 10 2012, 19:24) *
Линукс даже интересно бы запустить... ембеддед в смысле sm.gif Я даже один раз пробовал отладочную плату запускать, даже скрипт писал на SH для общения с дисплейчиком по I2C, но это было давно и не считается. А вот как для линукса программу написать, в которой я буду с периферией общаться и как ее запустить при старте - я пока не понимаю.
работать с I2C в Linux не просто просто, а крайне просто, как раз на прошлой неделе этим занимался sm.gif
запустить программу при старте? запросто... о какой периферии идет речь?

по любым вопросам на тему Embedded Linux ко мне в личку - подскажу всем чем смогу, я упоротый в этом плане sm.gif

Цитата
Свободное падение тела, но маленький размер, поэтому надо четко рассчитать время, через которое тело будет на определенной высоте. Если, я школьную кинематику не забыл, то с точностью до 100мкс надо бы ножкой дернуть суметь sm.gif
как уже выше подсказали, правильнее использовать конечно внешний фото-датчик для таких вещей и даже обеспечивать его ранее срабатывание (настроить по вкусу)
Danis
Цитата(greenie @ Jul 4 2012, 16:37) *
Исходные данные. Нужно обрабатывать изображения падающего предмета раз 20 в сек. ...
А как это все делать для ARM Cortex-A8... И чтобы без всяких линуксов - принцип точно такой же, как обычный МК?


Я б на Вашем месте сначала реализовал это на большой машине с помощью готовых библиотек распознавания образов, затем, при положительном результате, разобрал и перенес нужные коды на микроконтроллер. Можно применить это: OpenCV (Open Source Computer Vision Library, библиотека компьютерного зрения с открытым исходным кодом).
greenie
Цитата(Danis @ Jul 10 2012, 23:24) *
Я б на Вашем месте сначала реализовал это на большой машине с помощью готовых библиотек распознавания образов, затем, при положительном результате, разобрал и перенес нужные коды на микроконтроллер. Можно применить это: OpenCV (Open Source Computer Vision Library, библиотека компьютерного зрения с открытым исходным кодом).


Оно реализовано, но для Виндоуз и кажется не на сишных библиотеках...


Кстати, а ембеддед линукс много процессорного времени использует на посторонние вещи? Как сильно мне придется отвыкать от того, что все такты тратятся на нужный мне алгоритм?
Petka
Цитата(greenie @ Jul 17 2012, 21:00) *
...
Кстати, а ембеддед линукс много процессорного времени использует на посторонние вещи? Как сильно мне придется отвыкать от того, что все такты тратятся на нужный мне алгоритм?

Линукс ничего не делает "лишнего". Какие сервисы вы запустили на нём, те и будут работать. Не нужны никакие сервисы - отключайте их напрочь. Единственное что останется - 100 Раз в секунду будет вызываться планировщик. Если планировать нечего, то он никакого процессорного времени не сожрёт. Переключение контекста происходит достаточно быстро (десятки тактов). Итого мимо вашей программы пройдёт максимум 0,01%. Понятно, что драйвера периферии будут отжирать время. Но если без ОС, то всё-равно будут драйвера и будут жрать соизмеримое количество ресурсов.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.