Если я правильно понял, то собираешь кросс-компилером, а потом заливаешь на железку, так?
если процессор с толстеньким ядром ARM, открываешь еррату на процессор и охереваешь как он вообще работает. Короче для микроконтроллеров обычное дело без ОС, для application processor - без ОС конкретный геморой получишь.
Думаю это очень перспективно. Сейчас 90% всего уже работает на виртуалках и ещё один уровень абстракций в виде ОС уже не очень нужен. Думаю скоро появятся фреймворки позволяющие писать приложения без ос для запуска в гипервизорах и прочего...
меня эта история конечно впечатлила, когда я её прочитал, но если рационально рассуждать, аффтар должен был просто послать заказчика, «берите новый процессор и переделывайте всю партию, ниибёт»
закон Ома, законы Кирхгофа, знать про индуктивность, ёмкость и сопротивление в цепях переменного тока, как работают транзистор и диод, основы цифровой электроники - триггеры, шины и всё такое
Речь о SoC-ах? Не особо хардкорно, если не нужно заново писать дрова для переферии. Подготовка окружения и инициализация процессора и памяти не на много сложнее, чем для микроконтроллера (с учетом того, что сейчас микроконтроллеры пошли похлеще СоКов). Особенно, если есть IDE от производителя.
процессор, который программируется, не в воздухе висит, а к какому-то реальному железу подключён, нужно иметь представление, как оно работает, что будет, когда ты запишешь единичку или нолик в какой-нибудь регистр или прочитаешь его оттуда, знать, что переходные процессы происходят не мгновенно
закон Ома, законы Кирхгофа, знать про индуктивность, ёмкость и сопротивление в цепях переменного тока, как работают транзистор и диод, основы цифровой электроники - триггеры, шины и всё такое
Мне кажется это не обязательно. Сейчас в схемах очень редко можно встретить одиночные триггеры. А уж индуктивностей в пути прохождения сигнала (с точки зрения программиста) вообще не бывает. Важнее уметь читать даташиты. И иметь хорошую память или пару дополнительных мониторов :)
А уж индуктивностей в пути прохождения сигнала (с точки зрения программиста) вообще не бывает.
почему не бывает, а длинные проводки на высоких частотах? :)
Важнее уметь читать даташиты.
А в даташитах что обычно, схема подключения обвязки, режимы работы (напряжения, токи, температура), блок-схемы всего девайса или отдельных его компонентов (где триггеры как раз присутствуют), и как это всё будет читать программист без элементарных знаний по части электроники?
Контейнеры это не то, слишком медленно и что самое главное ось есть. А я говорил про запуск блоба без каких либо внешних зависимостей допустим в kvm или xen.
Ничего особо хардкорного, за исключением того, что у тебя в общем случае нет libc и полагаться ты можешь только на даташит с регистрами.
А, да, тебе ещё нужно будет чутка асмового кода, который тебе настроит стек для сишечки.
Обычно все-таки есть что-то типа Freescale Codewarrior или Xilinx Software Development Kit которые включают Board Support Packages для большинства чипов производителя — необходимые библиотеки в том числе для инициализации и доступа к перефирии
С железом для которого этого нет я бы без крайней необходимости связываться не стал
почему не бывает, а длинные проводки на высоких частотах? :)
Об этом уже позаботился разработчик железа, программисту это знать ни к чему (есть исключения, например настройка параметров выходных буферов на микросхеме памяти. Но это тоже в обязанностях железячника - промоделировать и дать программисту табличку с параметрами).
А в даташитах что обычно, схема подключения обвязки, режимы работы (напряжения, токи, температура), блок-схемы всего девайса или отдельных его компонентов (где триггеры как раз присутствуют), и как это всё будет читать программист без элементарных знаний по части электроники?
Элементарные знания желательно иметь, но достаточно совсем элементарных. Даже закон Ома далеко не всем нужен. Работал со мной программист, который себя позиционировал низкоуровневым, закон Ома не знал, но с работой справлялся нормально. Конечно, приходилось ему объяснять некоторые вещи, но на то он и программист.
Конечно. Я утрирую. Речь о том, что ту же задачу можно достичь с помощью контейнеров, получив ещё меньший оверхед.
Сам посуди. Гипервизоры — это виртуализация железа. Поверх него в любом случае нужны своего рода драйвера (хотя бы TCP/IP-стек, управление памятью и так далее), и каждый инстанс каждого приложения, работающего без ОС внутри виртуалки, будет вынужден таскать их с собой. Операционные системы какбэ не просто так придумали.
Об этом уже позаботился разработчик железа, программисту это знать ни к чему (есть исключения, например настройка параметров выходных буферов на микросхеме памяти. Но это тоже в обязанностях железячника - промоделировать и дать программисту табличку с параметрами).
А зачем тогда отдельный программист нужен, железячник и сам сможет пару инструкций ассемблера накидать или простую программу на С сделать, проще и быстрее будет чем такому сферическому программисту объяснять что-то. Обычно так и происходит
Под онтопик вменяемых бесплатных IDE нет вообще. Можно конечно и в вим писать асм и знать состояние регистров, стека, памяти и вообще всей железяки, но это хардор тот еще. Придется ставить венду.
как работают транзистор и диод, основы цифровой электроники - триггеры, шины и всё такое
ну и как работает этот, мемристор, например??
гы. есть такой Мараховский Л.Ф. Основы теории синтеза цифровых устройств на схемах автоматной памяти : монография.
так вот, там он пишет, что вы все дураки и не лечитесь, а я тут на белом коне тыгдым-тыгдым... начиная с триггеров, тактовых генераторов и синхронщины всё не туда пошло...
в общем, вводит новые блоки для асинхронных схем, начиная с триггеров и своих особенных автоматов с памятью.
всё у него круто получается, правда вывод — всю современную индус-трию надо нафиг переделать заново, асинхронно. ибо синтез с библиотеками элементов надо переписать заново, асинхронно.
как интересно ... где это использовать при программировании?
как это где... вспоминаем аналоговые вм, дифференциальный интегратор и прочие штуки из гидродинамики... только тут надо использовать ток, напряжение и мощность а не законы из гидродинамики...
вот понадобилось тебе например производные посчитать или интегралы — а ты такой бац, физические законы приспособил.
и схема сама перепрограммировалась под новую конфигурацию, ога-ога. :-))
Для языка ассемблера есть хоть чем-то полезная IDE?
состояние регистров, стека, памяти и вообще всей железяки
Мониторинг всех частей железки в реальном времени присутствует в любой ide от производителя железок (мк) + дебаггер ессно. Некоторые из них даже бесплатные, но с ограничениями, например, на объем кода.
В итоге один хрен приходится во всё это лезть. Рано или поздно. В моём случае крайне редко.
Вендорские библиотеки и SDK бывают написаны через такую задницу, что их даже трогать неохота - пример Ralink. Контрпример - TI, у этих более-менее прилично.
ТС, ты пробовал для начала микроконтроллеры с ядром ARM? Может ты про x86, но учитывая что вместо Linux можно работать напрямую на железе, то чем это не bare metal?