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

 
 
> Как объявить правильно массив 40МБ
kolobochishe
сообщение Dec 14 2011, 13:37
Сообщение #1


Местный
***

Группа: Участник
Сообщений: 240
Регистрация: 14-04-10
Из: Россия, г.Челябинск
Пользователь №: 56 634



необходимо объявить ( =создать) массив размером 40МБ. Памяти SDRAM на борту - 64МБ.

1-ый вариант - объявляю глобально - все ОК, но!... прошивка устройства занимает немногим больше размера этого массива. Прошиваю через UART. Очень долго, да и глупо это прошивать пустой массив.

2-ой вариант - создаю динамический массив. Сначала не работает (calloc возвращает NULL). Увеличиваю размер кучи в линкер файле (HEAP) - все ОК, но!... опять прошивка чуть больше 40МБ

Хотел поэкспериментировать с указанием пределов размещения кода программы. Т.е. обмануть линкер. Объявить массив меньше на краю доступной памяти, заведомо указав край намного раньше. Но не получается.

Посоветуйте, как правильно сделать? Чтобы прошивка была нормального размера
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
sigmaN
сообщение Dec 14 2011, 14:17
Сообщение #2


I WANT TO BELIEVE
******

Группа: Свой
Сообщений: 2 617
Регистрация: 9-03-08
Пользователь №: 35 751



А мне кажется не инициализированные данные не должны храниться в бинарнике. Тем более удивило раздувание прошивки из-за увеличения heap.
Ну как вариант наверно можно просто попросить линкера выделить отдельную секцию размером 40мб в RAM, ну а потом уже по ней хоть указателем ходить, хоть массив объявить.

Кстати да, мысль пришла...фишка ведь в том, что все глобальные не инициализированные переменные инициализируются нулями. Это относится и к массивам? Или нет?
Тогда может быть в настройках линкера можно задать рантайм инициализацию(везде так и есть по дефолту) вместо лоадтайм?
Я помню в техасовском CCS было что-то подобное.
Что за проц у вас и что за компилятор?


--------------------
The truth is out there...
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- kolobochishe   Как объявить правильно массив 40МБ   Dec 14 2011, 13:37
- - aaarrr   Цитата(kolobochishe @ Dec 14 2011, 17:37)...   Dec 14 2011, 14:07
- - kolobochishe   Массив пустой только объявляю. вот так unsigned...   Dec 14 2011, 14:27
- - aaarrr   Цитата(sigmaN @ Dec 14 2011, 18:17) Кстат...   Dec 14 2011, 14:31
- - kolobochishe   RE: Как объявить правильно массив 40МБ   Dec 14 2011, 14:41
|- - aaarrr   Цитата(kolobochishe @ Dec 14 2011, 18:36)...   Dec 14 2011, 14:42
- - kolobochishe   массив на адресе 0x80007608 Цитата(aaarrr @ ...   Dec 14 2011, 14:49
|- - aaarrr   Цитата(kolobochishe @ Dec 14 2011, 18:49)...   Dec 14 2011, 14:57
|- - kolobochishe   Цитата(aaarrr @ Dec 14 2011, 19:57) Если ...   Dec 15 2011, 04:03
- - kolobochishe   Хорошо. Ну ROM и RAM действительно в одном и том ж...   Dec 14 2011, 15:10
|- - aaarrr   Цитата(kolobochishe @ Dec 14 2011, 19:10)...   Dec 14 2011, 15:14
- - kolobochishe   а вообще, похоже я чего-то не понял. Не хотел он с...   Dec 14 2011, 15:14
- - toweroff   А не проще сделать так: 1. Выделить для линкера о...   Dec 14 2011, 18:30
- - aaarrr   Цитата(toweroff @ Dec 14 2011, 22:30) А н...   Dec 14 2011, 19:19
- - toweroff   Цитата(aaarrr @ Dec 14 2011, 23:19) Оно, ...   Dec 14 2011, 19:59
- - aaarrr   Цитата(toweroff @ Dec 14 2011, 23:59) объ...   Dec 14 2011, 20:34


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

 


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


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