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

Нужна помощь Telink Single Wire

pvvx

Активный участник сообщества
BDT для работы с Flash загружает всякие файлы "dut" c кодом из директория: TelinkIoTStudio\tools\libusbBDT\bin\bin
или BDT\config\bin
в зависимости что вы установили IDE или просто BDT...
 

pvvx

Активный участник сообщества
Для TLSR825x адреса регистров и прочее описаны в SDK\components\drivers\8258
C:
/*******************************      mspi registers: 0x0c      ******************************/

#define reg_mspi_data        REG_ADDR8(0x0c)
#define reg_mspi_ctrl        REG_ADDR8(0x0d)

enum{
    FLD_MSPI_CS     =         BIT(0),
    FLD_MSPI_SDO     =         BIT(1),
    FLD_MSPI_CONT     =         BIT(2),
    FLD_MSPI_RD     =         BIT(3),
    FLD_MSPI_BUSY     =         BIT(4),
};
Аналогично и для других типов чипов.
Ищите старые версии SDK или для разного применения и там находите исходные коды работы с Flash и т.д.
В некоторых вариантах SDK это всё включено в блоб либы, а в некоторых даны исходники.

К примеру для platform\chip_b91

Код:
/**
 * @brief         This function serves to flash release protection.
 * @param[in]   type    - flash type include Puya.
 * @return         none.
 */
_attribute_ram_code_sec_noinline_ void flash_unlock_ram(flash_type_e type)
{
    unsigned int r=plic_enter_critical_sec(s_flash_preempt_config.preempt_en,s_flash_preempt_config.threshold);

    mspi_stop_xip();
    flash_send_cmd(FLASH_WRITE_ENABLE_CMD);
    flash_send_cmd(FLASH_WRITE_STATUS_CMD);
    if(type == FLASH_TYPE_PUYA)
    {
        mspi_write(0);
        mspi_wait();
        mspi_write(0);//16bit status
    }
    mspi_wait();
    mspi_high();
    flash_wait_done();
    mspi_high();
    CLOCK_DLY_5_CYC;

    plic_exit_critical_sec(s_flash_preempt_config.preempt_en,r);
}
 

pvvx

Активный участник сообщества
И сдался вам этот Flash Unlock?
Это всего включение защиты от записи в Flash, путем записи в её регистр статуса младших битов равных "1", указывающих на какие части будет отключена запись. Описано в документации к Flash.
Используется только разгильдяями, у которых код с ошибками и может случайно произвести запись не туда и снести программу...
Для чего-то другого это неприменимо.
И судя по скорости вашего изучения и разбора, что-там и как, чего-то готового и рабочего с SWS можно ожидать только через десяток лет. Видимо мал опыт работы с MCU.
 

pvvx

Активный участник сообщества
При старте SWS программатора питание Flash может быть вообще отключено, так как подключение произошло после её отключения для режима sleep.
Или, если CPU работает, и вы его не остановили по SWS, то он одновременно с вашим кодом может работать с SPI для Flash и вы получите бардак. Так-же получите бардак, т.к. не отключили XIP и собьете работу CPU…
Или CPU установил другие режимы котроллера SPI Flash…
Т.е. требуется выполнить и отработать множество условий, чтобы получить простейший программатор по SWS.
Работа по SWS не отличается от JTAG – меняется только физический интерфейс связи с чипом.
И если, к примеру, не работали с JTAG (сами не писали код для него) и не в курсе как работает разнообразные контроллеры в чипах – тогда изучение это всего может занять годы...
А на каждый ваш вопрос написать ответ дольше, чем написать уже рабочий код. Слишком много неизвестного что вам известно и ещё нужно уточнять терминологию.
По этому изучайте сами, а на простейшие вопросы типа начинающего ответов более писать не вижу смысла - это пустая трата времени у всех, т.е. всё есть в документациях к чипам и т.д..
 

RedOrm

New member
При старте SWS программатора питание Flash может быть вообще отключено, так как подключение произошло после её отключения для режима sleep.
Или, если CPU работает, и вы его не остановили по SWS, то он одновременно с вашим кодом может работать с SPI для Flash и вы получите бардак. Так-же получите бардак, т.к. не отключили XIP и собьете работу CPU…
Или CPU установил другие режимы котроллера SPI Flash…
В какой документации почитать про это?
 

pvvx

Активный участник сообщества
Telink не STM. Вот это всё, что есть в документации к чипу по Swire:


Поэтому и вопросы.
Все биты и адреса управления SWire опиcаны.
Диаграмму физического интерфейса вам дали.
Что ещё вам нужно?
И где в STM описание SWD/JTAG?
 

pvvx

Активный участник сообщества
В какой документации почитать про это?
Как работать с Flash даны исходные коды в SDK, с описанием всех битов регистров, адресов и алгоритмов.
Применяемые типы SPI-Flash перечислены в исходных кодах в SDK.
На сам кристалл SPI-Flash документация находится в открытом доступе у их производителей.
 
Сверху Снизу