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

 
 
 
Reply to this topicStart new topic
> Ошибки в работе Leon3
SunRize
сообщение Oct 14 2010, 17:05
Сообщение #1





Группа: Новичок
Сообщений: 9
Регистрация: 29-06-10
Из: Ижевск
Пользователь №: 58 198



Есть проект: Leon3, AHBCTRL, AHBROM, APBCTRL, APBUART, GPIO. Проект компилируется, но есть 2 проблемы:
1) при возврате из функции (команда retl) происходит прерывание (0x07)
2) при выполнении команд вида st reg, [%fp - 0x0c] также происходит прерывание
3) и самое интересное, регистр o5 содержит значение 0х60000000, далее следует последовательность команд, в [] результат операции, выданный ModelSim'ом
or %o5, 0x20C, %o4 [0x6000020C]
st %g1, [%o4]
mov 0x00, %o4 [0x00000000]
or %o5, 0x200, %o4 [0x60000200]
st %g1, [%o4]
но на шину во втором случае выдается 0x6000020C

Никак не могу понять в чем проблема, для компиляции использую GR-LIDE (Bare C), если кто-то сталкивался с подобным или знает решение, просьба подсказать
Go to the top of the page
 
+Quote Post
yes
сообщение Oct 15 2010, 14:47
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 2 198
Регистрация: 23-12-04
Пользователь №: 1 640



Цитата(SunRize @ Oct 14 2010, 21:05) *
Есть проект: Leon3, AHBCTRL, AHBROM, APBCTRL, APBUART, GPIO. Проект компилируется, но есть 2 проблемы:
1) при возврате из функции (команда retl) происходит прерывание (0x07)
2) при выполнении команд вида st reg, [%fp - 0x0c] также происходит прерывание
3) и самое интересное, регистр o5 содержит значение 0х60000000, далее следует последовательность команд, в [] результат операции, выданный ModelSim'ом
or %o5, 0x20C, %o4 [0x6000020C]
st %g1, [%o4]
mov 0x00, %o4 [0x00000000]
or %o5, 0x200, %o4 [0x60000200]
st %g1, [%o4]
но на шину во втором случае выдается 0x6000020C

Никак не могу понять в чем проблема, для компиляции использую GR-LIDE (Bare C), если кто-то сталкивался с подобным или знает решение, просьба подсказать


1) 0x7 это non-aligment смотреть надо sparcv8.pdf там все описано
2)
3) а точно два раза 0x6000020C? там write-buffer поэтому операция по шине не сразу проходит, может это с первого st?

компилятор ерунды не делает, но 0х7 из-за линкера или crt может быть - стек то на 8 выровнен?


Go to the top of the page
 
+Quote Post
SunRize
сообщение Oct 15 2010, 15:01
Сообщение #3





Группа: Новичок
Сообщений: 9
Регистрация: 29-06-10
Из: Ижевск
Пользователь №: 58 198



yes, по поводу прерывания, стек при работе с функциями не используется, адреса возврата передаются через регистры, в проекте нет озу, а по поводу 3-го пункта я ошибся в описании проблемы моделсим выдал or %o5, 0x200, %o4 [0x6000020C] во втором случае

Сообщение отредактировал SunRize - Oct 15 2010, 15:02
Go to the top of the page
 
+Quote Post
yes
сообщение Oct 19 2010, 14:36
Сообщение #4


Гуру
******

Группа: Свой
Сообщений: 2 198
Регистрация: 23-12-04
Пользователь №: 1 640



Цитата(SunRize @ Oct 15 2010, 19:01) *
стек при работе с функциями не используется

если используете компилятор - используется: см описание инструкций save/restore

-----------

возьмите стандартный проект Гейслера (лучше всего leon3mp) и посмотрите как оно должно работать, после собирайте свою систему
все там работает
Go to the top of the page
 
+Quote Post
SunRize
сообщение Oct 25 2010, 16:18
Сообщение #5





Группа: Новичок
Сообщений: 9
Регистрация: 29-06-10
Из: Ижевск
Пользователь №: 58 198



Решение проблем:
1) при возврате из функции (команда retl) происходит прерывание (0x07);
2) при выполнении команд вида st reg, [%fp - 0x0c] также происходит прерывание.
Решаются записью в %o6 (%sp) адреса RAM памяти

3-я проблема решилась установкой текущего регистрового окна в %psr
Go to the top of the page
 
+Quote Post
yes
сообщение Oct 26 2010, 08:45
Сообщение #6


Гуру
******

Группа: Свой
Сообщений: 2 198
Регистрация: 23-12-04
Пользователь №: 1 640



начальную конфигурацию Гейслер делает не в crt.o, а с помощью специальной утилиты mkprom
поэтому стеки/окна/маски окон и т.п. надо либо самому ставить (написать ассемблерный файлик и прилинковать с [по-моему] ключами nostartup или как-то так), либо почитать инструкцию

---------------

а с проблемой завершения окон (window_overflow/window_underflow trap) уже столкнулись? имхо, самое прикольное место в архитектуре SPARC
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 23rd July 2025 - 14:48
Рейтинг@Mail.ru


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