Цитата(romas2010 @ May 20 2017, 11:41)

Компилятор Keil не разрешает размещать данные в ОЗУ таким образом через __attribute,типа char lcdconf[20] __attribute(at(0x20000000))).....
видимо прихоть его разработчиков...Обхожу данный нюанс при помощи ассемблера
Код
AREA |.ARM.__AT_0x2000000|,DATA,READWRITE
EXPORT lcdconf
lcdconf space 20
в h-файле прописываете
Код
extern char lcdconf[20];
А можно подробнее. Сейсас scatter file выглядит вот так:
Код
; *************************************************************
; *** Scatter-Loading Description File generated by uVision ***
; *************************************************************
LR_IROM1 0x08000000 0x00100000 { ; load region size_region
ER_IROM1 0x08000000 0x00100000 { ; load address = execution address
*.o (RESET, +First)
*(InRoot$$Sections)
.ANY (+RO)
}
RW_IRAM1 0x20010000 0x00040000 { ; RW data
.ANY (+RW +ZI)
}
RW_IRAM2 0x20000000 0x00010000 {
*GUI_CM4F_L.lib (+RO +ZI +RW)
GUI_X_RTE.o (+RO +ZI +RW)
GUIConf.o (+RO +ZI +RW)
.ANY (+RW +ZI)
}
}
Когда подключил его в проект то получил такую ошибку: error: A1355U: A Label was found which was in no AREA.
Если можно, то подробней как обойти предыдущую или эту ситуацию? Как правильно и куда сделать ассемблерную вставку? Спасибо.