Новый HAL v "0.6.0" для чипа W806 в платформе Arduino #4
Replies: 64 comments 356 replies
-
@AnatolSher Сразу вопрос по этой теме - поправьте меня, если я что не понял, разве апгрейд с версии 0.4 на версию 0.6 не свелся с простой замене одних и тех же файлов в тех же директориях? Тогда почему слетела поддержка ардуино в линуксе - ведь она этой заменой не должна затрагиваться? Кстати, Вы в курсе, что для W801 есть свой отдельный СДК с поддержкой сети, блютуза и прочих вкусностей 801-ого чипа. Причем к тому СДК даже есть некая документация с описанием системных методов. Вот бы его к ардуино прикрутить... |
Beta Was this translation helpful? Give feedback.
-
Beta Was this translation helpful? Give feedback.
-
Отлично. Можете выложить в виде архива куда-нибудь? |
Beta Was this translation helpful? Give feedback.
-
Я не собирался их сливать, думал просто заменить старый новым. |
Beta Was this translation helpful? Give feedback.
-
Дмитрий, хотел задать вопрос... |
Beta Was this translation helpful? Give feedback.
-
Да, это вполне возможно. |
Beta Was this translation helpful? Give feedback.
-
Beta Was this translation helpful? Give feedback.
-
https://cloud.mail.ru/public/3duh/JPmTYVs6F И добавить в wiring.c прототип Для Linux больше правок нет. Чуть позже протестирую в Windows. |
Beta Was this translation helpful? Give feedback.
-
Анатолий, что-то я потерялся, в чем моя задача? Если Вы уже все сделали, от меня-то что требуется? |
Beta Was this translation helpful? Give feedback.
-
Доброе утро Если Вы имеете в виду, что я не выложил результат на гитхаб - то это дело не долгое..
если на самом деле все уже заменили сами? |
Beta Was this translation helpful? Give feedback.
-
Хорошо, в течении дня выложу. Кстати, вот еще любитель W806 с кучей примеров кода для ардуино-пакета, знаете про него? |
Beta Was this translation helpful? Give feedback.
-
Вы загляните внутрь. У него тоже примеры на основе HAL, он в вайринг лезть не хочет. |
Beta Was this translation helpful? Give feedback.
-
Залил пакет с HAL 0.6 как новую ветку hal-v0.6.0 в репо на гитхаб. Прежняя ветка linux-dev остается дефолтной, когда открываете стрничку нашего репо - по умолчанию показывается она. Если вам нужен ХАЛ 6 - не забывайте сменить ветку |
Beta Was this translation helpful? Give feedback.
-
А где он должен быть? Его и в прошлой версии не было. |
Beta Was this translation helpful? Give feedback.
-
Добавил hal_examples.h Анатолий, меня тут на работе загрузили на ближайшие две недели, так что я не смогу много времени уделять. Но если у вас будут дополнения - присылайте, буду выкладывать. |
Beta Was this translation helpful? Give feedback.
-
Отлично, спасибо. |
Beta Was this translation helpful? Give feedback.
-
Добавил библиотеку EEPROM с описанием и примером. Добавил ваш пример hal_internal_flash.ino в HAL_EXAMPLES. |
Beta Was this translation helpful? Give feedback.
-
Ок. Там еще остался кусок по записи Arduino Strimgs во флеш, но поскольку у нас самих String пока нет, я его закомментировал. В свое время доделаю |
Beta Was this translation helpful? Give feedback.
-
Добавил библиотеку HardwareTimer c описанием и примером. |
Beta Was this translation helpful? Give feedback.
-
Еще нашел непорядки с миллис и делей:
Поскольку значение HAL_GetTick() имеет тип uint32_t, то после деления на 1000 максимальное значение миллис у нас получается порядка 4.2 млн мс - то есть всего чуть более 1 часа. Это не соотвествует традициям Ардуино :) и вообще очень мало. То же самое относится к delay() - ведь оно считается от того же источника. Нет каких-нибудь других вариантов? Занимать под миллис целый таймер неохота. |
Beta Was this translation helpful? Give feedback.
-
Привет! Немного поковырялся с прерываниями GPIO. Ничего изменять в инициализации пинов не надо. Система допускает реинициализацию пина по усмотрению программиста. Этот код работает нормально, осталось только пользовательскую процедуру вкрутить вместо HAL_GPIO_EXTI_Callback() void HAL_GPIO_EXTI_Callback(GPIO_TypeDef *GPIOx, uint32_t GPIO_Pin) { void attachInterrupt(uint16_t pin, uint16_t mode) { // не хватает 3 параметра - указателя на обработчик прерывания void setup() { void loop() { |
Beta Was this translation helpful? Give feedback.
-
Анатолий, тут откликнулся тот любитель W806, про которого я вам писал ранее
Просит показать наш пакет. Покажем? Мне что-то страшно Ж) |
Beta Was this translation helpful? Give feedback.
-
Анатолий, я тут взял пример из ХАЛ по работе с i2c и переделал в i2c сканер. Но что-то не пошло. |
Beta Was this translation helpful? Give feedback.
-
Вот готовые папки для BasicExamples Проверено в среде Arduino IDE |
Beta Was this translation helpful? Give feedback.
-
Анатолий, немного оклемался.... |
Beta Was this translation helpful? Give feedback.
-
Анатолий, влил в пакет ваш архив hardware.zip. Пока у себя на компе, чтобы посмотреть изменения.
меня ставят в тупик. Я пока не готов сказать определенно, как это надо делать, но по-моему не так. Тут придется разбираться. |
Beta Was this translation helpful? Give feedback.
-
Привет! Запилил класс HardwareSPI, проверил на примере. Работает Если с погодой будет плохо, может успею еще библиотеку e_TFT портировать |
Beta Was this translation helpful? Give feedback.
-
Анатолий, к сожалению Ваши правки, направленные на совместимость кода и с ардуино и с СДК - банально не компилируются в среде ардуино. Ошибки именно такие, как я ожидал - а именно дублирование обьявления функций и переменных. И если с функциями можно найти выход - оставить в хидере только заголовки, а сами функции убрать - то с массивами для таймеров
проблема все равно остается. В СДК у вас это не дает ошибок именно потому, что вы обернули этот код в
Судя по всему, в СДК у вас идет сборка как Си проект, а не С++, поэтому эта секция просто игнорируется и двойного обьявления не возникает. Но это только предположение. Так что наверно я должен буду вернуть обратно прежний код. Я попробую разобраться, почему он не работает в СДК, но это задача не первой очереди. Однако это очень полезный опыт - я вижу что и прежний класс HardwareTimer был написан неправильно. Надо абсолютно все методы убрать из .h файла в .cpp, оставив в хидере одни заголовки, иначе это создаст проблемы в будущем. |
Beta Was this translation helpful? Give feedback.
-
Продолжение во второй части |
Beta Was this translation helpful? Give feedback.
-
Я успешно подменил HAL в сборке от https://github.com/nulllaborg/nulllab_w80x_arduino. Правда пришлось откатится в самое начало и соответственно потерялась поддержка для Linux, а так же GPIO/ADC/PWM в стиле Arduino. Проверял компиляцию и загрузку прошивки под W7. Базовый пример с моргающими светодиодами на плате W806-KIT работает.
По моим наблюдениям чипы W801 и W806 совместимы отчасти. Если посмотреть в даташитах таблицу мультиплексирования пинов можно заметить некоторую разницу. Это не считая радиочастотного модуля и сетевых фишок. Кроме того SDK для этих чипов существенно различаются. Т.е под W801 нужно пилить свою отдельную платформу со своим SDK или через Variant это прописывать.
Если владелец этого форка меня поддержит, предлагаю принять за точку отсчета пакет который я подготовил.
Дальнейший план работы вижу в такой последовательности:
После этого можно будет прикручивать Wiring.
Пакет в облаке https://cloud.mail.ru/public/xoBL/SGeMgpRBK
In English
I have successfully changed the HAL in the assembly from https://github.com/nulllaborg/nulllab_w80x_arduino . True, I had to roll back to the very beginning and, accordingly, support for Linux was lost, as well as GPIO / ADC / PWM in the Arduino style. I checked the compilation and loading of the firmware under W7. The basic example with blinking LEDs on the W806-KIT board works.
According to my observations, the W801 and W806 chips are partly compatible. If you look at the pin multiplexing table in the datasheets, you can notice some difference. This does not include the RF module and network "whistles". In addition, the SDKs for these chips differ significantly. That is, under W801, you need to cut your own separate platform with your SDK or prescribe it through Variant.
If the owner of this fork supports me, I propose to take the package that I prepared as a starting point.
The next plan of work I see in the following sequence:
Adaptation of this package for Linux
Checking all Demo examples in the new HAL version and HAL style
Since the package works well in Arduino IDE version 2.0.3, add debug mode via CKlink-Lite.
Don't forget about RTOS support in this build.
After that it will be possible to do Wiring.
Package in the cloud https://cloud.mail.ru/public/xoBL/SGeMgpRBK
Beta Was this translation helpful? Give feedback.
All reactions