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

 
 
> Проблема с GNUARM 4.1.0, Неправильно инициализируются глобальные переменные
Alexey75
сообщение Jul 5 2006, 09:04
Сообщение #1


Участник
*

Группа: Новичок
Сообщений: 25
Регистрация: 10-04-06
Пользователь №: 15 981



В выходном файле ELF вместо необходимых значений в секции .data, находятся нули, в результате при инициализации, глобальные переменные вместо необходимых значений получают нули.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
makc
сообщение Jul 5 2006, 10:16
Сообщение #2


Гуру
******

Группа: Админы
Сообщений: 3 621
Регистрация: 18-10-04
Из: Москва
Пользователь №: 904



На первый взгляд все в порядке. Но проблемы могут быть в другом месте: например после инициализации .data в startup'e Вы при инициализации .bss забиваете нулями и .data. Есть и другие варианты.

Что выдает команда arm-elf-objdump -j .data -sh <имя вашего файла.elf> ?
Приведите результаты ее выполнения.


--------------------
BR, Makc
В недуге рождены, вскормлены тленом, подлежим распаду. (с) У.Фолкнер.
Go to the top of the page
 
+Quote Post
Alexey75
сообщение Jul 5 2006, 10:53
Сообщение #3


Участник
*

Группа: Новичок
Сообщений: 25
Регистрация: 10-04-06
Пользователь №: 15 981



Цитата(makc @ Jul 5 2006, 14:16) *
На первый взгляд все в порядке. Но проблемы могут быть в другом месте: например после инициализации .data в startup'e Вы при инициализации .bss забиваете нулями и .data. Есть и другие варианты.

Что выдает команда arm-elf-objdump -j .data -sh <имя вашего файла.elf> ?
Приведите результаты ее выполнения.


Я извиняюсь я вставил не тот текст скрипта, но мне кажется что суть не меняется, я пристегнул к сообщению архив с файлами: скрипт линкера, crt0.S, и файл с результатом выполнения
arm-elf-objdump -j .data -sh <имя файла.elf>

В результате этой команды видно, что данные есть в секции .data, но при симуляции в GDB данные для инициализации обнуляются
Прикрепленные файлы
Прикрепленный файл  archive.zip ( 5.03 килобайт ) Кол-во скачиваний: 28
 
Go to the top of the page
 
+Quote Post
makc
сообщение Jul 5 2006, 11:08
Сообщение #4


Гуру
******

Группа: Админы
Сообщений: 3 621
Регистрация: 18-10-04
Из: Москва
Пользователь №: 904



Цитата(Alexey75 @ Jul 5 2006, 14:53) *
В результате этой команды видно, что данные есть в секции .data, но при симуляции в GDB данные для инициализации обнуляются


Если мне не изменяет память, то Ваша проблема при симуляции в GDB только в том, что Вы в коде инициализации сами пытаетесь инициализировать ту область памяти, где должна лежать секция .data. Суть проблемы с том, что GDB сам загружает секцию .data в память, когда читает lpc_os.elf, а Вы ее потом затираете в startup'e. Иными словами, для правильной симуляции в GDB нужно закоментировать инициализацю .data в памяти (ее копирование) в crt0.S. При этом в финальной версии кода (для реального устройства) эта инициализация должна присуствовать.


--------------------
BR, Makc
В недуге рождены, вскормлены тленом, подлежим распаду. (с) У.Фолкнер.
Go to the top of the page
 
+Quote Post
Alexey75
сообщение Jul 5 2006, 11:18
Сообщение #5


Участник
*

Группа: Новичок
Сообщений: 25
Регистрация: 10-04-06
Пользователь №: 15 981



Цитата(makc @ Jul 5 2006, 15:08) *
Цитата(Alexey75 @ Jul 5 2006, 14:53) *

В результате этой команды видно, что данные есть в секции .data, но при симуляции в GDB данные для инициализации обнуляются


Если мне не изменяет память, то Ваша проблема при симуляции в GDB только в том, что Вы в коде инициализации сами пытаетесь инициализировать ту область памяти, где должна лежать секция .data. Суть проблемы с том, что GDB сам загружает секцию .data в память, когда читает lpc_os.elf, а Вы ее потом затираете в startup'e. Иными словами, для правильной симуляции в GDB нужно закоментировать инициализацю .data в памяти (ее копирование) в crt0.S. При этом в финальной версии кода (для реального устройства) эта инициализация должна присуствовать.


Спасибо, я понял, в принципе я так и обходил эту проблему, просто я сомневался, что делаю правильно.
Go to the top of the page
 
+Quote Post



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

 


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


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