Jump to content

    
Sign in to follow this  
MementoMori

Проблема при старте отладки в Keil

Recommended Posts

Короче, все указывает на то, что после прошивки, при старте, при "loading object code" отладчик пытается обратиться по адресу 0х90000000, которого к этому моменту ещё не существует (qspi не инициализирована). 

Об этом свидетельствует тот факт, что если убрать галку  load application at startup, то ошибки не возникает. Не возникает её ещё и если вместо 0х90000000 указать другой, читабельный адрес. 

 

Скажите мне, как мне настроить scatter файл или настройки keil, чтобы во время "loading object code"  отладчик не пытался читать адрес, прописаный в секции LR_EROM, там ведь только данные. Можно же это как то отключить? 

Share this post


Link to post
Share on other sites

Вроде как была настройка "прошивальщика", где указывал ась область памяти и как с ней работать (IAP или ещё как). Вот там в этом списке надо поискать

Share this post


Link to post
Share on other sites
2 hours ago, toweroff said:

Вроде как была настройка "прошивальщика", где указывал ась область памяти и как с ней работать (IAP или ещё как)

Там есть галка

GrD34UfD.png?download=1&name=%D0%A1%D0%B

если ее убрать, то указанные вам настройки игнорируются, а информация берется из scatter файла, его содержимое в первом посте. БОлее того, это содержимое правильное.

 

А пока я выяснил кое что- видать дело не в настройках кейла.

Если я создаю голый проект в кубе, настраиваю всю периферию - проблемы нет.  Я даже добавляю в проект массив с данными для картинки - проблем нет, он шьется в QSPI, а потом, когда я убираю алгоритм прошивки QSPI из списка, этот код не мешает работе.

Стоит только добавить в проект TOuchGFX, пересоздать проект - проблема появляется.

Share this post


Link to post
Share on other sites
12.02.2021 в 13:32, MementoMori сказал:

Скажите мне, как мне настроить scatter файл или настройки keil, чтобы во время "loading object code"  отладчик не пытался читать адрес, прописаный в секции LR_EROM, там ведь только данные. Можно же это как то отключить? 

Не знаю как в Кейл, но в IAR-е для этого предназначен .mac-файл. В нём можно инициализировать периферию, которая уже должна функционировать ДО загрузки прошивки.

У меня так осуществляется загрузка отлаживаемой прошивки в SDRAM в некоторых проектах. Или для того же самого - инициализация SPIFI-интерфейса на LPC4370.

Думаю в Кейл должен быть аналог .mac-файла.

Share this post


Link to post
Share on other sites
10 minutes ago, jcxz said:

нём можно инициализировать периферию, которая уже должна функционировать ДО загрузки прошивки.

В F746 камне я ничего не инициализировал ДО. Но и обращения к этому ДО загрузки не было.

Как уже написал выше - мне удалось создать проект, причем не минимальный (голый), а вполне полноценный, в котором при указанном мной содержимом SCT файла данная ошибка не возникает. Проблемный код отличается от этого проекта наличием подключенной библиотеки TOuchGFX. Причем сама библиотека, ее код тут ни при чем - если в самом начале функции main() поставить тормоз (while(1)), Keil понимает, что дальше этого тормоза программа не пойдет (ниже по тексту не ставятся брейкпоинты), но тем не менее, loading object code все так же выдает ошибку..... То есть само наличие библиотеки touchgfx каким-то образом меняет поведение отлачдика.

Share this post


Link to post
Share on other sites

Пропустил, моя вина. Думал, что не указан алгоритм программирования QSPI

Тогда только на ум приходит проверить список DLL, используемых при отладке рабочего проекта и нерабочего

Share this post


Link to post
Share on other sites

Господа, есть у кого-нибудь плата на H743 камне? Я бы проект скинул, кому не трудно посмотреть...

6 minutes ago, toweroff said:

Тогда только на ум приходит проверить список DLL, используемых при отладке рабочего проекта и нерабочего

Проверяю. Только не DLL - а исходники. А они че-то так завязаны друг с другом, что только блоком...

Вот нерабочий проект

https://cloud.mail.ru/public/fyST/PYnhuPQkp

Отключить из проекта все папки TouchGFX - проблема исчезает. Откликнитесь, владельцы плат с H743....

Share this post


Link to post
Share on other sites

Запросил "touchgfx stlink problem" в гугле, вот что советуют

http://uc.org.ru/node/177

Я так понял:

Options->Debug->Settings(справа)->Flash Download->Add-> тут нужно выбрать алгоритм и диапазон адресов

image.thumb.png.f689a8a1bc83e35eb2a6b7c1d2165b5f.png

Share this post


Link to post
Share on other sites
4 minutes ago, EternalDoubter said:

Я так понял:

Options->Debug->Settings(справа)->Flash Download->Add-> тут нужно выбрать алгоритм и диапазон адресов

Каждый, к кому обращаюсь на этом форуме и не только, обязательно проходит эту стадию непонимания вопроса.

Мне не надо прошивать QSPI, она прошита. Я прошил и убрал алгоритм. Прошиальщик спокойно пропускает QSPI, прошивает флеш контроллера и пытается запустить плату.

Проблема в том, что в SCT файле секция с адресом 0x90000000 должна быть определена, иначе все 10 мегабайт линкер пытается запихнуть во внутреннюю флеш. Поэтому эту запись удалять нельзя.

Share this post


Link to post
Share on other sites

Вот оно что)))

 

Случайно увидел -  после генерации ошибки на очень короткое мгновение появляется окошко "command" в котором указано на ошибку. Затем это окошко исчезает, поймал только через скриншот.

SbBnjoO5.png?download=1&name=%D0%A1%D0%B

Я пересмотрел внимательно MAP файл -по адресу 0x90000000 и выше - только данные, никакого кода.

ОБратите внимание на окно дизассемблера - я не пойму ошибка обращения генерируется при отдаче первой же команды? Я не силен в ассемблере.

Share this post


Link to post
Share on other sites
20 минут назад, MementoMori сказал:

ОБратите внимание на окно дизассемблера - я не пойму ошибка обращения генерируется при отдаче первой же команды? Я не силен в ассемблере.

Какие "обращения"? У вас там только NOP-ы.

Share this post


Link to post
Share on other sites
9 minutes ago, jcxz said:

Какие "обращения"? У вас там только NOP-ы.

Я не силен в ассемблере.

Вообще, увидев такую картину - куда копать?

Я кстати, убрал галку "run to main" - та же петрушка.

Share this post


Link to post
Share on other sites
35 минут назад, MementoMori сказал:

Я пересмотрел внимательно MAP файл -по адресу 0x90000000 и выше - только данные, никакого кода.

А отладчик почему-то считает что там что-то есть :)

Есть еще еще командные файлы отладчика - ничего не подключено?

А может быть где-то лишний нолик в адресе написан. В коде или каком-то файле.

Поискать в исходном коде адрес 0x90000000 или соседние или еще какое обращение к прямым адресам.
 

Share this post


Link to post
Share on other sites
1 hour ago, HardEgor said:

Есть еще еще командные файлы отладчика - ничего не подключено?

вы об этом? Initialistion File?

rcxLChJS.png?download=1&name=%D0%A1%D0%B

Или может быть это

L7nMd5y0.png?download=1&name=%D0%A1%D0%B

 

Как видите, пусто.

1 hour ago, HardEgor said:

Поискать в исходном коде адрес 0x90000000

Проверил, нигде.

Но строка QSPI_BASE (0x90000000)  обнаруживается в куче объектных файлов 

 

MAP-файл - там тоже вроде все ровно, но все же выложу его, может кто опытным глазом глянет

H743.map

Share this post


Link to post
Share on other sites
49 минут назад, MementoMori сказал:

Но строка QSPI_BASE (0x90000000)  обнаруживается в куче объектных файлов 

stm32h743xx.h:

#define QSPI_BASE                 (0x90000000UL) /*!< Base address of : QSPI memories  accessible over AXI                                    */

 

H743.sct :

 LR_EROM1 0x90000000 0x2000000  {    ; load region size_region
 ER_EROM1 0x90000000 0x2000000  {  ; load address = execution address

 

 

 

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this