Вы сказали «маленький микроконтроллер и у него нет интерфейса, нет компьютера, нет отладчика, компилятора или ассемблера». Ну, вы можете обойтись без компьютера, отладчика, компилятора или ассемблера, но для загрузки программы у вас должен быть какой-то интерфейс для соединения с микроконтроллером.
Прежде всего, забудьте о любых языках высокого уровня, таких как C. Затем самый простой способ - написать программу на языке ассемблера, но не использовать ассемблер для ее перевода. в машинный код. Вместо этого посмотрите каждую инструкцию по сборке в руководстве по программированию, найдите их эквивалентное шестнадцатеричное кодирование и запишите его.
Вы должны будете выделить свои собственные переменные, чтобы вы могли заполнить соответствующие адреса в части операндов инструкций. Также забудьте об использовании стека и кучи, слишком много работы. Когда вы закончите, у вас будет машинная программа, которая может быть загружена непосредственно во флэш-память микроконтроллера - никакой компоновщик также не требуется.
Из-за отсутствия внешних адресов и шин данных почти на всех микроконтроллерах (поскольку они занимают слишком много выводов, необходимых для портов ввода-вывода и периферийных устройств), практически все микроконтроллеры программируются через специальный интерфейс, подобный следующему:
Обычно «программист» слева подключается к ПК, который загружает машинный файл, созданный компилятором / компоновщиком.
Однако, если у программиста есть клавиатура, как показано ниже:
затем можно ввести шестнадцатеричные коды для сгенерированной вручную программы прямо в программатор и запрограммировать устройство, не нуждаясь в компиляторе, компоновщике или ПК, о котором вы спрашивали. (Клавиатура также используется для редактирования шестнадцатеричных файлов и создания контрольных сумм.)
Конечно, очень немногие программисты имеют такие клавиатуры. Этот не подходит для любителей, так как он, вероятно, стоит пару тысяч долларов.
Этот конкретный программист программирует детали до того, как они помещаются на плату; интерфейсы и сокеты доступны для нескольких PIC, а также для Atmel AVR.