Если ваш вопрос не влез ни в одну из вышеперечисленных тем, вам сюда.
Ответить

CH32V103 запись пользовательских данных во Flash

Вс июн 04, 2023 21:18:51

Доброго времени суток!

Пытаюсь реализовать сохранение данных в область Flash на CH32V103C8T6, причем в конце флешки. Чтобы гарантировать это, и гарантировать, что:
- данные будут храниться именно в конце флешки, на последних страницах (2*128)
- сама программа не залезет на данные

Я включил эти области в скрипт линкера:
Код:
.....

MEMORY
{
     APP (rx) : ORIGIN = 0x00000000, LENGTH = 0x0FF00
     CREDENTIALS (rx) : ORIGIN = 0x0800FF00, LENGTH = 0x00080
     DATA (rwx) : ORIGIN = 0x0800FF80, LENGTH = 0x00080
   RAM (xrw) : ORIGIN = 0x20000000, LENGTH = 20K
}

....

.device_credentials :
   {
      . = ALIGN(4);
      *(.device_credentials)
      . = ALIGN(4);
   } > CREDENTIALS

   .user_data :
   {
      . = ALIGN(4);
      *(.user_data)
      . = ALIGN(4);
   } > DATA


И так же делаю обращение к этой области через директиву:
Код:
__attribute__((__section__(".user_data")))          const uint8_t user_data[FAST_FLASH_USER_DATA_SIZE];


После прошивки и запуска в первое слово во flash должно быть 0x00C0FFEE, но вместо него абракадабра (0x1CC009BF, начало этой области по адресу 0x0800FF80)
Прошу помощи в данном вопросе

Re: CH32V103 запись пользовательских данных во Flash

Пн июн 05, 2023 16:34:24

Попробовал записать фиксированные числа.
Числа отображались зеркально: здесь
Плюс, видимо, не надо ставить точки останова на участка, где происходит запись

Добавлено after 8 minutes 35 seconds:
Данные тоже записываются корректно, если не помещать точки останова в процессе формирования данных и записи
Ответить