Георг Готз (George Hotz), получивший известность разработкой способов обхода ограничений на установку дополнительного ПО на iPhone и Sony PlayStation 3, основал (https://github.com/geohot/openhexagon) проект по разработке открытого компилятора и инструментария для современных DSP Hexagon (https://en.wikipedia.org/wiki/Qualcomm_Hexagon), поставляемых в SoC Snapdragon компании Qualcomm. Для старых моделей Hexagon V4 и V5 доступен (https://sourcery.mentor.com/GNUToolchain/release2800?@t... открытый инструментарий на базе GCC, но для новых серий Hexagon V60 поставляется только проприетарный Hexagon DSP SDK (https://developer.qualcomm.com/software/hexagon-dsp-sdk), основанный на LLVM (в LLVM 6.0 имеется (https://releases.llvm.org/6.0.0/docs/ReleaseNotes.html#chang... штатный бэкенд (https://github.com/llvm-mirror/llvm/blob/master/lib/Target/H... с поддержкой v60, v62 и v65).URL: https://github.com/geohot/openhexagon
Новость: https://www.opennet.me/opennews/art.shtml?num=48476
>основанный на LLVMПермиссивные лицензии просто замечательны.
угу - поэтому у нас есть (open source, между прочим) кодогенератор для этих dsp, а вы тратьте свое время на reverse engineering того, что нафиг никому не упало.(у нас нет opensource версии линкера и рантайма - lld такое не умеет, но мы вполне счастливы не получать ненужных знаний и не поддерживать еще и в нем такую возможность, у нас есть чем заняться)
> у нас есть чем занятьсятипа комменты на опеннете строчить?
> угу - поэтому у нас есть (open source, между прочим) кодогенератор для этих dspА в новости кое-что другое утверждается.
> только проприетарный Hexagon DSP SDK, основанный на LLVM
Собственно причина по которой LLVM тулчейнов следует избегать - никогда не знаешь когда тебя кинут.
> (у нас нет opensource версии линкера и рантайма
Мозгов у фанов BSDL нет - нахваливают всяких имельцев.
чукча не читатель?>в LLVM 6.0 имеется штатный бэкенд генерации кода с поддержкой v60, v62 и v65, но отсутствует runtime и компоновщик
тот чукча читатель, но непониматель - ни что такое "SDK", ни что этот самый бэкэнд он и использует, вместе со всем остальным llvm.
Забыл тег сарказм.
А вот у благородных англичан по дефолту включен этот тег!
Что это за процессор, зачем он нужен, какая архитектура, первый раз о нем слышу, и мало что понятно, можно, пожалуйста, подробностей?
VLIW процессор, старые версии не поддерживали (но это не точно) целочисленные вычисления. В современных системах Qualcomm два таких процессора. На одном из них работает код модема. Другой предназначен для приложений. Обычно, правда, неподписанные приложения он не выполняет.Самое известное приложение - Google Camera, в которой алгоритмы (склейка панорам, HDR) реализованы для этого процессора. На телефонах, где этот сопроцессор доступен (старшая серия Snapdragon), Google Camera поддерживает режим HDR+, когда одна картинка делается из восьми фото, в итоге без засветов на ярком солнце, и хорошо работает на контрастных сценах ночью. На остальных обычно используется от четырёх до шести кадров, и надо ждать несколько секунд, пока обработается.
Зачем он нужен - интересный вопрос. У Qualcomm очень быстрый GPU, и если выкинуть DSP и поставить туда дополнительный L2 кэш - можно и на CPU получить достаточную производительность для обработки картинок. Вероятно, развивают по принципу "ну раз уж сделали - не выкидывать же теперь".
Подробности, в принципе, на официальном сайте доступны.
> Обычно, правда, неподписанные приложения он не выполняет.Анон, брат, уточни немного как здесь устроено. Или кинь ссылкой где почитать.
https://www.qualcomm.com/news/onq/2017/01/17/secure-boot-and...В теории - код в TrustZone проверяет подпись программы для DSP. По хорошему, он должен сначала замапить эту память, как недоступную для изменения со стороны Linux Kernel, чтобы после проверки подписи нельзя было подменить её.
Патч от GeoHot патчит кое-что, не связанное с этим - в программе-загрузчике для DSP убирает проверку на тестовый режим, что отключает дальнейшую проверку подписей. А вот почему это вообще возможно - непонятно. Сама программа-загрузчик должна быть подписана, и подпись не совпадёт после патча. Скорее всего, на устройстве, которое он использовал (OnePlus что-то?) проверка подписей отключена в принципе. Или ой.
> В теории - код в TrustZone проверяет подпись программы для DSP. По
> хорошему, он должен сначала замапить эту память, как недоступную для изменения
> со стороны Linux Kernel,А что квалкому мешает просто проверять подпись kernel и грузить только kernel которые ведут себя правильно? Это слишком просто и логично было?
Впрочем, снос цифровых загородок от квалкома это вообще фича а не баг.
Писать конпелятор для мультимедиа сопроцессора, который суть есть числодробилка - зачем? NetBSD на нём запускать? Лучше бы нашёлся кто бы под него (да и не тольк под него) открытый hdr алгоритм написал уровня gcam.
ты не поверишь - на нем (на старых версиях) можно (было, по крайней мере) запустить линукс (ведро, во всяком случае).
(зачем - а хз. "патамушта магу!")собственно, основная польза от компилятора в том, что прежде чем переваривать какие-то числа - надо банально суметь прочитать данные и потом их куда-то записать. А для этого нужна какая-никакая примитивная однозадачная операционная система. С поддержкой fs/взаимодействия с внешим миром хотя бы через serial, и т д. Писать ее на асме для dsp - так себе времяпровождение. Поэтому на ассемблерной вставке будет написан только собственно какой-нибудь бпф и то, вероятно, не весь.
> кто бы под него (да и не тольк под него) открытый hdr алгоритм написал уровня gcam.
пиши, кто тебе не дает?
> нужна какая-никакая примитивная однозадачная операционная системаиз педивикии:
> Both Hexagon (QDSP6) and pre-Hexagon (QDSP5) cores are used in modern Qualcomm SoCsтам, на этих SoCs, ажно целый многозадачный ведроид запускается, зачем что-то ещё городить? Есть закрытый конпелятор для некой архитектуры, которая, не факт, что не устареет через год-два - нафига тратить время на реверсинг конпелятора под неё? Я ещё понимаю, писать реализацию OpenCL для r600 - всё-таки она крутится у юзеров прямо в рантайме. Но этот-то - нужен только девелоперам: раз сконпелировал и забыл, работать будет у всех. Единственный смысл - если старые версии проприетарного конпелятора не поддерживают новые ведроиды, а новый не поддерживает старое железо, а очень хочется новое на старом - и то теряется после выхода Oreo.
> пиши, кто тебе не дает?Занят. А тут, судя по новости, кому-то заняться явно не чем.
> там, на этих SoCs, ажно целый многозадачный ведроид запускается, зачем что-то ещё городить?срочно высылай cv в квалком - возможно, им нужен ты, в качестве эффективного менеджера, который лучше них знает, что городить.
А так - в некоторых soc их аж три. (правда, только один доступен извне)ведроиды тут совершенно ни с какого боку, компилятор не на них запускается, и результат компилежа тоже, они с ним только через (аппаратный) интерфейс контактируют.
>Писать конпелятор для мультимедиа сопроцессора, который суть есть числодробилка - зачем?
>Лучше бы нашёлся кто бы под него (да и не тольк под него) открытый hdr алгоритм написалЧудак-человек, ну а этот самый открытый HDR как без конпелятора компелировать?
Закрытым конпелятором, который вполне себе доступен для скачивания.
Нафига тогда тебе открытый алгоритм HDR, если привык блобъём пользоваться?
> Нафига тогда тебе открытый алгоритм HDR, если привык блобъём пользоваться?Алгоритм - вещь универсальная, конпелятор - утилитарная. Написанный раз хдр алгоритм будет работать на множестве устройств и позволит копеечным сяоми снимать на уровне пикселя, будет постоянно совершенствоваться и останется в веках. Конпелятор лишь сделает чуть удобнее жизнь паре разработчиков, и то, лишь на год-два, пока квалком не выкатит новую версию DSP.
> Алгоритм - вещь универсальная, конпелятор - утилитарная.Однако без канпелятора алгоритм не сканпилишь, а когда проприетарная дрянь диктует архитектуру, версию либ и проч - это, извините, булшит и делает жизнь значительно менее удобной. Потому что вместо того чтобы писать алгоритм - приходится строиться под причуды каких-то пропертариев.
нафига тебе компьютер - если ты привык блобъем в биосе пользоваться :)
Нафига тебе девка, если ты к мамкиной сиське привык(Ставить "тире" вместо запятой - это ж каким надмозгом надо быть!)
Я в Биосе не работаю, не сподручно как-то. Предпочитаю в GNU/Linux + прикладное СПО
Работает, но под каждый смартфон патч нужно менять (везде код разных версий), и работает только из командной строки - непонятно как сделать хук ioctl() из libc без LD_PRELOAD.