реклама на сайте
подробности

 
 
5 страниц V  < 1 2 3 4 5 >  
Reply to this topicStart new topic
> TI AM1808, разные вопросы
SAURIS GmbH
сообщение Jun 25 2014, 17:48
Сообщение #31


Знающий
****

Группа: Участник
Сообщений: 531
Регистрация: 16-12-09
Пользователь №: 54 291



Тут другой вопрос скорее... Кто и зачем включил этот user mode? По reset-у согласно документации ядро стартует супервайзером (Table 2-1.)

Сообщение отредактировал SAURIS GmbH - Jun 25 2014, 17:49


--------------------
Sauris GmbH technical support (web site: http://www.sauris.de)
XDS100, XDS510 JTAG Emulators for TI DSP & ARM, Flash/EEPROM programming JTAG tools, System-on-Module products.
Go to the top of the page
 
+Quote Post
doom13
сообщение Jun 25 2014, 20:00
Сообщение #32


Профессионал
*****

Группа: Свой
Сообщений: 1 404
Регистрация: 11-03-11
Из: Минск, Беларусь
Пользователь №: 63 539



Цитата(SAURIS GmbH @ Jun 25 2014, 20:48) *
Тут другой вопрос скорее... Кто и зачем включил этот user mode? По reset-у согласно документации ядро стартует супервайзером (Table 2-1.)

Максимум, я при старте запускал скрипты из GEL, если только они, там OnConnect что-то выполняется, надо глянуть ещё раз, далее main и сразу настройка PINMUX17, которая и не работает.
Go to the top of the page
 
+Quote Post
SAURIS GmbH
сообщение Jun 26 2014, 03:15
Сообщение #33


Знающий
****

Группа: Участник
Сообщений: 531
Регистрация: 16-12-09
Пользователь №: 54 291



Цитата(doom13 @ Jun 26 2014, 00:00) *
Максимум, я при старте запускал скрипты из GEL, если только они, там OnConnect что-то выполняется, надо глянуть ещё раз, далее main и сразу настройка PINMUX17, которая и не работает.


Там еще bootloader есть... По Reset именно в него входит процессор, и он что-то там делает согласно режима загрузки. По идее, если сделать Reset CPU через эмулятор, тогда процессор будет "в чистом состоянии", если же просто подключиться после подачи питания, то он прервет нечто, что исполняется в текущий момент, в каком-то неясном состоянии.


--------------------
Sauris GmbH technical support (web site: http://www.sauris.de)
XDS100, XDS510 JTAG Emulators for TI DSP & ARM, Flash/EEPROM programming JTAG tools, System-on-Module products.
Go to the top of the page
 
+Quote Post
AndrejM
сообщение Jun 26 2014, 03:46
Сообщение #34


Участник
*

Группа: Участник
Сообщений: 51
Регистрация: 20-11-13
Пользователь №: 79 278



Цитата(SAURIS GmbH @ Jun 26 2014, 06:15) *
Там еще bootloader есть... По Reset именно в него входит процессор, и он что-то там делает согласно режима загрузки. По идее, если сделать Reset CPU через эмулятор, тогда процессор будет "в чистом состоянии", если же просто подключиться после подачи питания, то он прервет нечто, что исполняется в текущий момент, в каком-то неясном состоянии.


для чистоты экспериментов , у bootloader есть режим Emulation Debug если его установить (boot mode pins) то после reset ничего вообще исполняться не будет в ожидании коннекта через jtag
Go to the top of the page
 
+Quote Post
doom13
сообщение Jun 26 2014, 08:05
Сообщение #35


Профессионал
*****

Группа: Свой
Сообщений: 1 404
Регистрация: 11-03-11
Из: Минск, Беларусь
Пользователь №: 63 539



Цитата(SAURIS GmbH @ Jun 26 2014, 06:15) *
Там еще bootloader есть... По Reset именно в него входит процессор, и он что-то там делает согласно режима загрузки. По идее, если сделать Reset CPU через эмулятор, тогда процессор будет "в чистом состоянии", если же просто подключиться после подачи питания, то он прервет нечто, что исполняется в текущий момент, в каком-то неясном состоянии.

Подключаюсь, заливаю прошивку, делаю CPU Reset (рис. 1).
Подключаюсь, заливаю прошивку, делаю CPU Reset, Restart (рис. 2).
Цитата(AndrejM @ Jun 26 2014, 06:46) *
для чистоты экспериментов , у bootloader есть режим Emulation Debug если его установить (boot mode pins) то после reset ничего вообще исполняться не будет в ожидании коннекта через jtag

Счас ещё раз проверю, но этот режим и устанавливали.

Цитата(doom13 @ Jun 26 2014, 09:34) *
Цитата(AndrejM @ Jun 26 2014, 06:46) *

для чистоты экспериментов , у bootloader есть режим Emulation Debug если его установить (boot mode pins) то после reset ничего вообще исполняться не будет в ожидании коннекта через jtag

Счас ещё раз проверю, но этот режим и устанавливали.

BOOT[7:0] = 0001_1110, что и соответствует Emulation Debug.



Ну и вопрос тогда, кто мог переключить режим из Supervisor mode в User mode?

Цитата(SAURIS GmbH)

Поставил, как и ранее, точку останова, через ARM Advanced Features установил MMU Enabled, поменял значение ARM Mode на Supervisor Mode, убрал MMU Enabled, всё заработало! Регистр PINMUX и пишется и читается, проблема, как Вы и говорили, в режиме User Mode.
Эскизы прикрепленных изображений
Прикрепленное изображение
Прикрепленное изображение
 
Go to the top of the page
 
+Quote Post
jcxz
сообщение Jun 26 2014, 13:17
Сообщение #36


Гуру
******

Группа: Свой
Сообщений: 5 228
Регистрация: 3-07-08
Из: Омск
Пользователь №: 38 713



Цитата(doom13 @ Jun 26 2014, 14:05) *
Ну и вопрос тогда, кто мог переключить режим из Supervisor mode в User mode?

Писал об этом недавно в соседней ветке (по DSP) одному товарищу....
Сталкивался с подобным давно (года 3 назад когда начинал с OMAP L137) на ARM9-ядре.
И обнаружил тогда, насколько помню, что user mode включается в стартап-коде от TI.
Потом в функции main(), когда необходим режим с привилегиями, переключался в него через SVC
(на котором висел соответствующий сервис).
Я пофиксил это поправив cstartup.

Попробуйте поставить бряк до cstartup и проверьте режим.
Go to the top of the page
 
+Quote Post
doom13
сообщение Jun 26 2014, 14:17
Сообщение #37


Профессионал
*****

Группа: Свой
Сообщений: 1 404
Регистрация: 11-03-11
Из: Минск, Беларусь
Пользователь №: 63 539



Цитата(jcxz @ Jun 26 2014, 16:17) *

Уже немного разобрался, как сделать чтобы не произошло переключения в User Mode. Начал с анализа проекта от TI, в CMD у них прописана своя точка входа
Код
-e Entry

переделал немного их проект под использование SHRAM (там DDR для кода используется), при остановке в начале main смотрю в каком режиме ARM и вижу System Mode, что отличается от моего. Далее нашёл в папках с их либой кто такой Entry, оказалось в их примере до выполнения main выполняется кусок асма со строчками описывающими переключение режимов. Далее идёт переключение на start_boot() из файла startap.c и только потом запускается main. Всё это у них работает с использованием уже скомпилированных библиотек, к проекту подключено два файла (всё остальное через LIB) и явно не видно, что до main ещё исполняется куча кода. После подключения их init.asm, изменения точки входа и либу одну их скомпиленную заюзал (надо будет потом выкинуть, чтоб понятно было, что и откуда берётся) всё заработало и моя проблема с записью PINMUX решилась.

Цитата(jcxz @ Jun 26 2014, 16:17) *
Сталкивался с подобным давно (года 3 назад когда начинал с OMAP L137) на ARM9-ядре.
И обнаружил тогда, насколько помню, что user mode включается в стартап-коде от TI.

Тут не совсем понимаю, каким образом что-то может подключиться к проекту (стартап-код) если у меня один файл с main и больше ничего, в настройках проекта пусто, CMD стандартный? Откуда берётся этот стартап?
Go to the top of the page
 
+Quote Post
jcxz
сообщение Jun 26 2014, 15:15
Сообщение #38


Гуру
******

Группа: Свой
Сообщений: 5 228
Регистрация: 3-07-08
Из: Омск
Пользователь №: 38 713



Подключиться "что-то" может только вашими руками sm.gif
Вы же указываете наверняка "подключать стандартные библиотеки" или что-то в этом роде.
Вот там оно и находится.
От вектора сброса протрассируйте и увидите что-нить типа: LDR PC, _cstartup
Внутри - инициализация всяких сишных переменных/классов и переключение в этот user mode кроме всего прочего.
Находите исходник стандартной либы (есть в CCS), правите его убирая всякую шнягу типа включения user mode и пр.,
компилите в lib-файл и включаете в проект вместо "стандартной либы".
Go to the top of the page
 
+Quote Post
SAURIS GmbH
сообщение Jun 26 2014, 16:22
Сообщение #39


Знающий
****

Группа: Участник
Сообщений: 531
Регистрация: 16-12-09
Пользователь №: 54 291



Цитата(doom13 @ Jun 26 2014, 18:17) *
Тут не совсем понимаю, каким образом что-то может подключиться к проекту (стартап-код) если у меня один файл с main и больше ничего, в настройках проекта пусто, CMD стандартный? Откуда берётся этот стартап?


Вот этот стартап-код инициализирует run-time библиотеку, после чего вызывает Ваш main. Он находится в виде исходных текстов в составе run-time библиотеки. Вы его можете оттуда выковырять и поправить на свой лад, если надо. Но без него нельзя - он много чего делает, чтобы Ваш C-код исполнялся потом корректно.


--------------------
Sauris GmbH technical support (web site: http://www.sauris.de)
XDS100, XDS510 JTAG Emulators for TI DSP & ARM, Flash/EEPROM programming JTAG tools, System-on-Module products.
Go to the top of the page
 
+Quote Post
doom13
сообщение Jun 26 2014, 19:12
Сообщение #40


Профессионал
*****

Группа: Свой
Сообщений: 1 404
Регистрация: 11-03-11
Из: Минск, Беларусь
Пользователь №: 63 539



Да, ступил немного. Просто в голове работа с С2000, С6000, а там как-то всё время к проекту подключался асмовский файл (буквально пару строк) с переходом на _c_int00. Вот что-то мне запомнилось, что переход на _c_int00 и есть переход на main, ещё раз прошёлся по старым проектам, оказалось - переход на _c_int00 не равен переходу на main. При переходе на _c_int00 ещё куча асмовских инструкций исполняется и только потом осуществляется переход на main. Счас стало понятно, надо только этот стандартный startup выщимить и посмотреть, что он там выполняет.
Go to the top of the page
 
+Quote Post
SAURIS GmbH
сообщение Jun 27 2014, 06:55
Сообщение #41


Знающий
****

Группа: Участник
Сообщений: 531
Регистрация: 16-12-09
Пользователь №: 54 291



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


--------------------
Sauris GmbH technical support (web site: http://www.sauris.de)
XDS100, XDS510 JTAG Emulators for TI DSP & ARM, Flash/EEPROM programming JTAG tools, System-on-Module products.
Go to the top of the page
 
+Quote Post
doom13
сообщение Jun 27 2014, 07:15
Сообщение #42


Профессионал
*****

Группа: Свой
Сообщений: 1 404
Регистрация: 11-03-11
Из: Минск, Беларусь
Пользователь №: 63 539



Цитата(SAURIS GmbH @ Jun 27 2014, 09:55) *
Есть еще один вариант. Если остальная программа, кроме инициализации, может полностью работать в user mode, то можно написать свой кусочек кода, работающий без единого библиотечного вызова и без использования стека (вызова ф-ций) (а лучше вообще, на ассемблере), который проинициализирует все регистры, доступные только из privileged, и затем уйдет на библиотечный стартап, и далее на main. Ну и точку входа переустановить на начало этого кода.

Счас вот разбираюсь, как тут правильно стартануть, нашёл boot.asm со стандартной _c_int00, оно и выполнялось до моего main. Только вот точку останова в нём почему-то не могу поставить.
Go to the top of the page
 
+Quote Post
SAURIS GmbH
сообщение Jun 27 2014, 07:59
Сообщение #43


Знающий
****

Группа: Участник
Сообщений: 531
Регистрация: 16-12-09
Пользователь №: 54 291



тут два варианта - пересобрать библиотеку целиком с включением отладочной информации в нее, ну или включить этот boot.asm (его копию) в состав своего проекта.


--------------------
Sauris GmbH technical support (web site: http://www.sauris.de)
XDS100, XDS510 JTAG Emulators for TI DSP & ARM, Flash/EEPROM programming JTAG tools, System-on-Module products.
Go to the top of the page
 
+Quote Post
doom13
сообщение Jun 27 2014, 09:07
Сообщение #44


Профессионал
*****

Группа: Свой
Сообщений: 1 404
Регистрация: 11-03-11
Из: Минск, Беларусь
Пользователь №: 63 539



Цитата(SAURIS GmbH @ Jun 27 2014, 10:59) *
тут два варианта - пересобрать библиотеку целиком с включением отладочной информации в нее, ну или включить этот boot.asm (его копию) в состав своего проекта.

Попробовал его подключать, одного выходит не достаточно, тянет за собой ещё что-то. Наверное проще оставить свой entry point по аналогии с примером от TI, только полностью разобраться, что он там делает.


Есть две практически одинаковые конфигурации. При запуске и загрузке программы попадаем в main, в стеке вызовов лежит _c_int00 и main. Если выбрать _c_int00, то для первой напишет, что не может открыть исходный файл, для второй автоматом откроет boot.asm. В чём может быть разница? Что-то никак не могу найти отличия, для второй хотя бы понятно, откуда _c_int00 берётся.
Эскизы прикрепленных изображений
Прикрепленное изображение
Прикрепленное изображение
 
Go to the top of the page
 
+Quote Post
SAURIS GmbH
сообщение Jun 27 2014, 10:02
Сообщение #45


Знающий
****

Группа: Участник
Сообщений: 531
Регистрация: 16-12-09
Пользователь №: 54 291



Цитата(doom13 @ Jun 27 2014, 13:07) *
Попробовал его подключать, одного выходит не достаточно, тянет за собой ещё что-то. Наверное проще оставить свой entry point по аналогии с примером от TI, только полностью разобраться, что он там делает.


Должно быть достаточно. Я не раз так делал, когда требуется модификация boot.asm, компилятор компилирует тот, что в проекте, а тот, что в либе, игнорирует. Что касается останова в нем - надо где-то в опциях проекта (или отладки, не помню) убрать галку, говорящую, что надо автоматически дойти до main и остановиться на ней. Тогда она сразу остановится на _c_int00

Разница, наверное, что один проект видит файл "boot.asm" - он лежит или в проекте, или где-то в путях доступен, а второй нет.


UPD:

Вдогонку.

Еще можно раскрыть весь архив с исходниками runtime library, и добавить в путь поиска отладчику. Но с учетом того, что либа собрана с оптимизацией, остановы в C коде могут быть показаны некорректно.

Сообщение отредактировал SAURIS GmbH - Jun 27 2014, 10:02


--------------------
Sauris GmbH technical support (web site: http://www.sauris.de)
XDS100, XDS510 JTAG Emulators for TI DSP & ARM, Flash/EEPROM programming JTAG tools, System-on-Module products.
Go to the top of the page
 
+Quote Post

5 страниц V  < 1 2 3 4 5 >
Reply to this topicStart new topic
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 21st July 2025 - 12:21
Рейтинг@Mail.ru


Страница сгенерированна за 0.01514 секунд с 7
ELECTRONIX ©2004-2016