Перейти к содержанию
    

Migration ADS 1.2 to KEIL 5

Перетаскиваю старый проект из ADS 1.2 в KEIL 5.

Помогите перенести следующий кусок:

BSS_Start_Ptr
    IMPORT  |Image$$ZI$$Base|
    DCD     |Image$$ZI$$Base|
;
BSS_End_Ptr
    IMPORT  |Image$$ZI$$Limit|
    DCD     |Image$$ZI$$Limit|
;
ROM_Data_Start_Ptr
    IMPORT  |Image$$RO$$Limit|
    DCD     |Image$$RO$$Limit|
;
RAM_Start_Ptr
    IMPORT  |Image$$RW$$Base|
    DCD     |Image$$RW$$Base|
  
.......
  
  	LDR     a1,[pc, #ROM_Data_Start_Ptr-.-8]
	LDR     a2,[pc, #RAM_Start_Ptr-.-8]     
	LDR     a4,[pc, #BSS_Start_Ptr-.-8]     
 

KEIL не понимает эти константы L6218E: Undefined symbol Image$$RO$$Limit

Тут пишут http://www.keil.com/support/man/docs/armlink/armlink_pge1362065957713.htm что нужно создать секции в скаттер файле.

Но ведь в скаттер файле это будут фиксированные адреса. А сейчас в ADS нет фиксированных адресов. Или я что-то неправильно понимаю?

Программа и данные находятся во внешней RAM.

Сейчас у меня такие адреса:

Image$$RO$$Base = 0x40000000
Image$$RO$$Limit= 0x400739a8
Image$$RW$$Base = 0x400739a8
Image$$RW$$Limit= 0x402d7814
Image$$ZI$$Base = 0x40097524
Image$$ZI$$Limit= 0x402d7814

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Согласно этому должно быть не так

ROM_Data_Start_Ptr
    IMPORT  |Image$$RO$$Limit|
    DCD     |Image$$RO$$Limit|

а так:

    IMPORT  |Image$$RO$$Limit|
    ROM_Data_Start_Ptr DCD     |Image$$RO$$Limit|

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Проблема в том что кейл не понимает эти константы.

Вот так он понимает:

BSS_Start_Ptr
	IMPORT  |Image$$ER_IROM1$$ZI$$Base|
	DCD     |Image$$ER_IROM1$$ZI$$Base|
;
BSS_End_Ptr
	IMPORT  |Image$$ER_IROM1$$ZI$$Limit|
	DCD     |Image$$ER_IROM1$$ZI$$Limit|
;
ROM_Data_Start_Ptr
	IMPORT  |Image$$ER_IROM1$$RO$$Limit|
	DCD     |Image$$ER_IROM1$$RO$$Limit|
;
RAM_Start_Ptr
	IMPORT  |Image$$ER_IROM1$$RW$$Base|
	DCD     |Image$$ER_IROM1$$RW$$Base|

Нашел тут https://community.arm.com/developer/tools-software/tools/f/keil-forum/22328/determining-image-size-from-within-code

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Общий стнтаксис описан тут. Здесь region_name - имя интересующего execution region. Он берется из линкер-скрипта .sct. А туда попадает из меню опций проекта (вкладка линкер). Там предопределено несколько стандартных имен для регионов памяти. Но никто не мешает написать линкер-скрипт самому и использовать его. Тогда имена регионов могут быть любыми, отличными от стандартных предопоеделенных в Кейле.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...