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

 
 
2 страниц V   1 2 >  
Reply to this topicStart new topic
> отладка из RAM в кейл
SpiritDance
сообщение Aug 7 2006, 08:23
Сообщение #1


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

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



Случилась предышка в работе над проектом. Наконец дошли руки до прикручивания MT-link5 к кейл, со всем разобрался. Пишется флеш, отладчик ходит по шагам, брекпоинты работают - сказка вобщем. Остался только один вопрос как отлаживатся из RAM? Хоть намекните, а?


--------------------
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
aaarrr
сообщение Aug 7 2006, 13:34
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448



Собрать проект для работы из RAM и отлаживаться. Или я что-то не так понял?
Go to the top of the page
 
+Quote Post
SpiritDance
сообщение Aug 7 2006, 15:12
Сообщение #3


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

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



Цитата
Собрать проект для работы из RAM и отлаживаться

Я не понял. Как это сделать? С помощью скаттер файла? Если да то киньте пример для работы в ОЗУ.
Второй вопрос достаточно ли отладчику поставить галочку load application at startup чтобы загрузилось именно ОЗУ.


--------------------
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
aaarrr
сообщение Aug 7 2006, 15:36
Сообщение #4


Гуру
******

Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448



Скаттер для работы из ОЗУ в SAM64:

Код
FLASH 0x00000000 0x00010000
{
    RAM 0x00200000 0x00004000
    {
        * (+RO, +RW, +ZI)
    }
}


Места там только маловато.
Go to the top of the page
 
+Quote Post
SpiritDance
сообщение Aug 7 2006, 18:10
Сообщение #5


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

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



Я уже устал говорить Вам спасибо smile.gif С меня пиво... ну или что-нибудь полезное. smile.gif

Сообщение отредактировал SpiritDance - Aug 7 2006, 18:10


--------------------
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
SpiritDance
сообщение Aug 22 2006, 11:17
Сообщение #6


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

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



Все-таки я чего-то не понимаю. Скаттер-файл
Цитата
LR_IROM1 0x00000000 0x00004000
{ ; load region
RW_IRAM1 0x00200000 0x00004000
{ ; RW data
*.o (RESET, +First)
* (+RO +RW +ZI)
}
}

Вижу ругань
Цитата
usarttest.axf: Error: L6202E: __main.o(!!!main) cannot be assigned to non-root region 'RW_IRAM1'
usarttest.axf: Error: L6202E: anon$$obj.o(Region$$Table) cannot be assigned to non-root region 'RW_IRAM1'


Я правильно понимаю что
RO - код
RW - данные
ZI - стек?

Что означает строчка
*.o (RESET, +First)?

Ну и самый главный вопрс что не так? Почему не нравится load-регион с нулевым начальным адресом?Размер пробовал изменять до 0x00204000 результат тот же.


--------------------
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
vet
сообщение Aug 22 2006, 11:30
Сообщение #7


Знающий
****

Группа: Свой
Сообщений: 550
Регистрация: 16-06-04
Из: Казань
Пользователь №: 32



RO - Read-only
RW - Read & Write
ZI - Zero-initialized


--------------------
Главная линия этого опуса ясна мне насквозь!
Go to the top of the page
 
+Quote Post
SpiritDance
сообщение Aug 22 2006, 11:39
Сообщение #8


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

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



А дальше? smile.gif


--------------------
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
aaarrr
сообщение Aug 22 2006, 11:54
Сообщение #9


Гуру
******

Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448



Цитата(SpiritDance @ Aug 22 2006, 15:17) *
Все-таки я чего-то не понимаю. Скаттер-файл


Наверное, нужно написать что-то вроде:
Код
LR_IROM1 0x00000000 0x00004000
{ ; load region
    RO_IROM1 0x00000000 0x00004000
    {
        *.o (RESET, +First)
        __main.o (*)
        * (Region$$Table)
        * (ZISection$$Table)
    }
    RW_IRAM1 0x00200000 0x00004000  
    { ; RW data
        * (+RO +RW +ZI)
    }
}


Цитата(SpiritDance @ Aug 22 2006, 15:17) *
Что означает строчка
*.o (RESET, +First)?

Это значит, что секция RESET будет расположена в начале адресного пространства.

Сообщение отредактировал aaarrr - Aug 22 2006, 11:55
Go to the top of the page
 
+Quote Post
SpiritDance
сообщение Aug 23 2006, 06:17
Сообщение #10


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

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



Не-а. Не угадали.
Цитата
usarttest.axf: Error: L6202E: __scatter.o(!!!scatter) cannot be assigned to non-root region 'RW_IRAM1'
usarttest.axf: Error: L6202E: __scatter_copy.o(!!handler_copy) cannot be assigned to non-root region 'RW_IRAM1'
usarttest.axf: Error: L6202E: __scatter_zi.o(!!handler_zi) cannot be assigned to non-root region 'RW_IRAM1'

Объясните что значит это шаманство если нетрудно.

Насколько я понял часть кода, включая то что находится в main грузится во флеш, которая в начале адресного пространства до ремапа? если так то почему так криво?


--------------------
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
aaarrr
сообщение Aug 23 2006, 15:52
Сообщение #11


Гуру
******

Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448



Цитата(SpiritDance @ Aug 23 2006, 10:17) *
Не-а. Не угадали.

Бывает smile.gif

Цитата(SpiritDance @ Aug 23 2006, 10:17) *
Объясните что значит это шаманство если нетрудно.

Это отнюдь не шаманство. Просто нужно указать линкеру, что загрузчик (scatter) нужно оставить во флеш, для ADS было достаточно указать __main.o (*). Попробуйте добавить в RO_IROM1 строку __scatter* (*) - должно помочь, по-идее.

Цитата(SpiritDance @ Aug 23 2006, 10:17) *
Насколько я понял часть кода, включая то что находится в main грузится во флеш, которая в начале адресного пространства до ремапа? если так то почему так криво?

Во-первых, это не тот main, что int main(void), это __main из стартапа.
Во-вторых забудьте слово "remap" применительно к процессору AT91SAM7S64. Не нужен он.
Go to the top of the page
 
+Quote Post
SpiritDance
сообщение Aug 24 2006, 05:38
Сообщение #12


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

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



Ясно я попробую так упаковать все файлы которые линкер попросит, главное чтобы это не вся программа была. smile.gif попозжее...


--------------------
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
SpiritDance
сообщение Aug 25 2006, 13:32
Сообщение #13


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

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



Уряяя! Получилось!
Код
LR_IROM1 0x00000000 0x00004000
{; load region
    RO_IROM1 0x00000000 0x00004000
    {
        *.o (RESET, +First)
        __main.o (*)
        __scatter*.o (*)
        * (Region$$Table)
        * (ZISection$$Table)
    }
    RW_IRAM1 0x00200000 0x00004000  
    {; RW data
        * (+RO +RW +ZI)
    }
}


Сообщение отредактировал SpiritDance - Aug 25 2006, 13:33


--------------------
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
aaarrr
сообщение Aug 25 2006, 13:56
Сообщение #14


Гуру
******

Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448



Ну вот и славно. Пора и мне на RealView переползать, наверное.
Go to the top of the page
 
+Quote Post
zorromen
сообщение Oct 4 2007, 18:29
Сообщение #15


Местный
***

Группа: Свой
Сообщений: 322
Регистрация: 13-12-05
Пользователь №: 12 147



Ну с отладкой в рам, это понятно. (После того что здесь написано). Так вот, неочень ясно, это что хоть я и отлаживаю программу с Рам. Тока всеравно придется писать заголовки в ром. А ром ведь не бесконечный цикл перезаписи имет. Так я невижу особой пользы отладки программы в рам, если всеравно портиться ром. И еще имею Ulink и lpc2148 Keil. Вот ворос, я мож непонял чего, но перед тем sкак начать отладку, требуется программу сперва туда записать, Flash->Download, А потом начинать отладкую. Верно? Просто после АВР, когда заливаласьпрошивка вседа при одкладке, это неного приятно удивтло. А чего я спрашиваю, казалось уже ответив. Просто когда я запускаю отладку с параметрами Download to Flash, то он неможет залить прошивку, пишет
/----------------------/
Ulink ARM Error |X|
/----------------------/
Memory Missmatch!
Adress: 0x00000000
Value =0xFF
Expected = 0x18

Это как понимать? А через Flash->Download шьется.
Go to the top of the page
 
+Quote Post
romashko
сообщение Oct 5 2007, 02:35
Сообщение #16


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

Группа: Свой
Сообщений: 85
Регистрация: 25-12-06
Пользователь №: 23 865



Цитата(zorromen @ Oct 5 2007, 05:29) *
Тока всеравно придется писать заголовки в ром. А ром ведь не бесконечный цикл перезаписи имет. Так я невижу особой пользы отладки программы в рам, если всеравно портиться ром.


ничего там не надо писать! и скатер править тоже не надо!
далее для примера с AT91SAM7****:

в Project/Options for Target/Target заполняем поля:
Read/Only memory areas фишка на IROM1 указываем start: 0x202000 size:0x2000
Read/Write memory areas фишка на IRAM1 указываем start: 0x204000 size:0x2000

в Project/Options for Target/Linker ставим галку use memory layout from Target Dialog
(чтоб со всякими катерами не трахаца)

в стартапе коментим директивы условной компиляции (remap/copy vectors):
Код
; Copy Exception Vectors to Internal RAM
ADR     R8, Vectors        ; Source
LDR     R9, =RAM_BASE      ; Destination
LDMIA   R8!, {R0-R7}       ; Load Vectors
STMIA   R9!, {R0-R7}       ; Store Vectors
; Remap on-chip RAM to address 0
MC_BASE EQU     0xFFFFFF00     ; MC Base Address
MC_RCR  EQU     0x00           ; MC_RCR Offset
LDR     R0, =MC_BASE
MOV     R1, #1
STR     R1, [R0, #MC_RCR]  ; Remap


далее получаем бинарник и пишем его самбой в SRAM по адресу 0x202000
и делаем Go 0x202000

для приличия снести в сатртапе асм-инструкции, переводящие арм в режим юзера
а супервизору разрешить irq,fiq (убрать биты в CPSR I_bit, F_bit)

и плеш для дебуга в срам не нужна! wink.gif
Go to the top of the page
 
+Quote Post
Leen
сообщение Oct 5 2007, 03:01
Сообщение #17


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

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



Это мой стандартный скаттер для отладки.
Код
RAM_LOAD 0x200000// начало озу в SAM7S
  {
  EXE +0 0x6000// длина для исполняемого кода и констант
    {
    *.o (RESET, +FIRST)// первым в эту область линкуем модуль RESET
    * (+RO)// затем все остальные readonly объекты
    }
  DATA 0x206000 0x2000// регион для данных (см. выше)
    {
    * (+RW +ZI)// кладем все изменяемые данные сюда
    }
  ISR_EXE 0x208000 0x2000// и отдельный регион для функций из объектного файла interrupt.o
// в этот регион попадут все функции, определенные в файле interrupt.c.
    {
    interrupt.o (+RO)
    }
  }

Для отладки из озу в кейле надо прогрузить полученный файл в память контроллера и не забыть сделать ему РЕМАП:
Код
// грузим файл в контроллер
Load obj\vm_ram.axf INCREMENTAL
//делаем ремап
_WDWORD(0xFFFFFF00,0x00000001);//*   Toggle RESET The remap - содрано в ините
// кейловского примера

Этот файл надо скормить кейлу под соусом "ини-файл для отладчика" на вкладке настройки последнего в свойствах проекта.
Go to the top of the page
 
+Quote Post
zorromen
сообщение Oct 5 2007, 03:12
Сообщение #18


Местный
***

Группа: Свой
Сообщений: 322
Регистрация: 13-12-05
Пользователь №: 12 147



Спасибо. Вах. wink.gif
Go to the top of the page
 
+Quote Post

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

 


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


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