STM32F4 чтение флэш-памяти по страницам

Как я могу прочитать флэш-память постранично? Я не смог прочитать его по секторам.

Мне нужно прочитать 2 сектора памяти (2 * 16 КБ).

Я работаю под FreeRtos и использую STM32F401RE.

Я использую указатель, мне просто нужно прочитать два сектора флэш-памяти.

uint32_t data_store0[4096] = {0};
uint32_t data_store1[4096] = {0};

uint32_t *words0 = (uint32_t *) BASE_ADDR_SECTOR_0;
uint32_t *words1 = (uint32_t *) BASE_ADDR_SECTOR_1;

unsigned int buffer_firmware[8192] = {0};
unsigned char firmware[32768] = {0};

int k, m, i, j = 0;
int count_time = 0;

for(int i=0; i<4096; i++)
{
    data_store0[i] += words0[i];
    buffer_firmware[i] = data_store0[i];
}

for(int j=0; j<4096; j++)
{
    data_store1[j] += words1[j];
}

for(m = 0, k = 4096; k < 8192 && m < 4096; m++, k++)
{
    buffer_firmware[k] = data_store1[m];
}

SHA256Input(&ctx, (const uint8_t *) buffer_firmware, 8192);

person simo    schedule 22.08.2018    source источник
comment
Что именно ты пытаешься сделать? Чтобы прочитать флэш, все, что вам нужно сделать, это разыменовать указатель.   -  person Colin    schedule 22.08.2018
comment
Спасибо за ваш ответ #Colin, я использую указатель, мне просто нужно прочитать два сектора флэш-памяти. но я не могу выполнить код в freeRTOS!   -  person simo    schedule 22.08.2018
comment
что такое буксировочный сектор?   -  person 0___________    schedule 22.08.2018


Ответы (1)


Прежде всего, вы должны использовать ключевое слово volatile при доступе к карте памяти, кроме того, при чтении двух страниц, если вы принимаете их размер 4096 байт, тогда вам придется использовать uint8_t, поскольку он имеет 4096 байтов. Однако вы хотите получить к нему доступ по указателю uint32_t, тогда максимальное значение цикла for должно быть 4096/4, поскольку оно имеет 4096/4 слов.

uint8_t buffer_firmware[4096]
uint8_t *words0 = (volatile uint8_t *) BASE_ADDR_SECTOR_0;
uint8_t *words1 = (volatile uint8_t *) BASE_ADDR_SECTOR_1;

for(uint16_t i=0; i<4096; i++){
    buffer_firmware[i] = words0[i];
}
person Gokhan Sahin    schedule 23.08.2018