• Уважаемые посетители сайта esp8266.ru!
    Мы отказались от размещения рекламы на страницах форума для большего комфорта пользователей.
    Вы можете оказать посильную поддержку администрации форума. Данные средства пойдут на оплату услуг облачных провайдеров для сайта esp8266.ru
  • Система автоматизации с открытым исходным кодом на базе esp8266/esp32 микроконтроллеров и приложения IoT Manager. Наша группа в Telegram

Модуль BW12

nikolz

Well-known member
А жигули в 10 раз и более дешевле нормального авто. Чуда не случилось.
Выбор авто зависит не только от цены, а ее соотношения с доходом ,
от стоимости содержания,
но главное - от цели приобретения.
------------------
Уберите желание выпендриваться перед окружающими и жить не по средствам,
оставьте лишь значимые цели,
и тогда жигули тоже станет нормальным.
-----------------
Если надо поднимать и опускать крышку унитаза,
а не пиариться на форумах,
то нахрена супер-пупер модули,
если и копеечное ESP -нормально решает эту задачу,
да еще и с халявным софтом.
 

pvvx

Активный участник сообщества
Уберите желание выпендриваться перед окружающими и жить не по средствам,
оставьте лишь значимые цели,
и тогда жигули тоже станет нормальным.
И питаться можно какими кормовыми плодами или ещё какой синтетикой и отходами. Жизнь же ваша и вы её сами тратите на уход за жигулями (ESP8266), а не используете по назначению.
 

pvvx

Активный участник сообщества
А как запускать по кнопке на BW-12 разные прошивки, так никто и не намекнул.
Обыкновенно - по if в стартовом коде. Какие там могут быть сложности? Это не ESP8266 и кэш изначально включена на всю область flash.
"Как запускать по кнопке на STM32 разные прошивки?"
 

nikolz

Well-known member
Вот уже про Оку начали писать :) (в прошлой жизни и у меня была Ока) А как запускать по кнопке на BW-12 разные прошивки, так никто и не намекнул.
Намекаю: Надо припаять кнопку и нажимать на нее по азбуке Морзе.
BW-12 читает ваше послание и запускает то, что пожелаете.
Вам остается лишь изучить азбуку Морзе и научить BW-12 понимать ее.
 

aloika

Active member
"Как запускать по кнопке на STM32 разные прошивки?"
Про STM32 информацию-то можно найти:
Код:
void GoToUserApp(void)
{
    u32 appJumpAddress;
    void (*GoToApp)(void);
    appJumpAddress = *((volatile u32*)(FLASH_DISK_START_ADDRESS + 4));
    GoToApp = (void (*)(void))appJumpAddress;
    SCB->VTOR = FLASH_DISK_START_ADDRESS;
    __set_MSP(*((volatile u32*) FLASH_DISK_START_ADDRESS)); //stack pointer (to RAM) for USER app in this address
    GoToApp();
}
В вашей SDK смотрю startup.c - не могу понять, как оно работает. (Может, я вообще не то смотрю?) Где адрес-то написан, с которого начинать выполнение?
 

pvvx

Активный участник сообщества
Про STM32 информацию-то можно найти:
И что это? А где развертка данных в сегменты RAM?

В вашей SDK смотрю startup.c - не могу понять, как оно работает. (Может, я вообще не то смотрю?) Где адрес-то написан, с которого начинать выполнение?
Если "смотрю startup.c ", то адреса в табличке:
Код:
IMAGE2_ENTRY_SECTION
RAM_START_FUNCTION gImage2EntryFun0 = {
    BOOT_Image2,
    SOCPS_WakeFromPG
    };
Стартовый и по пробуждению из всяких sleep...
 

aloika

Active member
И что это? А где развертка данных в сегменты RAM?
Я так понимаю, что это запуск программы с адреса FLASH_DISK_START_ADDRESS.

Вопросы остаются открытыми - как запустить программу с определенного адреса? Где этот адрес указывается в коде загрузчика? Как вообще узнать, что компилируется в загрузчик (какие исходные файлы)?
 

pvvx

Активный участник сообщества
Я так понимаю, что это запуск программы с адреса FLASH_DISK_START_ADDRESS.
Вас не понять. Нет такого FLASH_DISK_START_ADDRESS ни в sdk40b, ни в sdk40b_web.
Вопросы остаются открытыми - как запустить программу с определенного адреса? Где этот адрес указывается в коде загрузчика? Как вообще узнать, что компилируется в загрузчик (какие исходные файлы)?
Похоже, что так. Тут никто не в силах объяснить вам как происходит старт в обычных MCU - это надо писать целую книгу, хотя разновидностей как они грузятся с flash или как выбирают загрузчик не так и много.
Бывает что стартует какая-то ROM процедура (если в чипе она есть) и считывает адреса перехода из flash или сама flash подставляется в определенные адреса CPU по его старту в зависимости от установок pin-ов...
Т.к. используется СИ или C++, то задаются соответствия физических виртуальным адреса в блоки управления, включается всякое кэширование, из заданной области flash копируются данные сегментов СИ/С++ в RAM, очищается стек и прочие сегменты, обычно в startup.s ... и только потом запускается типа main()...
В процессорах с вариантами sleep, если память сохраняется используют ускоренную загрузку - по старту скипают распаковку некоторых сегментов данных в RAM и сразу стартуют не в main(), а в специальную процедуру "восстановления после сна"...
И т.д. - читайте литературу по данному поводу. Такие дела не изучают по форумным сообщениям.
 

pvvx

Активный участник сообщества
aloika пока вы всё это дело самостоятельно не изучите - говорить с вами бесполезно, можно только сделать всё за вас. Но это нехорошо ни вам ни другим.
 

nikolz

Well-known member
Вас не понять. Нет такого FLASH_DISK_START_ADDRESS ни в sdk40b, ни в sdk40b_web.
Похоже, что так. Тут никто не в силах объяснить вам как происходит старт в обычных MCU - это надо писать целую книгу, хотя разновидностей как они грузятся с flash или как выбирают загрузчик не так и много.
Бывает что стартует какая-то ROM процедура (если в чипе она есть) и считывает адреса перехода из flash или сама flash подставляется в определенные адреса CPU по его старту в зависимости от установок pin-ов...
Т.к. используется СИ или C++, то задаются соответствия физических виртуальным адреса в блоки управления, включается всякое кэширование, из заданной области flash копируются данные сегментов СИ/С++ в RAM, очищается стек и прочие сегменты, обычно в startup.s ... и только потом запускается типа main()...
В процессорах с вариантами sleep, если память сохраняется используют ускоренную загрузку - по старту скипают распаковку некоторых сегментов данных в RAM и сразу стартуют не в main(), а в специальную процедуру "восстановления после сна"...
И т.д. - читайте литературу по данному поводу. Такие дела не изучают по форумным сообщениям.
Для начала можно читать учебники, а не заниматься ползучим эмпиризмом.
 

Simon

Member
Почему не хотите сразу перейти к BW-16 - AmebaD ?
Я бы вот с радостью, но ног мало вывели! РТЛ крут многочисленной переферией, которую можно использовать одновременно. В одном проекте у меня например одновременно 3 uart, spi, и второй spi в качестве генератора импульсов, это не считая пинов для выбора загрузки и всяких моргалок. Почему не сделали хотя бы аналогично rtl00, не понятно. Лень стало с платой возиться, видимо. Жду не появятся ли другие модули, но из дешевых врятли.
SDK и Arduino рабочие
Кстати в сдк 7.1 вроде как предусмотрена возможность сборки для Ameba0(и вообще для всех амеба). Никто не пробовал?
 

pvvx

Активный участник сообщества
Я бы вот с радостью, но ног мало вывели! РТЛ крут многочисленной переферией, которую можно использовать одновременно. В одном проекте у меня например одновременно 3 uart, spi, и второй spi в качестве генератора импульсов, это не считая пинов для выбора загрузки и всяких моргалок. Почему не сделали хотя бы аналогично rtl00, не понятно. Лень стало с платой возиться, видимо. Жду не появятся ли другие модули, но из дешевых врятли.
Потому, что чипы RTL872xDx в разных корпусах. Есть много ног, есть мало...
Реле или лампочку включать одной ноги хватит.
https://aliexpress.ru/item/1005001884746947.html
+
https://developer.tuya.com/en/docs/...module/wr-series-module/wr3e-module-datasheet
+
 

Simon

Member
Да полно там еще портов в самом маленьком. UART0 легко могли бы вытащить. Ртл00 же по геометрическому расположению выводов повторяет есп12. Странно, что перестали так делать. Кроме как ленью непонятно, чем это объяснить.

1613722909254.png
 
Сверху Снизу