finished lab 2

This commit is contained in:
Trevor Barnes
2019-09-30 20:33:52 -05:00
parent 114bfc7b16
commit 6af6bb4217
22 changed files with 3029 additions and 2036 deletions

Binary file not shown.

Binary file not shown.

View File

@@ -240,127 +240,127 @@ LOAD c:/ac6/systemworkbench/plugins/fr.ac6.mcu.externaltools.arm-none.win32_1.15
0x08000000 g_pfnVectors
0x08000188 . = ALIGN (0x4)
.text 0x08000188 0x29c
.text 0x08000188 0x2c4
0x08000188 . = ALIGN (0x4)
*(.text)
.text 0x08000188 0x6c c:/ac6/systemworkbench/plugins/fr.ac6.mcu.externaltools.arm-none.win32_1.15.0.201708311556/tools/compiler/bin/../lib/gcc/arm-none-eabi/6.3.1/thumb/v7e-m/fpv4-sp/hard/crtbegin.o
.text 0x080001f4 0x5c src/main.o
.text 0x080001f4 0x84 src/main.o
0x080001f4 main
*(.text*)
.text.Reset_Handler
0x08000250 0x48 startup/startup_stm32.o
0x08000250 Reset_Handler
0x08000278 0x48 startup/startup_stm32.o
0x08000278 Reset_Handler
.text.Default_Handler
0x08000298 0x2 startup/startup_stm32.o
0x08000298 DebugMon_Handler
0x08000298 HardFault_Handler
0x08000298 SysTick_Handler
0x08000298 PendSV_Handler
0x08000298 NMI_Handler
0x08000298 UsageFault_Handler
0x08000298 Default_Handler
0x08000298 MemManage_Handler
0x08000298 SVC_Handler
0x08000298 BusFault_Handler
*fill* 0x0800029a 0x2
0x080002c0 0x2 startup/startup_stm32.o
0x080002c0 DebugMon_Handler
0x080002c0 HardFault_Handler
0x080002c0 SysTick_Handler
0x080002c0 PendSV_Handler
0x080002c0 NMI_Handler
0x080002c0 UsageFault_Handler
0x080002c0 Default_Handler
0x080002c0 MemManage_Handler
0x080002c0 SVC_Handler
0x080002c0 BusFault_Handler
*fill* 0x080002c2 0x2
.text.__libc_init_array
0x0800029c 0x50 c:/ac6/systemworkbench/plugins/fr.ac6.mcu.externaltools.arm-none.win32_1.15.0.201708311556/tools/compiler/bin/../lib/gcc/arm-none-eabi/6.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m/fpv4-sp/hard\libc.a(lib_a-init.o)
0x0800029c __libc_init_array
0x080002c4 0x50 c:/ac6/systemworkbench/plugins/fr.ac6.mcu.externaltools.arm-none.win32_1.15.0.201708311556/tools/compiler/bin/../lib/gcc/arm-none-eabi/6.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m/fpv4-sp/hard\libc.a(lib_a-init.o)
0x080002c4 __libc_init_array
.text.startup.register_fini
0x080002ec 0x14 c:/ac6/systemworkbench/plugins/fr.ac6.mcu.externaltools.arm-none.win32_1.15.0.201708311556/tools/compiler/bin/../lib/gcc/arm-none-eabi/6.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m/fpv4-sp/hard\libc.a(lib_a-__call_atexit.o)
.text.atexit 0x08000300 0xc c:/ac6/systemworkbench/plugins/fr.ac6.mcu.externaltools.arm-none.win32_1.15.0.201708311556/tools/compiler/bin/../lib/gcc/arm-none-eabi/6.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m/fpv4-sp/hard\libc.a(lib_a-atexit.o)
0x08000300 atexit
0x08000314 0x14 c:/ac6/systemworkbench/plugins/fr.ac6.mcu.externaltools.arm-none.win32_1.15.0.201708311556/tools/compiler/bin/../lib/gcc/arm-none-eabi/6.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m/fpv4-sp/hard\libc.a(lib_a-__call_atexit.o)
.text.atexit 0x08000328 0xc c:/ac6/systemworkbench/plugins/fr.ac6.mcu.externaltools.arm-none.win32_1.15.0.201708311556/tools/compiler/bin/../lib/gcc/arm-none-eabi/6.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m/fpv4-sp/hard\libc.a(lib_a-atexit.o)
0x08000328 atexit
.text.__libc_fini_array
0x0800030c 0x34 c:/ac6/systemworkbench/plugins/fr.ac6.mcu.externaltools.arm-none.win32_1.15.0.201708311556/tools/compiler/bin/../lib/gcc/arm-none-eabi/6.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m/fpv4-sp/hard\libc.a(lib_a-fini.o)
0x0800030c __libc_fini_array
0x08000334 0x34 c:/ac6/systemworkbench/plugins/fr.ac6.mcu.externaltools.arm-none.win32_1.15.0.201708311556/tools/compiler/bin/../lib/gcc/arm-none-eabi/6.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m/fpv4-sp/hard\libc.a(lib_a-fini.o)
0x08000334 __libc_fini_array
.text.__retarget_lock_acquire_recursive
0x08000340 0x4 c:/ac6/systemworkbench/plugins/fr.ac6.mcu.externaltools.arm-none.win32_1.15.0.201708311556/tools/compiler/bin/../lib/gcc/arm-none-eabi/6.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m/fpv4-sp/hard\libc.a(lib_a-lock.o)
0x08000340 __retarget_lock_acquire_recursive
0x08000368 0x4 c:/ac6/systemworkbench/plugins/fr.ac6.mcu.externaltools.arm-none.win32_1.15.0.201708311556/tools/compiler/bin/../lib/gcc/arm-none-eabi/6.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m/fpv4-sp/hard\libc.a(lib_a-lock.o)
0x08000368 __retarget_lock_acquire_recursive
.text.__retarget_lock_release_recursive
0x08000344 0x4 c:/ac6/systemworkbench/plugins/fr.ac6.mcu.externaltools.arm-none.win32_1.15.0.201708311556/tools/compiler/bin/../lib/gcc/arm-none-eabi/6.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m/fpv4-sp/hard\libc.a(lib_a-lock.o)
0x08000344 __retarget_lock_release_recursive
0x0800036c 0x4 c:/ac6/systemworkbench/plugins/fr.ac6.mcu.externaltools.arm-none.win32_1.15.0.201708311556/tools/compiler/bin/../lib/gcc/arm-none-eabi/6.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m/fpv4-sp/hard\libc.a(lib_a-lock.o)
0x0800036c __retarget_lock_release_recursive
.text.__register_exitproc
0x08000348 0xc4 c:/ac6/systemworkbench/plugins/fr.ac6.mcu.externaltools.arm-none.win32_1.15.0.201708311556/tools/compiler/bin/../lib/gcc/arm-none-eabi/6.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m/fpv4-sp/hard\libc.a(lib_a-__atexit.o)
0x08000348 __register_exitproc
0x08000370 0xc4 c:/ac6/systemworkbench/plugins/fr.ac6.mcu.externaltools.arm-none.win32_1.15.0.201708311556/tools/compiler/bin/../lib/gcc/arm-none-eabi/6.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m/fpv4-sp/hard\libc.a(lib_a-__atexit.o)
0x08000370 __register_exitproc
*(.glue_7)
.glue_7 0x0800040c 0x0 linker stubs
.glue_7 0x08000434 0x0 linker stubs
*(.glue_7t)
.glue_7t 0x0800040c 0x0 linker stubs
.glue_7t 0x08000434 0x0 linker stubs
*(.eh_frame)
.eh_frame 0x0800040c 0x0 c:/ac6/systemworkbench/plugins/fr.ac6.mcu.externaltools.arm-none.win32_1.15.0.201708311556/tools/compiler/bin/../lib/gcc/arm-none-eabi/6.3.1/thumb/v7e-m/fpv4-sp/hard/crtbegin.o
.eh_frame 0x08000434 0x0 c:/ac6/systemworkbench/plugins/fr.ac6.mcu.externaltools.arm-none.win32_1.15.0.201708311556/tools/compiler/bin/../lib/gcc/arm-none-eabi/6.3.1/thumb/v7e-m/fpv4-sp/hard/crtbegin.o
*(.init)
.init 0x0800040c 0x4 c:/ac6/systemworkbench/plugins/fr.ac6.mcu.externaltools.arm-none.win32_1.15.0.201708311556/tools/compiler/bin/../lib/gcc/arm-none-eabi/6.3.1/thumb/v7e-m/fpv4-sp/hard/crti.o
0x0800040c _init
.init 0x08000410 0x8 c:/ac6/systemworkbench/plugins/fr.ac6.mcu.externaltools.arm-none.win32_1.15.0.201708311556/tools/compiler/bin/../lib/gcc/arm-none-eabi/6.3.1/thumb/v7e-m/fpv4-sp/hard/crtn.o
.init 0x08000434 0x4 c:/ac6/systemworkbench/plugins/fr.ac6.mcu.externaltools.arm-none.win32_1.15.0.201708311556/tools/compiler/bin/../lib/gcc/arm-none-eabi/6.3.1/thumb/v7e-m/fpv4-sp/hard/crti.o
0x08000434 _init
.init 0x08000438 0x8 c:/ac6/systemworkbench/plugins/fr.ac6.mcu.externaltools.arm-none.win32_1.15.0.201708311556/tools/compiler/bin/../lib/gcc/arm-none-eabi/6.3.1/thumb/v7e-m/fpv4-sp/hard/crtn.o
*(.fini)
.fini 0x08000418 0x4 c:/ac6/systemworkbench/plugins/fr.ac6.mcu.externaltools.arm-none.win32_1.15.0.201708311556/tools/compiler/bin/../lib/gcc/arm-none-eabi/6.3.1/thumb/v7e-m/fpv4-sp/hard/crti.o
0x08000418 _fini
.fini 0x0800041c 0x8 c:/ac6/systemworkbench/plugins/fr.ac6.mcu.externaltools.arm-none.win32_1.15.0.201708311556/tools/compiler/bin/../lib/gcc/arm-none-eabi/6.3.1/thumb/v7e-m/fpv4-sp/hard/crtn.o
0x08000424 . = ALIGN (0x4)
0x08000424 _etext = .
.fini 0x08000440 0x4 c:/ac6/systemworkbench/plugins/fr.ac6.mcu.externaltools.arm-none.win32_1.15.0.201708311556/tools/compiler/bin/../lib/gcc/arm-none-eabi/6.3.1/thumb/v7e-m/fpv4-sp/hard/crti.o
0x08000440 _fini
.fini 0x08000444 0x8 c:/ac6/systemworkbench/plugins/fr.ac6.mcu.externaltools.arm-none.win32_1.15.0.201708311556/tools/compiler/bin/../lib/gcc/arm-none-eabi/6.3.1/thumb/v7e-m/fpv4-sp/hard/crtn.o
0x0800044c . = ALIGN (0x4)
0x0800044c _etext = .
.vfp11_veneer 0x08000424 0x0
.vfp11_veneer 0x08000424 0x0 linker stubs
.vfp11_veneer 0x0800044c 0x0
.vfp11_veneer 0x0800044c 0x0 linker stubs
.v4_bx 0x08000424 0x0
.v4_bx 0x08000424 0x0 linker stubs
.v4_bx 0x0800044c 0x0
.v4_bx 0x0800044c 0x0 linker stubs
.iplt 0x08000424 0x0
.iplt 0x08000424 0x0 c:/ac6/systemworkbench/plugins/fr.ac6.mcu.externaltools.arm-none.win32_1.15.0.201708311556/tools/compiler/bin/../lib/gcc/arm-none-eabi/6.3.1/thumb/v7e-m/fpv4-sp/hard/crtbegin.o
.iplt 0x0800044c 0x0
.iplt 0x0800044c 0x0 c:/ac6/systemworkbench/plugins/fr.ac6.mcu.externaltools.arm-none.win32_1.15.0.201708311556/tools/compiler/bin/../lib/gcc/arm-none-eabi/6.3.1/thumb/v7e-m/fpv4-sp/hard/crtbegin.o
.rodata 0x08000424 0x4
0x08000424 . = ALIGN (0x4)
.rodata 0x0800044c 0x4
0x0800044c . = ALIGN (0x4)
*(.rodata)
*(.rodata*)
.rodata._global_impure_ptr
0x08000424 0x4 c:/ac6/systemworkbench/plugins/fr.ac6.mcu.externaltools.arm-none.win32_1.15.0.201708311556/tools/compiler/bin/../lib/gcc/arm-none-eabi/6.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m/fpv4-sp/hard\libc.a(lib_a-impure.o)
0x08000424 _global_impure_ptr
0x08000428 . = ALIGN (0x4)
0x0800044c 0x4 c:/ac6/systemworkbench/plugins/fr.ac6.mcu.externaltools.arm-none.win32_1.15.0.201708311556/tools/compiler/bin/../lib/gcc/arm-none-eabi/6.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m/fpv4-sp/hard\libc.a(lib_a-impure.o)
0x0800044c _global_impure_ptr
0x08000450 . = ALIGN (0x4)
.rel.dyn 0x08000428 0x0
.rel.iplt 0x08000428 0x0 c:/ac6/systemworkbench/plugins/fr.ac6.mcu.externaltools.arm-none.win32_1.15.0.201708311556/tools/compiler/bin/../lib/gcc/arm-none-eabi/6.3.1/thumb/v7e-m/fpv4-sp/hard/crtbegin.o
.rel.dyn 0x08000450 0x0
.rel.iplt 0x08000450 0x0 c:/ac6/systemworkbench/plugins/fr.ac6.mcu.externaltools.arm-none.win32_1.15.0.201708311556/tools/compiler/bin/../lib/gcc/arm-none-eabi/6.3.1/thumb/v7e-m/fpv4-sp/hard/crtbegin.o
.ARM.extab 0x08000428 0x0
0x08000428 . = ALIGN (0x4)
.ARM.extab 0x08000450 0x0
0x08000450 . = ALIGN (0x4)
*(.ARM.extab* .gnu.linkonce.armextab.*)
0x08000428 . = ALIGN (0x4)
0x08000450 . = ALIGN (0x4)
.ARM 0x08000428 0x0
0x08000428 . = ALIGN (0x4)
0x08000428 __exidx_start = .
.ARM 0x08000450 0x0
0x08000450 . = ALIGN (0x4)
0x08000450 __exidx_start = .
*(.ARM.exidx*)
0x08000428 __exidx_end = .
0x08000428 . = ALIGN (0x4)
0x08000450 __exidx_end = .
0x08000450 . = ALIGN (0x4)
.preinit_array 0x08000428 0x0
0x08000428 . = ALIGN (0x4)
0x08000428 PROVIDE (__preinit_array_start, .)
.preinit_array 0x08000450 0x0
0x08000450 . = ALIGN (0x4)
0x08000450 PROVIDE (__preinit_array_start, .)
*(.preinit_array*)
0x08000428 PROVIDE (__preinit_array_end, .)
0x08000428 . = ALIGN (0x4)
0x08000450 PROVIDE (__preinit_array_end, .)
0x08000450 . = ALIGN (0x4)
.init_array 0x08000428 0x8
0x08000428 . = ALIGN (0x4)
0x08000428 PROVIDE (__init_array_start, .)
.init_array 0x08000450 0x8
0x08000450 . = ALIGN (0x4)
0x08000450 PROVIDE (__init_array_start, .)
*(SORT(.init_array.*))
.init_array.00000
0x08000428 0x4 c:/ac6/systemworkbench/plugins/fr.ac6.mcu.externaltools.arm-none.win32_1.15.0.201708311556/tools/compiler/bin/../lib/gcc/arm-none-eabi/6.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m/fpv4-sp/hard\libc.a(lib_a-__call_atexit.o)
0x08000450 0x4 c:/ac6/systemworkbench/plugins/fr.ac6.mcu.externaltools.arm-none.win32_1.15.0.201708311556/tools/compiler/bin/../lib/gcc/arm-none-eabi/6.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m/fpv4-sp/hard\libc.a(lib_a-__call_atexit.o)
*(.init_array*)
.init_array 0x0800042c 0x4 c:/ac6/systemworkbench/plugins/fr.ac6.mcu.externaltools.arm-none.win32_1.15.0.201708311556/tools/compiler/bin/../lib/gcc/arm-none-eabi/6.3.1/thumb/v7e-m/fpv4-sp/hard/crtbegin.o
0x08000430 PROVIDE (__init_array_end, .)
0x08000430 . = ALIGN (0x4)
.init_array 0x08000454 0x4 c:/ac6/systemworkbench/plugins/fr.ac6.mcu.externaltools.arm-none.win32_1.15.0.201708311556/tools/compiler/bin/../lib/gcc/arm-none-eabi/6.3.1/thumb/v7e-m/fpv4-sp/hard/crtbegin.o
0x08000458 PROVIDE (__init_array_end, .)
0x08000458 . = ALIGN (0x4)
.fini_array 0x08000430 0x4
0x08000430 . = ALIGN (0x4)
0x08000430 PROVIDE (__fini_array_start, .)
.fini_array 0x08000458 0x4
0x08000458 . = ALIGN (0x4)
0x08000458 PROVIDE (__fini_array_start, .)
*(SORT(.fini_array.*))
*(.fini_array*)
.fini_array 0x08000430 0x4 c:/ac6/systemworkbench/plugins/fr.ac6.mcu.externaltools.arm-none.win32_1.15.0.201708311556/tools/compiler/bin/../lib/gcc/arm-none-eabi/6.3.1/thumb/v7e-m/fpv4-sp/hard/crtbegin.o
0x08000434 PROVIDE (__fini_array_end, .)
0x08000434 . = ALIGN (0x4)
0x08000434 _sidata = LOADADDR (.data)
.fini_array 0x08000458 0x4 c:/ac6/systemworkbench/plugins/fr.ac6.mcu.externaltools.arm-none.win32_1.15.0.201708311556/tools/compiler/bin/../lib/gcc/arm-none-eabi/6.3.1/thumb/v7e-m/fpv4-sp/hard/crtbegin.o
0x0800045c PROVIDE (__fini_array_end, .)
0x0800045c . = ALIGN (0x4)
0x0800045c _sidata = LOADADDR (.data)
.data 0x20000000 0x42c load address 0x08000434
.data 0x20000000 0x42c load address 0x0800045c
0x20000000 . = ALIGN (0x4)
0x20000000 _sdata = .
*(.data)
@@ -373,14 +373,14 @@ LOAD c:/ac6/systemworkbench/plugins/fr.ac6.mcu.externaltools.arm-none.win32_1.15
0x2000042c . = ALIGN (0x4)
0x2000042c _edata = .
.jcr 0x2000042c 0x0 load address 0x08000860
.jcr 0x2000042c 0x0 load address 0x08000888
.jcr 0x2000042c 0x0 c:/ac6/systemworkbench/plugins/fr.ac6.mcu.externaltools.arm-none.win32_1.15.0.201708311556/tools/compiler/bin/../lib/gcc/arm-none-eabi/6.3.1/thumb/v7e-m/fpv4-sp/hard/crtbegin.o
.igot.plt 0x2000042c 0x0 load address 0x08000860
.igot.plt 0x2000042c 0x0 load address 0x08000888
.igot.plt 0x2000042c 0x0 c:/ac6/systemworkbench/plugins/fr.ac6.mcu.externaltools.arm-none.win32_1.15.0.201708311556/tools/compiler/bin/../lib/gcc/arm-none-eabi/6.3.1/thumb/v7e-m/fpv4-sp/hard/crtbegin.o
0x2000042c . = ALIGN (0x4)
.bss 0x2000042c 0x40 load address 0x08000860
.bss 0x2000042c 0x40 load address 0x08000888
0x2000042c _sbss = .
0x2000042c __bss_start__ = _sbss
*(.bss)
@@ -403,7 +403,7 @@ LOAD c:/ac6/systemworkbench/plugins/fr.ac6.mcu.externaltools.arm-none.win32_1.15
0x2000046c __bss_end__ = _ebss
._user_heap_stack
0x2000046c 0x404 load address 0x08000860
0x2000046c 0x404 load address 0x08000888
0x20000470 . = ALIGN (0x8)
*fill* 0x2000046c 0x4
0x20000470 PROVIDE (end, .)
@@ -447,9 +447,9 @@ LOAD c:/ac6/systemworkbench/plugins/fr.ac6.mcu.externaltools.arm-none.win32_1.15
0x0000020c 0x22 c:/ac6/systemworkbench/plugins/fr.ac6.mcu.externaltools.arm-none.win32_1.15.0.201708311556/tools/compiler/bin/../lib/gcc/arm-none-eabi/6.3.1/thumb/v7e-m/fpv4-sp/hard/crtn.o
OUTPUT(lab2barnestr.elf elf32-littlearm)
.debug_line 0x00000000 0xd7
.debug_line 0x00000000 0x5e src/main.o
.debug_line 0x0000005e 0x79 startup/startup_stm32.o
.debug_line 0x00000000 0xe7
.debug_line 0x00000000 0x6e src/main.o
.debug_line 0x0000006e 0x79 startup/startup_stm32.o
.debug_info 0x00000000 0xf5
.debug_info 0x00000000 0x76 src/main.o

Binary file not shown.

View File

@@ -19,7 +19,7 @@
# GPIOB Enable
.equ RCC_GPIOBEN, 1<<1
# Bit Set Reset Register
.equ GPIOx_BSRR, 0x18
.equ GPIOB_BSRR, 0x18
.equ GPIOB_BASE, 0x40020400
# GPIO Mode Register
@@ -55,33 +55,58 @@ main:
str r2, [r1, #GPIO_MODER]
turn_on:
# Turn on all lights
ldr r2, [r1, #GPIO_ODR]
movw r3, #0xF7E0
orr r2, r2, r3
str r2, [r1, #GPIO_ODR]
# Set the starting on bit (one less than the right most LED bit)
movw r3, #0x0010
# Wait
scroll_left:
# Move ON bit one position to the left
lsl r3, r3, #1
# Read current data
ldr r2, [r1, #GPIO_ODR]
# Clear previous ON bit, default 0
bic r2, r4
# Write new data
orr r2, r2, r3
# Skip if PB11 "pin"
cmp r3, 0x0800
beq scroll_left
# Write data back
str r2, [r1, #GPIO_ODR]
# Write the current ON bit to be cleared next cycle
mov r4, r3
bl delay
# Turn off all lights
ldr r2, [r1, #GPIO_ODR]
movw r3, #0xF7E0
orr r2, r2, r3
str r2, [r1, #GPIO_ODR]
# Wait
# Loop back until the leftmost pin is on
cmp r3, 0x8000
bne scroll_left
# Go back to turn on al lights
b turn_on
scroll_right:
# Move ON bit one position to the right
lsr r3, r3, #1
# Read current data
ldr r2, [r1, #GPIO_ODR]
# Clear previous ON bit, default 0
bic r2, r4
# Write new data
orr r2, r2, r3
# Skip if PB11 "pin"
cmp r3, 0x0800
beq scroll_right
# Write data back
str r2, [r1, #GPIO_ODR]
# Write the current ON bit to be cleared next cycle
mov r4, r3
bl delay
# Loop back until the rightmost pin is on
cmp r3, 0x0020
bne scroll_right
b scroll_left
delay:
ldr r12, =0x002000000
# Arbitrary delay length
ldr r12, =0x00050000
1:
subs r12, r12,#1
# Bracnch backward to local label if not equal to 0
# Branch backward to local label if not equal to 0
bne 1b
bx lr
end:
b end