![](https://electronix.ru/forum/uploads/set_resources_23/84c1e40ea0e759e3f1505eb1788ddf3c_pattern.png)
![](https://electronix.ru/forum/uploads/set_resources_23/84c1e40ea0e759e3f1505eb1788ddf3c_default_photo.png)
jcxz
Свой-
Постов
13 478 -
Зарегистрирован
-
Посещение
-
Победитель дней
34
Весь контент jcxz
-
Спор начался из-за другого. Со сроков реализации. Я вообще не понимаю зачем все тащат линух к тому-же на реалтайм-задачи? Считаю, что всё можно реализовать без него и не так уж это и сложно, достаточно прочитать даташит. По-моему: реализация USB-стека (с DMA) - 2-3 месяца, реализация Ethernet-стека (с DMA) - те же 2-3 месяца максимум в зависимости от квалификации и опыта. Всё это - stand-alone. Да - месяц на стек - это у меня заняло параллельно основной работе.
-
Около 1МБ/сек. Больше нам не нужно. Полная загрузка ядра ARM9 OMAP-L137 на 300МГц всей задачей == 28%, из них около 3% съедает операционка, сколько из этого съедает обслуживание изохронного эндпоинта USB без DMA - отдельно не мерил, но думаю - не более 5%. Да, это Full-speed USB, с частотой обслуживания эндпоинта == 1кГц и включённым FIFO. Про "быстрый" я не говорил. Я говорил лишь про то, что если реализация всего стека занимает около месяца (без DMA), то изучение и добавление USB DMA займёт ещё не более месяца.
-
Во-1-ых: У меня не было задачи 50МБ/сек передавать и скорости без DMA мне вполне хватает. Во-2-х: Если я USB-стек реализовал, то переделать обслуживание эндпоинта через DMA вместо программного ВВ думаю будет проще, чем написание всего стека. Или вас пугает само слово DMA? :smile3046: Вы хотя-бы такую обработку сделайте на указанной скорости. Если сможете, то думаю реализация DMA USB после этого у вас займёт не более недели :)
-
Могли бы что-нить умнее придумать...
-
И что Вы хотели этим сказать?
-
Дык пробовал я. И написал. За месяц примерно. Правда без DMA. Ну на это ещё максимум месяц.
-
Интересно - на что там можно потратить столько времени из того, что умеет линух?
-
DSP BIOS
jcxz ответил Zelepuk тема в Сигнальные процессоры и их программирование - DSP
Если в main ничего не делается, значит делается в обработчиках прерывания или в задачах операционки, запускаемой из main -
Если у вас в каком-то режиме работает только одна задача, то это уже не многозадачность и соответственно - либо стек этой задачи можно наложить на другие стеки (union), либо - ещё лучше - организовать работу так, чтобы другая задача, которая в это время стоит, выполняла функции данной задачи и уменьшить кол-во задач на 1. Вот вам и экономия памяти. А насчёт стеков - правильно вам посоветовали - увеличивайте стек до тех пор пока глюки не пропадут, потом ищите дырки в шаблоне заполнения - стандартный способ. И естестно - шаблон не 0 и не 0xFF должен быть. printf часто много памяти жрёт (зависит от используемой библиотеки). Я, для уменьшения расхода памяти, использую переключение стека - перед вызовом printf переключаю SP на стек, выделенный специально для printf и защищаю это дело семафором естесно. Например: ARM9+CCS3.3 - закладываю под отдельный стек == 136*4 байт + размер под контекст, сохраняемый ОС при переключении задач (на моей ОС uCOS - ещё 18*4 байт). Хватает.
-
TiWi-R2 (WL1271)
jcxz ответил jcxz тема в Wireless/Optic
Блин :(( А какой тогда можете порекомендовать модуль чтобы было WiFi+BT если этот не удастся запустить? -
TiWi-R2 (WL1271)
jcxz ответил jcxz тема в Wireless/Optic
Устройства уже спаяли с этим TiWi-R2. К тому же у TiWi-SL как я понимаю нет Bluetooth-a, а нам он нужен. А что не так с этим TiWi-R2? И неужели нет док по его командам-протоколу??? -
TiWi-R2 (WL1271)
jcxz опубликовал тема в Wireless/Optic
Необходимо использовать модуль TiWi-R2 (построен на WL1271) для организации сбора данных с датчиков (по BT)/передачи к хосту (по WiFi) в своём устройстве (на OMAP-L137). Кто-нить имел опыт общения с данным модулем? Поделитесь пожалста инфой. Что-то пока даже не нашёл описания команд на него - как запустить, проинитить, создать сеть, передать данные и т.п.? Или примеры в исходниках. Линух не планируется, stand-alone. -
TI PLC PROJECT
jcxz ответил SergQ тема в Сигнальные процессоры и их программирование - DSP
А вы какой версией CCS компилите? И на какой проц? Мы в конце 2011 - начале 2012 с ним намучались на F28M35H52. Скомпилить-запустить удалось, но связь так и не пошла, хоть и представитель TI к нам приезжал и помогал. В результате - отказались. На сайте TI лежит CCS 4.2.4.00033 как последний, но для компиляции этого G3 нужен 4.2.4.00034 ;) Чтобы обновить до 4.2.4.00034 в то время надо было скачать патч, ссылку на который выдавал представитель TI эксклюзивно. Но после установки этого патча в работе CCS появлялись серьёзные проблемы. Хотя - может они уже всё пофиксили? Времени всё-таки уже порядком прошло. -
TI-ный C6745 есть в LQFP и с плавучкой 1double/такт вроде как. А UART-ы думаю везде есть
-
вот только с ARM9 это не поможет...
-
Да, интересные команды, не знал. Вот только не очень ясен механизм их работы... Нужно-ли во всех обработчиках прерываний ставить CLREX или она выполняется аппаратно при любом прерывании? Или там какой-то другой механизм работы?
-
Какой из ARM? Под ARM7/Cortex-M3 такое по-моему невозможно, только запретом прерываний. Просто InterlockedExchange можно: LONG InterlockedExchange(LONG val, LONG volatile *dest); _InterlockedExchange: SWP R0, R0, [R1] BX LR
-
Поставьте брэкпоинт на точку входа, посмотрите в даташите на проц с какого адреса он стартует по включению питания, выставите PC на этот адрес и запустите.
-
По-моему - это очевидно, что перед записью флешку надо предварительно стереть.
-
Предварительно стереть не забываете? Разрешить запись не забываете? Запретить прерывания не забываете? Стирание секторов: typedef void (__thumb *iap_entry_typ)(u32 *, u32 *); #define iap_entry ((iap_entry_typ)0x7FFFFFF1) __thumb __interwork u32 ClearFlash(uint beginSector, uint endSector) { u32 ibuf[5], obuf[3]; ibuf[0] = 50; ibuf[1] = beginSector; ibuf[2] = endSector; iap_entry(ibuf, obuf); if (!obuf[0]) { ibuf[0] = 52; ibuf[3] = CCLK / 1000; iap_entry(ibuf, obuf); } return obuf[0]; }
-
После замены генератора на SG-8002CA всё сразу заработало. Хотя в нём тоже PLL...
-
Сорри - построена на генераторе ASEM (www.abracon.com). А хочу заменить на SG-8002CA. А где Вы в даташите нашли значение джиттера в ppm? Вижу тока в пикосекундах (у обоих генераторов). Как это перевести? Но если судить по пикосекундам, то ASEM - лучше. Но USB почему-то - не работает... :( Не работает даже при нормальной температуре.
-
L137 USB с внешним CLK
jcxz опубликовал тема в Сигнальные процессоры и их программирование - DSP
Кто-нибудь применял на OMAP L137 или L138 USB с тактированием от внешнего генератора (REFCLKIN)? Есть какие-то особенности? На отладочной плате ПО (USB-device) работает с тактированием USB0 от внутреннего PLL OMAP. На рабочем устройстве для USB должен использоваться отдельный генератор. И с ним - не работает. Т.е. - принимает только первую посылку (get device descriptor) от хоста, потом - тишина и затем - reset от хоста. Затем опять запрос get device descriptor и всё по кругу. Такое ощущение, что хост не получает ответов устройства на свои запросы. Да - есть гальваническая развязка по D+/D- (ADUM4160) но похоже - дело не в ней. Есть подозрения на схему тактирования (построена на SG-8002CA 24МГц). -
Проверьте что Ваш код записался во флеш (под отладчиком посмотрите область флеш). Потом можно поставить бряк на точку входа в программу и стартануть проц со стартового адреса включения питания.
-
Всё изделие стоит дешевле? И при этом такое количество разнородной памяти (SDRAM+NAND+SD)? Если стоит вопрос о цене, то обычно стараются уложиться во внутренюю память кристалла, либо обойтись минимумом памяти одного типа (меньшее кол-во микросхем). Может стоит двигаться в направлении оптимизации ПО и не использования всяческих линухов? Это даст больший экономический эффект чем вешание на GPIO.