Alex_Golubev 0 24 марта, 2021 Опубликовано 24 марта, 2021 · Жалоба Есть у меня вот такая структура .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'. Как такое может быть? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jcxz 184 24 марта, 2021 Опубликовано 24 марта, 2021 · Жалоба 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. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
x893 35 24 марта, 2021 Опубликовано 24 марта, 2021 · Жалоба 10 minutes ago, jcxz said: Это только гадалка может сказать ... Ещё телепаты есть. Можно их привлечь. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Alex_Golubev 0 24 марта, 2021 Опубликовано 24 марта, 2021 · Жалоба 15 минут назад, jcxz сказал: 64*256*100 Не понял от куда вы взяли 100 ? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jcxz 184 24 марта, 2021 Опубликовано 24 марта, 2021 · Жалоба 3 часа назад, Alex_Golubev сказал: Не понял от куда вы взяли 100 ? 4 часа назад, Alex_Golubev сказал: Когда 'i' равна 100 и более происходит переход в 'hardfault'. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Darth Vader 0 24 марта, 2021 Опубликовано 24 марта, 2021 · Жалоба 4 часа назад, Alex_Golubev сказал: Есть у меня вот такая структура .h: Вы определитесь, псевдоним чего вы определяете своим typedef: - структуры - массива из 256 структур. Попробуйте убрать в typedef из headerFileList[256] символы [256]. Т.е. пределите имя типа для вашей структуры, как headerFileList. Может это именно то, что вы и имели ввиду. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
MrBearManul 0 25 марта, 2021 Опубликовано 25 марта, 2021 · Жалоба 15 часов назад, Alex_Golubev сказал: Как такое может быть? Добавьте отладочный вывод в консоль. Он же у вас есть, не так ли? Выведите информццию в удобной форме: 1. Текущие индексы счётчиков. 2. Значение указателей памяти. 3. И т.п. Интерпретируйте полученные результаты. Это один из методов отладки. Рекомендую его использовать. Рекомендовать в листинг даже не буду, в окно дизассемблера тоже... 15 часов назад, Alex_Golubev сказал: Как такое может быть? Да кто ж знает. Иногда проблема лежит на поверхности так, что мы просто не видим её, предполагая что-то более худшее и глубокое. А иногда эта проблема лежит так глубоко, что мы не может найти её, т.к. никогда там и не были. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Alex_Golubev 0 25 марта, 2021 Опубликовано 25 марта, 2021 · Жалоба Да я уже разобрался. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jcxz 184 25 марта, 2021 Опубликовано 25 марта, 2021 · Жалоба 3 часа назад, MrBearManul сказал: Интерпретируйте полученные результаты. Это один из методов отладки. Рекомендую его использовать. Рекомендовать в листинг даже не буду, в окно дизассемблера тоже... Ну какие "листинги" с "дизассемблерами"? ТС использует современный модный и молодёжный отладчик, называется он - "отладка форумом". Только после него, к сожалению, в голове ничего не остаётся... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
MrBearManul 0 25 марта, 2021 Опубликовано 25 марта, 2021 · Жалоба 3 часа назад, Alex_Golubev сказал: Да я уже разобрался. А что было-то? 1 минуту назад, jcxz сказал: ТС использует современный модный и молодёжный отладчик - "отладка форумом". Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
x893 35 25 марта, 2021 Опубликовано 25 марта, 2021 · Жалоба 1 hour ago, jcxz said: ТС использует современный модный и молодёжный отладчик electronix.ru web debug Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jcxz 184 25 марта, 2021 Опубликовано 25 марта, 2021 · Жалоба 8 минут назад, x893 сказал: electronix.ru web debug Точно. Пора уже компиляторостроителям добавить такой пункт в список "Debugger" во всех IDE. А при его выборе - сразу открытие браузера с electronix.ru Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться