MementoMori 4 31 января, 2020 Опубликовано 31 января, 2020 · Жалоба Или вот... https://drive.google.com/file/d/1fS4yxfyPWTnLyneSjSkqFREj64l5_BtX/view?usp=sharing камень 7 серии, библиотека HAL (проще будет перенести код инициализаии контроллера), генерирует FLM. Копирую в папку keil - и могу добавлять в качестве алгоритма. Это оно? Его допиливать? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Forger 26 31 января, 2020 Опубликовано 31 января, 2020 · Жалоба 48 minutes ago, MementoMori said: Его допиливать? Все ссылки с описание шагов прозвучали в этой теме. Повторяться смысла нет. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
x893 60 31 января, 2020 Опубликовано 31 января, 2020 · Жалоба 1 hour ago, Forger said: Все ссылки с описание шагов прозвучали в этой теме. Повторяться смысла нет. Осталось включить мозг. Хотя бы на 8MHz. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
MementoMori 4 31 января, 2020 Опубликовано 31 января, 2020 · Жалоба Ну зачмырили) пошел включать мозг) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
MementoMori 4 31 января, 2020 Опубликовано 31 января, 2020 · Жалоба Разбираюсь. Делаю строго по инструкции. Объясните мне вот этот момент. Файл FlashDev.c. struct FlashDevice const FlashDevice = { FLASH_DRV_VERS, // Driver Version, do not modify! "W25Q128", // Device Name EXTSPI, // Device Type 0x90000000, // Device Start Address 0x01000000, // Device Size in Bytes (16MB) 0x100, // Programming Page Size 0, // Reserved, must be 0 0xFF, // Initial Content of Erased Memory 100, // Program Page Timeout 100 mSec 3000, // Erase Sector Timeout 3000 mSec // Specify Size and Address of Sectors 0x002000, 0x000000, // Sector Size 8kB (8 Sectors) 0x010000, 0x010000, // Sector Size 64kB (2 Sectors) 0x002000, 0x030000, // Sector Size 8kB (8 Sectors) SECTOR_END }; Как понять, что устанавливать в качестве размеров и адресов секторов. Почему в шаблоне их три? Это перечисляются варианты или как? Почему параметры первого и третьего секторов , указанные в комментарии, одинаковы, а подставленные данные различны. В даташите сказано Flexible Architecture with 4KB sectors – Uniform Sector/Block Erase (4K/32K/64K-Byte Pages can be erased in groups of 16 (4KB sector erase), groups of 128 (32KB block erase), groups of 256 (64KB block erase) or the entire chip (chip erase). The Я не понимаю, как, исходя из даташита, заполнить этот блок. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
MementoMori 4 1 февраля, 2020 Опубликовано 1 февраля, 2020 · Жалоба Нет.. рановато еще браться за алгоритм... тут какая-то фундаментальная проблема. Смотрите, я сделал проект в кубе, TouchGFX. Вроде работает, фоновая картинка грузится, кнопочки нажимаются. Картинки размещены в ExtFlashSection. Однако я обратил внимание, что при записи прошивки она идет только по адресам 0x8xxx, по адресу 0х9хххх ничего не пишется. Особенно я посмеялся, когда закомментировал строку MX_QUADSPI_Init();, но программа не потеряла работоспособность. Залез я в проект. В SCT файле, сгенерированном системой, вот что LR_IROM1 0x08000000 0x00200000 { ; load region size_region intflash.bin 0x08000000 0x00200000 { ; load address = execution address *.o (RESET, +First) *(InRoot$$Sections) .ANY (+RO) } RW_IRAM1 0x20000000 0x00030000 { ; RW data .ANY (+RW +ZI) } } Я добавил необходимое для работы с QSPI LR_EROM1 0x90000000 0x01000000 { ; load region size_region extflash.bin 0x90000000 0x01000000 { ; load address = execution address *.o (ExtFlashSection) } } Добавил в настройках отладчика алгоритм STM32F746G-DISCO_N25Q128A. Ура! в процессе прошивки в левом нижнем углу стали отображаться адреса 0х9хххххх Но при запуске картинки не выводятся. Программа виснет в функции static portTASK_FUNCTION( prvIdleTask, pvParameters ) на строках if( listCURRENT_LIST_LENGTH( &( pxReadyTasksLists[ tskIDLE_PRIORITY ] ) ) > ( UBaseType_t ) 1 ) { taskYIELD(); } Что не так? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
MementoMori 4 2 февраля, 2020 Опубликовано 2 февраля, 2020 · Жалоба Господа, а как этот проект, генерирующий FLM отлаживать? У меня при прошивке с добавлением сформированного FLM в качестве алгоритма пишет что истек таймаут флеша. Я для начала решил попробовать хотя бы диодом поморгать, чтобы убедиться что у меня хоть что-то из моей программы вызывается int Init (unsigned long adr, unsigned long clk, unsigned long fnc) { SystemInit(); HAL_Init(); SystemClock_Config(); GPIO_InitTypeDef GPIO_InitStruct = {0}; __HAL_RCC_GPIOB_CLK_ENABLE(); /*Configure GPIO pin : LCD_PWM_Pin */ GPIO_InitStruct.Pin = GPIO_PIN_7; GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; GPIO_InitStruct.Pull = GPIO_NOPULL; GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; HAL_GPIO_Init(GPIOB, &GPIO_InitStruct); HAL_GPIO_WritePin(GPIOB, GPIO_PIN_7, GPIO_PIN_SET); /* Add your Code */ return (0); // Finished without Errors } В этом случае мне немедленно выдается сообщение о невозможности загрузки алгоритма. Диод естественно не загорается. Господа, в аттаче проект. Генерирует FLM. При добавлении этого FLM в качестве алгоритма, он пока даже не касается программирования флеша. Он должен хотя бы зажечь диод. Не делает и этого. Гляньте, что я делаю не так? W25Q128.rar Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Forger 26 2 февраля, 2020 Опубликовано 2 февраля, 2020 · Жалоба 19 minutes ago, MementoMori said: Господа, а как этот проект, генерирующий FLM отлаживать? Отдельно отладить функции для работы с нужной микросхемой в другом проекте. Сюда вставлять уже отлаженные функции. Это очевидно и логично! 23 minutes ago, MementoMori said: Гляньте, что я делаю не так? Номер карты для оплаты работы сюда выкладывать или в личку? ;) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
x893 60 2 февраля, 2020 Опубликовано 2 февраля, 2020 · Жалоба 8 minutes ago, Forger said: Номер карты для оплаты работы сюда выкладывать или в личку? ;) Конечно сюда ! Дату окончания и CVV Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
MementoMori 4 2 февраля, 2020 Опубликовано 2 февраля, 2020 · Жалоба 19 minutes ago, Forger said: Отдельно отладить функции для работы с нужной микросхемой в другом проекте. Сюда вставлять уже отлаженные функции. Это очевидно и логично! Спасибо, капитан очевидность. Видели фрагмент кода, зажигающий диодик? Он, можно сказать, не нуждается в отладке. Но не работает. Не работает не потому что кривой, а потому что попросту не вызывается в конкретном проекте. Что и породило вопрос об отладке самого проекта, а не фрагментов кода. В связи с чем ваш совет и сопряженный с ним юмор не совсем в тему. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Forger 26 2 февраля, 2020 Опубликовано 2 февраля, 2020 · Жалоба Вот как бы действовал я, дабы не гадать на кофейной гуще как вы это делаете уже которые сутки )) 1) сделал бы минимально необходимый проект загрузчика, где запись шла бы не во внешнюю QSPI, а вообще никуда, формально. Функции записи чтения - пустые, но возвращают всегда, что все ОК. короче, чтобы keil думал, что все работает как надо. в принципе, можно кидать в терминал о ходе "прошивки", если для этого есть usart на край - моргать светодиодом Шаблон есть тут: ...\Keil\ARM\Flash\_Template\ 2) сделал бы другой проект, где отладить все функции стирания, записи, чтения, верификации с ЭТОЙ памятью на ЭТОМ железе 3) склеил бы два проекта по-этапно, Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
x893 60 2 февраля, 2020 Опубликовано 2 февраля, 2020 · Жалоба Там же есть директория Test, где и проверить можно. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
MementoMori 4 3 февраля, 2020 Опубликовано 3 февраля, 2020 · Жалоба 6 hours ago, Forger said: Вот как бы действовал я 6 hours ago, Forger said: сделал бы минимально необходимый проект загрузчика, 6 hours ago, Forger said: Функции записи чтения - пустые, но возвращают всегда, что все ОК. 6 hours ago, Forger said: на край - моргать светодиодом До этого дошел уже вчера днем, сделал, не работает, выложил проект попросил кого-нибудь посмотреть, в чем дело. Но вы мой пост не читали. 6 hours ago, Forger said: сделал бы другой проект, где отладить все функции стирания, записи, чтения, верификации с ЭТОЙ памятью на ЭТОМ железе Сделано еще до вчерашнего вашего совета. Как вы не понимаете, у меня код записи, чтения не не работает, а не вызывается, что толку его отлаживать в другом железе? Я для чистоты эксперимента диодиком решил моргнуть - и этого не происходит. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
MementoMori 4 3 февраля, 2020 Опубликовано 3 февраля, 2020 · Жалоба Вчерашний вопрос снимается, нет нужды смотреть выложенный мной проект. Светодиод заморгал после того, как я отключил функцию настройки тактирования от hse Не понятно, чем она могла помешать... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Forger 26 3 февраля, 2020 Опубликовано 3 февраля, 2020 · Жалоба 9 hours ago, Forger said: 3) склеил бы два проекта по-этапно, Слово "по-этапно" выделено жирным не просто так! Это означает, что метод "копи-паст" тут только навредит, что собственно и вышло Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться