|
отладка из RAM в кейл |
|
|
|
Aug 7 2006, 15:12
|

Дух погибшего транзистора
   
Группа: Свой
Сообщений: 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.
|
|
|
|
|
Aug 22 2006, 11:17
|

Дух погибшего транзистора
   
Группа: Свой
Сообщений: 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.
|
|
|
|
|
Aug 22 2006, 11:54
|
Гуру
     
Группа: Свой
Сообщений: 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
|
|
|
|
|
Aug 23 2006, 06:17
|

Дух погибшего транзистора
   
Группа: Свой
Сообщений: 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.
|
|
|
|
|
Aug 23 2006, 15:52
|
Гуру
     
Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448

|
Цитата(SpiritDance @ Aug 23 2006, 10:17)  Не-а. Не угадали. Бывает  Цитата(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. Не нужен он.
|
|
|
|
|
Aug 25 2006, 13:32
|

Дух погибшего транзистора
   
Группа: Свой
Сообщений: 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.
|
|
|
|
|
Oct 4 2007, 18:29
|

Местный
  
Группа: Свой
Сообщений: 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 шьется.
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|