Как создать проект только для сборки в Code Composer Studio (CCS) для серии TI MSP432 - PullRequest
0 голосов
/ 16 октября 2018

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

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

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

Я прочитал множество теорий, но они не соответствуют действительным, конкретным шагам.

ОБНОВЛЕНИЕ:

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

file 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
}

file 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

compile:

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 Ответ

0 голосов
/ 16 октября 2018

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

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

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

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

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

    ${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.Вам нужно преобразовать их в ассемблер для любых регистров, которые вы планируете использовать, а затем включить эти файлы в ваш проект.

...