|
Выполнение всей или части программы из RAM, Keil uVision и RVCC |
|
|
|
 |
Ответов
(1 - 6)
|
Jan 27 2007, 04:48
|
Частый гость
 
Группа: Свой
Сообщений: 172
Регистрация: 5-08-06
Из: Владивосток
Пользователь №: 19 343

|
Попробовал сделать простенький проект, с AT91SAM7S256. Те же Фаберже - стартуп.с выдает ошибку 65. вызывает ее вот эта строчка: 0x000081C0 E8AC09C0 STMIA R12!,{R6-R8,R11} Она сохраняет регистры 6-8 и 11 по адресув врегистре 12 (насколько я понял). А R12 = 0x10!!!! смотрим далее (в startup.s)
AREA RESET, CODE, READONLY ... ...
Vectors LDR PC,Reset_Addr ...
т.е. судя по всему, где-то надо компилеру объяснить, чтобы он не пихал данные в область кода. Вроде это можно сделать в свойствах SourceGroup, вкладка Properties. Попробуйте.
|
|
|
|
|
Jan 27 2007, 14:25
|

Любитель
    
Группа: Свой
Сообщений: 1 864
Регистрация: 20-08-06
Из: Тольятти
Пользователь №: 19 695

|
Цитата(VAI @ Jan 27 2007, 11:46)  полистал экзамплы, наткнулся на ".....\Keil\ARM\RV30\Examples\RAM_Function\" Да, спасибо, меня уже тоже носом ткнули  А чтобы симулятор не ругался и не выдавал ошибку 65, надо подключить к симулятору файл (Options for Target->Debug: Initialization File), например, с таким содержимым: MAP 0x00200000, 0x0020ffff READ WRITE EXEC То есть мы разрешаем любой доступ к RAM памяти. В реальной железке всё будет работать и без этого, конечно
Сообщение отредактировал sonycman - Jan 27 2007, 14:30
|
|
|
|
|
Jan 27 2007, 19:26
|

Ally
     
Группа: Модераторы
Сообщений: 6 232
Регистрация: 19-01-05
Пользователь №: 2 050

|
А вот это не факт, что все будет работать. Симулятор в Keil очень примитивный. При выполнении из RAM в ARM-ах могут такие чудеса покатить, что проблема с мапингом в симуляторе цветочками покажется. Если будете пробовать разместить в RAM и обработчики прерываний и основной код в THUMB режиме, то сообщите как получилось. Есть подозрения на кривизну арбитража на AHB шине. Цитата(sonycman @ Jan 27 2007, 15:55)  Цитата(VAI @ Jan 27 2007, 11:46)  полистал экзамплы, наткнулся на ".....\Keil\ARM\RV30\Examples\RAM_Function\"
Да, спасибо, меня уже тоже носом ткнули  А чтобы симулятор не ругался и не выдавал ошибку 65, надо подключить к симулятору файл (Options for Target->Debug: Initialization File), например, с таким содержимым: MAP 0x00200000, 0x0020ffff READ WRITE EXEC То есть мы разрешаем любой доступ к RAM памяти. В реальной железке всё будет работать и без этого, конечно 
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|