Гость impatt 17 марта, 2010 Опубликовано 17 марта, 2010 · Жалоба Сорри за тупой вопрос. Я не спец в АРМ-ах, но кое-что надо сделать, не познавая весь мир со стадии "когда Земля была жидкая". Посему нуждаюсь в конкретных советах: у меня есть консоль OpenOCD, подключенного к ARM1136, я могу загружать туда код и исполнять его, могу даже сделать что-то на ассемблере, скомпилировать и выдрать бинарный образ из ELF-контейнера. Надо переключить состояние с Abort или Undefined Instruction на Supervisor. Беда в том, что не знаю до тонкостей ARM-ассемблера и особенностей работы. Собсна, вот. Заранее спасибо. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Aurochs 0 18 марта, 2010 Опубликовано 18 марта, 2010 · Жалоба Вот фрагмент кода на ассемблере, который позволит переключиться в режим супервизора mrs r0, cpsr bic r0, r0, #0x1F orr r1, r0, #0x13 msr cpsr_cxsf, r1 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Гость impatt 19 марта, 2010 Опубликовано 19 марта, 2010 · Жалоба Вот фрагмент кода на ассемблере, который позволит переключиться в режим супервизора Вольшое спасибо, похоже на то, что требуется :) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
sergeeff 1 19 марта, 2010 Опубликовано 19 марта, 2010 · Жалоба Если не секрет. Откуда возникла такая потребность? Оба режима Abort или Undefined Instruction - это "аварийные режимы" процессора. Если вы в них попали, надо выяснять почему и исправлять программу. А вываливаться из них какой смысл? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Гость impatt 19 марта, 2010 Опубликовано 19 марта, 2010 · Жалоба Если не секрет. Откуда возникла такая потребность? Оба режима Abort или Undefined Instruction - это "аварийные режимы" процессора. Если вы в них попали, надо выяснять почему и исправлять программу. А вываливаться из них какой смысл? Не секрет, конечно: после сброса и до ввода в режим отладки, процессор успевает исполнять какой-то мусор с флэшки. Мне же его надо иметь в нормальном состоянии. Собственно, вот :) Вообще, я пока приведённым рецептом не воспользовался - нашёл способ сделать инче, но это частный случай, а так-то рецептик себе на манжету запишу :) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
defunct 0 21 марта, 2010 Опубликовано 21 марта, 2010 · Жалоба А вываливаться из них какой смысл? Да есть много причин возвращаться из Abort'а в svsr.. К примеру определить объем реально подключенной SDRAM памяти. Плюсуете к адресу по мегабайту - натыкаетесь на датааборт - вот собсно и верхняя граница памяти. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
aaarrr 63 21 марта, 2010 Опубликовано 21 марта, 2010 · Жалоба Плюсуете к адресу по мегабайту - натыкаетесь на датааборт - вот собсно и верхняя граница памяти. А контроллер памяти откуда вдруг знает о границах? Получите overlap и все. P.S. impat, сменили б вы юзерпик - глаза можно сломать, чесслово! Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
defunct 0 21 марта, 2010 Опубликовано 21 марта, 2010 · Жалоба А контроллер памяти откуда вдруг знает о границах? Получите overlap и все. В реальной системе получаю abort. Откуда контроллер памяти знает меня не интересовало. Если не нравится пример с памятью - другой пример - сохранение svsr fault регистров при краше. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
aaarrr 63 21 марта, 2010 Опубликовано 21 марта, 2010 · Жалоба В реальной системе получаю abort. Откуда контроллер памяти знает меня не интересовало. А вот мне интересно. Можно узнать, что за система, и при каких условиях получается abort? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
defunct 0 21 марта, 2010 Опубликовано 21 марта, 2010 · Жалоба А вот мне интересно. Можно узнать, что за система, и при каких условиях получается abort? SoC на двух 1136 ARM'ах, чей там SDRAM контроллер, - не знаю... Дает аборт при доступе к несуществующей памяти, даже если в MMU ARM'ов помечено, что память там есть. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
aaarrr 63 21 марта, 2010 Опубликовано 21 марта, 2010 · Жалоба SoC на двух 1136 ARM'ах, чей там SDRAM контроллер, - не знаю... Дает аборт при доступе к несуществующей памяти, даже если в MMU ARM'ов помечено, что память там есть. Хорошо, а как инициализируется этот контроллер - знаете? Просто ведь неоткуда знать ему, что там и в каком количестве снаружи прикручено, если только кто-то (сам процессор, точнее) не подскажет. А вот генерить abort там, где ему было сказано, что памяти нет - это пожалуйста. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
defunct 0 21 марта, 2010 Опубликовано 21 марта, 2010 · Жалоба Хорошо, а как инициализируется этот контроллер - знаете? Мой application грузится бутлоадером сразу в SDRAM, стало быть SDRAM контроллер уже настроен бутлоадером. Количество памяти в системе мой application узнает описанным выше способом. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
aaarrr 63 21 марта, 2010 Опубликовано 21 марта, 2010 · Жалоба Тогда вопросов более нет. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
sergeeff 1 21 марта, 2010 Опубликовано 21 марта, 2010 · Жалоба Мой application грузится бутлоадером сразу в SDRAM, стало быть SDRAM контроллер уже настроен бутлоадером. Количество памяти в системе мой application узнает описанным выше способом. Существуют более интеллигентные способы узнать объем памяти без вваливания в Abort. Я таким пользуюсь года три. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
aaarrr 63 21 марта, 2010 Опубликовано 21 марта, 2010 · Жалоба Существуют более интеллигентные способы узнать объем памяти без вваливания в Abort. Я таким пользуюсь года три. Интеллигентных способа, как я понимаю, здесь два: 1. Получить значение объема от bootloader'а 2. Прочитать конфигурацию контроллера памяти Попытка выяснить объем самостоятельно неминуемо приведет к abort'у. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться