Realking 0 24 сентября, 2020 Опубликовано 24 сентября, 2020 · Жалоба Тогда не понятно, почему с выравненными данными все гуд Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jcxz 245 24 сентября, 2020 Опубликовано 24 сентября, 2020 · Жалоба 2 минуты назад, Realking сказал: Тогда не понятно, почему с выравненными данными все гуд Потому что проблема с невыравненным доступом по внешней шине. Мануал на контроллер SDRAM своего МК открывали? Читали? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Realking 0 24 сентября, 2020 Опубликовано 24 сентября, 2020 · Жалоба Just now, jcxz said: Потому что проблема с невыравненным доступом по внешней шине. на сколько я понял кэш это и должен рулить при том что память 8-ми битная Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
haker_fox 61 24 сентября, 2020 Опубликовано 24 сентября, 2020 · Жалоба 32 minutes ago, __inline__ said: Тем более данный форум - ничем не обязывает. Это профессиональный форум для общения. Вы вводите в заблуждение своих коллег. Хорошо это или плохо - вопрос совести, в первую очередь. Подумайте, будет вам приятно читать тему, в которой вы ищете для себя ответ на некий трудны вопрос. А в этой теме кто-то стебётся, хотя и знает правильный ответ. Или просто даёт левые советы. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
repstosw 18 24 сентября, 2020 Опубликовано 24 сентября, 2020 · Жалоба 1 hour ago, haker_fox said: Вы вводите в заблуждение своих коллег. В каком месте? 1 hour ago, haker_fox said: А в этой теме кто-то стебётся, хотя и знает правильный ответ. Или просто даёт левые советы. Кто этот кто-то и какие левые советы он дал в этой теме? 1 hour ago, haker_fox said: Это профессиональный форум для общения. Вы вводите в заблуждение своих коллег. В каком месте и кого именно я ввёл в заблуждение? Каких коллег вы имеете в виду? Перечислите. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
VladislavS 39 24 сентября, 2020 Опубликовано 24 сентября, 2020 · Жалоба Я как-то на Cortex-M4 поймал HardFault по невыровненному доступу :) template<uint32_t fifo_num> static inline void WriteFIFO(uint8_t *src, uint16_t len) { for (uint32_t words2write = (len+3)/4; words2write--; src += 4) #if defined(__ARMCC_VERSION) // ARMCC v6 на высокой оптимизации на *(uint32_t *)src ставит инструкцию LDM R1!,{R4} // которая на невыровненных данных валит в HardFault *otg_dfifo<fifo_num>() = *src + (*(src+1)<<8) + (*(src+2)<<16) + (*(src+3)<<24); #else *otg_dfifo<fifo_num>() = *(uint32_t *)src; #endif } Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
repstosw 18 24 сентября, 2020 Опубликовано 24 сентября, 2020 (изменено) · Жалоба 14 minutes ago, VladislavS said: Я как-то на Cortex-M4 поймал HardFault по невыровненному доступу :) template<uint32_t fifo_num> static inline void WriteFIFO(uint8_t *src, uint16_t len) { for (uint32_t words2write = (len+3)/4; words2write--; src += 4) #if defined(__ARMCC_VERSION) // ARMCC v6 на высокой оптимизации на *(uint32_t *)src ставит инструкцию LDM R1!,{R4} // которая на невыровненных данных валит в HardFault *otg_dfifo<fifo_num>() = *src + (*(src+1)<<8) + (*(src+2)<<16) + (*(src+3)<<24); #else *otg_dfifo<fifo_num>() = *(uint32_t *)src; #endif } Вот я и говорю, что фолты по невыровненному доступу - почти добрая половина ошибок при работе с памятью. А ещё меня дураком пытаются выставить такие как jcxz ! Просто завидуют: ведь Allwinner уделал C6745 до слёз , а для jcxz этот DSP - это "священная корова" Вот и хейтит он мои посты теперь, прикапываясь по мелочам. hacker_fox тоже уже на подходе, почти... Изменено 24 сентября, 2020 пользователем repstosw Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
haker_fox 61 24 сентября, 2020 Опубликовано 24 сентября, 2020 · Жалоба 22 minutes ago, __inline__ said: Кто этот кто-то и какие левые советы он дал в этой теме? Перечитайте, пожалуйста, внимательно ещё раз, что я написал. Я перечитал, думал, что ошибся. Нет, всё верно написано. 16 minutes ago, VladislavS said: Я как-то на Cortex-M4 поймал HardFault по невыровненному доступу :) LDM/STM/LDRD/STRD всегда вызовут исключение по невыровненному доступу. Остальные команды для работы с данными - нет. 19 minutes ago, VladislavS said: ARMCC v6 на высокой оптимизации на *(uint32_t *)src Так откуда компилятор знает, какой адрес у вас находится в указателе. Он же неизвестен на момент компиляции. Это не вина компилятора. 7 minutes ago, __inline__ said: hacker_fox тоже уже на подходе, почти.. Пожалуйста, пишите мой ник правильно. Сразу скажу, не грамматически правильно, как вам кажется, а так как я его пишу. Это моё право. И вы не имеете права искажать его. 9 minutes ago, __inline__ said: А ещё меня дураком пытаются выставить такие как jcxz ! Если не ставить идиотских смайликов в конце, то выставляете вы себя в таком свете сами. Хотя бы необоснованным наездом на менеджер динамической памяти в соседней ветке. Ну и в остальных темах по-помаленьку тоже. Но то, что вы публикуете здесь на форуме в своих темах - действительно очень интересно. И поэтому я с большим удовольствием читаю ваши труды. Я лишь попросил вас выше в своём посте не писать по-возможности необоснованных высказываний. Но я не модератор на этом форуме. И мне всё равно, по большому счёту, если вы продолжите. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jcxz 245 24 сентября, 2020 Опубликовано 24 сентября, 2020 · Жалоба 29 минут назад, VladislavS сказал: Я как-то на Cortex-M4 поймал HardFault по невыровненному доступу :) // ARMCC v6 на высокой оптимизации на *(uint32_t *)src ставит инструкцию LDM R1!,{R4} // которая на невыровненных данных валит в HardFault Интересно - это глюк или это так задумано? За IAR такого не замечал ни на какой оптимизации... Ну разве что иногда он при копировании больших структур может такие команды использовать. Но не для простых типов short/long. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
makc 235 24 сентября, 2020 Опубликовано 24 сентября, 2020 · Жалоба Прекратите оффтопик, в противном случае участники оффтопика получат предупреждения и тема будет закрыта. Оффтопик удалён. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Arlleex 190 24 сентября, 2020 Опубликовано 24 сентября, 2020 · Жалоба 1 час назад, VladislavS сказал: Я как-то на Cortex-M4 поймал HardFault по невыровненному доступу :) А почему не через указатель на упакованные данные? Что-то типа void func(u8 *src) { __packed u32 *p = src; ... // работаем с p } Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jcxz 245 24 сентября, 2020 Опубликовано 24 сентября, 2020 · Жалоба 26 минут назад, Arlleex сказал: А почему не через указатель на упакованные данные? Что-то типа void func(u8 *src) { __packed u32 *p = src; ... // работаем с p } Тогда бы компилятор точно поставил LDR/STR. Потому что если бы - LDM на __packed, то это точно была бы ошибка компилятора. А так (LDM/STM) для непакованного - логически вполне допустимо. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
MementoMori 4 24 сентября, 2020 Опубликовано 24 сентября, 2020 · Жалоба 3 hours ago, haker_fox said: Пожалуйста, пишите мой ник правильно. Сразу скажу, не грамматически правильно, как вам кажется, а так как я его пишу. Это моё право. И вы не имеете права искажать его. Красиво сказали) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
VladislavS 39 24 сентября, 2020 Опубликовано 24 сентября, 2020 · Жалоба 3 часа назад, haker_fox сказал: Так откуда компилятор знает, какой адрес у вас находится в указателе. Он же неизвестен на момент компиляции. Вот! Как раз в точку. Не знаешь - рассчитывай на худшее. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
haker_fox 61 24 сентября, 2020 Опубликовано 24 сентября, 2020 · Жалоба 47 minutes ago, VladislavS said: Вот! Как раз в точку. Не знаешь - рассчитывай на худшее. Уф, как мне кажется, уважаемый @Arlleex выше даже показал, что нужно сделать) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться