Jump to content

    

andrewlekar

Участник
  • Content Count

    836
  • Joined

  • Last visited

Everything posted by andrewlekar


  1. LPC1768 беда с UART2

    Не могу ничего понять. Всё прекрасно работает, но стоит написать строчку U2LCR = 0; как падаю в обработчик App_Fault_ISR. Оставил минимальный код: КодBSP_Init(); uart0_hard_init(); gsm_uart_printf_unsafe("test test test\r\n"); U2LCR = 0; while(1); Без строчки U2LCR всё работает. Вот в виде ассемблера: Код00000010   0248               LDR.N    R0,??main_0+0x4 ;; 0x4009800c \   00000012   0021               MOVS     R1,#+0 \   00000014   0170               STRB     R1,[R0, #+0] При изменении на U1LCR тоже всё ОК. UPD: Вопрос снимается. Нужно сначала разрешить UART2 в PCONP. Однако реакция на команду крайне неординарная.
  2. Не понял, при чём тут SPI. По-моему, вам всё же проще будет освоить реализацию собственного загрузчика, чем городить эту двухпроцессорную конфигурацию.
  3. Работа с SD-картой

    Вполне приличный перевод, на мой взгляд. Может вы так весь User Manual переведёте?
  4. Делал программирование LPC1768 через AtMega16. Принцип похожий, только процы в 2-х разных устройствах, а прошивка заливается пользователем без участия LPC1768. Задача у вас не очень сложная. Главное внимательно изучить алгоритм прошивки проца через UART. Но стоит подумать о схеме работы без участия STM8. Зачем он вам тут нужен? Складывайте прошивку во внешнюю флэш, потом перезагружайтесь в режиме загрузчика, обновляйте программу и стартуйте.
  5. SPL - глюки в библиотеке

    Добавьте, лишним не будет. Я где-то подобным образом CMSIS допиливал.
  6. С/С++

    sprintf вовсе не обязательно использует кучу.
  7. С/С++

    Сборщик мусора и риалтайм - понятия не совместимые. В яве если вы удалили переменную, а потом создали новую, никто не гарантирует, что GC начнёт чистить память. Если память будет заканчиваться, то GC начнёт проходить чаще. В эрланге есть хитрый сборщик мусора, обеспечивающий так называемый софт риалтайм. Можете почитать поподробнее, если интересно.
  8. С/С++

    Языки высокого уровня на контроллерах - вполне адекватная идея. Ява машина сидит даже в сим-картах, чего бы в STM32 не запихнуть? Я некоторое время возился с идеей запихнуть окамл на baremetal beaglebone. Очень увлекательное занятие, всем кто желает поближе познакомиться с устройством современных ОС, bios, EFI рекомендую. Ну и для прикола, есть порт окамла на PIC18: http://www.algo-prog.info/ocaml_for_pic/we...d=OCAPIC:OCAPIC Ну и да, существуют порты java, .net для Cortex M3, правда сильно порезанные.
  9. Однако вопрос вы задали... Для начала убираем 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; При этом считается, что если прерывание в какой-то момент времени ничего не смогла прочитать из очереди, то в ближайшее время она попробует это сделать снова. Ну и я бы подумал о том, чтобы поменять архитектуру на поллинг.
  10. XML требует движка БД? Вы уже чё-то выдумываете. Давайте уже не будем оффтопик разводить.
  11. ЦитатаКакие вообще большие структуры могут не использовать индекс для поиска? Видео, картинки, музыка.
  12. ЦитатаА если еще раз подумать? А если ещё раз подумать, то ни на какой вопрос вообще нельзя 100% объективно ответить. Из общих соображений, SQL сервера заточены под работу с кортежами данных, как правило для быстрой выборки по индексу с не очень быстрой вставкой. Если в mysql писать с частотой в 1000 Гц неструктурированные данные, производительность будет трещать по швам.
  13. Быстрее писать в файлы. Если потом будете по этим данным что-то искать, то mysql будет делать выборку значительно быстрее, чем вы сможете это сделать руками.
  14. Работа со struct

    uint32_t vp;
  15. Работа со struct

    Цитатау меня переменная может быть разной размерности В таком случае, если будете писать Код*(int *)... = val рискуете получить падающую программу.
  16. Работа со struct

    Цитатавсе рвно не понимаю - как он запишет инеджер в войд? Во-первых, он запишет указатель на интеджер в указатель на войд. Так делают, чтобы использовать одну структуру для разных данных (полиморфизм). Во-вторых, это вам надо выяснить, зачем вы в своей же структуре храните переменную как указатель на войд. Храните саму переменную как инт и всё будет проще.
  17. Работа со struct

    Цитатано я что то не понимаю - мы приводим к войд? Да, раз у вас в структуре хранится void *, то и приводите к void *. Потом обратно можно получить указатель на что угодно.
  18. Работа со struct

    Как вам такой вариант: Кодcommands[com_num].vp = (void *)&mux_cur;
  19. Будет не меньше байта: для счётчиков, флагов хватит. А long не меньше 2-х байт. Хватит для большинства прочих применений. Правда писать текста больше.
  20. АНТОХА, +1. Не используйте u32, s32 и подобную ересь. Однако поддержу adnega, если пофиг на производительность и главное - читаемость кода, то используйте встроенные типа: int, char. Но используйте с оглядкой на переносимость, если может произойти переполнение, то размер указывайте явно: uint32_t, uint16_t.
  21. Logging. Какие опции

    Как-то пока отлавливается всё логами и натурными экспериментами. Но в идеале: 1. Глобальный и многозадачный вотчодги. Многозадачный вотчодог делается так: задача с минимальным приоритетом должна выполниться хотя бы раз в минуту, для примера. Глобальный вотчдог срабатывает при сбое ОС, например в Hard Fault. 2. Пишем логи просто в порт для проведения натурных экспериментов. Можно отключать/включать перемычкой, чтобы производительность не страдала. 3. При появлении Fault выдавать стэк трейс или хотя бы SP, PC. Это правда не поможет при таинственных зависаниях.
  22. RL-TCPnet and SSL

    PolarSSL достаточно просто использовать. Я использовал с lwIP - прикрутилось без проблем. Вот аппаратное шифрование туда перетащить будет не очень просто, на мой взгляд.
  23. SIM800H фичи

    EAT не актуально, если файловая система доступна. Хотелось бы, конечно, памяти побольше. В идеале от 512К.
  24. SIM800H фичи

    Отличная новость, спасибо.
  25. SIM800H фичи

    Ага, AT команды значит появятся. Я так понимаю, этими командами нельзя будет читать/писать файл, то есть это задел на будущее?