|
|
  |
Разместить массив во внутренней ram, На stm32 |
|
|
|
Jul 2 2016, 17:23
|
Местный
  
Группа: Участник
Сообщений: 408
Регистрация: 28-05-12
Пользователь №: 72 052

|
Цитата(aaarrr @ Jul 2 2016, 18:04)  Нет. Спасибо. Какие средства языка Си нужно использовать для размещения массива во веутренней памяти?
|
|
|
|
|
Jul 3 2016, 09:16
|

Гуру
     
Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095

|
QUOTE (Dubov @ Jul 3 2016, 11:21)  Разве не сработает если вместо аа подставить адрес начала sram? "Это" сработает. Но где вы тут видите размещение массива, о котором спрашивали? aaarrr вам дал единсвенный правильный ответ на ваш вопрос.
--------------------
На любой вопрос даю любой ответ"Write code that is guaranteed to work, not code that doesn’t seem to break" ( C++ FAQ)
|
|
|
|
|
Jul 3 2016, 09:56
|
Гуру
     
Группа: Свой
Сообщений: 5 228
Регистрация: 3-07-08
Из: Омск
Пользователь №: 38 713

|
Цитата(Dubov @ Jul 3 2016, 14:21)  Нашел пример прямой записи по адресу в sdram: Вам уже дали исчерпывающий ответ. Если Вы его не хотите читать, зачем тогда спрашиваете? Цитата(Сергей Борщ @ Jul 3 2016, 15:16)  "Это" сработает. Но где вы тут видите размещение массива, о котором спрашивали? aaarrr вам дал единсвенный правильный ответ на ваш вопрос. Чукча не читатель..... Не хочет он ни в чём разбираться, хочет найти кусок чужого быдлокода чтобы вляпать в свой....  ((
|
|
|
|
|
Jul 3 2016, 11:08
|
Местный
  
Группа: Участник
Сообщений: 408
Регистрация: 28-05-12
Пользователь №: 72 052

|
Цитата(Сергей Борщ @ Jul 3 2016, 12:16)  "Это" сработает. Но где вы тут видите размещение массива, о котором спрашивали? aaarrr вам дал единсвенный правильный ответ на ваш вопрос. В том примере что я нашел происходит размещение массива в динамической памяти Код Выделение массива a в памяти SRAM a = (float *)calloc(n1, sizeof(float)); // Инициализация матрицы // Здесь одномерный массив представляется в виде двумерного // *(float*) (aa +4*i) - выполняется размещение в динамической памяти (SDRAM) // с адреса aa=0xD0100000 чисел массива типа float. i-индекс, изменяющийся с // шагом 1. Его множим на 4, так как тип float занимает 4 байта for(im=1;im<=nn;im++) { for(jm=1;jm<=nn;jm++) { *(float*) (aa +4*(im+(jm-1)*nn)) =1.0f*((float)(im*jm)); *(float*) (bb +4*(im+(jm-1)*nn))=1.0f/(*(float*) (aa +4*(im+(jm-1)*nn))); *(float*) (cc +4*(im+(jm-1)*nn))=0.0f; } } Где аа - это адрес. Полный код здесь: http://www.khnu.km.ua/root/kaf/ksm/sayt2/s...eb/stm32_4.htmlПросто я подумал почему бы не указать адресс внутренней sram. Спасибо за подсказку, просто подумал что есть еще варианты...
Сообщение отредактировал Dubov - Jul 3 2016, 11:37
|
|
|
|
|
Jul 3 2016, 16:03
|
Местный
  
Группа: Участник
Сообщений: 408
Регистрация: 28-05-12
Пользователь №: 72 052

|
Цитата(jcxz @ Jul 3 2016, 18:38)  Кстати: IAR позволяет обойтись без pragma. Не так случайно: static uint8_t buffer[2*1024*1024] __attribute__ ((section (".sram_data")));
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|