Перейти к содержанию
    

Попадаю в hardfault_handler при чтение данных из флешь памяти stm32h7

Есть у меня вот такая структура .h:

typedef const struct {
    const char name[20];         // имя
    const char textExtension[4]; // расширение
    const uint32_t size;         // размер в байтах
    const uniondate date;        // дата
    const uiniontime time;       // время
    const uint32_t numberSector; // номер сектора
    const uint32_t crc;          // контрольная сумма
    const uint32_t reserve[5];   // резерв
} headerFileList[256];

extern headerFileList *HeaderFileList;

в .c определил:

headerFileList *HeaderFileList;

в main.c добавил следующий код:

   char text[4];

   HeaderFileList = ADDR_FLASH_SECTOR_7_BANK1;

	for(uint32_t i = 0; i < 256; i++){
	for(uint8_t j = 0; j < 4; j++){
		text[j] = HeaderFileList[i]->textExtension[j];
	}
	}

Когда 'i' до 100 то данные считываются. Когда 'i' равна 100 и более происходит переход в 'hardfault'. Как  такое может быть?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

38 минут назад, Alex_Golubev сказал:

Когда 'i' до 100 то данные считываются. Когда 'i' равна 100 и более происходит переход в 'hardfault'. Как  такое может быть?

Это только гадалка может сказать, что у вас там происходит.

Например: возможно по адресу ADDR_FLASH_SECTOR_7_BANK1 + sizeof(*HeaderFileList) * 100 отсутствует память. Или доступ по чтению к ней запрещён.

Размер вашего typedef опять-же только гадалка может знать, но если предположить что он == 64*256, то 64*256*100 довольно таки далеко от ADDR_FLASH_SECTOR_7_BANK1.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

10 minutes ago, jcxz said:

Это только гадалка может сказать ...

Ещё телепаты есть. Можно их привлечь.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

3 часа назад, Alex_Golubev сказал:

Не понял от куда вы взяли 100 ?

4 часа назад, Alex_Golubev сказал:

Когда 'i' равна 100 и более происходит переход в 'hardfault'.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

4 часа назад, Alex_Golubev сказал:

Есть у меня вот такая структура .h:

Вы определитесь, псевдоним чего вы определяете своим typedef: 

- структуры

- массива из 256 структур.

Попробуйте убрать в typedef из  headerFileList[256] символы [256]. Т.е. пределите имя типа для вашей структуры, как headerFileList. Может это именно то, что вы и имели ввиду.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

15 часов назад, Alex_Golubev сказал:

Как  такое может быть?

Добавьте отладочный вывод в консоль. Он же у вас есть, не так ли? Выведите информццию в удобной форме:

1. Текущие индексы счётчиков.

2. Значение указателей памяти.

3. И т.п.

Интерпретируйте полученные результаты. Это один из методов отладки. Рекомендую его использовать. Рекомендовать в листинг даже не буду, в окно дизассемблера тоже...

15 часов назад, Alex_Golubev сказал:

Как  такое может быть?

Да кто ж знает. Иногда проблема лежит на поверхности так, что мы просто не видим её, предполагая что-то более худшее и глубокое. А иногда эта проблема лежит так глубоко, что мы не может найти её, т.к. никогда там и не были.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

3 часа назад, MrBearManul сказал:

Интерпретируйте полученные результаты. Это один из методов отладки. Рекомендую его использовать. Рекомендовать в листинг даже не буду, в окно дизассемблера тоже...

Ну какие "листинги" с "дизассемблерами"? ТС использует современный модный и молодёжный отладчик, называется он - "отладка форумом".  :biggrin:

Только после него, к сожалению, в голове ничего не остаётся...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

3 часа назад, Alex_Golubev сказал:

Да я уже разобрался. 

А что было-то?

1 минуту назад, jcxz сказал:

ТС использует современный модный и молодёжный отладчик - "отладка форумом". 

:dance3:

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

1 hour ago, jcxz said:

ТС использует современный модный и молодёжный отладчик

electronix.ru web debug

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

8 минут назад, x893 сказал:

electronix.ru web debug

Точно. Пора уже компиляторостроителям добавить такой пункт в список "Debugger" во всех IDE. А при его выборе - сразу открытие браузера с electronix.ru :biggrin:

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...