|
|
 |
Ответов
|
Jul 7 2018, 13:46
|

Местный
  
Группа: Участник
Сообщений: 257
Регистрация: 5-09-17
Пользователь №: 99 126

|
Три способа: 1) Сделать в линкере секцию и через #pragma section объявлять массив 2) Так же как вы написали : char Buffer[1024] __attribute__((at(0x38800000))); 3) char *Buffer=(char*)0x38000000; Обращаться Buffer[i]=j;
Сообщение отредактировал IgorKossak - Jul 12 2018, 06:06
Причина редактирования: бездумное цитирование
|
|
|
|
|
Jul 8 2018, 13:04
|
Участник

Группа: Участник
Сообщений: 50
Регистрация: 4-09-10
Пользователь №: 59 282

|
Цитата(aaarrr @ Jul 7 2018, 19:01)  Ну, вся работа с регистрами периферии так строится - ничего же  Другое дело, что при таком подходе следует спрятать от линкера тот диапазон адресов, где происходит ручное распределение. А если так, то проще уж сразу определить отдельную секцию. Так как всё таки записать эту секцию для массива в IRAM2 например int Arr [1024]? С началом по конкретному адресу.
Сообщение отредактировал quandr - Jul 8 2018, 13:08
|
|
|
|
|
Jul 8 2018, 15:42
|
Участник

Группа: Участник
Сообщений: 50
Регистрация: 4-09-10
Пользователь №: 59 282

|
Цитата(Forger @ Jul 8 2018, 17:08)  Там только регион указан, а мне по адресу нужно.
|
|
|
|
|
Jul 9 2018, 03:26
|

Местный
  
Группа: Участник
Сообщений: 257
Регистрация: 5-09-17
Пользователь №: 99 126

|
Цитата(Forger @ Jul 8 2018, 17:08)  Эх, совсем молодежь обленела .... http://www.keil.com/support/man/docs/armli...62066000571.htmИмхо, вместо размещения объектов по конкретному адресу, лучше использовать размещение в секциях, а размещение самих секций делать в соотв. scatter файле (скрипт линкера). Выше я дал пример (который почему-то все проигнорировали), что размещение в секции - ещё не гарантирует фактического туда попадания. Поэтому размещение по конкретному адресу - способ надёжнее
|
|
|
|
|
Jul 9 2018, 13:22
|

Местный
  
Группа: Участник
Сообщений: 257
Регистрация: 5-09-17
Пользователь №: 99 126

|
Цитата(Forger @ Jul 9 2018, 07:34)  Не засунет, линкер просто выкинет соотв. ошибку, бинарник не будет создан. Разобрался. Ошибка была в том, что сделал регионы, но секции не засунул. Потому что считал что регион=секция. Оказалось сложнее. Получилось вот так: Код ; Scatter-Loading Description File
LR_FLASH 0x08000000 0x00200000 {
ER_FLASH 0x08000000 0x00200000 { *.o (RESET, +First) *(InRoot$$Sections) .ANY (+RO) }
DTCM 0x20000000 0x00020000 { *.o (DTCM) }
AXI 0x24000000 0x00080000 { .ANY (+RW +ZI) }
SRAM12 0x30000000 0x00040000 { *.o (SRAM12) }
SRAM3 0x30040000 0x00008000 { *.o (SRAM3) }
; SRAM4 0x38000000 0x00010000 ; { ; *.o (SRAM4) ; }
} Я доволен : всё пихается куда надо и работает
|
|
|
|
|
Jul 9 2018, 13:26
|

Профессионал
    
Группа: Свой
Сообщений: 1 215
Регистрация: 22-02-05
Пользователь №: 2 831

|
Цитата(__inline__ @ Jul 9 2018, 16:22)  Разобрался. Дык, это и не удивительно, когда комрады тут все разжевали до косточек и осталось лишь проглотить  Scatter файл позволяет делать очень интересные вещи ... , а это - лишь цветочки  Вместо такой записи, где две области примыкают друг к другу: Код SRAM12 0x30000000 0x00040000 { *.o (SRAM12) }
SRAM3 0x30040000 0x00008000 { *.o (SRAM3) } можно писать чуть проще: Код SRAM123 0x30000000 0x000С0000 { *.o (SRAM12) *.o (SRAM3) }
--------------------
Кругозор некоторых людей - круг с нулевым радиусом. Они называют его "точкой зрения".
|
|
|
|
Сообщений в этой теме
quandr Массив по заданному адресу MDK-ARM (Keil) Jul 7 2018, 12:09   Arlleex Цитата(aaarrr @ Jul 7 2018, 19:01) Ну, вс... Jul 7 2018, 16:41   KRS Цитата(aaarrr @ Jul 7 2018, 19:01) Ну, вс... Jul 8 2018, 08:39       quandr Цитата(Forger @ Jul 8 2018, 19:08) Эх, со... Jul 8 2018, 16:40        Forger Цитата(quandr @ Jul 8 2018, 19:40) Если б... Jul 8 2018, 16:45        Forger Цитата(__inline__ @ Jul 9 2018, 06:26) Вы... Jul 9 2018, 06:20             Forger Цитата(__inline__ @ Jul 9 2018, 16:28) Ва... Jul 9 2018, 13:38 quandr Цитата(__inline__ @ Jul 7 2018, 16:46) Тр... Jul 8 2018, 02:22 k155la3 В файле линкера организовать сегмент и при деклара... Jul 7 2018, 15:41 haker_fox QUOTE (k155la3 @ Jul 7 2018, 23:41) В фай... Jul 8 2018, 00:35 pnp_mechanic Можно так.
const uint16_t NAME [] __attribute__(... Jul 7 2018, 20:05 __inline__ Объявил переменную в секции SRAM3:
Кодu8 AudioBuff... Jul 8 2018, 12:50 aaarrr Цитата(__inline__ @ Jul 8 2018, 15:50) Чт... Jul 9 2018, 06:21 __inline__ ок, попробую разобраться Jul 9 2018, 09:36 __inline__ Продолжая о скаттерах...
Понадобилось мне сделать... Jul 16 2018, 05:26 Forger Цитата(__inline__ @ Jul 16 2018, 08:26) П... Jul 16 2018, 07:57
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|