MementoMori 4 17 февраля, 2021 Опубликовано 17 февраля, 2021 · Жалоба 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% - улавливаете о чем я? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
x893 51 17 февраля, 2021 Опубликовано 17 февраля, 2021 · Жалоба А с JLink такая же проблема ? Если убрать галку Default около сегмента 0x900 0000 ? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
MementoMori 4 17 февраля, 2021 Опубликовано 17 февраля, 2021 · Жалоба 3 hours ago, x893 said: А с JLink такая же проблема ? Если убрать галку Default около сегмента 0x900 0000 ? Как выяснилось, у меня старая версия, не подднрживающая h7 серию. Новвй китайский клон я заказал конечно. Но может найдётся на форуме человек, у которого и jlink и плата на н7 и keil..... 3 hours ago, x893 said: Если убрать галку Default около сегмента 0x900 0000 ? Галки не принимаются во внимание, если стоит другая галка, та что предписывпет использовать sct файл Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
x893 51 17 февраля, 2021 Опубликовано 17 февраля, 2021 · Жалоба 2 hours ago, MementoMori said: Галки не принимаются во внимание, если стоит другая галка, та что предписывпет использовать sct файл То есть галку на 0х900 0000 убрали и не работает ? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
MementoMori 4 18 февраля, 2021 Опубликовано 18 февраля, 2021 · Жалоба On 2/17/2021 at 3:10 PM, x893 said: То есть галку на 0х900 0000 убрали и не работает ? И галку и адрес. Не работает. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
tgruzd 11 19 февраля, 2021 Опубликовано 19 февраля, 2021 (изменено) · Жалоба Я не вчитывался в предыдущие две страницы, но если правильно понял, то проблема в том, что нужно запретить отладчику читать память по определенным адресам. Попробуйте это: https://wiki.segger.com/Memory_accesses -> Memory access map Изменено 19 февраля, 2021 пользователем tgruzd Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
MementoMori 4 19 февраля, 2021 Опубликовано 19 февраля, 2021 · Жалоба 2 hours ago, tgruzd said: Я не вчитывался в предыдущие две страницы, но если правильно понял, то проблема в том, что нужно запретить отладчику читать память по определенным адресам. Да как бы, знаете ли, хотелось бы читать. На самом деле нужно настроить сборку проекта так, чтобы загружаемый во время "loading object code" код не содержал в себе секции, которые привязаны к адресу 0x90000000 и выше. Чтобы во время стадии "loading object code" не происходило обращения по указанному адресу. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
tgruzd 11 19 февраля, 2021 Опубликовано 19 февраля, 2021 · Жалоба 10.02.2021 в 03:30, MementoMori сказал: Это он пишет потому что в sct файле есть информация о размещении данных в qspi, а алгоритм прошивки для неё не указан. Вот он и прошивается только внутреннюю флеш, а на qspi, ранее прошитое, не тратит времени. Так надо. И это правильно. Это не ощибка Цитата Да как бы, знаете ли, хотелось бы читать. А теперь я прочитал тему и ещё больше не понял. Получается, вы сознательно убрали алгоритм чтения памяти по адресу 0x9..... . Отладчик туда лезет по каким-то причинам, что закономерно вызывает ошибку. Вы пытаетесь решить вопрос правкой sct файла, что закономерно приводит к расположению данных не туда. Но почему-то не хотите явно запретить отладчику лазить туда, куда он не умеет. Это действительно необходимо - читать картинки и шрифты через отладчик? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
tgruzd 11 19 февраля, 2021 Опубликовано 19 февраля, 2021 (изменено) · Жалоба Смотрите, как всё происходит: В файле *.FLM содержится исполняемый код (Program algorithm), который размещается в RAM МК: он занимается тем, что пишет и читает данные поступающие от отладчика по jtag или sw. Т.к. память везде разная - внутренняя, внешняя, да любая - то собственно в этом файле и содержится информация о том, каким образом осуществлять доступ к тому или иному диапазону адресов. 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 (так пробовал), где-то в недрах кейла даже соответствующий пример есть. Изменено 19 февраля, 2021 пользователем tgruzd Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
MementoMori 4 19 февраля, 2021 Опубликовано 19 февраля, 2021 · Жалоба 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, но самой прошивки и затраты времени на неё, не происходит. И посмотреть, что будет. По идее контроллер все равно должен ресетнуться, но чем черт не шутит Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
tgruzd 11 19 февраля, 2021 Опубликовано 19 февраля, 2021 (изменено) · Жалоба 35 минут назад, MementoMori сказал: Он по совершенно непонятным причинам лезет туда до запуска кода, на стадии загрузки (не путать с прошиванием) предположительно, проверяет доступна ли вообще эта память 35 минут назад, MementoMori сказал: Ещё более непонятно, почему этой проблемы не было на F746 камне Наверное не в камне дело. Вы ведь память добавили. В *.sct секцию-то прописали, а как же *.FLM об этом узнает? 35 минут назад, MementoMori сказал: Не понимаю. Смотрите, если я прописываю в sct файле ExtFlashSection, то линковка происходит правильно. Всё массивы, содержащие картинки кидаются в секцию, из которой шьётcя qspi. Но при этом проблема при загрузке. Если же убрать ExtFlashSection - то линковщик пытается засунуть все во внутреннюю флеш. Тут надо понять, что линковка здесь не причём. Попробуйте ещё раз внимательно прочитать написанное, потом попробуйте сделать это, а там вдруг и жизнь наладится. 35 минут назад, MementoMori сказал: чем черт не шутит Изменено 19 февраля, 2021 пользователем tgruzd Прошу прощения, ошибся: *.AXF в моих сообщениях следует читать как *.FLM Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
MementoMori 4 19 февраля, 2021 Опубликовано 19 февраля, 2021 · Жалоба 18 minutes ago, tgruzd said: Наверное не в камне дело. Вы ведь память добавили. В *.sct секцию-то прописали, а как же *.axf об этом узнает? Ну когда я создавал в кубе проект под 746 камень, я так же работал с sct файлом. Всё остальное создавал куб и touchgfx designer. 20 minutes ago, tgruzd said: Попробуйте ещё раз внимательно прочитать написанное, потом попробуйте сделать это, а там вдруг и жизнь наладится. Попробую Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
tgruzd 11 19 февраля, 2021 Опубликовано 19 февраля, 2021 · Жалоба 45 минут назад, MementoMori сказал: Вы про вкладку "flash Download"? А она как то отвечает за чтение? А по моему за запись и только. Нет, я про другое. смотрите столбец address range. ваша память входит в этот диапазон(диапазоны)? полностью? Вот здесь корень ошибки. и просто поменять start и size - не поможет. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
MementoMori 4 19 февраля, 2021 Опубликовано 19 февраля, 2021 · Жалоба 4 minutes ago, tgruzd said: смотрите столбец address range. ваша память входит в этот диапазон(диапазоны)? полностью? Вот здесь корень ошибки. и просто поменять start и size - не поможет Вы про внутреннюю флеш? Или картинка для примера, а вы имеете в виду qspi? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
tgruzd 11 19 февраля, 2021 Опубликовано 19 февраля, 2021 · Жалоба 14 минут назад, MementoMori сказал: Вы про внутреннюю флеш? Или картинка для примера, а вы имеете в виду qspi? Картинка для примера. Я про qspi. Это к вопросу о том, почему раньше всё работало. Эти диапазоны адресов означают, что конкретный алгоритм только этими адресами и оперирует. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться