Здесь гипотетически: допустим, у вас есть процессор, подключенный к какой-либо форме USB-накопителя, и двигатель. Как бы я написал простую программу на «голом железе», чтобы заставить двигатель двигаться в течение 10 секунд? Я хочу научиться работать с программой на «голом железе», и иметь программу для просмотра и анализа было бы замечательно. (любой язык будет отличным)
Как написать простую программу на «голом железе»?
Ответы (1)
1) вы должны понимать, как загружается рассматриваемый процессор. есть сам основной процессор, затем энергонезависимая память. например, raspberry pi немного уникален тем, что в логике (или встроенном ПЗУ?) есть что-то, что считывает SD-карту, загружает графический процессор, затем графический процессор копирует программу руки в оперативную память и выпускает руку в нее. баран. большинство микроконтроллеров имеют встроенную флэш-память и оперативную память, и флэш-память отображается в адресное пространство, из которого загружается процессор, и / или имеется загрузчик, поставляемый поставщиком, который загружает процессор, а затем вызывает ваш код.
2) вам нужно научиться включать и инициализировать периферийные устройства, которые вы хотите использовать. таймер, возможно, если вы хотите считать до 10 секунд.
3) написать заявление.
отладка - это хитрость, иногда вы можете использовать аппаратный отладчик через jtag или иногда использовать монитор ПЗУ через gdb или какую-либо другую программу на каком-то интерфейсе, таком как uart. или тот, который почти всегда доступен либо с мигающим светодиодом, либо с UART для отправки текста или чисел, чтобы увидеть, что происходит. ну и конечно же осциллограф, можно гпиос шевелить или делать другие вещи и видеть их на прицеле.
управление двигателем слишком общее, вам нужно конкретно знать, какой двигатель и как им управлять, скорее всего, нулевой шанс, что вы управляете им непосредственно от микроконтроллера, у вас может быть что-то вне моста транзистора h или что-то, что изолирует микроконтроллер или вы иметь определенный тип микросхемы / схемы драйвера двигателя, с которым вы общаетесь либо через дискретные сигналы, либо через i2c, либо через spi, либо через что-то еще, чтобы указать ему управлять двигателем, а затем, возможно, какой-то аналог для работы с высокой мощностью, или, может быть, этот чип гибрид. так что вы должны знать все это или, по крайней мере, вы должны знать программную сторону всего этого, какой интерфейс и / или какие сигналы должны иметь изменения состояния, чтобы заставить двигатель что-то делать. это может быть так же просто, как создаваемый вами ШИМ, который усиливается между вами и двигателем. ШИМ может включать в себя сначала изучение того, как возиться с одним из таймеров, а затем либо с другим периферийным устройством, либо с подмножеством таймера, чтобы сделать из него сигнал ШИМ. здесь также очень полезен осциллограф или логический анализатор, или, если у вас есть другой микроконтроллер, вы можете сэмплировать gpio быстрее, чем генерируемый сигнал, вы можете превратить его в логический анализатор.
начните с поиска платы, помигайте светодиодом, выясните, как запустить таймер, точно помигайте светодиодом. выясните тактовую частоту, с которой вы действительно работаете, вместо того, чтобы гадать, выясните, как настроить UART, отправьте несколько символов, теперь у вас есть интерфейс отладки, знание того, каковы ваши эталонные тактовые частоты таймера, и теперь вы можете попытаться подсчитать до 10 секунд, а затем получить сигналы, необходимые для двигателя. рассчитывайте взорвать несколько досок, купите запасные части.