Jump to content

    

miheyk

Свой
  • Content Count

    162
  • Joined

  • Last visited

Everything posted by miheyk


  1. Не думали, что возможно эта файловая система тупо надёжнее в сравнении с FatFS? ТС спасибо за обратную связь!
  2. Увы, но надежность и размер буфера в ОЗУ противоречат друг друга. Любой журнал, любая таблица перемещений, будь то борьба с бэдблоками или неравномерным износом флеши требуют громадных затрат по ОЗУ. Пример - файловая система от Segger потребляет ~50 КБ для флеша в 64 МБ и тоже через malloc.
  3. Некорректно написал название - µC/OS. Не понял про свой, ну да ладно)
  4. За деньги можно вообще ничего не делать, только плати. Ту же uOS со стеком ФС пилят и продают все, кому не лень
  5. Не все так плохо, без линукса, но на фриртос ) Хотя эта FS заточена прежде всего под NAND, с NOR таких проблем нет. Вот тут, как и советовали ранее, как раз описано преимущество LittleFS на случай сбойного питания. SD и eMMC это уже другой уровень развития, и, используя их, можно как минимум решить проблему борьбы с BB. В общем, повышение надежности напрямую связано с качеством этих карт. Про безбажные ПЛК порадовали
  6. LPC1788 и EMC

    +1 Попробуйте забить этот буфер, данные должны обновиться.
  7. Всем добра, уважаемые коллеги. Понадобилось обновить исходники проекта и сформировать hex-файл, дабы обновить прошивку на работающих девайсах силами зашитого в них бутлоадера. Подключаю в проекте доставшийся по наследству скрипт линкера APP24FJ64GA004IVTremap.gld, собираю hex. Подключаюсь через PIC24F Quick Programmer к камню, стираю, заливаю прошивку и на этапе верификации получаю это: Verify Error at 0x4 should be: 0xC02 but read: 0x2A8 Verify Error at 0x6 should be: 0xC06 but read: 0x2A8 Verify Error at 0x8 should be: 0xC0A but read: 0x2A8 Verify Error at 0xA should be: 0xC0E but read: 0x2A8 Verify Error at 0xC should be: 0xC12 but read: 0x2A8 Verify Error at 0xE should be: 0xC16 but read: 0x2A8 Verify Error at 0x10 should be: 0xC1A but read: 0x2A8 Verify Error at 0x12 should be: 0xC1E but read: 0x2A8 Verify Error at 0x14 should be: 0xC22 but read: 0x2A8 Verify Error at 0x16 should be: 0xC26 but read: 0x2A8 Verify Error at 0x18 should be: 0xC2A but read: 0x2A8 и т.д. Замена скриптов на родные из примера AN1157 картины не меняет. При этом имею hex-файл предыдущей прошивки, который успешно заливается загрузчиком. Вопрос: может есть какая-то хитрость в приготовлении прошивки для загрузчика? PS Исходники бутлоадера основаны на официальном загрузчике. Среда MPLAB X v3.40. Компилятор XC16. Камень PIC24FG64GA004. linker_script.zip boot_src.zip
  8. Спасибо, Владимир. Порадовали. Для схем давно форматки используем, а вот для плат по старинке >DXP>AutoCAD. Где-нибудь писали об этом?
  9. Power port по ГОСТ действительно давно появился, а форматки можно оформить прямо на листе в виде шаблонов (SchDot), включая титульную, там же сетку в 5 мм. задать. Сборочный оформлять увы, только через конструкторские CAD.
  10. Косяк у Кейла

    В защиту GCC - по умолчанию он молчалив, но Wall/Wextra никто не отменял. В защиту K&R - если кому-то что-то не нравится, то это ваше дело, но правила есть правила, и библия K&R в первую очередь явилась фундаментом для стандарта ANSI C (C89). С тех пор многое поменялось в лице сахара, новых типов, макросов и т.д., но никак не фундаментальные вещи. Например, найдите отличия между главой 3.5 Циклы for и while и 6.8.5.3 The for statement C11 или между А 6.5. Арифметические преобразования и 6.3.1 Arithmetic operands С11. Пример про преобразование типов, что я приводил ранее, все же из ранних трудов и сейчас неактуален, т.к. в новом издании K&R ANSI преобразование звучит иначе (см. ссылку выше) По поводу горячего спора for(;;){} vs while(1){} все точки над и уже расставлены, но for(;;) лег в основу FreeRTOS и ядра Linux.
  11. Теперь понятнее, но всё же зачем /dev/ttyUSB0? Модуль ядра Это не цель модуля, а демона, и не нужно это смешивать.
  12. Для первой проблемы увеличьте буфер, чтобы он не переполнялся, но и не опустошался. Для второй проблемы постройте буферизацию, например, через кольцевой буфер. Это уже вопрос алгоритма. И не поленитесь прикрутить DMA к буферу.
  13. Вопрос, зачем из модуля открывать /dev/ttyUSB0? 1 модуль - 1 задача. А для вывода/ввода есть потоки и ядро само решает в какую консоль это должно идти.
  14. Косяк у Кейла

    Сам по себе цикл с единичной итерацией да, бесмыслица. Но GCC молча делает дело. Про обрамление в ду вайл могу сказать на примере ядра linux - там почти все макросы с переносом строки, но в цикле - единицы, а вот инлайнов вагон. Пожалуй, ду вайл актуален лишь при включении в макрос ветвлений.
  15. Спасибо, Владимир. Замечал, что расчетная ширина в Altium разнится с таковой из других программ. Зря значит пользовался этой фичей :)
  16. Eclipcse - IAR plugin

    Нет, это порт GCC для MSP. Про отладку из IAR не подскажу, т.к. пользовал MSPGCC с отладкой через mspdebug в режиме gdb.
  17. В ARM чем больше число приоритета, тем ниже приоритет, выходит воспроизведение у вас выполняется в первую очередь, а уже потом USB-чтение. А если USB не может считать, то и играть нечего. Во-вторых, USB очень капризная вещь в плане таймингов, поэтому лучше ему поставить 0 и принять это отправной точкой для алгоритма программы.
  18. Препроцессор может считать только предопределенные значения, т.к. выполняется он до прохода компилятором, и понятия не имеет, какие входные данные ему могут быть поданы. Посему применять препроцессор есть смысл для регулярных выражений, либо для явного наименования численного значения для упрощения восприятия кода, уменьшения ошибок и облегчения сопровождения.
  19. Косяк у Кейла

    Керниган, Ричи. Язык C, гл. 14.6. Арифметические преобразования Учиться никогда не поздно :)
  20. Все правильно вы сделали, LL для long long, и эта возможность определяется стандартом, а не компилятором. Базовый тип целочисленного представления числа без модификатора равен битности платформы, т. ё. по умолчанию int. Ссылка
  21. Добавлю, что при включенной оптимизации если пишете в прерывании в глобальную переменную, всегда делайте ее volatile. Иначе компилятор просто не понимает, кто изменяет ее значение, и может, например, выпилить даже цикл, как бесполезный.
  22. void SisTick_Handler(void) это что такое. Если хотите свое имя функции-обработчика прерываний, то будьте добры их поправить в startup файле. Похоже проблема с самим проектом. CMSIS добавили?