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

 
 
> Инициализация данных в SDRAM
yanvasiij
сообщение May 6 2016, 11:04
Сообщение #1


Местный
***

Группа: Свой
Сообщений: 321
Регистрация: 23-12-11
Из: Уфа
Пользователь №: 69 041



Доброго времени суток!

Вопрос возможно дурацкий, но все же... Подключаю внешнюю SRAM к STM32 через FMC, компилятор arm-none-eabi. Параметры расположения данных в памяти настраиваю через файлa линковки. Расположить объявленный, например, массив во внешней SRAM труда не составит, но как сделать так, чтобы этот массив можно было инициализировать объявлением?

Пусть есть файл someFile.c, переменные внутри которого расположены во внешней SRAM c помощью файл линковки.

Код
int data[20] = {1,2,3...20};


Инициализация к массиву data[] осуществляется после инициализации SDRAM в файле main.c

Код
extern int *data;

int main (void)
{
    SDRAM_init(); /*< Вот тут память инициализаруется */

   printf ("data: %d\r", data[5]);

  while (1)
  {
    ...
  }
}


Есть ли способ переиницилизировать все массивы данными, которыми они были инициализированы при объявлении, не прибегая к рукопашному присваиванию?

Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
yanvasiij
сообщение Oct 7 2016, 05:58
Сообщение #2


Местный
***

Группа: Свой
Сообщений: 321
Регистрация: 23-12-11
Из: Уфа
Пользователь №: 69 041



Цитата(alx2 @ Sep 22 2016, 12:17) *
Ну вот. Оказывается, файл-то не heap_1.o, а ..\obj\heap_1.o! То есть он не в текущем каталоге, а в ../obj. А в скрипте линкера Вы как этот файл указали?


Наконец-то дошли руки проверить. Сделал, с учетом каталога, после Вашего замечания:

Код
  .bss.sdram : {
      ..\obj\heap_4.o(.bss)
  } >SDRAM


Все работает как надо! Спасибо большое!

Правда теперь возникла другая трудность: этот файл используется при компиляции статической библиотеки. При компиляции уже конечного приложения с использованием этой библиотеки, в map-файле этот heap_4 (без переноса его в SDRAM) появляется следующим образом:

Код

.data          0x00000000        0x0 librunTime.a(heap_4.c.obj)
.rodata        0x00000000        0x4 librunTime.a(heap_4.c.obj)

...
.bss           0x200084bc    0x19018 librunTime.a(heap_4.c.obj)


Подскажите, как теперь переместить фрагмент либы в sdram? Пробовал вот так:

Код
  .bss.sdram : {
      librunTime.a(heap_4.c.obj)(.bss)
  } >SDRAM


Выдает ошибку синтаксиса.
Go to the top of the page
 
+Quote Post
alx2
сообщение Oct 10 2016, 10:14
Сообщение #3


Местный
***

Группа: Участник
Сообщений: 340
Регистрация: 25-10-05
Из: Пермь, Россия
Пользователь №: 10 091



Цитата(yanvasiij @ Oct 7 2016, 11:58) *
Выдает ошибку синтаксиса.

И правильно делает, что выдает. Смотрите в руководстве, как надо указывать ссылки на файлы в архивах:
Код
You can also specify files within archives by writing a pattern matching the archive, a colon, then the pattern matching the file, with no whitespace around the colon.

`archive:file'
    matches file within archive
`archive:'
    matches the whole archive
`:file'
    matches file but not one in an archive


--------------------
Всего наилучшего,
Alex Mogilnikov
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- yanvasiij   Инициализация данных в SDRAM   May 6 2016, 11:04
- - Непомнящий Евгений   инициализацию памяти надо вынести в функцию, котор...   May 6 2016, 11:11
|- - skripach   Нужно определить функцию __low_level_init, или фай...   Sep 15 2016, 14:29
- - amiller   По моему сделать так как Вы хотите невозможно. На ...   May 6 2016, 11:20
|- - Непомнящий Евгений   Цитата(amiller @ May 6 2016, 14:20) По мо...   May 6 2016, 12:02
|- - amiller   Цитата(Непомнящий Евгений @ May 6 2016, 14...   May 6 2016, 12:09
|- - Tarbal   Цитата(Непомнящий Евгений @ May 6 2016, 16...   Sep 18 2016, 23:12
- - yanvasiij   Цитата(Непомнящий Евгений @ May 6 2016, 16...   May 6 2016, 11:31
- - yanvasiij   Цитата(Непомнящий Евгений @ May 6 2016, 17...   May 18 2016, 05:19
- - yanvasiij   Спрошу тут, чтобы не плодить веток. Подскажите как...   Sep 13 2016, 10:42
|- - alx2   Цитата(yanvasiij @ Sep 13 2016, 16:42) Сп...   Sep 15 2016, 05:01
- - yanvasiij   Добавил в скрипт эти строчки, при сборке выдает ош...   Sep 15 2016, 09:18
|- - alx2   Цитата(yanvasiij @ Sep 15 2016, 15:18) До...   Sep 16 2016, 06:54
- - yanvasiij   Цитата(alx2 @ Sep 16 2016, 11:54) Не поня...   Sep 16 2016, 13:24
|- - alx2   Цитата(yanvasiij @ Sep 16 2016, 19:24) Та...   Sep 19 2016, 13:45
- - yanvasiij   В map-файле этот файл упоминается в нескольких мес...   Sep 20 2016, 09:58
|- - alx2   Цитата(yanvasiij @ Sep 20 2016, 15:58) Ко...   Sep 22 2016, 07:17


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

 


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


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