|
Keil + ассемблер, Новый пустой проект для ассемблера |
|
|
|
Dec 10 2010, 00:28
|
Частый гость
 
Группа: Участник
Сообщений: 177
Регистрация: 24-03-07
Пользователь №: 26 471

|
В качестве примераВ начале статьи описана конфигурация железа. А дальше просто анекдот, что на этом железе сотворили несколько сотен или тысяч человек и те несколько миллиардов-триллионов-квадриллионов долларов, которые были вложены в разработку аппарата  Готов поверить, что аппаратная начинка сама по себе очень надёжная. Железки делать научились, такой агрегат может проработать сотню лет, выполняя возложенные на него функции. Этого и боятся..
|
|
|
|
|
Nov 15 2013, 16:27
|
Участник

Группа: Участник
Сообщений: 52
Регистрация: 5-11-13
Пользователь №: 79 055

|
Как в keil для cortex m4 на ассемблере указать адрес flash памяти с которой начинают записываться (не исполняться) команды. До этого работал только с 8бит avr, там было ".org 0x0100" Попробовал и здесь через ORG Код STACK_TOP EQU 0x20009FFF PRESERVE8 THUMB AREA RESET, CODE, READONLY DCD STACK_TOP DCD Start
ORG 0x08000200 nop ENTRY nop
Start add r10, r10, #0x00000FFF B Start END Выдал ошибку, что ORG не неизвестен (error: A1163E: Unknown opcode ORG , expecting opcode or Macro). Без строки "ORG 0x08000200" программа работает, но с адреса 0x0800000C.
|
|
|
|
|
Nov 16 2013, 17:16
|
Участник

Группа: Участник
Сообщений: 52
Регистрация: 5-11-13
Пользователь №: 79 055

|
Цитата(esaulenka @ Nov 15 2013, 22:10)  Можно просто сместить AREA RESET я не совсем корректно написал, смещать хочу не всю AREA, а задавать адрес меток Цитата(esaulenka @ Nov 15 2013, 22:10)  При необходимости можно сделать несколько AREA можете подсказать, как для AREA задать адрес в коде программы без scatter-файла с которого секция начинается? Цитата(SII @ Nov 16 2013, 10:56)  Вообще, для ARMов обычно используется скрипт компоновщика, в котором прописываются адреса всех секций (AREA) и т.п. вещи. scatter-файл? примеры под конкретные ядра существуют?
|
|
|
|
|
Nov 17 2013, 03:45
|
Знающий
   
Группа: Свой
Сообщений: 549
Регистрация: 13-07-10
Из: Солнечногорск-7
Пользователь №: 58 414

|
Цитата(ЭнСб @ Nov 16 2013, 21:16)  можете подсказать, как для AREA задать адрес в коде программы без scatter-файла с которого секция начинается? Кажется, это невозможно. Цитата scatter-файл? примеры под конкретные ядра существуют? Эти файлы всегда генерируются сами Кейлом, если настройку памяти осуществлять его средствами. Кроме того, они достаточно подробно описаны в документации. Зависят они не от ядер, а от моделей процессоров, поскольку распределение памяти к ядрам отношения не имеет. Вот у меня под NXP LPC1788: Код CODE_IMAGE 0x00000000 ABSOLUTE NOCOMPRESS { STARTUP +0 { *.o (RESET) } KINIT +0 ALIGN 4 { *.o (KINIT) } KERNEL +0 ALIGN 4 { *.o (KERNEL) } KDRIVERS +0 ALIGN 4 { *.o (KDRIVERS) } KERNEL_STRINGS +0 ALIGN 4 { *.o (KERNEL_STRINGS) } }
DATA_IMAGE +0 ALIGN 8 NOCOMPRESS { KDATA 0x10000000 ALIGN 8 { Kernel_Data.o (KDATA) } KBLOCKS +0 ALIGN 8 { *.o (KBLOCKS) } SQA +0 ALIGN 8 { *.o (SQA) } KSTACK +0 ALIGN 8 { *.o (KSTACK) } }
COMMON_PARTITION 0x00010000 ALIGN 8 NOCOMPRESS { TASK_CODE 0x00010000 ALIGN 4 { *.o (.text) *.o (.rodata) } }
TASK_PARTITION +0 ALIGN 8 NOCOMPRESS { TASK_INI_DATA 0x10008000 ALIGN 8 { *.o (.data) } TASK_NOINI_DATA +0 ALIGN 8 { *.o (.bss) } TASK_HEAP +0 ALIGN 8 EMPTY 1024 { } }
|
|
|
|
|
Nov 17 2013, 07:44
|

Гуру
     
Группа: Свой
Сообщений: 2 957
Регистрация: 19-09-06
Из: Москва
Пользователь №: 20 514

|
Цитата(ЭнСб @ Nov 16 2013, 21:16)  можете подсказать, как для AREA задать адрес в коде программы без scatter-файла с которого секция начинается? скаттер либо используется ваш, либо генерится и используется исходя из заданных в красивых окошках значений Цитата(ЭнСб @ Nov 16 2013, 21:16)  scatter-файл? примеры под конкретные ядра существуют? скачайте документацию на линкер там все разжевано досконально
|
|
|
|
|
Nov 20 2013, 11:24
|
Участник

Группа: Участник
Сообщений: 52
Регистрация: 5-11-13
Пользователь №: 79 055

|
Спасибо за ответы, буду разбираться со скриптами. Для оставления пустого пространства с помощью команд в ассемблере нашел только SPACE и FILL, например " FILL 0x10, 0xBF00, 2" вроде заполняет пустыми командами (nop).
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|