|
|
 |
Ответов
|
Jun 18 2018, 09:27
|
Участник

Группа: Участник
Сообщений: 71
Регистрация: 17-01-12
Пользователь №: 69 604

|
Цитата(aaarrr @ Jun 18 2018, 10:13)  Так может это и не сброс, а именно обнуление ОЗУ вследствие программной ошибки? Обнуляются все статические переменные (по крайней мере я проверил 7-8 разного типа). А какая может быть ошибка чтобы выйти на инициализирующий сброс статических переменных?
|
|
|
|
|
Jun 18 2018, 10:19
|
Участник

Группа: Участник
Сообщений: 71
Регистрация: 17-01-12
Пользователь №: 69 604

|
Цитата(aaarrr @ Jun 18 2018, 11:50)  memset(x, 0, y), например. Не выходит оно никуда, просто самостоятельно стирает содержимое памяти. Проверил. Самое подозрительное: memset(Display->Code,'\0',strlen((char *)Display->Code)); //Очистка кодовой строки где Display->Code указатель на массив байт (unsigned char *). Остальные memset все просты и явны. Может быть функция strlen(), а тем более с аргументом-указателем на член структуры может глючить? Хотя в аналогичных проектах всё это работает безукоризненно.
Сообщение отредактировал Вячик13 - Jun 18 2018, 10:35
|
|
|
|
|
Jun 18 2018, 10:47
|
Гуру
     
Группа: Свой
Сообщений: 5 228
Регистрация: 3-07-08
Из: Омск
Пользователь №: 38 713

|
Цитата(Вячик13 @ Jun 18 2018, 13:19)  Остальные memset все просты и явны. Вам указали на одну из тысячи возможностей. Не надо понимать буквально. Любой цикл в вашей программе, который что-то пишет или просто копирует в память, может снести всю вашу ОЗУ например при разрушении переменных, от которых зависит адрес назначения или счётчик цикла. Симптомы указывают на вполне типичный баг в работе с указателями. Странно не знать этого после "20 проектов"... И в борьбе с такими багами часто помогает и защита памяти и обработка всех fault-ов. Чего у Вас также явно нет. Что опять же странно после "20 проектов"...  Цитата(aaarrr @ Jun 18 2018, 12:50)  memset(x, 0, y), например. Не выходит оно никуда, просто самостоятельно стирает содержимое памяти. У меня в таких ситуациях срабатывает ловушка по записи по недопустимому адресу (записи в регион где нет ОЗУ, и поэтому закрытый от записи в MPU) когда указатель такого цикла доходит до границы ОЗУ. Автор явно не знает про MPU.  .... Или STM32F100 - это не Cortex-M3? Лень смотреть в даташит....
|
|
|
|
|
Jun 18 2018, 11:07
|
Участник

Группа: Участник
Сообщений: 71
Регистрация: 17-01-12
Пользователь №: 69 604

|
Цитата(jcxz @ Jun 18 2018, 12:47)  Вам указали на одну из тысячи возможностей. Не надо понимать буквально. Любой цикл в вашей программе, который что-то пишет или просто копирует в память, может снести всю вашу ОЗУ например при разрушении переменных, от которых зависит адрес назначения или счётчик цикла. Симптомы указывают на вполне типичный баг в работе с указателями. Странно не знать этого после "20 проектов"... И в борьбе с такими багами часто помогает и защита памяти и обработка всех fault-ов. Чего у Вас также явно нет. Что опять же странно после "20 проектов"...  У меня в таких ситуациях срабатывает ловушка по записи по недопустимому адресу (записи в регион где нет ОЗУ, и поэтому закрытый от записи в MPU) когда указатель такого цикла доходит до границы ОЗУ. Автор явно не знает про MPU.  .... Или STM32F100 - это не Cortex-M3? Лень смотреть в даташит.... Нет, не лень. И могу читать даже в оригинале. Но, знаете, как в известном анекдоте про немого мальчика: "А раньше я не разговаривал, потому что всё было в порядке". Представьте себе, за 20 проектов у меня не возникало даже потребности в каких-либо ловушках, поскольку всё работало нормально.
|
|
|
|
|
Jun 18 2018, 11:20
|
Участник

Группа: Участник
Сообщений: 71
Регистрация: 17-01-12
Пользователь №: 69 604

|
Цитата(jcxz @ Jun 18 2018, 13:14)  Ну значит - поздравляю! - Вы доросли до серьёзных проектов, сложнее мигания парой светодиодов  Спасибо, за поздравление. Наконец то оценили. А то с 1983 года, когда я сделал свой первый проект на К1-20 никто ни одного доброго словечка!
|
|
|
|
|
Jun 18 2018, 11:38
|
Гуру
     
Группа: Свой
Сообщений: 5 228
Регистрация: 3-07-08
Из: Омск
Пользователь №: 38 713

|
Цитата(Вячик13 @ Jun 18 2018, 14:20)  Спасибо, за поздравление. Наконец то оценили. А то с 1983 года, когда я сделал свой первый проект на К1-20 никто ни одного доброго словечка! Понятно, что воспоминания о молодости и какие раньше были деревья зелёные процессоры хорошие и изученные - Вам дороги. Но чтобы не жить воспоминаниями о былом, а делать устройства на современном уровне, надо всё-таки стараться изучать эти самые современные МК. А в используемых Вами Cortex-M уже лет так 10 точно (не 83-й канеш, куда там  наличествует MPU, который подобные ошибки с заполнением памяти константой часто позволяет находить на раз. И другие разработчики, уже тоже лет 10 как, его успешно используют. А также есть fault-ы, которые тоже помогают в ловле багов.
|
|
|
|
Сообщений в этой теме
Вячик13 Непонятный рестарт программы Jun 18 2018, 07:53 kovigor Цитата(Вячик13 @ Jun 18 2018, 10:53) Буду... Jun 18 2018, 08:11 kovigor Цитата(aaarrr @ Jun 18 2018, 11:13) Так м... Jun 18 2018, 08:14  Вячик13 Цитата(kovigor @ Jun 18 2018, 10:14) Или ... Jun 18 2018, 09:53   kovigor Цитата(Вячик13 @ Jun 18 2018, 12:53) Во-в... Jun 18 2018, 10:11    Вячик13 Цитата(kovigor @ Jun 18 2018, 12:11) Хоро... Jun 18 2018, 10:27     kovigor Цитата(Вячик13 @ Jun 18 2018, 13:27) В пе... Jun 18 2018, 10:28      Вячик13 Цитата(kovigor @ Jun 18 2018, 12:28) Болг... Jun 18 2018, 10:37       kovigor Цитата(Вячик13 @ Jun 18 2018, 13:37) Тогд... Jun 18 2018, 10:40    kovigor Цитата(Вячик13 @ Jun 18 2018, 13:19) ... ... Jun 18 2018, 10:21         Obam Цитата(jcxz @ Jun 18 2018, 14:38) А в исп... Jun 19 2018, 14:47          jcxz Цитата(Obam @ Jun 19 2018, 17:47) В STM32... Jun 19 2018, 15:05           Obam Цитата(jcxz @ Jun 19 2018, 18:05) Это поч... Jun 19 2018, 15:14 k155la3 Цитата(Вячик13 @ Jun 18 2018, 10:53) . . ... Jun 18 2018, 12:56 редактор склоняюсь к версии "дикого" указателя (н... Jun 19 2018, 16:59 Михась Цитата(редактор @ Jun 19 2018, 23:59) скл... Jun 21 2018, 12:34
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|