Jump to content

    

Alex_Golubev

Участник
  • Content Count

    523
  • Joined

  • Last visited

Community Reputation

0 Обычный

About Alex_Golubev

  • Rank
    Знающий

Recent Profile Visitors

2654 profile views
  1. У меня аппаратный размер сектора 128 кбайт. А секторов всего 10 штук свободных.
  2. В продолжение темы. Не могу не как придумать рабочий код для работы с файлами. В общем структура следующая. Есть заголовок файла: 1. название файла 2. расширение (.txt) 3. Размер 4. адрес где расположен файл 5. crc файла Заголовок выравнен на 4 байта во избежания пробелов в памяти. Размер заголовка 32 байта может быть и 64 байта. Заголовков будет 256 штук. Как правильно поняли и файлов может быть 256 штук. В памяти выделены сектора для записи файла размер одного сектора 4096 байт. Файл может помещается как в один сектор так и в более 2...3..... Все вроде просто, но у нас размер сектора 128кбайт. А мне допустим нужно перезаписать 3 заголовок и занимаемые им сектора. Понимаю что без буфера тут ни как. Ну выделять 128 кбайт оперативки тоже не правильно. Нужно решение .
  3. Зачем сделали выбор программирования PSIZE1: Bank 1 program size PSIZE1 selects the parallelism used by the non-volatile memory during write and erase operations to bank 1. PSIZE1 can be programmed only when LOCK1 is cleared to 0. 00: programming executed with byte parallelism 01: programming executed with half-word parallelism 10: programming executed with word parallelism 11: programming executed with double word parallelism Все равно пишешь 32 байта. Размер буфера 32 байта.
  4. Не могу придумать как переделать код чтобы передавать не длину массива а номер последней ячейки массива.
  5. Это я все уже смотрел. Меня интересует как правильно сделать, по времени и ждать конца по контрольной сумме (в вашем примере время тоже используется)? Или как-то еще ?
  6. Вот мучает меня вопрос как правильно принимать пакеты, решений много, но какое правильное не понятно . Начну с примера: Есть такой пакет называется ZFILE ---> "68 65 6C 6C 6F 77 6F 72 6C 64 2E 74 78 74 00 31 37 20 31 33 37 33 36 37 33 36 32 35 34 20 31 30 30 36 34 34 00 18 6B 18 51 4A" который несет в себе названия файла и в конце контрольную сумму. Как мы понимаем название файла может быть и малым и большим длина получается разная. Привязываться к "ZCRCW" в пакете тоже без мысленно так как он равен 'j' и в названии файла тоже может присутствовать 'j'. Как вариант заводить таймер и отчитывать временные интервалы между приходом байтов. Если временной интервал больше "30 секунд" то считаем что данные не пришли и начинай сначала. А концом пакета будет контрольная сумма. Как получили нуль после подсчета crc то сразу пошли раскладывать пакет.
  7. Чтобы вызвалась функция _write нужно добавить в printf() '\n'.
  8. Попробовал вот так, тоже не помогло. Добавил в main: #ifdef __GNUC__ #define PUTCHAR_PROTOTYPE int __io_putchar(int ch) #else #define PUTCHAR_PROTOTYPE int fputc(int ch, FILE *f) #endif /* __GNUC__ */ PUTCHAR_PROTOTYPE { return ch; } при добавление Linker->Libraries->Small printf линкер ругает.
  9. Как понял нужно добавить следующие в настройки Properties ---> c/c++ Build ---> Settings ---> Linker ---> Libraries ---> rdimon и Properties ---> c/c++ Build ---> Settings ---> Linker ---> Miscellaneous ---> -specs=rdimon.specs Сделал получил ошибки при сборки вида: /Src/syscalls.c:49: first defined here и так ругается на функции initialise_monitor_handles int _close(int file) int _isatty(int file) int _unlink(char *name) int _times(struct tms *buf)
  10. Почему-то даже функция "__attribute__((weak)) int _write(int file, char *ptr, int len)" не вызывается.
  11. Использую stm32cubemx. Добавил функцию "int putchar(int c)". Когда вызываешь printf не происходит вызова putchar с передачей символа. Может кто знает в чем дело, в iar просто добавил и все работает а тут нет.
  12. Я тоже понял почему 240 МГц ).
  13. Так у нас частота 480 а в таблице 240 всего.