Кто любит RISC в жизни, заходим, не стесняемся.
Ответить

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

Вс фев 09, 2020 20:50:51

Х - это, к моему стыду, непонимание назначения blankCheck.
Добавив пустышку, мы доказали, что функция EraseSector все-таки вызывается, но при этом не возвращает ни нуля, ни единицы. А такое возможно только при улете в HardFault. Теперь 2+х+2 сложились.
Нет, конечно! Вот смотри, в файле 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

А когда ты добавляешь функции BlanckCheck и Verify, то IDE думает, что до флэшки без танцев с бубном не добраться и сама даже не пытается этого сделать, делает через твои функции.

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

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

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