Где документация для написания ядра Arduino?
Я заинтересован в написании "ядра Arduino" (то есть портирования Arduino на новый MCU и новые платы). Мне трудно найти много документации о том, как это сделать. Я что-то упустил?
На этой странице написано: "Любой желающий может разработать ядро для своих собственных плат, следуя правилам и требованиям, которые мы издали." Итак, где же эти "правила и требования"?
Я нашел что-то под названием "Спецификация платформы", что звучало многообещающе, но оно документирует только конфигурационные файлы; в нем ничего не говорится о коде, который должен быть написан для поддержки новой платформы.
Я нашел ArduinoCore-API, в котором говорится, что это "аппаратно независимый уровень ядра Arduino"." Но в нем ничего не говорится о том, как написать аппаратно-зависимую часть ядра.
Я был бы благодарен, если бы кто-нибудь указал мне на основную документацию Arduino. Он не появляется в моих поисковых системах в Интернете. Спасибо!
Разъяснения:
- Да, я могу посмотреть на существующие ядра в качестве примеров, но я бы предпочел иметь и документацию. Тем более что существующие ядра могут быть разного качества, а могут и не соответствовать последнему стандарту. Документация - это всегда хорошо.
- Причина, по которой я хочу написать ядро, заключается в том, что... Я хочу использовать MCU, который в настоящее время не поддерживается! (В частности, я хочу добавить поддержку GD32F350, но на самом деле это не должно иметь отношения к ответу "Где документация?")
@user31708, 👍2
Обсуждение1 ответ
В написании ядра Arduino есть две основные части: аппаратно-независимые части и аппаратно-зависимые.
Аппаратно-независимые части в значительной степени сделаны для вас в ArduinoCore-API. Однако я бы не просто использовал это дословно, а использовал бы его как отправную точку и адаптировал бы к вашим потребностям. Это происходит потому, что на самом деле у него есть пара нерешенных проблем, и не все может на 100% соответствовать вашим потребностям. Мы не используем его для ядра чипкИТА, потому что:
- У него есть нерешенная проблема вокруг именования файла
String.h
, который конфликтует сострокой.h libc
в нечувствительных к регистру файловых системах - Наш USB-стек сильно отличается от того, как работает Arduino "Pluggable USB"
- У нас есть дополнительные возможности в ряде стандартных объектов чтобы использовать более эффективное использование более совершенного оборудования
После того как вы отсортировали аппаратно-независимую часть, вам нужно написать с нуля аппаратно-зависимую часть. Основной список функций, которые вам нужно реализовать, приведен в справочнике Arduino. Как вы их пишете, не может быть задокументировано, так как это зависит от оборудования. И вам вполне может понадобиться (или захочется) написать значительно больше функций, чем просто те. Например, на chipKIT, а также стандартной функции analogWrite()
у нас также есть функции для изменения частоты ШИМ и разрешения - вещи, которые не являются частью "стандарта", но невероятно полезны.
Хорошей отправной точкой является изучение Arduino.h файл существующего ядра (ядро AVR-хороший базовый уровень), в котором будет перечислено большинство функций и их типы параметров/возвращаемых значений. Это дает вам то, что функции ожидают получить и что они должны излучать, но то, как эти функции записываются, полностью зависит от вас.
И тогда, конечно, вы должны реализовать варианты плат и т. Д., чтобы все это работало...
Кроме того, имейте в виду, что написание (и поддержание) ядра-это долгий и сложный процесс, который займет всю вашу оставшуюся жизнь.
Спасибо! Я думаю, это намного более очевидно, чем я думал, в том, что вы непосредственно реализуете API, а не реализуете какие-то "внутренние" функции, которые вызываются API. Тем не менее, какой-то документ "обзор на 10 000 футов" был бы полезен. Я не так беспокоюсь о "как", потому что я планирую просто позвонить в библиотеку прошивки поставщика микросхем., @user31708
- Документация ESP32 для "time.h"
- Ардуино — это одноплатный компьютер?
- Где найти руководство по оборудованию (или документацию) для Arduino Uno и ATmega328P?
- Где вся документация Arduino?
- Какая функция у этого транзистора на Arduino Mega?
- Как задокументировать пользовательскую библиотеку в Arduino
- Различные значения pid и vid в boards.txt
- Как определить возможности моего модуля ESP32?
спецификация, которую вы связали, - это все, что вам нужно. см.Существующие ядра в качестве примеров. почему вы хотите создать ядро?, @Juraj
В спецификации ничего не говорится о коде, который мне нужно написать. Где это указано?, @user31708
Я понимаю. API Arduino описано здесь https://www.arduino.cc/reference/en/. некоторые части реализованы в репозитории API Arduino. некоторые из них зависят от аппаратного обеспечения и должны быть реализованы., @Juraj
99% написания ядра-это понимание и кодирование чипа, с которым вы работаете. Спецификация *не может* сказать вам об этом, поскольку она полностью зависит от архитектуры чипа. В основном у вас есть два варианта: 1. используйте предварительно определенный уровень API и заполните его своим кодом, чтобы заставить функции работать, или 2. напишите свой собственный код, реализующий функции API. Документация *представляет собой* список функций API. Он *не может* рассказать вам, как писать эти функции., @Majenko
некоторые новые ядра Arduino для микроконтроллеров ARM сделаны поверх ОС ARM mbed и используют поддержку mbed для микроконтроллера, @Juraj