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

 
 
> IAR ARM 6.3 загрузка в RAM заливает неверный код
megajohn
сообщение Feb 5 2015, 16:09
Сообщение #1


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

Группа: Свой
Сообщений: 1 080
Регистрация: 16-11-04
Из: СПб
Пользователь №: 1 143



MCU:
LPC1778
ROM=0x0000 0000....
RAM=0x1000 0000...

Делаю загрузчик, и столкнулся что ассемблерный код в памяти не соответствует сишнику, и не соответствует коду, что для флеши.
Меняю только адрес для ROM и регистр VTOR

Debugger->run_to = выключено ( то есть после загрузки сразу встаем на вектор сброса )
и уже на этапе загрузки битые значения

поставил бряк стоит на изменение где лежит эти инструкции mem_set - нечего не выявил

что может портиться при загрузке программы в RAM через JTAG ? Кто сталкивался ?

Add: если гружу в RAM в симуляторе - то всё нормально. А через jLink беда

Add2:
включил Verify Download + Supress Download и куча ошибок
Thu Feb 05, 2015 19:22:58: Warning:
Verify error at address 0x10000001, target byte: 0xBE, byte in file: 0xA1
Thu Feb 05, 2015 19:22:58: Warning:
Verify error at address 0x10000002, target byte: 0xFE, byte in file: 0x00
Thu Feb 05, 2015 19:22:58: Warning:
Verify error at address 0x10000003, target byte: 0xE7, byte in file: 0x10
Thu Feb 05, 2015 19:22:58: Warning:
Verify error at address 0x10000004, target byte: 0x81, byte in file: 0xDD
Thu Feb 05, 2015 19:22:58: Warning:

если только Verify Download то ошибок нет и вектора нормально, а моя функция битая =(
Эскизы прикрепленных изображений
Прикрепленное изображение
 


--------------------
Марс - единственная планета, полностью населенная роботами (около 7 штук).
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
jcxz
сообщение Feb 5 2015, 16:58
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 5 228
Регистрация: 3-07-08
Из: Омск
Пользователь №: 38 713



Возможно у Вас какие-то косяки в командном файле линкёра (.icf) - может какие-то секции накладываются друг на друга.
Попробуйте заменить базовый адрес 0x10000000 на другую часть ОЗУ.
По-крайней мере у меня в одном проекте (LPC1768) сборка проекта для отладки делается полностью в ОЗУ. И никаких проблем. Тоже JLink.
Вот описание регионов RAM из этого проекта:
Код
define region RAM_regionA     = mem:[from 0x10000000 size 0x8000]; //main RAM
define region RAM_regionBB    = mem:[from 0x2007C000 size 0x3000];
define region RAM_regionB     = mem:[from 0x2007F000 size 0x5000]; //AHB RAM

RO-секции линкуются в RAM_regionA и RAM_regionBB, RW-секции - в RAM_regionB. Flash не используется.

ЗЫ: Как это Вы ReadOnlyMemory умудряетесь JTAG-ом шить? wink.gif
Go to the top of the page
 
+Quote Post
megajohn
сообщение Feb 5 2015, 17:07
Сообщение #3


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

Группа: Свой
Сообщений: 1 080
Регистрация: 16-11-04
Из: СПб
Пользователь №: 1 143



Цитата(jcxz @ Feb 5 2015, 19:58) *
Возможно у Вас какие-то косяки в командном файле линкёра (.icf) - может какие-то секции накладываются друг на друга.

да уже не раз всё перепроверил. Вот чуть чего файл Прикрепленный файл  LPC1778_Ram.txt ( 1.87 килобайт ) Кол-во скачиваний: 295


Цитата(jcxz @ Feb 5 2015, 19:58) *
ЗЫ: Как это Вы ReadOnlyMemory умудряетесь JTAG-ом шить? wink.gif

а как Segger->FlashCommander и IAR со снятой галкой FlashLoader заливают ? ( то что в IAR C-spy заливает в RAM свой прошивальщик знаю, но это когда стоит опция )


--------------------
Марс - единственная планета, полностью населенная роботами (около 7 штук).
Go to the top of the page
 
+Quote Post
jcxz
сообщение Feb 6 2015, 03:39
Сообщение #4


Гуру
******

Группа: Свой
Сообщений: 5 228
Регистрация: 3-07-08
Из: Омск
Пользователь №: 38 713



Цитата(megajohn @ Feb 5 2015, 23:07) *
да уже не раз всё перепроверил. Вот чуть чего файл Прикрепленный файл  LPC1778_Ram.txt ( 1.87 килобайт ) Кол-во скачиваний: 295

Может у Вас секция с векторами прерываний на начало ROM_region накладывается (слишком большая)? Смотрите .map-файл.
Определите для векторов также отдельный регион, чтобы линкёр контролировал его размер, либо сделайте ROM_region от 0x10000000 и расположите в его начале секцию векторов: place in ROM_region {ro, first section .intvec, ...}.
В целом вроде всё нормально.
Цепляю Вам сюда свой ram.icf для LPC1768 - всё отлично работает. Для LPC1778 увеличить только соотв. регионы да убрать ненужные секции.
Прикрепленный файл  ram.txt ( 1.76 килобайт ) Кол-во скачиваний: 128

Цитата(megajohn @ Feb 5 2015, 23:07) *
а как Segger->FlashCommander и IAR со снятой галкой FlashLoader заливают ? ( то что в IAR C-spy заливает в RAM свой прошивальщик знаю, но это когда стоит опция )

ROM != flash

Цитата(Сергей Борщ @ Feb 5 2015, 23:56) *
Возможно глупость скажу, но у ИАРа Flash Loader - программа, которую отладчик грузит в ОЗУ, запускает и именно она заливает прошивку во флеш. Если вы грузите в ОЗУ, то Flash Loader грузить не надо.

"Use flash loader" в настройках Debugger не нужно включать ни при загрузке в RAM ни при прошивке во Flash. У меня и без неё прекрасно шьёт. На той вкладке только "Verify download" нужно вкл.

ЗЫ: А вообще совет - заменить IAR на хотя-бы 6.50. В 6.30 были глюки - неверно код компилил. Я приводил сюда примеры в своё время.
Go to the top of the page
 
+Quote Post
megajohn
сообщение Feb 6 2015, 08:38
Сообщение #5


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

Группа: Свой
Сообщений: 1 080
Регистрация: 16-11-04
Из: СПб
Пользователь №: 1 143



АААА ! Нашел !

RAM used by Boot process prior to entering user program Following chip reset, the Boot program uses a subset of the RAM that is used for ISP command handling.
This includes location 0x1000 0120 and also parts of the top 32 bytes of on-chip RAM.
The stack is located at RAM top - 32. The maximum stack usage is 32 bytes.
If the user program assumes that RAM is unchanged during a reset where power is not removed from the device, it is important to be aware of these exceptions.


а в LPC1768 же

RAM used by ISP command handler ISP commands use on-chip RAM from 0x1000 0118 to 0x1000 01FF .
The user could use this area, but the contents may be lost upon reset. Flash programming commands use the top 32 bytes of on-chip RAM.
The stack is located at RAM top - 32. The maximum stack usage is 256 bytes and it grows downwards.


--------------------
Марс - единственная планета, полностью населенная роботами (около 7 штук).
Go to the top of the page
 
+Quote Post
jcxz
сообщение Feb 6 2015, 13:47
Сообщение #6


Гуру
******

Группа: Свой
Сообщений: 5 228
Регистрация: 3-07-08
Из: Омск
Пользователь №: 38 713



Цитата(megajohn @ Feb 6 2015, 14:38) *
АААА ! Нашел !

Мимо кассы.
И причём здесь это? Вы же грузите через JTAG. А это - для встроенного бутлоадера, загружающего через ISP и для IAP (работающего флеш).
Ни то ни другое у Вас не должно использоваться.
К тому-же - я же привёл свой .icf - там у меня в этой области как раз находятся ro-секции. И никаких проблем и затираний.

Даже для IAP приведённое Вами имхо - неактуально. Я как-то проверял, вызывая функции IAP из под отладчика - никакой из 4-х краёв регионов ОЗУ (чтобы не понималось под "top") не портится.
Кроме собственно стека, на котором происходит вызов. Так что думаю - этот кусок мануала уже неактуален, а остался от какой-то старой версии прошивки ROM.

Цитата(A. Fig Lee @ Feb 6 2015, 18:07) *
А у меня нет, шьет плохо, с ошибками без этой галочки.

Озвучьте МК.
У меня несколько текущих проектов на LPC1758/LPC1768/LPC1778 - везде шьётся и грузится без галки.
Вероятно - у Вас в чём-то другом проблема.
Go to the top of the page
 
+Quote Post
megajohn
сообщение Feb 9 2015, 09:44
Сообщение #7


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

Группа: Свой
Сообщений: 1 080
Регистрация: 16-11-04
Из: СПб
Пользователь №: 1 143



Цитата(jcxz @ Feb 6 2015, 16:47) *
У меня несколько текущих проектов на LPC1758/LPC1768/LPC1778...


могу ли Вас попросить проверить приложенный mcu_ldr_tst.rar ?

А то хочется разобраться до конца, но у себя уже всё что мог посмотрел ( даже логи работы Jlink )

Либо у кого есть LPC1778/1788 + минутка свободного времени ?


--------------------
Марс - единственная планета, полностью населенная роботами (около 7 штук).
Go to the top of the page
 
+Quote Post
jcxz
сообщение Feb 9 2015, 10:24
Сообщение #8


Гуру
******

Группа: Свой
Сообщений: 5 228
Регистрация: 3-07-08
Из: Омск
Пользователь №: 38 713



Цитата(megajohn @ Feb 9 2015, 15:44) *
могу ли Вас попросить проверить приложенный mcu_ldr_tst.rar ?

А что хотите узнать?
Запустил у себя на LPC1778 Ваш проект. Всё ок - до функции main дошёл нормально.
Вот содержимое ОЗУ на точке входа в main():
Прикрепленное изображение
Go to the top of the page
 
+Quote Post
megajohn
сообщение Feb 9 2015, 10:34
Сообщение #9


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

Группа: Свой
Сообщений: 1 080
Регистрация: 16-11-04
Из: СПб
Пользователь №: 1 143



Цитата(jcxz @ Feb 9 2015, 13:24) *
А что хотите узнать?
Запустил у себя на LPC1778 Ваш проект. Всё ок - до функции main дошёл нормально.


дык вы загрузились через JTAG, boot loader не используется, тогда почему по 0x10000120 не то что должно быть ?
Как бы вы и опровергаете все свои ранее озвученные аргументы


--------------------
Марс - единственная планета, полностью населенная роботами (около 7 штук).
Go to the top of the page
 
+Quote Post
jcxz
сообщение Feb 9 2015, 10:46
Сообщение #10


Гуру
******

Группа: Свой
Сообщений: 5 228
Регистрация: 3-07-08
Из: Омск
Пользователь №: 38 713



Какие именно аргументы я опроверг????
Я вообще-то говорил, что я отлаживаю у себя в проекте на LPC1768 в ОЗУ и всё работает ок.
Про Ваш проект я ничего не говорил, ибо не знал как у Вас сделано.

ЗЫ: А как Вам нравится такая картинка?
Прикрепленное изображение

А я всего лишь сделал одно мааааааленькое изменение в Вашем проекте.... Только и всего sm.gif
Угадаете где? wink.gif
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- megajohn   IAR ARM 6.3 загрузка в RAM заливает неверный код   Feb 5 2015, 16:09
||- - megajohn   Цитата(jcxz @ Feb 6 2015, 16:47) Мимо кас...   Feb 6 2015, 15:02
||- - jcxz   Отгадка:   Feb 9 2015, 14:34
|- - A. Fig Lee   Цитата(jcxz @ Feb 5 2015, 22:39) "Us...   Feb 6 2015, 12:07
- - Сергей Борщ   Возможно глупость скажу, но у ИАРа Flash Loader - ...   Feb 5 2015, 17:56
- - Golikov A.   кортекс м3 в каком то месте записывает контрольную...   Feb 6 2015, 16:55
- - megajohn   Цитата(Golikov A. @ Feb 6 2015, 19:55) ко...   Feb 8 2015, 06:30
- - jcxz   Цитата(Golikov A. @ Feb 6 2015, 22:55) ко...   Feb 8 2015, 06:35


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

 


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


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