Jump to content

    

uni

Участник
  • Content Count

    73
  • Joined

  • Last visited

Community Reputation

0 Обычный

About uni

  • Rank
    Участник
  • Birthday 06/30/1980

Старые поля

  • Facebook
    Array
  • Vkontakte
    Array

Контакты

  • Сайт
    Array
  • ICQ
    Array

Информация

  • Город
    Array

Recent Profile Visitors

1015 profile views
  1. Действительно, TI DSP не особо интересны даже у них на форуме поддержки. Я туда даже не пытался обращаться. Вот работа с модулем MMCSD, если честно, у меня так и не зашла (с FatFs) в отличии от вас, но я ещё сильно не копал. Я, правда, не со стороны DSP заходил, а со стороны ARM'а (я с L138 работаю). В PDK с этой их осью и CSL есть вроде аж три проекта для MMCSD (LCDK), но они у меня почему-то не пошли, даже собранные в CCS. Хотя по правде я любитель "модного" и собирал всё в последней версии среды (10.x). Но другие, по-проще, заработали. Просмотрел по диагонали про консоль игровую. Я, честно, не любитель игр, чисто из любви к железкам и исходникам попробовал бы. Это правильно, что у вас там отдельный игровой SDK, так как я себе слабо представляю клуб любителей копаться во всех CPU-ядрах, компиляторах, периферии, тысячах регистров и десятков вариантов режимов работы этого всего, уж тем более писать на ассемблере для PRU :) Я его вообще пока отложил, мне двух ядер пока хватает. Вот у современных товарищей есть CMSIS и его поддержка в средах, вплоть до автогенерации проектов. Я им завидую. Чем дело-то закончилось с BlackPrism? Сколько стоит платка BlackPrism и SDK к нему? Я не смотрел схему, там JTAG-то выведен? Я бы купил как ещё одну отладочную плату. П.С. Посмотрел, висит JTAG в воздухе. Как же так? :) printf() или я чего-то не знаю? Неужели разработка под ПК с последующим "портированием"?
  2. Китайский интернет? :) Я PDK-то с CSL еле-еле осваиваю, пришлось три SDK, начиная с BSL перебирать, хорошо, что не совсем с нуля начинал. Я с ARM-ядра начал (OMAP), а примеры все почти для DSP в интернетах, ох и намучился, ещё и под IAR. Tomb Raider - зачёт. Это единственный, в который я играл и прошёл до конца. Был разочарован в самом конце, т.к. тонны собранных аптечек не понадобились. Босс был повержен раза с третьего (перепрыгивал через его плечо и мочил, пока он разворачивался). BlackPrism значит, спасибо, и это почитаю, хотя мне больше алгоритмы и исходники интересны.
  3. Типа эта ссылка: TMS320C6745 - начало пути, Игровая консоль? Игровая приставка? Почитал начало :) Напомнило мои копания в документации. Вижу, что касаемо DSP-ядра, вся документация имеется. Жаль раньше такого дневника не видел, сэкономило бы времени, почитаю.
  4. Жаль, а мне приходится ковыряться с этим OMAP-L138 и такого задора, как тут в теме, он не вызывает :) Думал, хоть бы в игрушку какую поиграл.
  5. Доброго, дал ли Бог? И если да, то можно ли глянуть, потестить ваши творения? У меня есть LCDK для OMAP-L138, интересно было бы заценить. Могу обеспечить всей документацией, если надо.
  6. Функция Сrc16Optim(): 36 команд или 72 байта.
  7. Это очень просто прикинуть для avr8. Судя по картинке с кодом для этого метода там используется около 45 инструкций. Это 90 байт для этой архитектуры, что значительно меньше размера таблицы и обслуживающего его кода. Этот метод вполне может называться оптимальным для avr8. В avr почти все инструкции (опкоды) двухбайтовые, кроме некоторых исключений.
  8. Попробовал ещё раз. Видимо что-то не так сделал в первый и был не внимателен. Теперь всё сошлось, код прилагаю. Итак, полином 0xA001, CRC16/MODBUS, результат для строки "123456789" равен 0#4B37. Для ATmega16 @ 16 МГц имеем: Table - 12.9 мкс (таблица 512 байт) Optim - 17.3 мкс (без таблицы) Simple - 20.0 мкс (без таблицы) Cycle - 52.4 мкс (без таблицы) Т.е. алгоритм из библиотеки avrlibc действительно быстрее и самый близкий по времени к табличному методу расчёта. crc16-modbus.pdf
  9. Для полинома 0x1021 теперь уже 4 варианта: https://godbolt.org/z/ja9Lwq Для проверки используется строка "123456789", которая имеет crc = 0x29B1. Для avr8 чуда не произошло, но алгоритм GetCrc16Optim() оказался быстрее моего самого первого варианта и быстрее двойного цикла: Table - 13.9 мкс (таблица 512 байт) Optim - 22.9 мкс (без таблицы) Simple - 24.6 мкс (без таблицы) Cycle - 51.3 мкс (без таблицы)
  10. Надо добавить, что алгоритм не только полиномом отличаются между собой, но и порядком работы с битами. В результате чего могут применятся те же, но инвертированные полиномы (0xA001 <-> 0x8005. 0x1021 <-> 0x8408). Код на асме для avr в avrlibc не содержит переходов, насколько я вижу, поэтому это не двойной цикл. Теоретически он должен быть быстрее обсуждаемой в теме реализации, но не ясно почему он на стандартной строке показал другой результат.
  11. К сожалению, результат не совпал с табличным вариантом и с предыдущим моим двойным циклом с полиномом 0xA001. В любом случае этот алгоритм гораздо медленнее приведённого мной варианта, т.к. также использует двойной цикл, судя по эквивалентным с-кодам, приведённым в документации. Сам асм-код не разбирал. Optimized CRC-16 calculation. Polynomial: x^16 + x^15 + x^2 + 1 (0xa001)<br> Initial value: 0xffff This CRC is normally used in disk-drive controllers. The following is the equivalent functionality written in C. \code uint16_t crc16_update(uint16_t crc, uint8_t a) { int i; crc ^= a; for (i = 0; i < 8; ++i) { if (crc & 1) crc = (crc >> 1) ^ 0xA001; else crc = (crc >> 1); } return crc; }
  12. Вот последний вариант: https://godbolt.org/z/9txEB2
  13. Интересная сопутствующая тема: ARM, 32bit - CRC32
  14. Покажите пример псевдокода или кода на каком-нибудь c-подобном языке. Чем больше примеров, тем лучше.
  15. Вы не знакомы с архитектурой avr, как я вижу, иначе не предлагали бы засунуть таблицу в ОЗУ. Это мелкий камень и ОЗУ там на вес золота. Я специально привёл пример для ATmega16, т.к. это "отъест" 50% от общего объёма. Лично я занялся этой темой с avr, т.к. хочу сделать на базе arduino простую плату для демонстрации возможностей среды SimInTech в плане генерации кода. Там есть пример для Миландра, но в здравом уме никто в этом разбираться не будет. Порог вхождения гораздо больше. SimInTech - это что-то вроде нашего Simulink'а. Если я сделаю то, что хочу, то смогу "рисовать" алгоритмы и загружать их в целевую систему мимо стадии программирования. Это вот то к чему всё идёт. Программист - он для этих целей вообще лишний. Нарисовал схему автоматизации, залил в железку, отлаживаешь на уровне сигналов и понятия не имеешь об архитектуре железа. Проект в этом случае получается портируемым под другую железку без переписывания схемы и документации. Нужно сделать только так называемую "адаптацию", где и нужны программисты. Arduino для этих целей вообще замечательная простая штука. Я бы хотел только, чтобы не только Mega2560 вариант работал, но и меньшие собратья, а для этого нужно экономно сделать "адаптацию". Там применяется расчёт crc16 табличным способом, а меня это не устроило. Вот и появилась эта тема. Если хотите предложить arm'ы для этих целей :) - флаг в руки, адаптируйте по аналогии с Миландром. Я не говорю, что они не подойдут, просто этого уже на коленке не сделать, как я балуюсь.