Перейти к содержанию
    

andrewlekar

Участник
  • Постов

    836
  • Зарегистрирован

  • Посещение

Весь контент andrewlekar


  1. sprintf вовсе не обязательно использует кучу.
  2. Сборщик мусора и риалтайм - понятия не совместимые. В яве если вы удалили переменную, а потом создали новую, никто не гарантирует, что GC начнёт чистить память. Если память будет заканчиваться, то GC начнёт проходить чаще. В эрланге есть хитрый сборщик мусора, обеспечивающий так называемый софт риалтайм. Можете почитать поподробнее, если интересно.
  3. Языки высокого уровня на контроллерах - вполне адекватная идея. Ява машина сидит даже в сим-картах, чего бы в STM32 не запихнуть? Я некоторое время возился с идеей запихнуть окамл на baremetal beaglebone. Очень увлекательное занятие, всем кто желает поближе познакомиться с устройством современных ОС, bios, EFI рекомендую. Ну и для прикола, есть порт окамла на PIC18: http://www.algo-prog.info/ocaml_for_pic/we...d=OCAPIC:OCAPIC Ну и да, существуют порты java, .net для Cortex M3, правда сильно порезанные.
  4. Однако вопрос вы задали... Для начала убираем 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; При этом считается, что если прерывание в какой-то момент времени ничего не смогла прочитать из очереди, то в ближайшее время она попробует это сделать снова. Ну и я бы подумал о том, чтобы поменять архитектуру на поллинг.
  5. XML требует движка БД? Вы уже чё-то выдумываете. Давайте уже не будем оффтопик разводить.
  6. А если ещё раз подумать, то ни на какой вопрос вообще нельзя 100% объективно ответить. Из общих соображений, SQL сервера заточены под работу с кортежами данных, как правило для быстрой выборки по индексу с не очень быстрой вставкой. Если в mysql писать с частотой в 1000 Гц неструктурированные данные, производительность будет трещать по швам.
  7. Быстрее писать в файлы. Если потом будете по этим данным что-то искать, то mysql будет делать выборку значительно быстрее, чем вы сможете это сделать руками.
  8. В таком случае, если будете писать *(int *)... = val рискуете получить падающую программу.
  9. Во-первых, он запишет указатель на интеджер в указатель на войд. Так делают, чтобы использовать одну структуру для разных данных (полиморфизм). Во-вторых, это вам надо выяснить, зачем вы в своей же структуре храните переменную как указатель на войд. Храните саму переменную как инт и всё будет проще.
  10. Да, раз у вас в структуре хранится void *, то и приводите к void *. Потом обратно можно получить указатель на что угодно.
  11. Как вам такой вариант: commands[com_num].vp = (void *)&mux_cur;
  12. Будет не меньше байта: для счётчиков, флагов хватит. А long не меньше 2-х байт. Хватит для большинства прочих применений. Правда писать текста больше.
  13. АНТОХА, +1. Не используйте u32, s32 и подобную ересь. Однако поддержу adnega, если пофиг на производительность и главное - читаемость кода, то используйте встроенные типа: int, char. Но используйте с оглядкой на переносимость, если может произойти переполнение, то размер указывайте явно: uint32_t, uint16_t.
  14. Как-то пока отлавливается всё логами и натурными экспериментами. Но в идеале: 1. Глобальный и многозадачный вотчодги. Многозадачный вотчодог делается так: задача с минимальным приоритетом должна выполниться хотя бы раз в минуту, для примера. Глобальный вотчдог срабатывает при сбое ОС, например в Hard Fault. 2. Пишем логи просто в порт для проведения натурных экспериментов. Можно отключать/включать перемычкой, чтобы производительность не страдала. 3. При появлении Fault выдавать стэк трейс или хотя бы SP, PC. Это правда не поможет при таинственных зависаниях.
  15. RL-TCPnet and SSL

    PolarSSL достаточно просто использовать. Я использовал с lwIP - прикрутилось без проблем. Вот аппаратное шифрование туда перетащить будет не очень просто, на мой взгляд.
  16. EAT не актуально, если файловая система доступна. Хотелось бы, конечно, памяти побольше. В идеале от 512К.
  17. Ага, AT команды значит появятся. Я так понимаю, этими командами нельзя будет читать/писать файл, то есть это задел на будущее?
  18. User Memory нету - это очень плохо. В планах есть внедрение этой фичи или шансов нет? По идее User Memory можно реализовать из EAT. Насколько я понял, для пользовательских данных из EAT доступно около 300К памяти, верно? Какие условия нужны для использования EAT в модуле?
  19. Уважаемый Cadilo и остальные читатели, подскажите-ка, у SIM800H какая последняя версия прошивки и когда ожидается ближайшее обновление? Есть ли у SIM800H поддержка JD, DTMF, User Memory?
  20. STM32 flash

    Я просто описал, как оно у меня щас сделано и не призываю делать так всех. Удалённого обновления на данный момент нет, поэтому и вышеописанные ужасы вряд ли произойдут. Когда удалённое обновление появится, то я буду проверять контрольную сумму каждого пакета и делать верификацию всей прошивки после заливки. И это будет происходить в отдельной области памяти, а не поверх рабочей прошивки.
  21. STM32 flash

    Я в своём софте тоже проверяю только, что сектор не пустой перед прыжком, однако подход Golikov A. очень даже разумен для критических применений железа. На самом деле, повреждённый байт может привести к катастрофическим последствиям.
×
×
  • Создать...