Перейти к содержанию
    

kochevkv

Участник
  • Постов

    285
  • Зарегистрирован

  • Посещение

Репутация

1 Обычный

Информация о kochevkv

  • Звание
    Местный
    Местный
  • День рождения 14.09.1982

Контакты

  • ICQ
    Array

Информация

  • Город
    Array

Посетители профиля

3 755 просмотров профиля
  1. Не, я, конечно, его сам не описываю. Он в stdint.h описан как char. Еще и под #ifdef _BYTE_BITS == 8 (примерно, на память). Т.е. если бит не 8 то его и не будет вообще. Приставка std не значит что файл должен быть в стандарте?
  2. Я даже не знаю как этот параметр искать) я так понимаю, о таких особенностях отдельно пишут в даташите на первой странице. 8 бит должно быть.
  3. 32 битный, Blackfin BF548. Но обращаться в программе к памяти могу и побайтно. Но листинг не смотрел ещё. Сейчас попробую. Нечетному элементу байтового массива напрямую присваивается, без дополнительных чтений и масок
  4. В нашем случае да, не надо. Но вот @jcxz нашел вариант когда надо. Но, насколько я понимаю, uint8_t не должен быть кривым. Т.е. он либо есть либо его нет. если нет, то надо использовать uint_least8_t и уже переписывать что есть. если б 9 битные байты встречались часто, то имело бы смысл сразу писать с маской чтобы не переписывать под разные платформы.
  5. Да не, не кривой у нас uint8_t 🙂 все как надо, 8 бит, всё как у людей
  6. Листинг листингу рознь. Мало ли что там один компилятор сделает и с какими опциями. Да, я что-то вообще тему создал не подумав. Я же все равно присваиваю байту в массиве 32 битное значение хоть и заполненное нулями после 8-го бита и ничего, не переживаю. Тему можно удалить) DSP. А что это меняет?
  7. Делаю заполнение хедера wav файла и возник такой вопрос. Нужно ли маскировать заполнение значений байтового массива? Я думаю что не надо uint8_t arr[24]; uint_fast32_t value = 0x0A0B0C0D; // Маска 0xFF arr[0] = value & 0xFF; arr[1] = ( value >> 8 ) & 0xFF; arr[2] = ( value >> 16 ) & 0xFF; arr[3] = ( value >> 24 ) & 0xFF; // Без маски arr[4] = value; arr[5] = value >> 8; arr[6] = value >> 16; arr[7] = value >> 24; Но есть ли в случае присвоения без маски 0xFF подводные камни? Мне тактов на маскирование не жалко, но любопытно как 100% правильно.
  8. А почему вы считаете что я хочу сделать flush для кэшей чтения? Я хочу отключить кэширование совсем на время работы с внешней флэш памятью. Чтобы быть уверенным что все данные из кэша перенеслись в свои положенные места я делаю flush. Из мануала к компилятору: The disable_data_cache function does not flush back to memory any modified data in the cache that is cached in write-back mode. To flush any such data, use the flush_data_cache Да, хорошая статья. Уже встречал её пока искал ответ. Но как правильно делать отключение там не нашел)
  9. Шина... ну обычная параллельная шина данных, где A0...A23, D0...D16, где SDRAM и остальное подключается 🙂 Память тоже обычная, NOR, с адресом 0x2000 0000 на шине. Я в механизме кэширования не разбирался, много там всего и задается в конфигураторе проекта. Оптимизацией этого дела не занимался, но суть в том что есть буфер в L1 кэше и данные сначала пишутся-читаются туда и контроллер каждый раз не обращается к внешней памяти для ускорения доступа к данным. Контроллер Blackfin BF-548. Про порядок вызова и запрет прерываний ничего не нашел, только про то что disable не делает flush и его надо вызывать отдельно. Думаю что общий подход с управлению кэшированием должен быть одинаковый что в ARM, что в Blackfin, поэтому я тут и создал тему. Типа, сначала отключаем, потом сливаем. Это же стандартная фича современных контроллеров. Надо унифицировать место из которого растут руки)) а то вот новая плата пришла, а там флеш новая без предупреждения, которая пишется по-другому. Зачем нам такие сюрпризы)
  10. Нужно ли отключать кэширование данных при перепрошивке параллельной флеш памяти, которая сидит на общей адресной шине? А если нужно, то каков правильный порядок отключения кэширования? { uint32_t saveInts = cli(); // Отключаем прерывания flush_data_cache(); // Скидываем все данные из кэша disable_data_cache(); // Отключаем кэширование sti( saveInts ); // Включаем прерывания } Или, может быть сначала disable, а потом flush? И нужно ли отключать прерывания в этот момент. Ведь, в прерываниях возможна запись в память и, соответственно, изменения в кэше данных. И, так, вопросик вдогонку. Почему флеш памяти имеют разные команды для работы с ними и даже одинаковые команды имеют разные пред-команды перед ними? У одной команда 0x90 просто одним тактом задается, у другой надо 0x55 0xAA записать сначала. Что за анти-унификация в мире электроники? Может быть есть какой-то стандарт, которого придерживаются не все и надо искать производителя делающего память по стандарту?
  11. Да, по описанию обычная SD карта в корпусе микросхемы. Спасибо за даташит, я на такие не натыкался
  12. Может тут? https://github.com/azemb-todd/azure-rtos_guix Простите, я теперь понял в чем был изначальный вопрос. Типа такого еще есть https://github.com/CURTLab/LVGLBuilder 100%
  13. Вот тут ребята остановились на Azure rtos guix https://habr.com/ru/articles/673944/ Ну и в комментах предлагают QT и lvgl
  14. Да, он уже старичок) лет 15 наверно точно есть. Но для слабых платформ неплох, есть все основные примитивы, антиализинг, в том числе в шрифтах. Все просто и понятно.
  15. Для stm и nxp emwin был в виде lib файлов. К нему шел редактор окон под windows, конвертер шрифтов и еще чего-то там. На работе для stm вроде лежал скачаный архив. Доки наemwin хорошие
×
×
  • Создать...