andrewlekar
Участник-
Постов
836 -
Зарегистрирован
-
Посещение
Весь контент andrewlekar
-
С/С++
andrewlekar ответил juvf тема в Программирование
sprintf вовсе не обязательно использует кучу. -
С/С++
andrewlekar ответил juvf тема в Программирование
Сборщик мусора и риалтайм - понятия не совместимые. В яве если вы удалили переменную, а потом создали новую, никто не гарантирует, что GC начнёт чистить память. Если память будет заканчиваться, то GC начнёт проходить чаще. В эрланге есть хитрый сборщик мусора, обеспечивающий так называемый софт риалтайм. Можете почитать поподробнее, если интересно. -
С/С++
andrewlekar ответил juvf тема в Программирование
Языки высокого уровня на контроллерах - вполне адекватная идея. Ява машина сидит даже в сим-картах, чего бы в STM32 не запихнуть? Я некоторое время возился с идеей запихнуть окамл на baremetal beaglebone. Очень увлекательное занятие, всем кто желает поближе познакомиться с устройством современных ОС, bios, EFI рекомендую. Ну и для прикола, есть порт окамла на PIC18: http://www.algo-prog.info/ocaml_for_pic/we...d=OCAPIC:OCAPIC Ну и да, существуют порты java, .net для Cortex M3, правда сильно порезанные. -
Однако вопрос вы задали... Для начала убираем volatile. Для таких структур от него толку мало будет. Потом делаем переменные: volatile bool busy_from_int, busy_from_main; В обработчике прерывания делаем так: if(busy_from_main) return; busy_from_int = true; mTransfers.read(); busy_from_int = false; В приложении делаем так: if(busy_from_int) continue; ENTER_CRITICAL(); if(busy_from_int) { EXIT_CRITICAL(); continue; } busy_from_main = true; EXIT_CRITICAL(); mTransfers.write(); busy_from_main = false; При этом считается, что если прерывание в какой-то момент времени ничего не смогла прочитать из очереди, то в ближайшее время она попробует это сделать снова. Ну и я бы подумал о том, чтобы поменять архитектуру на поллинг.
-
XML требует движка БД? Вы уже чё-то выдумываете. Давайте уже не будем оффтопик разводить.
-
Видео, картинки, музыка.
-
А если ещё раз подумать, то ни на какой вопрос вообще нельзя 100% объективно ответить. Из общих соображений, SQL сервера заточены под работу с кортежами данных, как правило для быстрой выборки по индексу с не очень быстрой вставкой. Если в mysql писать с частотой в 1000 Гц неструктурированные данные, производительность будет трещать по швам.
-
Быстрее писать в файлы. Если потом будете по этим данным что-то искать, то mysql будет делать выборку значительно быстрее, чем вы сможете это сделать руками.
-
Работа со struct
andrewlekar ответил jenya7 тема в Программирование
В таком случае, если будете писать *(int *)... = val рискуете получить падающую программу. -
Работа со struct
andrewlekar ответил jenya7 тема в Программирование
Во-первых, он запишет указатель на интеджер в указатель на войд. Так делают, чтобы использовать одну структуру для разных данных (полиморфизм). Во-вторых, это вам надо выяснить, зачем вы в своей же структуре храните переменную как указатель на войд. Храните саму переменную как инт и всё будет проще. -
Работа со struct
andrewlekar ответил jenya7 тема в Программирование
Да, раз у вас в структуре хранится void *, то и приводите к void *. Потом обратно можно получить указатель на что угодно. -
Работа со struct
andrewlekar ответил jenya7 тема в Программирование
Как вам такой вариант: commands[com_num].vp = (void *)&mux_cur; -
Cortex M3, M4 - разрядность переменных.
andrewlekar ответил Allregia тема в ARM, 32bit
Будет не меньше байта: для счётчиков, флагов хватит. А long не меньше 2-х байт. Хватит для большинства прочих применений. Правда писать текста больше. -
Cortex M3, M4 - разрядность переменных.
andrewlekar ответил Allregia тема в ARM, 32bit
АНТОХА, +1. Не используйте u32, s32 и подобную ересь. Однако поддержу adnega, если пофиг на производительность и главное - читаемость кода, то используйте встроенные типа: int, char. Но используйте с оглядкой на переносимость, если может произойти переполнение, то размер указывайте явно: uint32_t, uint16_t. -
Logging. Какие опции
andrewlekar ответил A. Fig Lee тема в ARM
Как-то пока отлавливается всё логами и натурными экспериментами. Но в идеале: 1. Глобальный и многозадачный вотчодги. Многозадачный вотчодог делается так: задача с минимальным приоритетом должна выполниться хотя бы раз в минуту, для примера. Глобальный вотчдог срабатывает при сбое ОС, например в Hard Fault. 2. Пишем логи просто в порт для проведения натурных экспериментов. Можно отключать/включать перемычкой, чтобы производительность не страдала. 3. При появлении Fault выдавать стэк трейс или хотя бы SP, PC. Это правда не поможет при таинственных зависаниях. -
RL-TCPnet and SSL
andrewlekar ответил Sergiy_master тема в ARM
PolarSSL достаточно просто использовать. Я использовал с lwIP - прикрутилось без проблем. Вот аппаратное шифрование туда перетащить будет не очень просто, на мой взгляд. -
SIM800H фичи
andrewlekar ответил andrewlekar тема в Сотовая связь и ее приложения
EAT не актуально, если файловая система доступна. Хотелось бы, конечно, памяти побольше. В идеале от 512К. -
SIM800H фичи
andrewlekar ответил andrewlekar тема в Сотовая связь и ее приложения
Отличная новость, спасибо. -
SIM800H фичи
andrewlekar ответил andrewlekar тема в Сотовая связь и ее приложения
Ага, AT команды значит появятся. Я так понимаю, этими командами нельзя будет читать/писать файл, то есть это задел на будущее? -
SIM800H фичи
andrewlekar ответил andrewlekar тема в Сотовая связь и ее приложения
User Memory нету - это очень плохо. В планах есть внедрение этой фичи или шансов нет? По идее User Memory можно реализовать из EAT. Насколько я понял, для пользовательских данных из EAT доступно около 300К памяти, верно? Какие условия нужны для использования EAT в модуле? -
SIM800H фичи
andrewlekar опубликовал тема в Сотовая связь и ее приложения
Уважаемый Cadilo и остальные читатели, подскажите-ка, у SIM800H какая последняя версия прошивки и когда ожидается ближайшее обновление? Есть ли у SIM800H поддержка JD, DTMF, User Memory? -
STM32 flash
andrewlekar ответил dimka76 тема в STM
Я просто описал, как оно у меня щас сделано и не призываю делать так всех. Удалённого обновления на данный момент нет, поэтому и вышеописанные ужасы вряд ли произойдут. Когда удалённое обновление появится, то я буду проверять контрольную сумму каждого пакета и делать верификацию всей прошивки после заливки. И это будет происходить в отдельной области памяти, а не поверх рабочей прошивки. -
STM32 flash
andrewlekar ответил dimka76 тема в STM
Я в своём софте тоже проверяю только, что сектор не пустой перед прыжком, однако подход Golikov A. очень даже разумен для критических применений железа. На самом деле, повреждённый байт может привести к катастрофическим последствиям. -
STM32, работа с UART и DMA
andrewlekar ответил esaulenka тема в ARM, 32bit
В чём проблема то?