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

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

Добавлено: Вс фев 09, 2020 20:50:51
VladislavS
[uquote="MementoMori",url="/forum/viewtopic.php?p=3788107#p3788107"]Х - это, к моему стыду, непонимание назначения blankCheck.
Добавив пустышку, мы доказали, что функция EraseSector все-таки вызывается, но при этом не возвращает ни нуля, ни единицы. А такое возможно только при улете в HardFault. Теперь 2+х+2 сложились.[/uquote]Нет, конечно! Вот смотри, в файле FlashPrg.c есть вот такое описание функций
- BlanckCheck is necessary if Flash space is not mapped into CPU memory space
- Verify is necessary if Flash space is not mapped into CPU memory space
Что из этого мы можем выжать? А то что в случае когда IDE может добраться до чтения флэшки без специальных подпрограмм, а в случае с QSPI он это может сделать, то она перед стиранием/записью читает память. То есть, помимо процедур стирания/записи, которые ты пишешь, IDE ещё и сама во флэшь лазит и "обламывается" в этот момент, так как ты её не инициализировал. А когда ты добавляешь функции BlanckCheck и Verify, то IDE думает, что до флэшки без танцев с бубном не добраться и сама даже не пытается этого сделать, делает через твои функции.

Мораль сей басни такова. Не надо выпендриваться, а запустить проект Test, отладить в нём все функции и просто использовать их во флэшлоадере - всё будет работать.

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

Добавлено: Вс фев 09, 2020 21:06:21
MementoMori
А когда ты добавляешь функции BlanckCheck и Verify, то IDE думает, что до флэшки без танцев с бубном не добраться и сама даже не пытается этого сделать, делает через твои функции.
Вот оно че, Михалыч....
Что я сейчас сделал:
1. Инициализировал QSPI, включил злосчастное тактирование.
2. Прописал BlankCheck
3. Добавил в EraseSector функцию включения ножки.
4. Сделал так, чтобы BlankCheck возвращал не 0, а 1, то есть даю понять IDE, что в ячейке мусор и ее нужно стереть.

В итоге, у меня тактирование включено, но функция EraseSector вызывается, а Keil успешно программирует флешку. И лишь на этапе проверки затык. Но не HardFault и таймаут, а честное сообщение, что с первым сектором беда.

Получилось! Сдвинул я таки этот камень с мертвой точки.