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

 
 
 
Reply to this topicStart new topic
tolik_zp
сообщение Jul 2 2007, 12:53
Сообщение #1


Частый гость
**

Группа: Участник
Сообщений: 127
Регистрация: 2-08-06
Пользователь №: 19 265



Добрый день!
Как пнуть иар, чтобы стартап переписал внешнюю функцию, написанную на асме, в озу?
Go to the top of the page
 
+Quote Post
zltigo
сообщение Jul 2 2007, 14:04
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244



Цитата(tolik_zp @ Jul 2 2007, 15:53) *
Как пнуть иар, чтобы стартап переписал внешнюю функцию, написанную на асме, в озу?

А чего его 'пинать' - скажите, что она помещается в сегменте с зарезервированным для таких нужд именем CODE_I. Все.


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
KRS
сообщение Jul 2 2007, 14:51
Сообщение #3


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

Группа: Модераторы
Сообщений: 1 951
Регистрация: 27-08-04
Из: Санкт-Петербург
Пользователь №: 555



Цитата(zltigo @ Jul 2 2007, 18:04) *
А чего его 'пинать' - скажите, что она помещается в сегменте с зарезервированным для таких нужд именем CODE_I. Все.

Но если нет описаний __ramfunc в .с файлах работать не будет надо еще в .asm файл добавить несколько директив
Код
        PUBWEAK ?init?tab?CODE_I
        PUBWEAK `?*?CODE_ID`
        RSEG CODE_ID:CODE:NOROOT(2)
`?*?CODE_ID`:

        RSEG INITTAB:CODE:ROOT(2)
        DATA
?init?tab?CODE_I:
        DCD      sfe(CODE_I) - sfb(CODE_I), sfb(CODE_I), sfb(CODE_ID)
Go to the top of the page
 
+Quote Post
tolik_zp
сообщение Jul 3 2007, 07:12
Сообщение #4


Частый гость
**

Группа: Участник
Сообщений: 127
Регистрация: 2-08-06
Пользователь №: 19 265



Цитата(KRS @ Jul 2 2007, 17:51) *
Но если нет описаний __ramfunc в .с файлах работать не будет надо еще в .asm файл добавить несколько директив
Код
        PUBWEAK ?init?tab?CODE_I
        PUBWEAK `?*?CODE_ID`
        RSEG CODE_ID:CODE:NOROOT(2)
`?*?CODE_ID`:

        RSEG INITTAB:CODE:ROOT(2)
        DATA
?init?tab?CODE_I:
        DCD      sfe(CODE_I) - sfb(CODE_I), sfb(CODE_I), sfb(CODE_ID)


пора переносить ветку к начинающим wink.gif

в с-файле есть такая строчка:
__ramfunc extern void video_out(void);

далее в асме пишу RSEG CODE_I, отладчик ИАРа при этом нормально переходит на адреса ram при выполнении функции, но в железе ничего не происходит. более того, пробовал Ваш код, но компилятор ругается на синтаксис последней строки Вашего примера, хотя в мануале так и написано
Go to the top of the page
 
+Quote Post
tolik_zp
сообщение Jul 3 2007, 08:49
Сообщение #5


Частый гость
**

Группа: Участник
Сообщений: 127
Регистрация: 2-08-06
Пользователь №: 19 265



кстати, я в стартапе не нашел ничего, похожего на копирование из code_id в code_i, хотя синшые функции нормально работают в озу. я совсем запутался
Go to the top of the page
 
+Quote Post
Leen
сообщение Jul 3 2007, 10:18
Сообщение #6


Частый гость
**

Группа: Свой
Сообщений: 172
Регистрация: 5-08-06
Из: Владивосток
Пользователь №: 19 343



Когда разбирался с этим вопросом в RVCC, там стартап копировал сишные функции, слинкованные в озу, из флэша, где-то в районе от __user_initial_stackheap до __main. Естественно, при этом все было залито во флэшку, а в раму кидалось после старта (холодного или горячего, с отладчиком и без).
Go to the top of the page
 
+Quote Post
tolik_zp
сообщение Jul 3 2007, 10:30
Сообщение #7


Частый гость
**

Группа: Участник
Сообщений: 127
Регистрация: 2-08-06
Пользователь №: 19 265



а киньте в меня кто-нибудь стартапом, там где есть код копирования в рам
Go to the top of the page
 
+Quote Post
SpiritDance
сообщение Jul 3 2007, 10:37
Сообщение #8


Дух погибшего транзистора
****

Группа: Свой
Сообщений: 877
Регистрация: 6-09-05
Из: Москва
Пользователь №: 8 288



Под иаром код копирования в RAM располагается в функции __segment_init, исходник в ировской папке src/lib

http://electronix.ru/forum/index.php?showtopic=33718


--------------------
Yes, there are two paths you can go by But in the long run Theres still time to change the road youre on.
Go to the top of the page
 
+Quote Post
tolik_zp
сообщение Jul 3 2007, 11:37
Сообщение #9


Частый гость
**

Группа: Участник
Сообщений: 127
Регистрация: 2-08-06
Пользователь №: 19 265



чего-то у меня __segment_init копирует в очень большие адреса, хотя в мапе как положено - video_out лежит с 0х40000000
объясните пожалуйста чайнику, что тут к чему?
Go to the top of the page
 
+Quote Post

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

 


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


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