Перейти к содержанию
    

Или вот...

https://drive.google.com/file/d/1fS4yxfyPWTnLyneSjSkqFREj64l5_BtX/view?usp=sharing

камень 7 серии, библиотека HAL (проще будет перенести код инициализаии контроллера), генерирует FLM. Копирую в папку keil - и могу добавлять в качестве алгоритма. Это оно? Его допиливать?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

48 minutes ago, MementoMori said:

Его допиливать?

Все ссылки с описание шагов прозвучали в этой теме. Повторяться смысла нет.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

1 hour ago, Forger said:

Все ссылки с описание шагов прозвучали в этой теме. Повторяться смысла нет.

Осталось включить мозг. Хотя бы на 8MHz.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Разбираюсь. Делаю строго по инструкции.

Объясните мне вот этот момент. Файл 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

Я не понимаю, как, исходя из даташита, заполнить этот блок.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Нет.. рановато еще браться за алгоритм... тут какая-то фундаментальная проблема.

Смотрите, я сделал проект в кубе, 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();
            }

Что не так?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Господа, а как этот проект, генерирующий 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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

19 minutes ago, MementoMori said:

Господа, а как этот проект, генерирующий FLM отлаживать?

Отдельно отладить функции для работы с нужной микросхемой в другом проекте. Сюда вставлять уже отлаженные функции.

Это очевидно и логично!

 

23 minutes ago, MementoMori said:

Гляньте, что я делаю не так?

Номер карты для оплаты работы сюда выкладывать или в личку? ;)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

8 minutes ago, Forger said:

Номер карты для оплаты работы сюда выкладывать или в личку? ;)

Конечно сюда !

Дату окончания и CVV

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

19 minutes ago, Forger said:

Отдельно отладить функции для работы с нужной микросхемой в другом проекте. Сюда вставлять уже отлаженные функции.

Это очевидно и логично!

Спасибо, капитан очевидность.

Видели фрагмент кода, зажигающий диодик? Он, можно сказать, не нуждается в отладке. Но не работает. Не работает не потому что кривой, а потому что попросту не вызывается в конкретном проекте. Что и породило вопрос об отладке самого проекта, а не фрагментов кода.

В связи с чем ваш совет и сопряженный с ним юмор не совсем в тему.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

 

Вот как бы действовал я, дабы не гадать на кофейной гуще как вы это делаете уже которые сутки ))

1) сделал бы минимально необходимый проект загрузчика, где запись шла бы не во внешнюю QSPI, а вообще никуда, формально. Функции записи чтения - пустые, но возвращают всегда, что все ОК.

короче, чтобы keil думал, что все работает как надо.  в принципе, можно кидать в терминал о ходе "прошивки", если для этого есть usart на край - моргать светодиодом

Шаблон есть тут: ...\Keil\ARM\Flash\_Template\

 

2) сделал бы другой проект, где отладить все функции стирания, записи, чтения, верификации с ЭТОЙ памятью на ЭТОМ железе

 

3) склеил бы два проекта по-этапно,

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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:

сделал бы другой проект, где отладить все функции стирания, записи, чтения, верификации с ЭТОЙ памятью на ЭТОМ железе

Сделано еще до вчерашнего вашего совета.  Как вы не понимаете, у меня код записи, чтения не не работает, а не вызывается, что толку его отлаживать  в другом железе? Я для чистоты эксперимента диодиком решил моргнуть - и этого не происходит.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Вчерашний вопрос снимается, нет нужды смотреть выложенный мной проект. Светодиод заморгал после того, как я отключил функцию настройки тактирования от hse

Не понятно, чем она могла помешать...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

 

9 hours ago, Forger said:

3) склеил бы два проекта по-этапно,

Слово "по-этапно" выделено жирным не просто так! Это означает, что метод "копи-паст" тут только навредит, что собственно и вышло

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...