Jump to content

    

__inline__

Участник
  • Content Count

    1012
  • Joined

Community Reputation

0 Обычный

2 Followers

About __inline__

  • Rank
    Профессионал

Recent Profile Visitors

3227 profile views
  1. Здравствуйте, у меня возникла проблема с конфигурацией FMC+DMA+MPU пример из ниже показанной темы помог только работать с адрессом без ремапа банок, примеры из апноутов конечно облегчили мне жизнь но тем не менее реально работающего полного примера на f767 я так и не нашел, если вам не сложно можете поделится инициализацией FMC и DMA. ситуация такая же что и в топике 

    image.png

  2. Вот я и говорю, что фолты по невыровненному доступу - почти добрая половина ошибок при работе с памятью. А ещё меня дураком пытаются выставить такие как jcxz ! Просто завидуют: ведь Allwinner уделал C6745 до слёз , а для jcxz этот DSP - это "священная корова" Вот и хейтит он мои посты теперь, прикапываясь по мелочам. hacker_fox тоже уже на подходе, почти...
  3. В каком месте? Кто этот кто-то и какие левые советы он дал в этой теме? В каком месте и кого именно я ввёл в заблуждение? Каких коллег вы имеете в виду? Перечислите.
  4. Вы наверное будете удивлены, что мне совершенно безразлично что вы там считаете о моей адекватности или её отсутствии. Слишком всё уныло обобщаете. Я даже не буду тратить своё время на дальнейшее разжёвывание. В данном случае я просто стебусь и не более. В таком состоянии бесполезно меня взывать к ответам. Тем более данный форум - ничем не обязывает. Так что смиритесь с тем, что мои посты будут у вас вызывать раздражение. Более того, вы можете внести в ЧС мой ник и более сообщений от меня не увидите. Но вот так воспаляться по каждому моему посту - это уже похоже на ничем непрекрытое хейтерство )))) Найдите себе другого субъекта для битья. А ещё лучше - поберегите свои нервы и время!
  5. Ага, по вашему STM32H743 это не Cortex-M7 ? Тут вы и попались! Не хочу...
  6. У меня на BlackFin и STM32 были исключения из-за невыровненной памяти. А вот в C6745 просто читался мусор, пока не заиспольовал _mem(), _mem8(). Тоесть компилятор почему-то подставляет инструкции, не учитывающие доступ по невыровненным адресам. Пользуясь случаем, глянул в сорцы эмуля СЕГи, который когда-то адаптировал под C6745 и увидел, что использование инструкций через интринсики, дало увеличение производительности чуть-ли не в 2 раза в рендерере эмулятора: вместо 4-х побайтовых обращений используется - ОДНА инструкция с невыровненным доступом, что очень сильно увеличивает скорость: #define ALIGN_LONG 0 /* !!! unaligned word */ #if ALIGN_LONG /* Or change the names if you depend on these from elsewhere.. */ #undef WRITE_LONG static __inline__ void WRITE_LONG(void *address, uint32 data) { *((uint8 *)address++) = data; *((uint8 *)address++) = data>> 8; *((uint8 *)address++) = data>>16; *((uint8 *)address ) = data>>24; return; } #endif #if ALIGN_LONG /* Draw a single 8-pixel column */ #define DRAW_COLUMN(ATTR, LINE) \ atex = atex_table[(ATTR >> 13) & 7]; \ src = (uint32 *)&bg_pattern_cache[(ATTR & 0x1FFF) << 6 | (LINE)]; \ WRITE_LONG(dst++, *src++ | atex); \ WRITE_LONG(dst++, *src++ | atex); \ ATTR >>= 16; \ atex = atex_table[(ATTR >> 13)/* & 7*/]; \ src = (uint32 *)&bg_pattern_cache[(ATTR & 0x1FFF) << 6 | (LINE)]; \ WRITE_LONG(dst++, *src++ | atex); \ WRITE_LONG(dst++, *src++ | atex); \ #else #define DRAW_COLUMN(ATTR, LINE) \ atex = atex_table[(ATTR >> 13) & 7]; \ src = (uint32*)&bg_pattern_cache[(ATTR & 0x1FFF) << 6 | (LINE)]; \ _mem4(dst++) = (_mem4(src++) | atex); \ _mem4(dst++) = (_mem4(src++) | atex); \ ATTR >>= 16; \ atex = atex_table[(ATTR >> 13) & 7]; \ src = (uint32*)&bg_pattern_cache[(ATTR & 0x1FFF) << 6 | (LINE)]; \ _mem4(dst++) = (_mem4(src++) | atex); \ _mem4(dst++) = (_mem4(src++) | atex); \ #endif #if ALIGN_LONG /* Draw a single 16-pixel column */ #define DRAW_COLUMN_IM2(ATTR, LINE) \ atex = atex_table[(ATTR >> 13) & 7]; \ offs = (ATTR & 0x03FF) << 7 | (ATTR & 0x1800) << 6 | (LINE); \ if(ATTR & 0x1000) offs ^= 0x40; \ src = (uint32 *)&bg_pattern_cache[offs]; \ WRITE_LONG(dst++, *src++ | atex); \ WRITE_LONG(dst++, *src++ | atex); \ ATTR >>= 16; \ atex = atex_table[(ATTR >> 13)/* & 7*/]; \ offs = (ATTR & 0x03FF) << 7 | (ATTR & 0x1800) << 6 | (LINE); \ if(ATTR & 0x1000) offs ^= 0x40; \ src = (uint32 *)&bg_pattern_cache[offs]; \ WRITE_LONG(dst++, *src++ | atex); \ WRITE_LONG(dst++, *src++ | atex); \ #else #define DRAW_COLUMN_IM2(ATTR, LINE) \ atex = atex_table[(ATTR >> 13) & 7]; \ offs = (ATTR & 0x03FF) << 7 | (ATTR & 0x1800) << 6 | (LINE); \ if(ATTR & 0x1000) offs ^= 0x40; \ src = (uint32*)&bg_pattern_cache[offs]; \ _mem4(dst++) = (_mem4(src++) | atex); \ _mem4(dst++) = (_mem4(src++) | atex); \ ATTR >>= 16; \ atex = atex_table[(ATTR >> 13) & 7]; \ offs = (ATTR & 0x03FF) << 7 | (ATTR & 0x1800) << 6 | (LINE); \ if(ATTR & 0x1000) offs ^= 0x40; \ src = (uint32*)&bg_pattern_cache[offs]; \ _mem4(dst++) = (_mem4(src++) | atex); \ _mem4(dst++) = (_mem4(src++) | atex); \ #endif Если же выравнивание никак не учитывать (не применять _mem*() или не делать побайтовое чтение) , то эмулятор просто повисает и вылетает в data misaligned Exception :) Класс! Вполне исчерпывающий ответ!
  7. Компилятор здесь не причём. Я говорил о случае, когда идёт чтение short по адресу не кратному 2 или long по адресу не кратному 4. Хотя бы вот такой пример: short a=*(short*)(0xC0000001); int b=*(int*)(0xC0000007); Надеюсь, не надо пояснять, к чему приведут такие обращения к памяти? Мы не знаем как автор топика обращается к данным, а это значит, что имею право предположить что выше
  8. __Мои__ предположения: 1) Нет контакта со стробом чтения или других контактов (проверить качество контактов MPU, DRAM и на предмет К.З.) 2) Неисправная память или не подходит по времянкам 3) Ошибка в соединении DRAM и MPU. Плата своя или фирменная? 4) Что-то не так с выравниванием данных в программе (short д.б. выравнены на 2 байта, long - на 4, long long - на 8). Без текста программы тестилки - гадание на кофейной гуще.
  9. Уже поздно, кнопка Edit Post отсутствует. К тому же вы также внесли свою лепту и размножили этот пост: Да и чего вы так боитесь? Умный всё поймёт правильно. А дурак не осилит. Тем более вы писали: Ваша просьба удовлетворена.
  10. А меня задевает, что у вас позиция: "Я - Д'Артаньян, а остальные пи****сы", иначе как понять ваше высказывание про: Скажу так, что мне необязательно разбираться в кишках аллокатора, более того, я туда не лез. Так что вы лжёте по поводу: Интересно, кто вы собственно такой, чтобы давать такие заключения другим людям? Вам легче станет, если скажу, что "замедление-сбой-подвисание" - это следствие того, что malloc вернул NULL, и программа пошла шагать дальше, а не застопорилась, как сделано в последнем случае? Вы имеете право думать о чём угодно. Я имею право писать о чём угодно. В интернете, вам никто ничем не обязан. А раз выкладываете свой код для пользования другими, будьте готовы увидеть любые отзывы, в том числе невыгодные вам ! Ваш диалог уже получается НЛП какое-то: насквозь прошпигован угрозами и призывом к ответственности. Далеко пойдёте... Напоследок скажу, ваш аллокатор неоптимально использует пул памяти, по сравнению с другими. Надеюсь, я оставил вас довольным своим ответом! И скажите спасибо, что вашему аллокатору выделил своё время ДВАЖДЫ!
  11. Декодер H264 напрашивается. Там хорошее сжатие между фреймами и опенсорцный. Можно настроить качество не хуже JPEG. Странные клиенты. Чем ведро многоядерное по типу планшета их не устроило?