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

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

9 hours ago, HardEgor said:

H743.sct :

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

Ну допустим. Но эти строки во первых, необходимы, чтобы линковщик назначил картинки не во внутреннюю флеш контроллера, а в QSPI, иначе, если объем их велик, проект не соберется.

Во-вторых - для F746 камня это проблемой не являлось.

Господа, вы, на мой взгляд, не учли одну вещь - ошибка происходит не при выполнении кода, а при его загрузке. Я ж писал - "loading object code".

ПРичем происходит это на определенном проценте загрузки. И если флеш контроллера 1 МБ, а в ExtFlashSection данных на 4 МБ - то ошибка возникает на 20%, если в ExtFlashSection тоже 1Мб - то на 50% - улавливаете о чем я?

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


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

А с JLink такая же проблема ?
Если убрать галку Default около сегмента 0x900 0000 ?

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


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

3 hours ago, x893 said:

А с JLink такая же проблема ?
Если убрать галку Default около сегмента 0x900 0000 ?

Как выяснилось, у меня старая версия, не подднрживающая h7 серию. Новвй китайский клон я заказал конечно. Но может найдётся на форуме человек, у которого и jlink и плата на н7 и keil..... 

3 hours ago, x893 said:

Если убрать галку Default около сегмента 0x900 0000 ?

Галки не принимаются во внимание, если стоит другая галка, та что предписывпет использовать sct файл

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


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

2 hours ago, MementoMori said:

Галки не принимаются во внимание, если стоит другая галка, та что предписывпет использовать sct файл

То есть галку на 0х900 0000 убрали и не работает ?

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


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

On 2/17/2021 at 3:10 PM, x893 said:

То есть галку на 0х900 0000 убрали и не работает ?

И галку и адрес. Не работает.

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


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

Я не вчитывался в предыдущие две страницы, но если правильно понял, то проблема в том, что нужно запретить отладчику читать память по определенным адресам. Попробуйте это: https://wiki.segger.com/Memory_accesses -> Memory access map

Изменено пользователем tgruzd

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


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

2 hours ago, tgruzd said:

Я не вчитывался в предыдущие две страницы, но если правильно понял, то проблема в том, что нужно запретить отладчику читать память по определенным адресам.

Да как бы, знаете ли, хотелось бы читать.

На самом деле нужно настроить сборку проекта так, чтобы загружаемый во время "loading object code" код не содержал в себе секции, которые привязаны к адресу 0x90000000 и выше. Чтобы во время стадии "loading object code" не происходило обращения по указанному адресу.

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


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

10.02.2021 в 03:30, MementoMori сказал:

Это он пишет потому что в sct файле есть информация о размещении данных в qspi, а алгоритм прошивки для неё не указан. Вот он и прошивается только внутреннюю флеш, а на qspi, ранее прошитое, не тратит времени. Так надо. И это правильно. Это не ощибка

Цитата

Да как бы, знаете ли, хотелось бы читать.

А теперь я прочитал тему и ещё больше не понял.  Получается, вы сознательно убрали алгоритм чтения памяти по адресу 0x9..... . Отладчик туда лезет по каким-то причинам, что закономерно вызывает ошибку. Вы пытаетесь решить вопрос правкой sct файла, что закономерно приводит к расположению данных не туда. Но почему-то не хотите явно запретить отладчику лазить туда, куда он не умеет. Это действительно необходимо - читать картинки и шрифты через отладчик?    

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


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

 Смотрите, как всё происходит:  

  1. В файле *.FLM содержится исполняемый код (Program algorithm), который размещается в RAM МК:   image.png.96881fc7ef98d0daf5018b0bcc076c65.png  он занимается тем, что пишет и читает данные поступающие от отладчика по jtag или sw. Т.к. память везде разная - внутренняя, внешняя, да любая - то собственно в этом файле  и содержится информация о том, каким образом осуществлять доступ к тому или иному диапазону адресов.  
  2. 17.02.2021 в 11:52, MementoMori сказал:

    а при его загрузке. Я ж писал - "loading object code".

    происходит следующее: отладчик передает микроконтроллеру информацию, что сейчас нужно записать такую-то страницу или хотя бы просто сообщает о факте её существования. Но так как вы сознательно подменили "програм алгоритм", то функции доступа (инициализации) возвращают ошибки для соответствующего диапазона адресов, которые вы и наблюдаете.

     

    17.02.2021 в 11:52, MementoMori сказал:

    И если флеш контроллера 1 МБ, а в ExtFlashSection данных на 4 МБ - то ошибка возникает на 20%, если в ExtFlashSection тоже 1Мб - то на 50% - улавливаете о чем я?

    3. Улавливаем. А теперь ваша очередь оставить попытки править *.sct (зачем? пускай физически у вас всё лежит по правильным адресам), а вместо этого пресечь попытки линка обращаться к адресам, которыми он не может оперировать (не важно почему не может, в общем случае).     

 

Вы также можете не следовать моему первоначальному совету (честно сказать, я так не пробовал делать), а просто написать и скомпилировать свой собственный *.FLM (так пробовал), где-то в недрах кейла даже соответствующий пример есть. 

 

 

 

Изменено пользователем tgruzd

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


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

2 hours ago, tgruzd said:

Получается, вы сознательно убрали алгоритм чтения памяти по адресу 0x9.....

Вы про вкладку "flash Download"? А она как то отвечает за чтение? А по моему за запись и только. 

2 hours ago, tgruzd said:

Вы пытаетесь решить вопрос правкой sct файла, что закономерно приводит к расположению данных не туда

Не не туда, а во внутреннюю флеш и все было бы хорошо, если бы флеш не была столь мала. 

2 hours ago, tgruzd said:

Это действительно необходимо - читать картинки и шрифты через отладчик?    

Как вам сказать... Когда настраивал режимы qspi, то была необходимость. Через окно memory очень легко понять, правильно ли читаются данные. Я писал уже раньше, что перелазию с F746 на Н743, так вот что-то не работает у меня dualflash, не могу понять почему. Окошко мемори пригодилось бы. 

 

2 hours ago, tgruzd said:

Отладчик туда лезет по каким-то причинам, что закономерно вызывает ошибку.

Он по совершенно непонятным причинам лезет туда до запуска кода, на стадии загрузки (не путать с прошиванием) 

Ещё более непонятно, почему этой проблемы не было на F746 камне

8 minutes ago, tgruzd said:

А теперь ваша очередь оставить попытки править *.sct (зачем? пускай физически у вас всё лежит по правильным адресам

Не понимаю. Смотрите, если я прописываю в sct файле ExtFlashSection, то линковка происходит правильно. Всё массивы, содержащие картинки кидаются в секцию, из которой шьётcя qspi. Но при этом проблема при загрузке. 

Если же убрать ExtFlashSection - то линковщик пытается засунуть все во внутреннюю флеш. 

 

У меня мысль появилась интересная - сделать некий костыль. Написать алгоритм прошивания qspi, в котором включается. Memory mapped Mode, но самой прошивки и затраты времени на неё, не происходит. И посмотреть, что будет. По идее контроллер все равно должен ресетнуться, но чем черт не шутит

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


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

35 минут назад, MementoMori сказал:

Он по совершенно непонятным причинам лезет туда до запуска кода, на стадии загрузки (не путать с прошиванием) 

предположительно, проверяет доступна ли вообще эта память

35 минут назад, MementoMori сказал:

Ещё более непонятно, почему этой проблемы не было на F746 камне

Наверное не в камне дело. Вы ведь память добавили. В *.sct секцию-то прописали, а как же *.FLM об этом узнает?

 

35 минут назад, MementoMori сказал:

Не понимаю. Смотрите, если я прописываю в sct файле ExtFlashSection, то линковка происходит правильно. Всё массивы, содержащие картинки кидаются в секцию, из которой шьётcя qspi. Но при этом проблема при загрузке. 

Если же убрать ExtFlashSection - то линковщик пытается засунуть все во внутреннюю флеш. 

 Тут надо понять, что линковка здесь не причём.  Попробуйте ещё раз внимательно прочитать написанное, потом попробуйте сделать это, а там вдруг и жизнь наладится.

 

35 минут назад, MementoMori сказал:

чем черт не шутит

:diablo:

 

Изменено пользователем tgruzd
Прошу прощения, ошибся: *.AXF в моих сообщениях следует читать как *.FLM

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


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

18 minutes ago, tgruzd said:

Наверное не в камне дело. Вы ведь память добавили. В *.sct секцию-то прописали, а как же *.axf об этом узнает?

Ну когда я создавал в кубе проект под 746 камень, я так же работал с sct файлом. Всё остальное создавал куб и touchgfx designer.  

20 minutes ago, tgruzd said:

Попробуйте ещё раз внимательно прочитать написанное, потом попробуйте сделать это, а там вдруг и жизнь наладится.

Попробую

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


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

45 минут назад, MementoMori сказал:

Вы про вкладку "flash Download"? А она как то отвечает за чтение? А по моему за запись и только.

Нет, я про другое.   image.thumb.png.29aec9632032ad778677f28413b068aa.png  смотрите столбец address range. ваша память входит в этот диапазон(диапазоны)? полностью? Вот здесь корень ошибки. и просто поменять start и size - не поможет.

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


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

4 minutes ago, tgruzd said:

смотрите столбец address range. ваша память входит в этот диапазон(диапазоны)? полностью? Вот здесь корень ошибки. и просто поменять start и size - не поможет

Вы про внутреннюю флеш? Или картинка для примера, а вы имеете в виду qspi? 

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


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

14 минут назад, MementoMori сказал:

Вы про внутреннюю флеш? Или картинка для примера, а вы имеете в виду qspi? 

Картинка для примера. Я про qspi. Это к вопросу о том, почему раньше всё работало.  Эти диапазоны адресов означают, что конкретный алгоритм только этими адресами и оперирует.

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


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

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

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

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

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

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

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

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

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

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