Страница 1 из 2

В списке устройств KEIL нет нужного ядра/чипа

Добавлено: Вс фев 09, 2020 09:50:37
MementoMori
Вопрос возник из одной темы, обсуждаемой в разделе АРМ, но я все же считаю нужным обсудить его отдельно.

Делаю алгоритм для программирования внешней QUAD SPI флеш средствами KEIL. Контроллер STM32F746

В папке Keil\arm\Flash взял шаблон. При работе шаблона возникли проблемы (включение тактирования qspi вешает программу). В ходе ковыряний я заподозрил, что дело в неправильном выборе целевого устройства в настройках.

Залез в настройки

Изображение

Ни ядра M7, ни контроллеров серии M7 нет.   Хотя у меня все библиотеки установлены, открываю другие проекты
Изображение




Там все есть.



Когда я открываю шаблон в папке C:\Keil_v5\ARM\Flash\Template, то он пишет

Изображение

Жму Install, скачиваю файл, устанавливаю - бестолку.



Что я делаю не так?

Re: В списке устройств KEIL нет нужного ядра/чипа

Добавлено: Вс фев 09, 2020 11:42:02
240265
Зайди в Pack Installer и установи нужные DFP.

Re: В списке устройств KEIL нет нужного ядра/чипа

Добавлено: Вс фев 09, 2020 12:04:38
VladislavS
Версия Keil какая?

И чего тебе в одной теме не сидится? Через час ещё на одной вкладке не будешь знать что прставить, ещё тему создашь?

Re: В списке устройств KEIL нет нужного ядра/чипа

Добавлено: Вс фев 09, 2020 12:17:47
MementoMori
[uquote="240265",url="/forum/viewtopic.php?p=3787794#p3787794"]Зайди в Pack Installer и установи нужные DFP.[/uquote]

Первый пост не читаем?
Хотя у меня все библиотеки установлены, открываю другие проекты
И скрин ниже. Не? Не видели? Открываю обычный проект - все на месте. Открываю другой - заканчивается на М4

Добавлено after 7 minutes 19 seconds:
[uquote="VladislavS",url="/forum/viewtopic.php?p=3787816#p3787816"]Версия Keil какая?

И чего тебе в одной теме не сидится? Через час ещё на одной вкладке не будешь знать что прставить, ещё тему создашь?[/uquote]

Да нет. Мне на электрониксе уже сказали, что Legacy (на основе которого создан шаблон из Keil) действительно только для F4. То есть на имеющемся в Keil шаблоне для алгоритма проект под F7 не сделать.
Вы же утверждали, что делали алгоритм за 15 минут и 15 минут отлаживали. Врали наверное? Попросил Вас дать образец - отсылаете к примерам. Попросил скачать мой проект, глянуть ОДНУ строчку кода - молчание. Нет, я конечно понимаю, что вы не обязаны тратить на меня свое время. Но вы потратили значительно большее его количество на написание всего того, что вы уже написали.

Вот какими еще словами, на каком языке мне объяснить мою проблему?
Хочу алгоритм. Читаю мануал, копирую шаблон - он запускается, все ОК. Дальше хочу по мануалу https://arm-software.github.io/CMSIS_5/ ... rithm.html прописать в нем функции. А написать эти функции я тоже хочу по мануалу - аппликуха была соответствующая.
Включаю тактирование QSPI - проект виснет.


Да.... версия keil 5.23

Re: В списке устройств KEIL нет нужного ядра/чипа

Добавлено: Вс фев 09, 2020 12:28:09
SII
На первом скрине выбран vendor ARM, на втором -- STM. Поэтому в первом случае она показывает, что у неё есть чисто АРМовское, а во втором -- что имеется из числа производимых конкретно STM.

Re: В списке устройств KEIL нет нужного ядра/чипа

Добавлено: Вс фев 09, 2020 12:36:04
MementoMori
[uquote="SII",url="/forum/viewtopic.php?p=3787832#p3787832"]На первом скрине выбран vendor ARM, на втором -- STM. Поэтому в первом случае она показывает, что у неё есть чисто АРМовское, а во втором -- что имеется из числа производимых конкретно STM.[/uquote]

Разница между этими скринами в том, что один - это настройки шаблона алгоритма из папки KEIL, а во втором настройки обычного проекта. А не в том, что я выбрал.
Я могу переделать первый скрин и выбрать в нем Vendor STM - вы увидите там контроллеры максимум до 4 серии.
Второй скрин - для того, чтобы мне никто не говорил, что у меня что-то там не установлено и не предлагал скачать и установить. Но люди все равно предлагают скачать и установить. Я следую этому совету - ничего не меняется

Re: В списке устройств KEIL нет нужного ядра/чипа

Добавлено: Вс фев 09, 2020 12:39:09
VladislavS
[uquote="MementoMori",url="/forum/viewtopic.php?p=3787822#p3787822"]Врали наверное?[/uquote]Хамишь, парниша?
Изображение
ham.png
(243.01 КБ) 1562 скачивания

Re: В списке устройств KEIL нет нужного ядра/чипа

Добавлено: Вс фев 09, 2020 12:47:06
MementoMori
хамишь парниша
Честно, даже и не думал. Сарказм небольшой, извините.

Добавлено after 5 minutes 51 second:
Интересный скрин - это проект из папки KEIL? Или мой скачанный? Ответьте, не игнорируйте этот вопрос.
На скрине я вижу ниспадающий список, неактивный, в нем "Software pack"
В моем кейловском шаблоне - "device database' и поменять на software pack нельзя.
В других проектах, где у меня в этом поле значится software pack, я могу выбрать F7.

А посему спрашиваю конкретно, по-русски и предельно ясно - вы открыли мой проект (вы писали, что скачивали его) или же из папки keil? Если мой и у вас в поле стоит "software pack", значит дело не в настройках конкретного проекта, а в самом keil. Если же вы открывали проект из своей папки Keil, то две просьбы : 1. Скинуть этот проект сюда. 2. Посмотреть, что будет в этом поле, если открыть мой проект - "software pack" или "device database"
Если вы это любезно сделаете, то я пойму хотя бы в чем у меня проблема - в кейл или в проект-шаблоне.

Re: В списке устройств KEIL нет нужного ядра/чипа

Добавлено: Вс фев 09, 2020 13:43:03
VladislavS
На скриншоте проект из папки Keil. Вот он. Даже не открытый ни разу, только закинул в него файл FlashOS.h чтобы он неприкаянный не болтался.

Keil и все паки обновить бы до крайних версий, так будет правильней.
000.zip
(16.07 КБ) 224 скачивания

Re: В списке устройств KEIL нет нужного ядра/чипа

Добавлено: Вс фев 09, 2020 14:29:22
MementoMori
Докладываю.
Скачал ваш проект. В списке появились контроллеры F7 и ядро M7. Проблема решена.
Этот пустой проект при записи кейлом во внешнюю флеш не выводит ошибок, перебирает адреса, думая что все ОК, так как функция стирания сектора возвращает 0.

Ура! Идем дальше! Читаем мануал:

Изображение

Делаем так же

Код: Выделить всё

int Init (unsigned long adr, unsigned long clk, unsigned long fnc) {

	
	/* Enable the QSPI interface clock */
RCC->AHB3ENR |= 0x00000002;
/* Reset QSPI peripheral */
RCC->AHB3RSTR |= (RCC_AHB3RSTR_QSPIRST); /* Reset */
RCC->AHB3RSTR &= ~(RCC_AHB3RSTR_QSPIRST); /* Release reset */
/* Enable Quad-SPI peripheral */
QUADSPI->CR = 0x00000001;
  /* Add your Code */
  return (0);                                  // Finished without Errors
}
Компилируем, запускаем основной проект, пытаемся прошивать - процесс останавливается на адресе 0x90000000 и выдает ошибку

Изображение

Добавлено after 1 minute 43 seconds:
Забыл сказать - вычисляя, на каком же этапе происходит затык, я пришел к тому, что уже на этапе включения тактирования

Код: Выделить всё

int Init (unsigned long adr, unsigned long clk, unsigned long fnc) {

	
	/* Enable the QSPI interface clock */
RCC->AHB3ENR |= 0x00000002;
  /* Add your Code */
  return (0);                                  // Finished without Errors
}

Этого достаточно, чтобы фунция EraseSector перестала вызываться.

Добавлено after 4 minutes 44 seconds:
Вот проект, тот что Вы мне выслали, с подключенными библиотекам для F7.
https://cloud.mail.ru/public/2zaK/2JA9N5d9L

Re: В списке устройств KEIL нет нужного ядра/чипа

Добавлено: Вс фев 09, 2020 15:12:15
VladislavS
Опять какую-то гадость в проект тянешь. Вполне достаточно заинклудить файл stm32f746xx.h. Зачем в проект system_stm32f7xx.c попал?

Re: В списке устройств KEIL нет нужного ядра/чипа

Добавлено: Вс фев 09, 2020 15:25:57
MementoMori
Убрал гадость.
Не помогло.

Во FlashDev нет ошибок?

Код: Выделить всё

struct FlashDevice const FlashDevice  =  {
    FLASH_DRV_VERS,             // Driver Version, do not modify!
   "W25Q128",   // Device Name 
   EXTSPI,                     // Device Type
   0x90000000,                 // Device Start Address
   0x001000000,                 // Device Size in Bytes (16MB)
   256,                       // 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
   0x00001000, 0x0000000, 
	 
   SECTOR_END
};
В ней все понятно, единственное что с последней строкой, где размер и адрес сектора - не совсем ясно и однозначно. У меня размер стираемого сектора 4кб (0x1000).

Re: В списке устройств KEIL нет нужного ядра/чипа

Добавлено: Вс фев 09, 2020 15:44:49
VladislavS
Интересно, а что будет, если IDE попробует что-то считать из неинициализированного QSPI? Попробуй пустышку для функции BlanckCheck добавить, чтобы он напрямую в память не лез.

Re: В списке устройств KEIL нет нужного ядра/чипа

Добавлено: Вс фев 09, 2020 15:59:04
MementoMori
[uquote="VladislavS",url="/forum/viewtopic.php?p=3787957#p3787957"]Интересно, а что будет, если IDE попробует что-то считать из неинициализированного QSPI? Попробуй пустышку для функции BlanckCheck добавить, чтобы он напрямую в память не лез.[/uquote]

Надо же.... хоть какое-то разнообразие в работе кейла появилось...
Вставил я пустышку - процесс пошел. Стирание и программирование пошло "без ошибок" А вот на этапе проверки кейл задумался на 5 секунд, а после выдал, что таймаут памяти истек.
Это при включенном тактировании.
А при выключенном - "стирание и программирование" пустышками тоже без ошибок, а при проверке - куча сообщений

Код: Выделить всё

Contents mismatch at: 900000B9H  (Flash=00H  Required=07H) !
Too many errors to display !
Добавлено after 3 minutes 19 seconds:
Еще один момент...
Вот sct файл основного проекта, из которого я шью флеш, автоматом сгенерированный кубом и TouchGFX Designer'ом

Код: Выделить всё

; *************************************************************
; *** Scatter-Loading Description File generated by uVision ***
; *************************************************************

LR_IROM1 0x08000000 0x00100000  {    ; load region size_region
  ER_IROM1 0x08000000 0x00100000  {  ; load address = execution address
   *.o (RESET, +First)
   *(InRoot$$Sections)
   .ANY (+RO)
  }
  RW_IRAM1 0x20000000 0x00050000  {  ; RW data
   .ANY (+RW +ZI)
  }
}

 LR_EROM1 0x90000000 0x1000000  {    ; load region size_region
 ER_EROM1 0x90000000 0x1000000  {  ; load address = execution address
  *.o (ExtFlashSection)
   *.o (TextFlashSection)
   *.o (FontFlashSection)
  }
}

Вот как-то настораживает меня отсутствие extflash.bin, равно как и самого bin файла физически. Но при использовании этого файла на дискавери со стандартным скомпилированным FLM алгоритмом прокатывает.

Re: В списке устройств KEIL нет нужного ядра/чипа

Добавлено: Вс фев 09, 2020 16:05:39
VladislavS
[uquote="MementoMori",url="/forum/viewtopic.php?p=3787967#p3787967"]Вот как-то настораживает меня отсутствие extflash.bin, равно как и самого bin файла физически.[/uquote]В прошивке секции ExtFlashSection, TextFlashSection или FontFlashSection используются? Если да, то линкер в них будет данные помещать.

Добавлено after 2 minutes 3 seconds:
[uquote="MementoMori",url="/forum/viewtopic.php?p=3787967#p3787967"]А при выключенном - "стирание и программирование" пустышками тоже без ошибок, а при проверке - куча сообщений

Код: Выделить всё

Contents mismatch at: 900000B9H  (Flash=00H  Required=07H) !
Too many errors to display !
[/uquote]Ну значит моё предположение верное. Интересно, заглушку на Verify сам догадаешься поставить?

Re: В списке устройств KEIL нет нужного ядра/чипа

Добавлено: Вс фев 09, 2020 16:16:42
MementoMori
Ну значит моё предположение верное.
Какое? Нельзя поподробнее? Что дало использование BlankCheck?
Интересно, заглушку на Verify сам догадаешься поставить?
Что значит, заглушка? Пустышка - я понимаю что такое. А заглушка... У меня, кстати, функции Verify и нет в проекте (она лишь описана в FlashOS).
В прошивке секции ExtFlashSection, TextFlashSection или FontFlashSection используются? Если да, то линкер в них будет данные помещать.
Используются. По крайней мере в одной из папок куча *.O файлов с названиями картинок, которые надлежит поместить во флеш.

Добавлено after 3 minutes 41 second:
И вот еще... гляньте в основной проект. Все ли в его настройках достаточно правильно, чтобы работать с алгоритмом и прошивкой?
https://cloud.mail.ru/public/298i/2RV33ee2Z
А то может не там копаем....

Re: В списке устройств KEIL нет нужного ядра/чипа

Добавлено: Вс фев 09, 2020 17:19:28
VladislavS
[uquote="MementoMori",url="/forum/viewtopic.php?p=3787976#p3787976"]Какое? Нельзя поподробнее? Что дало использование BlankCheck?[/uquote]Я же и тут, и на электрониксе написал.

[uquote="MementoMori",url="/forum/viewtopic.php?p=3787976#p3787976"]У меня, кстати, функции Verify и нет в проекте (она лишь описана в FlashOS).[/uquote]Ну значит не догадался...

[uquote="MementoMori",url="/forum/viewtopic.php?p=3787976#p3787976"]И вот еще... гляньте в основной проект[/uquote]Честно? Влом. Да и не хочется ужастики на ночь глядя смотреть... :)

Re: В списке устройств KEIL нет нужного ядра/чипа

Добавлено: Вс фев 09, 2020 18:04:00
MementoMori
Электроникс не читал. Прочел сейчас. Вы про это?

Есть вероятность, что доступ к недоинициализированной памяти может HardFault делать. А IDE, перед стиранием может проверять что там записано. Или пустышку на функцию BlanckCheck добавь.
У меня тоже была мысль про недоинициализацию. Но неужели простое включение тактирования к этому может привести?

Насчет verify - объясните все таки вашу идею. Я о ней вообще не беспокоился, потому что она задействуется в конце. И ее наличие/отсутствие/проблемы на стирание сектора никак повлиять не могут.

Re: В списке устройств KEIL нет нужного ядра/чипа

Добавлено: Вс фев 09, 2020 18:22:33
VladislavS
[uquote="MementoMori",url="/forum/viewtopic.php?p=3787967#p3787967"]Вставил я пустышку - процесс пошел. Стирание и программирование пошло "без ошибок" А вот на этапе проверки кейл задумался на 5 секунд, а после выдал, что таймаут памяти истек.[/uquote]
[uquote="MementoMori",url="/forum/viewtopic.php?p=3788059#p3788059"]Насчет verify - объясните все таки вашу идею. Я о ней вообще не беспокоился, потому что она задействуется в конце. И ее наличие/отсутствие/проблемы на стирание сектора никак повлиять не могут.[/uquote]
А теперь складываем 2+2...

Re: В списке устройств KEIL нет нужного ядра/чипа

Добавлено: Вс фев 09, 2020 19:05:30
MementoMori
Не 2+2, а 2+х+2.
Х - это, к моему стыду, непонимание назначения blankCheck.
Добавив пустышку, мы доказали, что функция EraseSector все-таки вызывается, но при этом не возвращает ни нуля, ни единицы. А такое возможно только при улете в HardFault. Теперь 2+х+2 сложились.
И вот эта фраза

Либо начни с чего-нибудь попроще, либо напиши правильную инициализацию полностью. Есть вероятность, что доступ к недоинициализированной памяти может HardFault делать. А IDE, перед стиранием может проверять что там записано. Или пустышку на функцию BlanckCheck добавь
предельно ясна.

Тогда мне остается в основном проекте отладить альтернативные упрощенные функции работы с qspj. После того как отлажу, будет следующая попытка запустить алгоритм.

Спасибо за советы!