Как создать проект только для сборки в Code Composer Studio (CCS) для серии TI MSP432

Я могу скопировать какой-нибудь существующий проект сборки, однако с ним связано много файлов, и мне интересно, нужны ли они.

Другой способ перефразировать этот вопрос заключается в том, что я хотел настроить CCS или Eclipse для сборки / установки / отладки платы разработки MSP432 Launchpad, какими бы были минимальные шаги и файлы.

Я спрашиваю, потому что я (опубликую как другой вопрос) хочу установить прерывание (только в сборке) для захвата ввода на порт GPIO.

Я прочитал много теории, но они не переводят на конкретные конкретные шаги.

ОБНОВИТЬ:

Для STM32 Nucleo это очень просто. Для использования arm gcc, gdb и st-link достаточно двух файлов. Вот пример, показывающий некоторый код, выполняемый в обработчике сброса. Но MSP432 кажется более сложным.

файл linker.script.ld:

/* Define the end of RAM and limit of stack memory */
/* (4KB SRAM on the STM32F031x6 line, 4096 = 0x1000) */
/* (RAM starts at address 0x20000000)
_estack = 0x20001000;

MEMORY
{
    FLASH ( rx )      : ORIGIN = 0x08000000, LENGTH = 32K
    RAM ( rxw )       : ORIGIN = 0x20000000, LENGTH = 4K
}

файл core.S:

/*************************************************************************
* PART 1 - SETUP - DIRECTIVES
*************************************************************************/

// These instructions define attributes of our chip and

// the assembly language we'll use:
.syntax unified        /* See below after this code area */
/*.cpu cortex-m0 */ /*comment out this line of the example */
.cpu cortex-m4     /* add instead our board's cortex. see above image in this step */

/*.fpu softvfp */ /* comment out this line of the example */
.fpu vfpv4         /* add instead our board's; it does have an FPU */

.thumb

// Global memory locations.
.global vtable
.global reset_handler

/*
 * The actual vector table.
 * Only the size of RAM and 'reset' handler are
 * included, for simplicity.
 */
.type vtable, %object
vtable:
    .word _estack
    .word reset_handler
.size vtable, .-vtable



/*************************************************************************
* PART 2 - CODE - Hello World
*************************************************************************/

/*
 * The Reset handler. Called on reset.
 */
.type reset_handler, %function
reset_handler:
  // Set the stack pointer to the end of the stack.
  // The '_estack' value is defined in our linker script.
  LDR  r0, =_estack
  MOV  sp, r0

  // Set some dummy values. When we see these values
  // in our debugger, we'll know that our program
  // is loaded on the chip and working.
  LDR  r7, =0xDEADBEEF
  MOVS r0, #0
  main_loop:
    // Add 1 to register 'r0'.
    ADDS r0, r0, #1
    // Loop back.
    B    main_loop
.size reset_handler, .-reset_handler

компиляции:

arm-none-eabi-gcc -x assembler-with-cpp -c -O0 -mcpu=cortex-m0 -mthumb -Wall core.S -o core.o

ссылка на сайт:

arm-none-eabi-gcc core.o -mcpu=cortex-m0 -mthumb -Wall --specs=nosys.specs -nostdlib -lgcc -T./STM32F031K6T6.ld -o main.elf

ОБНОВЛЕНИЕ: надеюсь, это поможет, если я смогу решить, что нужно устранить, что нужно изменить. Это сборочный проект в Code Composer, из которого я копирую. В этом дереве проекта "Assembly.asm" - это файл, с которым я всегда работал. У него есть мой код и директивы. AssemblyProject

Вот текущие параметры включения компилятора проекта: Параметры включения компилятора

--благодарю вас

1 ответ

Это может быть болезненно, поскольку в CCS нет встроенной поддержки сборочных проектов на этом процессоре. Я преподаю класс встраиваемых систем, где мы пишем ассемблерный код для 432, поэтому мне нужно было самому разобраться в этом. Вот что я сделал, чтобы изменить проект CCS и заставить его работать с ассемблерным кодом:

  • Параметры включения компилятора изменены, чтобы удалить пути включения по умолчанию (но корень проекта должен быть сохранен):

    • ROOT/ рука / включить
    • ROOT/ рука / включить / cmsis
    • ROOT/ включить
  • Параметры пути поиска файла компоновщика были изменены, чтобы удалить libc.a как файл библиотеки по умолчанию.

  • Параметры пути поиска файлов компоновщика были изменены, чтобы удалить пути включения по умолчанию:

    • ROOT/ рука / включить
    • ROOT/ рука / включить / cmsis
    • ROOT/ включить
  • Шаг пост-сборки добавляется в параметры сборки, чтобы создать разобранный список кода:

    ${CG_TOOL_ROOT}/bin/armdis ${ProjName}.out ${ProjName}.dis

  • Параметры Ассемблера для keep the generated assembly а также generate listing file включены

  • Управление символами для компоновщика было изменено, чтобы установить точку входа программы в Reset_Handler, Это просто мое предпочтительное имя для вектора сброса.

  • Диагностическое сообщение компоновщика 10063 рассматривается как примечание, и опция выдачи примечаний включена. Диагностика 10063 обычно является предупреждением о том, что символ точки входа был изменен.

  • Подробная диагностика включена как для компилятора, так и для компоновщика.

После того, как вы изменили настройки проекта, вам также нужно будет создать файл сборки, который определяет векторы прерываний. Этот код выглядит примерно так:

__STACK_END .equ 0x20010000

  .word __STACK_END         ; Initial Stack Pointer
  .word Reset_Handler       ; Start of executable code
  .word NMI_Handler         ; Non-maskable Interrupt Handler
  .word HardFault_Handler   ; Hard Fault Handler
  .word MemManage_Handler   ; MPU Fault Handler
  .word BusFault_Handler    ; Bus Fault Handler
  .word UsageFault_Handler  ; Usage Fault Handler

и так далее для остальных исключений и прерываний. Затем вы создаете фиктивные обработчики, которые могут быть перезаписаны позже:

Reset_Handler:  .asmfunc
   B $
  .endasmfunc

  .weak Reset_Handler
  .global Reset_Handler

Если вы посмотрите на заголовочные файлы msp.h, то увидите, как были созданы различные идентификаторы констант для адресов внутренних регистров, таких как регистры, управляющие портами GPIO. Вам нужно преобразовать их в ассемблер для любых регистров, которые вы планируете использовать, а затем включить эти файлы в ваш проект.

Другие вопросы по тегам