|
IAR сошел с ума. |
|
|
|
Jul 6 2018, 08:17
|
Профессионал
    
Группа: Участник
Сообщений: 1 778
Регистрация: 29-03-12
Пользователь №: 71 075

|
Все работало вдруг началась проблема. Принимаю команду с терминала Код if (usart1_rx_ready) { usart1_rx_ready = 0; PARSER_ParseCommand(usart1_rx_buf); } ставлю точку останова на PARSER_ParseCommand(usart1_rx_buf); - вижу пришла красивая команда с '\0' в конце. захожу внутрь функции Код uint32_t PARSER_ParseCommand(char *str) { uint32_t com_found = 0; uint32_t len = 0; len = strlen(str); char temp_str[len]; strlen вычисляет длину строки - 504588880 - и естественно при алокации - char temp_str[len] - выпадаем в хард фолт. Ну и кто он (IAR) после этого?
Сообщение отредактировал Jenya7 - Jul 6 2018, 08:18
|
|
|
|
|
 |
Ответов
|
Jul 6 2018, 08:36
|
Профессионал
    
Группа: Участник
Сообщений: 1 778
Регистрация: 29-03-12
Пользователь №: 71 075

|
ок. ничего не выделяю. никаких массивовю просто Код uint32_t len = strlen(str); выдает какие то не реальные цифры.
|
|
|
|
|
Jul 6 2018, 08:41
|
Местный
  
Группа: Свой
Сообщений: 475
Регистрация: 14-04-05
Из: Москва
Пользователь №: 4 140

|
Цитата(Jenya7 @ Jul 6 2018, 11:36)  ок. ничего не выделяю. никаких массивовю просто Код uint32_t len = strlen(str); выдает какие то не реальные цифры. С размером стека порядок? Переходите на С++, он вам так в ногу стрелять не даст. Цитата Error[Pe028]: expression must have a constant [note]: the value of variable "len" (declared at line XX) cannot be used as a constant ЗЫ: Постой, постой! Что-то похожее припоминаю... Если не подключен string.h, он какую-то лажу вместо функций работы со строками подставлял. Прямо в этом модуле #include <string.h> добавь.
|
|
|
|
|
Jul 6 2018, 08:56
|
Местный
  
Группа: Свой
Сообщений: 475
Регистрация: 14-04-05
Из: Москва
Пользователь №: 4 140

|
Цитата(Jenya7 @ Jul 6 2018, 11:45)  я все закрыл. все. strlen все равно возвращает мусор. Прямо в этом модуле #include <string.h> добавь. Попробуй, это не долго.
|
|
|
|
|
Jul 6 2018, 08:59
|
Профессионал
    
Группа: Участник
Сообщений: 1 778
Регистрация: 29-03-12
Пользователь №: 71 075

|
Цитата(VladislavS @ Jul 6 2018, 13:56)  Прямо в этом модуле #include <string.h> добавь. Попробуй, это не долго. переписал strlen. Код uint32_t StrlLen(char *str) { uint32_t count = 0; while (*str != '\0') { str++; count++; } return count; } uint32_t len = StrlLen(str); возвращает тот же мусор
|
|
|
|
|
Jul 6 2018, 09:16
|
Профессионал
    
Группа: Участник
Сообщений: 1 778
Регистрация: 29-03-12
Пользователь №: 71 075

|
Цитата(scifi @ Jul 6 2018, 14:12)  Оптимизация? Не знаю, как сейчас в яре, но вообще иногда замечал, что при оптимизации отладочная информация корёжится, и отладчик врёт. По-честному он должен был бы сказать "извините, из-за оптимизации не могу показать значение переменной". и вылетает в хард фолт. а жить с этим как? нет товарищи - IAR мне без оптимизации не нужен - вся его сила в оптимизации. иначе я бы сидел на цветастом эклипсе. я их маму в белых тапках видел.
Сообщение отредактировал Jenya7 - Jul 6 2018, 09:18
|
|
|
|
|
Jul 6 2018, 09:18
|
Гуру
     
Группа: Свой
Сообщений: 3 020
Регистрация: 7-02-07
Пользователь №: 25 136

|
Цитата(Jenya7 @ Jul 6 2018, 12:14)  и вылетает в хард фолт. а жить с этим как? Хотите отлаживать оптимизированный код - учите инструкции Thumb. А иначе жить с этим никак. Кстати, оч. простой обработчик Hard Fault вот такой: Код void hard_fault_handler(void) { int volatile w = 1; while (w); } При попадании туда в отладчике делаем w=0 и в окне дизассемблера потихоньку возвращаемся из обработчика. Возвращаемся туда, где произошла неприятность, и пытаемся понять, что пошло не так.
|
|
|
|
|
Jul 6 2018, 09:27
|
Профессионал
    
Группа: Участник
Сообщений: 1 778
Регистрация: 29-03-12
Пользователь №: 71 075

|
Цитата(scifi @ Jul 6 2018, 14:18)  Хотите отлаживать оптимизированный код - учите инструкции Thumb. А иначе жить с этим никак. Кстати, оч. простой обработчик Hard Fault вот такой: Код void hard_fault_handler(void) { int volatile w = 1; while (w); } При попадании туда в отладчике делаем w=0 и в окне дизассемблера потихоньку возвращаемся из обработчика. Возвращаемся туда, где произошла неприятность, и пытаемся понять, что пошло не так. при чем тут отладчик? он при оптимизации и на обычной прошивке выпадает в хард фолт
|
|
|
|
Сообщений в этой теме
Jenya7 IAR сошел с ума. Jul 6 2018, 08:17 jcxz Цитата(Jenya7 @ Jul 6 2018, 11:17) [/code... Jul 6 2018, 08:25 Jenya7 Цитата(jcxz @ Jul 6 2018, 13:25) Как он у... Jul 6 2018, 08:29  jcxz Цитата(Jenya7 @ Jul 6 2018, 11:29) этот б... Jul 6 2018, 08:33   Сергей Борщ QUOTE (jcxz @ Jul 6 2018, 11:33) Видимо к... Jul 6 2018, 13:54 scifi Цитата(jcxz @ Jul 6 2018, 11:25) Как он у... Jul 6 2018, 08:32  jcxz Цитата(scifi @ Jul 6 2018, 11:32) C99 это... Jul 6 2018, 08:35 scifi Цитата(Jenya7 @ Jul 6 2018, 11:17) strlen... Jul 6 2018, 08:33 Jenya7 Цитата(scifi @ Jul 6 2018, 13:33) Есть та... Jul 6 2018, 08:39  jcxz Цитата(Jenya7 @ Jul 6 2018, 11:39) там ас... Jul 6 2018, 08:42  scifi Цитата(Jenya7 @ Jul 6 2018, 11:39) там ас... Jul 6 2018, 08:59 jcxz Цитата(Jenya7 @ Jul 6 2018, 11:36) ок. ни... Jul 6 2018, 08:38       VladislavS Цитата(Jenya7 @ Jul 6 2018, 12:08) хм...д... Jul 6 2018, 09:10        Jenya7 Цитата(VladislavS @ Jul 6 2018, 14:10) Да... Jul 6 2018, 09:13        scifi Цитата(VladislavS @ Jul 6 2018, 12:10) Да... Jul 6 2018, 09:13         scifi Цитата(Jenya7 @ Jul 6 2018, 12:16) нет то... Jul 6 2018, 09:31 Arlleex Кодif (usart1_rx_ready)
{
usart1_rx_rea... Jul 6 2018, 09:27 Jenya7 Цитата(Arlleex @ Jul 6 2018, 14:27) Кодif... Jul 6 2018, 09:37  VladislavS Цитата(Jenya7 @ Jul 6 2018, 12:37) если я... Jul 6 2018, 09:40   Jenya7 Цитата(VladislavS @ Jul 6 2018, 14:40) И ... Jul 6 2018, 09:45    aaarrr Цитата(Jenya7 @ Jul 6 2018, 12:45) uint32... Jul 6 2018, 09:52    Arlleex Цитата(Jenya7 @ Jul 6 2018, 13:45) usart1... Jul 6 2018, 09:52     Jenya7 Цитата(Arlleex @ Jul 6 2018, 14:52) Вы ко... Jul 6 2018, 10:26      scifi Цитата(Jenya7 @ Jul 6 2018, 13:26) ЧИЗЭС ... Jul 6 2018, 14:06       Jenya7 Цитата(scifi @ Jul 6 2018, 19:06) Семён С... Jul 7 2018, 05:35 aaarrr Цитата(Arlleex @ Jul 6 2018, 12:27) Сам б... Jul 6 2018, 09:55  Arlleex Цитата(aaarrr @ Jul 6 2018, 13:55) Вот вс... Jul 6 2018, 10:09 Сергей Борщ QUOTE IAR сошел с ума.Мне кажется, кого-то уже пор... Jul 7 2018, 05:46 Jenya7 Цитата(Сергей Борщ @ Jul 7 2018, 10:46) М... Jul 7 2018, 06:11
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|