STM32‎ > ‎STM32f4discovery‎ > ‎Примеры‎ > ‎Порты в/в‎ > ‎

Базовая часть

Перейдем в каталог нашего базового проекта:

nis@jane ~/stm32/f4examples $ cd 01-gpio/00-base/
nis@jane ~/stm32/f4examples/01-gpio/00-base $

Создадим рабочий файл кода в котором будут происходить все действия наших программ - work.c:

nis@jane ~/stm32/f4examples/01-gpio/00-base $ touch work.c

Также нам потребуется заголовычный файл work.h где мы опишем необходимые константы:

nis@jane ~/stm32/f4examples/01-gpio/00-base $ touch work.h

Для выполнения кода потребуется изменить изменить startup.c.

Если все действия были правильными то проект должен собраться без ошибок и предупреждений:

nis@jane ~/stm32/f4examples/01-gpio/00-base $ make
arm-softfloat-linux-gnueabi-gcc -g -O2 -mlittle-endian -mthumb -ffreestanding -nostdlib -nostdinc -mcpu=cortex-m3 -DSTM32F4XX -I. -I/home/nis/stm32/stlink/example/libs_stm/inc/base -I/home/nis/stm32/stlink/example/libs_stm/inc/core_support -I/home/nis/stm32/stlink/example/libs_stm/inc/device_support -Wl,-T,stm32f4xxxg_flash.ld   -c -o startup.o startup.c
arm-softfloat-linux-gnueabi-gcc -g -O2 -mlittle-endian -mthumb -ffreestanding -nostdlib -nostdinc -mcpu=cortex-m3 -DSTM32F4XX -I. -I/home/nis/stm32/stlink/example/libs_stm/inc/base -I/home/nis/stm32/stlink/example/libs_stm/inc/core_support -I/home/nis/stm32/stlink/example/libs_stm/inc/device_support -Wl,-T,stm32f4xxxg_flash.ld -o firmware.elf work.o startup.o -L.
arm-softfloat-linux-gnueabi-objcopy -O binary firmware.elf firmware.bin

После сборки размер файла firmware.bin увеличился на 4 байта(раньше было 12байт):
nis@jane ~/stm32/f4examples/01-gpio/00-base $ ll
итого 44
-rwxr-xr-x 1 nis nis    16 июня  23 11:12 firmware.bin
-rwxr-xr-x 1 nis nis 35329 июня  23 11:12 firmware.elf
-rw-r--r-- 1 nis nis  1369 июня  23 11:11 Makefile
-rw-r--r-- 1 nis nis    32 июня  21 12:55 README
-rw-r--r-- 1 nis nis   684 июня  23 11:12 startup.c
-rw-r--r-- 1 nis nis  2784 июня  23 11:12 startup.o
-rw-r--r-- 1 nis nis  1671 апр.   8 19:09 stm32f4xxxg_flash.ld
-rw-r--r-- 1 nis nis   421 июня  22 11:08 work.c
-rw-r--r-- 1 nis nis   641 июня  23 11:01 work.h
-rw-r--r-- 1 nis nis  2292 июня  23 11:11 work.o

Это произошло по причине добавления функии work(), которая как видно из листинга дизассемблера занимает как раз 4 байта:
nis@jane ~/stm32/f4examples/01-gpio/00-base $ arm-softfloat-linux-gnueabi-objdump -D firmware.elf

firmware.elf:     file format elf32-littlearm

Disassembly of section .text:

08000000 <vector_table>:
 8000000:       2001bffc        strdcs  fp, [r1], -ip
 8000004:       0800000d        stmdaeq r0, {r0, r2, r3}

08000008 <work>:
 8000008:       e7fe            b.n     8000008 <work>
 800000a:       bf00            nop

0800000c <reset_handler>:
 800000c:       f7ff bffc       b.w     8000008 <work>

На этом подготовка базовой части закончена.

Подстраницы (3): startup.c work.c work.h
Comments