andrewlekar
Участник-
Постов
836 -
Зарегистрирован
-
Посещение
Весь контент andrewlekar
-
L76 Глонасс
andrewlekar ответил andrewlekar тема в Сотовая связь и ее приложения
Поставил на ночь точно такой же девайс с той же самой антенной GPS/GLONASS, но с модулем L70. Результаты показывает значительно симпатичнее. Вот 2 скриншота. Обратите внимание на масштаб карты для L76. -
L76 Глонасс
andrewlekar ответил andrewlekar тема в Сотовая связь и ее приложения
Нет, не на проводочках. Детальный лог может на днях получится снять: GPGGA и GNRMC будет достаточно? Вот у меня подозрение, что из-за размеров какой-то фильтр просто убрали... -
L76 Глонасс
andrewlekar ответил andrewlekar тема в Сотовая связь и ее приложения
Детального лога нет, потому что поставили чип в уже готовое устройство. Сводный лог показывает, что внезапно у прибора появилась скорость порядка 10 узлов, потом высота над уровнем моря стала опускаться примерно на 10 метров в секунду. Количество спутников менялось от 8 до 6, иногда с выбросами в 0. Вот что записалось: ----- GPS PACKET START ----- DATE: 220713 TIME: 150507.000 LATITUDE: 5509.2174 INDEX: N LONGITUDE: 06121.0154 INDEX: E SATTELITE: 6 HDOP: 8.93 COURSE: 228.82 ALTITUDE: -371.6 SPEED: 30.88 STATE: 1000030000089200000000000000000 ----- GPS PACKET END ----- ~ GPRS_SendDataDirectMultiple: Send request ~ Send multiple ~ Protect_GPS_Data: New GPS point accquired ~ AdcHdl: ADC value is 890 ~ Now writing adc1 and adc2 command ~ I2C write: OK ~ CsqHdl: GSM level is 29 ~ AdcHdl: ADC value is 892 ~ Now writing adc1 and adc2 command ~ I2C write: OK ----- GPS PACKET START ----- DATE: 220713 TIME: 150516.000 LATITUDE: 5509.1504 INDEX: N LONGITUDE: 06120.9110 INDEX: E SATTELITE: 6 HDOP: 8.88 COURSE: 228.73 ALTITUDE: -513.4 SPEED: 33.89 STATE: 1000029000089200000000000000000 ----- GPS PACKET END ----- -
L76 Глонасс
andrewlekar опубликовал тема в Сотовая связь и ее приложения
Попробовали L76 с глонасс антенной (из МТ-Систем MT-Precision). Видим ужасные выбросы, скорости до 100 км/ч и высоты до -2000 м над уровнем моря. Антенна лежит плохо - на окне, но с EB-500/EB-230 таких выбросов в тех же условиях не наблюдали. Кто в курсе, в чём именно причина больших выбросов? Дело в антенне, в глонассе или в чипе? -
SIM900(R)
andrewlekar ответил KARLSON тема в Сотовая связь и ее приложения
Вообще возможно. Но нужно ли? -
Сетевой коммутатор (вопросы/решение)
andrewlekar ответил JohnnyT тема в ARM
Вы про линукс для встраиваемых применений слышали вообще? Я предложить отладить проблему на компе, а потом тупо перенести на вашу плату, которая всё равно без линукса ни на что не годится. Только гигабита вы на ней не получите никогда. -
Сетевой коммутатор (вопросы/решение)
andrewlekar ответил JohnnyT тема в ARM
Поставьте комп с линуксом и 2-мя сетевыми платами. Создаёте мост br0. Добавьте в br0 eth0 и eth1. Посмотрите, работает ли так как задумывалось. Дальше надо гуглить, как с моста данные сливать для анализа - тут я не силён. -
Сетевой коммутатор (вопросы/решение)
andrewlekar ответил JohnnyT тема в ARM
Что делать? Ставить на плату линукс и поднимать соединение bridge. Должно удовлетворить условиям вашей задачи. -
Сетевой коммутатор (вопросы/решение)
andrewlekar ответил JohnnyT тема в ARM
С переводом тоже не понятно :) ICE - это чо? Ну нет на проце функциональности свитча, выкиньте этот проц и поставьте PHY свитча и функциональность появится. Или вы уже мёртво на этот проц подсели? Вот тут обсуждается реализация функциональности свитча: http://ubuntuforums.org/archive/index.php/t-1888419.html. Просто делается соединение мост и всё пересылается с интерфейса на интерфейс прозрачно. Посмотрел девайс по ссылке - да как раз PHY свитча. Суппорт, насколько я понял, отмазывается, что у них на отладке ничо не работает, а самим писать не стоит (видимо из-за геммороя с PRU). Я бы всё-таки посоветовал уйти от AM33xx на AM17xx например или ещё ниже, где MAC работает без всяких PRU. А, нет, TLK100 это просто PHY. На плате их пара стоит что ли? -
Сетевой коммутатор (вопросы/решение)
andrewlekar ответил JohnnyT тема в ARM
Можно поставить проц практически любой достаточно шустрый с RMII/MII, подцепить PHY свитча с нужным количеством портов, настроить зеркалирование данных на портах свитча и на MII проца. -
Linux начинающему
andrewlekar ответил Colobox тема в Linux
В общем да, обязательно ставить линукс для разработки. Винда, увы, не слишком для этого приспособлена: нет пакетного менеджера, нет мейка, нет стандартных линуксовых путей, нет баша. Почти весь опенсорс заточен под сборку мейком как минимум. Можно использовать cygwin или mingw, но это как секс в гамаке и линукс для разработчика - это практически стандарт. -
baud rate uart LPC2148
andrewlekar ответил Ave тема в ARM
Макросом дробный делитель сложновато считать. У меня кодом считается при необходимости: #ifdef USE_CALC_FRACTIONAL_DIVIDER //расчёт дробного делителя UART для минимизации процента ошибок. //19200 и 115200 позволяет использовать с 0 ошибкой для кварца 11,0592. static void uart_calc_divisors(uint_fast32_t baudrate, int *pDiv, int *pAddDiv, int *pMul, int *error) { uint_fast32_t uClk; uint_fast32_t calcBaudrate = 0; uint_fast32_t temp = 0; int mulFracDiv, dividerAddFracDiv; int diviser = 0; int mulFracDivOptimal = 1; int dividerAddOptimal = 0; int diviserOptimal = 0; int relativeError = 0; int relativeOptimalError = 10000; uClk = CPU_PERIPH_CLOCK >> 4; // div by 16 // In the Uart IP block, baud rate is calculated using FDR and DLL-DLM registers // The formula is : // BaudRate= uClk * (mulFracDiv/(mulFracDiv+dividerAddFracDiv) / (16 * (DLL) // It involves floating point calculations. That's the reason the formulae are adjusted with // Multiply and divide method. // The value of mulFracDiv and dividerAddFracDiv should comply to the following expressions: // 0 < mulFracDiv <= 15, 0 <= dividerAddFracDiv <= 15 for (mulFracDiv = 1; mulFracDiv <= 15;mulFracDiv++) { for (dividerAddFracDiv = 0; dividerAddFracDiv <= 15;dividerAddFracDiv++) { temp = (mulFracDiv * uClk) / ((mulFracDiv + dividerAddFracDiv)); diviser = temp / baudrate; if ((temp % baudrate) > (baudrate / 2)) diviser++; if ((diviser > 2) && (diviser < 65536)) { calcBaudrate = temp / diviser; if (calcBaudrate <= baudrate) relativeError = baudrate - calcBaudrate; else relativeError = calcBaudrate - baudrate; if ((relativeError < relativeOptimalError)) { mulFracDivOptimal = mulFracDiv; dividerAddOptimal = dividerAddFracDiv; diviserOptimal = diviser; relativeOptimalError = relativeError; if (relativeError == 0) break; } } } if (relativeError == 0) break; } *pDiv = diviserOptimal; *pAddDiv = dividerAddOptimal; *pMul = mulFracDivOptimal; *error = relativeOptimalError; } #else //!USE_CALC_FRACTIONAL_DIVIDER //UART baudrate formula : PCLK / (16 * UART1_MAIN_DIV * (1 + (FRACTIONAL_UART1_DIV / FRACTIONAL_UART1_MUL))) //For 11.0592 MHz , CCLK = 99532800, PCLK = 24883200 //Baudrate = 115200 #if (UART1_BAUDRATE == 115200) #define FRACTIONAL_UART1_DIV 1 #define FRACTIONAL_UART1_MUL 2 #define UART1_MAIN_DIV 9 #endif //Baudrate = 19200 #if (UART1_BAUDRATE == 19200) #define FRACTIONAL_UART1_DIV 0 #define FRACTIONAL_UART1_MUL 1 #define UART1_MAIN_DIV 81 #endif //wrong baudrate #if ((UART1_BAUDRATE != 115200) && (UART1_BAUDRATE != 19200)) #error "Wrong UART1 baudrate" #endif #endif //USE_CALC_FRACTIONAL_DIVIDER -
ППК "GSM-ХИТ-box"
andrewlekar ответил Valkos тема в Сотовая связь и ее приложения
Проще с нуля реализовать. -
Во-первых, Вам нужно избавиться от суперлупа и воткнуть ртос. Это увеличит производительность Вашего процессора без изменения логики работы. Во-вторых, код с отправкой сообщений интересный. Мне нравится. В-третьих, я для себя тоже сделал многопоточную очередь сообщений - для того, чтобы перетаскивать обработку данных из контекста одного потока в контекст другого. Сразу скажу, на си это выглядит довольно криво, съедает избыточную память и в большинстве случаев очередь как таковая не требуется - создаётся очередь из одного элемента. Для того, чтобы не было переполнения при отсутствии приёмника сообщений, я сделал ограничение размера в конструкторе очереди. Для того, чтобы не было фрагментации памяти, память под очередь выделяется статически на этапе компиляции. Да, кстати, аналогичный Вашему код есть и у меня в проекте. По сути это защищенная от многопоточного доступа переменная. У нас вместо SendMessage и GetMessage используется WriteRegister и ReadRegister.
-
А чо нельзя поприличнее PHY поставить и не заморачиваться с тактированием от проца? LAN8720 мы используем например.
-
Прорваться за NAT
andrewlekar ответил toweroff тема в Программирование
Надо, потому что внешний адрес будет у роутера, а вам надо до локалки достучаться. У вас в итоге 2 проблемы нужно решить: выяснить как пробить провайдерский нат или взять внешний айпи; перенаправить данные с аплинка роутера на заданный комп в локалке. -
Прорваться за NAT
andrewlekar ответил toweroff тема в Программирование
У провайдера попросите внешний адрес. У роутера включите перенаправление портов или по UPnP пробейте. Без внешнего адреса будет сложно, потому что нужно, чтобы порты пробрасывало оборудование провайдера и вряд ли оно это делает по умолчанию. -
Прибор с ethernet и web
andrewlekar ответил ass20 тема в ARM
По-моему, webtoolkit - это вообще что-то левое. Самый прямолинейный способ - это взять apache или nginx и к нему прикрутить обработчики по CGI. Самый экономный способ - написать веб-сервер на Си. Там не очень сложно, если не требуется богатый функционал. Если вопрос о том, на чём делать веб морду, то это к веб разработчикам. Чё-нибудь типа JQuery вполне подойдёт. -
Ещё про бутлоадер
andrewlekar ответил andrewlekar тема в ARM, 32bit
Да. Впрочем, боюсь на две копии софта не хватит флэша, поэтому придётся откатиться к традиционной схеме. -
Ещё про бутлоадер
andrewlekar опубликовал тема в ARM, 32bit
Нужно сделать очередной USB бутлоадер, но с некоторыми особенностями. Имеющиеся в природе бутлоадеры загружают софт с фиксированного адреса и стартуют независимо от основного приложения (по кнопке или перемычке). Мне же хочется, чтобы прямо из USB приложения на ПК можно было перевести устройство в режим бута и тут же безопасно залить свежую прошивку. У меня созрела вот такая схема бутлоадера: Загрузка новой прошивки происходит при работающем приложении, а новая прошивка спокойно заливается в свободную область памяти. После загрузки ещё одна область флэша патчится и меняет местами указатель на новую и на старую прошивки. При сбросе проца бут проверяет наличие прошивки по основному адресу и по запасному в случае сбоя. Всё это должно работать при условии позиционно независимого кода прошивки. Кто-нибудь работал с позиционно независимыми прошивками (IAR мой софт с ходу не смог собрать как позиционно независимый)? Прокомментируйте предложенную схему работы бутлоадера. В обычных бутах не устраивает, что для прошивки приходится что-то дополнительно нажимать на плате и то, что устройство перецепляется к ПК (требует повторного подключения). Для сравнения, в U-Boot этого не требуется. -
научите пользоваться стд перифом
andrewlekar ответил super_puper тема в ARM, 32bit
Ну CMSIS тоже тот ещё образец индусского кода. Я когда в gpio.c заглянул (для LPC178x), то не знал, то ли плакать, то ли смеяться. Абсолютно левый код, с которым просто невозможно управлять выводами. -
DTMF меню в SIM900x
andrewlekar ответил CADiLO тема в Сотовая связь и ее приложения
Это для SIM900 прошивка будет? В будущем под какой ревизией пойдёт? B02? -
"И что, обеспечит 10000 соединений? Дайте потестить." Нет, не обеспечит. Я же говорю, там всякая ересь. Но если нужен образец, от чего плясать, то очень даже подойдет. Там пул соединений добавить, потюнить винду на предмет ограничения сокетов, может и вытянет в итоге.
-
Мне что-то так чудится, что Вы и без HTTP не сможете отдавать данные каждые 3-9 сек. Подумайте на досуге, что Ваши устройства будут делать в те моменты, когда связи не будет. Что-то мне подсказывает, что данные они должны накапливать, а передавать при появлении связи. Так что мешает и по HTTP аналогично работать: данные накапливать, а передавать блоками с заданным интервалом?
-
Да топик стартеру эффективности большой не требуется - до 10000 клиентов, а отдавать данные можно раз в 10 минут, например. Нагрузка детская. Это конечно. Но вот сделать хороший сервер хоть TCP, хоть HTTP на C задача очень нетривиальная. Неопытный программист сделает в лоб по потоку на клиента и сразу же проиграет решению на эрланге. Тем не менее, я не советую топикстартеру браться за эрланг (хотя для самообразования очень даже советую), а порекомендую: 1. Поискать готовый сервис и присоседиться к нему. 2. Если не найдёт и решение нужно долгоиграющее и расширяемое, то взять веб сервер и прикрутить свой обработчик. Данные складировать сразу в БД картографического сервера. 3. Если совсем нет времени и хочется TCP, могу дать свой сервер на C#. Там по потоку на клиента, винда, бинарный протокол и прочая ересь, зато TCP сервер сразу заработает.