LWW 0 10 декабря, 2010 Опубликовано 10 декабря, 2010 · Жалоба В качестве примера В начале статьи описана конфигурация железа. А дальше просто анекдот, что на этом железе сотворили несколько сотен или тысяч человек и те несколько миллиардов-триллионов-квадриллионов долларов, которые были вложены в разработку аппарата :01: Готов поверить, что аппаратная начинка сама по себе очень надёжная. Железки делать научились, такой агрегат может проработать сотню лет, выполняя возложенные на него функции. Этого и боятся.. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ЭнСб 0 15 ноября, 2013 Опубликовано 15 ноября, 2013 · Жалоба Как в 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. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
esaulenka 7 15 ноября, 2013 Опубликовано 15 ноября, 2013 · Жалоба Можно просто сместить AREA RESET: - вариант простой: Options for Target -> Target, поправить адреса начала ROM - вариант посложнее: снять галку "брать настройки линкера из настроек target", дописать руками scatter-файл (кейл делает заготовку, в несложных случаях можно понять, что там и как, даже без документации). При необходимости можно сделать несколько AREA, но тогда уж точно простой способ не поможет. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
SII 0 16 ноября, 2013 Опубликовано 16 ноября, 2013 · Жалоба Вообще, для ARMов обычно используется скрипт компоновщика, в котором прописываются адреса всех секций (AREA) и т.п. вещи. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ЭнСб 0 16 ноября, 2013 Опубликовано 16 ноября, 2013 · Жалоба Можно просто сместить AREA RESET я не совсем корректно написал, смещать хочу не всю AREA, а задавать адрес меток При необходимости можно сделать несколько AREA можете подсказать, как для AREA задать адрес в коде программы без scatter-файла с которого секция начинается? Вообще, для ARMов обычно используется скрипт компоновщика, в котором прописываются адреса всех секций (AREA) и т.п. вещи. scatter-файл? примеры под конкретные ядра существуют? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
SII 0 17 ноября, 2013 Опубликовано 17 ноября, 2013 · Жалоба можете подсказать, как для 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 { } } Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
toweroff 1 17 ноября, 2013 Опубликовано 17 ноября, 2013 · Жалоба можете подсказать, как для AREA задать адрес в коде программы без scatter-файла с которого секция начинается? скаттер либо используется ваш, либо генерится и используется исходя из заданных в красивых окошках значений scatter-файл? примеры под конкретные ядра существуют? скачайте документацию на линкер там все разжевано досконально Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ЭнСб 0 20 ноября, 2013 Опубликовано 20 ноября, 2013 · Жалоба Спасибо за ответы, буду разбираться со скриптами. Для оставления пустого пространства с помощью команд в ассемблере нашел только SPACE и FILL, например " FILL 0x10, 0xBF00, 2" вроде заполняет пустыми командами (nop). Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться