mirror of
				https://github.com/ayabusa/Numworks-zeta-os.git
				synced 2025-11-04 01:57:15 +00:00 
			
		
		
		
	adding numworks port (valid but not working)
This commit is contained in:
		
							
								
								
									
										16
									
								
								.vscode/c_cpp_properties.json
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										16
									
								
								.vscode/c_cpp_properties.json
									
									
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,16 @@
 | 
				
			|||||||
 | 
					{
 | 
				
			||||||
 | 
					    "configurations": [
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            "name": "Linux",
 | 
				
			||||||
 | 
					            "includePath": [
 | 
				
			||||||
 | 
					                "${workspaceFolder}/**"
 | 
				
			||||||
 | 
					            ],
 | 
				
			||||||
 | 
					            "defines": [],
 | 
				
			||||||
 | 
					            "compilerPath": "/usr/bin/gcc",
 | 
				
			||||||
 | 
					            "cStandard": "c17",
 | 
				
			||||||
 | 
					            "cppStandard": "gnu++17",
 | 
				
			||||||
 | 
					            "intelliSenseMode": "linux-gcc-x64"
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    ],
 | 
				
			||||||
 | 
					    "version": 4
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										21
									
								
								.vscode/settings.json
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										21
									
								
								.vscode/settings.json
									
									
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,21 @@
 | 
				
			|||||||
 | 
					{
 | 
				
			||||||
 | 
					    "files.associations": {
 | 
				
			||||||
 | 
					        "cstdint": "cpp",
 | 
				
			||||||
 | 
					        "cstring": "cpp",
 | 
				
			||||||
 | 
					        "atomic": "cpp",
 | 
				
			||||||
 | 
					        "string": "cpp",
 | 
				
			||||||
 | 
					        "unordered_map": "cpp",
 | 
				
			||||||
 | 
					        "vector": "cpp",
 | 
				
			||||||
 | 
					        "iterator": "cpp",
 | 
				
			||||||
 | 
					        "memory_resource": "cpp",
 | 
				
			||||||
 | 
					        "string_view": "cpp",
 | 
				
			||||||
 | 
					        "functional": "cpp",
 | 
				
			||||||
 | 
					        "istream": "cpp",
 | 
				
			||||||
 | 
					        "new": "cpp",
 | 
				
			||||||
 | 
					        "ostream": "cpp",
 | 
				
			||||||
 | 
					        "stdexcept": "cpp",
 | 
				
			||||||
 | 
					        "streambuf": "cpp",
 | 
				
			||||||
 | 
					        "system_error": "cpp",
 | 
				
			||||||
 | 
					        "tuple": "cpp"
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										28
									
								
								chatgpt-try/firmware.ld
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										28
									
								
								chatgpt-try/firmware.ld
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,28 @@
 | 
				
			|||||||
 | 
					ENTRY(Reset_Handler)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					MEMORY
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					  FLASH (rx) : ORIGIN = 0x08000000, LENGTH = 512K
 | 
				
			||||||
 | 
					  RAM (rwx) : ORIGIN = 0x20000000, LENGTH = 256K
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SECTIONS
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					  .text :
 | 
				
			||||||
 | 
					  {
 | 
				
			||||||
 | 
					    *(.text)
 | 
				
			||||||
 | 
					    *(.text.*)
 | 
				
			||||||
 | 
					  } > FLASH
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  .data :
 | 
				
			||||||
 | 
					  {
 | 
				
			||||||
 | 
					    *(.data)
 | 
				
			||||||
 | 
					    *(.data.*)
 | 
				
			||||||
 | 
					  } > RAM AT > FLASH
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  .bss :
 | 
				
			||||||
 | 
					  {
 | 
				
			||||||
 | 
					    *(.bss)
 | 
				
			||||||
 | 
					    *(.bss.*)
 | 
				
			||||||
 | 
					  } > RAM
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										5
									
								
								chatgpt-try/main.c
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										5
									
								
								chatgpt-try/main.c
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,5 @@
 | 
				
			|||||||
 | 
					// Minimal main.c file
 | 
				
			||||||
 | 
					int main() {
 | 
				
			||||||
 | 
					    // Your code here
 | 
				
			||||||
 | 
					    return 0;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										538
									
								
								chatgpt-try/startup_stm32f730xx.s
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										538
									
								
								chatgpt-try/startup_stm32f730xx.s
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,538 @@
 | 
				
			|||||||
 | 
					/**
 | 
				
			||||||
 | 
					  ******************************************************************************
 | 
				
			||||||
 | 
					  * @file      startup_stm32f730xx.s
 | 
				
			||||||
 | 
					  * @author    MCD Application Team
 | 
				
			||||||
 | 
					  * @brief     STM32F730xx Devices vector table for GCC based toolchain. 
 | 
				
			||||||
 | 
					  *            This module performs:
 | 
				
			||||||
 | 
					  *                - Set the initial SP
 | 
				
			||||||
 | 
					  *                - Set the initial PC == Reset_Handler,
 | 
				
			||||||
 | 
					  *                - Set the vector table entries with the exceptions ISR address
 | 
				
			||||||
 | 
					  *                - Branches to main in the C library (which eventually
 | 
				
			||||||
 | 
					  *                  calls main()).
 | 
				
			||||||
 | 
					  *            After Reset the Cortex-M7 processor is in Thread mode,
 | 
				
			||||||
 | 
					  *            priority is Privileged, and the Stack is set to Main.
 | 
				
			||||||
 | 
					  ******************************************************************************
 | 
				
			||||||
 | 
					  * @attention
 | 
				
			||||||
 | 
					  *
 | 
				
			||||||
 | 
					  * Copyright (c) 2016 STMicroelectronics.
 | 
				
			||||||
 | 
					  * All rights reserved.
 | 
				
			||||||
 | 
					  *
 | 
				
			||||||
 | 
					  * This software is licensed under terms that can be found in the LICENSE file
 | 
				
			||||||
 | 
					  * in the root directory of this software component.
 | 
				
			||||||
 | 
					  * If no LICENSE file comes with this software, it is provided AS-IS.
 | 
				
			||||||
 | 
					  *
 | 
				
			||||||
 | 
					  ******************************************************************************
 | 
				
			||||||
 | 
					  */
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					  .syntax unified
 | 
				
			||||||
 | 
					  .cpu cortex-m7
 | 
				
			||||||
 | 
					  .fpu softvfp
 | 
				
			||||||
 | 
					  .thumb
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.global  g_pfnVectors
 | 
				
			||||||
 | 
					.global  Default_Handler
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/* start address for the initialization values of the .data section. 
 | 
				
			||||||
 | 
					defined in linker script */
 | 
				
			||||||
 | 
					.word  _sidata
 | 
				
			||||||
 | 
					/* start address for the .data section. defined in linker script */  
 | 
				
			||||||
 | 
					.word  _sdata
 | 
				
			||||||
 | 
					/* end address for the .data section. defined in linker script */
 | 
				
			||||||
 | 
					.word  _edata
 | 
				
			||||||
 | 
					/* start address for the .bss section. defined in linker script */
 | 
				
			||||||
 | 
					.word  _sbss
 | 
				
			||||||
 | 
					/* end address for the .bss section. defined in linker script */
 | 
				
			||||||
 | 
					.word  _ebss
 | 
				
			||||||
 | 
					/* stack used for SystemInit_ExtMemCtl; always internal RAM used */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/**
 | 
				
			||||||
 | 
					 * @brief  This is the code that gets called when the processor first
 | 
				
			||||||
 | 
					 *          starts execution following a reset event. Only the absolutely
 | 
				
			||||||
 | 
					 *          necessary set is performed, after which the application
 | 
				
			||||||
 | 
					 *          supplied main() routine is called. 
 | 
				
			||||||
 | 
					 * @param  None
 | 
				
			||||||
 | 
					 * @retval : None
 | 
				
			||||||
 | 
					*/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    .section  .text.Reset_Handler
 | 
				
			||||||
 | 
					  .weak  Reset_Handler
 | 
				
			||||||
 | 
					  .type  Reset_Handler, %function
 | 
				
			||||||
 | 
					Reset_Handler:  
 | 
				
			||||||
 | 
					  ldr   sp, =_estack      /* set stack pointer */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/* Copy the data segment initializers from flash to SRAM */  
 | 
				
			||||||
 | 
					  ldr r0, =_sdata
 | 
				
			||||||
 | 
					  ldr r1, =_edata
 | 
				
			||||||
 | 
					  ldr r2, =_sidata
 | 
				
			||||||
 | 
					  movs r3, #0
 | 
				
			||||||
 | 
					  b LoopCopyDataInit
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					CopyDataInit:
 | 
				
			||||||
 | 
					  ldr r4, [r2, r3]
 | 
				
			||||||
 | 
					  str r4, [r0, r3]
 | 
				
			||||||
 | 
					  adds r3, r3, #4
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					LoopCopyDataInit:
 | 
				
			||||||
 | 
					  adds r4, r0, r3
 | 
				
			||||||
 | 
					  cmp r4, r1
 | 
				
			||||||
 | 
					  bcc CopyDataInit
 | 
				
			||||||
 | 
					  
 | 
				
			||||||
 | 
					/* Zero fill the bss segment. */
 | 
				
			||||||
 | 
					  ldr r2, =_sbss
 | 
				
			||||||
 | 
					  ldr r4, =_ebss
 | 
				
			||||||
 | 
					  movs r3, #0
 | 
				
			||||||
 | 
					  b LoopFillZerobss
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					FillZerobss:
 | 
				
			||||||
 | 
					  str  r3, [r2]
 | 
				
			||||||
 | 
					  adds r2, r2, #4
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					LoopFillZerobss:
 | 
				
			||||||
 | 
					  cmp r2, r4
 | 
				
			||||||
 | 
					  bcc FillZerobss
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/* Call the clock system intitialization function.*/
 | 
				
			||||||
 | 
					  bl  SystemInit   
 | 
				
			||||||
 | 
					/* Call static constructors */
 | 
				
			||||||
 | 
					    bl __libc_init_array
 | 
				
			||||||
 | 
					/* Call the application's entry point.*/
 | 
				
			||||||
 | 
					  bl  main
 | 
				
			||||||
 | 
					  bx  lr    
 | 
				
			||||||
 | 
					.size  Reset_Handler, .-Reset_Handler
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/**
 | 
				
			||||||
 | 
					 * @brief  This is the code that gets called when the processor receives an 
 | 
				
			||||||
 | 
					 *         unexpected interrupt.  This simply enters an infinite loop, preserving
 | 
				
			||||||
 | 
					 *         the system state for examination by a debugger.
 | 
				
			||||||
 | 
					 * @param  None     
 | 
				
			||||||
 | 
					 * @retval None       
 | 
				
			||||||
 | 
					*/
 | 
				
			||||||
 | 
					    .section  .text.Default_Handler,"ax",%progbits
 | 
				
			||||||
 | 
					Default_Handler:
 | 
				
			||||||
 | 
					Infinite_Loop:
 | 
				
			||||||
 | 
					  b  Infinite_Loop
 | 
				
			||||||
 | 
					  .size  Default_Handler, .-Default_Handler
 | 
				
			||||||
 | 
					/******************************************************************************
 | 
				
			||||||
 | 
					*
 | 
				
			||||||
 | 
					* The minimal vector table for a Cortex M7. Note that the proper constructs
 | 
				
			||||||
 | 
					* must be placed on this to ensure that it ends up at physical address
 | 
				
			||||||
 | 
					* 0x0000.0000.
 | 
				
			||||||
 | 
					* 
 | 
				
			||||||
 | 
					*******************************************************************************/
 | 
				
			||||||
 | 
					   .section  .isr_vector,"a",%progbits
 | 
				
			||||||
 | 
					  .type  g_pfnVectors, %object
 | 
				
			||||||
 | 
					  .size  g_pfnVectors, .-g_pfnVectors
 | 
				
			||||||
 | 
					   
 | 
				
			||||||
 | 
					   
 | 
				
			||||||
 | 
					g_pfnVectors:
 | 
				
			||||||
 | 
					  .word  _estack
 | 
				
			||||||
 | 
					  .word  Reset_Handler
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  .word  NMI_Handler
 | 
				
			||||||
 | 
					  .word  HardFault_Handler
 | 
				
			||||||
 | 
					  .word  MemManage_Handler
 | 
				
			||||||
 | 
					  .word  BusFault_Handler
 | 
				
			||||||
 | 
					  .word  UsageFault_Handler
 | 
				
			||||||
 | 
					  .word  0
 | 
				
			||||||
 | 
					  .word  0
 | 
				
			||||||
 | 
					  .word  0
 | 
				
			||||||
 | 
					  .word  0
 | 
				
			||||||
 | 
					  .word  SVC_Handler
 | 
				
			||||||
 | 
					  .word  DebugMon_Handler
 | 
				
			||||||
 | 
					  .word  0
 | 
				
			||||||
 | 
					  .word  PendSV_Handler
 | 
				
			||||||
 | 
					  .word  SysTick_Handler
 | 
				
			||||||
 | 
					  
 | 
				
			||||||
 | 
					  /* External Interrupts */
 | 
				
			||||||
 | 
					  .word     WWDG_IRQHandler                   /* Window WatchDog              */                                        
 | 
				
			||||||
 | 
					  .word     PVD_IRQHandler                    /* PVD through EXTI Line detection */                        
 | 
				
			||||||
 | 
					  .word     TAMP_STAMP_IRQHandler             /* Tamper and TimeStamps through the EXTI line */            
 | 
				
			||||||
 | 
					  .word     RTC_WKUP_IRQHandler               /* RTC Wakeup through the EXTI line */                      
 | 
				
			||||||
 | 
					  .word     FLASH_IRQHandler                  /* FLASH                        */                                          
 | 
				
			||||||
 | 
					  .word     RCC_IRQHandler                    /* RCC                          */                                            
 | 
				
			||||||
 | 
					  .word     EXTI0_IRQHandler                  /* EXTI Line0                   */                        
 | 
				
			||||||
 | 
					  .word     EXTI1_IRQHandler                  /* EXTI Line1                   */                          
 | 
				
			||||||
 | 
					  .word     EXTI2_IRQHandler                  /* EXTI Line2                   */                          
 | 
				
			||||||
 | 
					  .word     EXTI3_IRQHandler                  /* EXTI Line3                   */                          
 | 
				
			||||||
 | 
					  .word     EXTI4_IRQHandler                  /* EXTI Line4                   */                          
 | 
				
			||||||
 | 
					  .word     DMA1_Stream0_IRQHandler           /* DMA1 Stream 0                */                  
 | 
				
			||||||
 | 
					  .word     DMA1_Stream1_IRQHandler           /* DMA1 Stream 1                */                   
 | 
				
			||||||
 | 
					  .word     DMA1_Stream2_IRQHandler           /* DMA1 Stream 2                */                   
 | 
				
			||||||
 | 
					  .word     DMA1_Stream3_IRQHandler           /* DMA1 Stream 3                */                   
 | 
				
			||||||
 | 
					  .word     DMA1_Stream4_IRQHandler           /* DMA1 Stream 4                */                   
 | 
				
			||||||
 | 
					  .word     DMA1_Stream5_IRQHandler           /* DMA1 Stream 5                */                   
 | 
				
			||||||
 | 
					  .word     DMA1_Stream6_IRQHandler           /* DMA1 Stream 6                */                   
 | 
				
			||||||
 | 
					  .word     ADC_IRQHandler                    /* ADC1, ADC2 and ADC3s         */                   
 | 
				
			||||||
 | 
					  .word     CAN1_TX_IRQHandler                /* CAN1 TX                      */                         
 | 
				
			||||||
 | 
					  .word     CAN1_RX0_IRQHandler               /* CAN1 RX0                     */                          
 | 
				
			||||||
 | 
					  .word     CAN1_RX1_IRQHandler               /* CAN1 RX1                     */                          
 | 
				
			||||||
 | 
					  .word     CAN1_SCE_IRQHandler               /* CAN1 SCE                     */                          
 | 
				
			||||||
 | 
					  .word     EXTI9_5_IRQHandler                /* External Line[9:5]s          */                          
 | 
				
			||||||
 | 
					  .word     TIM1_BRK_TIM9_IRQHandler          /* TIM1 Break and TIM9          */         
 | 
				
			||||||
 | 
					  .word     TIM1_UP_TIM10_IRQHandler          /* TIM1 Update and TIM10        */         
 | 
				
			||||||
 | 
					  .word     TIM1_TRG_COM_TIM11_IRQHandler     /* TIM1 Trigger and Commutation and TIM11 */
 | 
				
			||||||
 | 
					  .word     TIM1_CC_IRQHandler                /* TIM1 Capture Compare         */                          
 | 
				
			||||||
 | 
					  .word     TIM2_IRQHandler                   /* TIM2                         */                   
 | 
				
			||||||
 | 
					  .word     TIM3_IRQHandler                   /* TIM3                         */                   
 | 
				
			||||||
 | 
					  .word     TIM4_IRQHandler                   /* TIM4                         */                   
 | 
				
			||||||
 | 
					  .word     I2C1_EV_IRQHandler                /* I2C1 Event                   */                          
 | 
				
			||||||
 | 
					  .word     I2C1_ER_IRQHandler                /* I2C1 Error                   */                          
 | 
				
			||||||
 | 
					  .word     I2C2_EV_IRQHandler                /* I2C2 Event                   */                          
 | 
				
			||||||
 | 
					  .word     I2C2_ER_IRQHandler                /* I2C2 Error                   */                            
 | 
				
			||||||
 | 
					  .word     SPI1_IRQHandler                   /* SPI1                         */                   
 | 
				
			||||||
 | 
					  .word     SPI2_IRQHandler                   /* SPI2                         */                   
 | 
				
			||||||
 | 
					  .word     USART1_IRQHandler                 /* USART1                       */                   
 | 
				
			||||||
 | 
					  .word     USART2_IRQHandler                 /* USART2                       */                   
 | 
				
			||||||
 | 
					  .word     USART3_IRQHandler                 /* USART3                       */                   
 | 
				
			||||||
 | 
					  .word     EXTI15_10_IRQHandler              /* External Line[15:10]s        */                          
 | 
				
			||||||
 | 
					  .word     RTC_Alarm_IRQHandler              /* RTC Alarm (A and B) through EXTI Line */                 
 | 
				
			||||||
 | 
					  .word     OTG_FS_WKUP_IRQHandler            /* USB OTG FS Wakeup through EXTI line */                       
 | 
				
			||||||
 | 
					  .word     TIM8_BRK_TIM12_IRQHandler         /* TIM8 Break and TIM12         */         
 | 
				
			||||||
 | 
					  .word     TIM8_UP_TIM13_IRQHandler          /* TIM8 Update and TIM13        */         
 | 
				
			||||||
 | 
					  .word     TIM8_TRG_COM_TIM14_IRQHandler     /* TIM8 Trigger and Commutation and TIM14 */
 | 
				
			||||||
 | 
					  .word     TIM8_CC_IRQHandler                /* TIM8 Capture Compare         */                          
 | 
				
			||||||
 | 
					  .word     DMA1_Stream7_IRQHandler           /* DMA1 Stream7                 */                          
 | 
				
			||||||
 | 
					  .word     FMC_IRQHandler                    /* FMC                          */                   
 | 
				
			||||||
 | 
					  .word     SDMMC1_IRQHandler                 /* SDMMC1                       */                   
 | 
				
			||||||
 | 
					  .word     TIM5_IRQHandler                   /* TIM5                         */                   
 | 
				
			||||||
 | 
					  .word     SPI3_IRQHandler                   /* SPI3                         */                   
 | 
				
			||||||
 | 
					  .word     UART4_IRQHandler                  /* UART4                        */                   
 | 
				
			||||||
 | 
					  .word     UART5_IRQHandler                  /* UART5                        */                   
 | 
				
			||||||
 | 
					  .word     TIM6_DAC_IRQHandler               /* TIM6 and DAC1&2 underrun errors */                   
 | 
				
			||||||
 | 
					  .word     TIM7_IRQHandler                   /* TIM7                         */
 | 
				
			||||||
 | 
					  .word     DMA2_Stream0_IRQHandler           /* DMA2 Stream 0                */                   
 | 
				
			||||||
 | 
					  .word     DMA2_Stream1_IRQHandler           /* DMA2 Stream 1                */                   
 | 
				
			||||||
 | 
					  .word     DMA2_Stream2_IRQHandler           /* DMA2 Stream 2                */                   
 | 
				
			||||||
 | 
					  .word     DMA2_Stream3_IRQHandler           /* DMA2 Stream 3                */                   
 | 
				
			||||||
 | 
					  .word     DMA2_Stream4_IRQHandler           /* DMA2 Stream 4                */                   
 | 
				
			||||||
 | 
					  .word     0                                 /* Reserved                     */                   
 | 
				
			||||||
 | 
					  .word     0                                 /* Reserved                     */                    
 | 
				
			||||||
 | 
					  .word     0                                 /* Reserved                     */                          
 | 
				
			||||||
 | 
					  .word     0                                 /* Reserved                     */                          
 | 
				
			||||||
 | 
					  .word     0                                 /* Reserved                     */                          
 | 
				
			||||||
 | 
					  .word     0                                 /* Reserved                     */                          
 | 
				
			||||||
 | 
					  .word     OTG_FS_IRQHandler                 /* USB OTG FS                   */                   
 | 
				
			||||||
 | 
					  .word     DMA2_Stream5_IRQHandler           /* DMA2 Stream 5                */                   
 | 
				
			||||||
 | 
					  .word     DMA2_Stream6_IRQHandler           /* DMA2 Stream 6                */                   
 | 
				
			||||||
 | 
					  .word     DMA2_Stream7_IRQHandler           /* DMA2 Stream 7                */                   
 | 
				
			||||||
 | 
					  .word     USART6_IRQHandler                 /* USART6                       */                    
 | 
				
			||||||
 | 
					  .word     I2C3_EV_IRQHandler                /* I2C3 event                   */                          
 | 
				
			||||||
 | 
					  .word     I2C3_ER_IRQHandler                /* I2C3 error                   */                          
 | 
				
			||||||
 | 
					  .word     OTG_HS_EP1_OUT_IRQHandler         /* USB OTG HS End Point 1 Out   */                   
 | 
				
			||||||
 | 
					  .word     OTG_HS_EP1_IN_IRQHandler          /* USB OTG HS End Point 1 In    */                   
 | 
				
			||||||
 | 
					  .word     OTG_HS_WKUP_IRQHandler            /* USB OTG HS Wakeup through EXTI */                         
 | 
				
			||||||
 | 
					  .word     OTG_HS_IRQHandler                 /* USB OTG HS                   */                   
 | 
				
			||||||
 | 
					  .word     0                                 /* Reserved                     */                   
 | 
				
			||||||
 | 
					  .word     AES_IRQHandler                    /* AES                          */                   
 | 
				
			||||||
 | 
					  .word     RNG_IRQHandler                    /* RNG                          */
 | 
				
			||||||
 | 
					  .word     FPU_IRQHandler                    /* FPU                          */
 | 
				
			||||||
 | 
					  .word     UART7_IRQHandler                  /* UART7                        */      
 | 
				
			||||||
 | 
					  .word     UART8_IRQHandler                  /* UART8                        */
 | 
				
			||||||
 | 
					  .word     SPI4_IRQHandler                   /* SPI4                         */
 | 
				
			||||||
 | 
					  .word     SPI5_IRQHandler                   /* SPI5                         */
 | 
				
			||||||
 | 
					  .word     0                                 /* Reserved                     */
 | 
				
			||||||
 | 
					  .word     SAI1_IRQHandler                   /* SAI1                         */
 | 
				
			||||||
 | 
					  .word     0                                 /* Reserved                     */
 | 
				
			||||||
 | 
					  .word     0                                 /* Reserved                     */
 | 
				
			||||||
 | 
					  .word     0                                 /* Reserved                     */
 | 
				
			||||||
 | 
					  .word     SAI2_IRQHandler                   /* SAI2                         */
 | 
				
			||||||
 | 
					  .word     QUADSPI_IRQHandler                /* QUADSPI                      */
 | 
				
			||||||
 | 
					  .word     LPTIM1_IRQHandler                 /* LPTIM1                       */
 | 
				
			||||||
 | 
					  .word     0                                 /* Reserved                     */
 | 
				
			||||||
 | 
					  .word     0                                 /* Reserved                     */
 | 
				
			||||||
 | 
					  .word     0                                 /* Reserved                     */
 | 
				
			||||||
 | 
					  .word     0                                 /* Reserved                     */
 | 
				
			||||||
 | 
					  .word     0                                 /* Reserved                     */
 | 
				
			||||||
 | 
					  .word     0                                 /* Reserved                     */
 | 
				
			||||||
 | 
					  .word     0                                 /* Reserved                     */
 | 
				
			||||||
 | 
					  .word     0                                 /* Reserved                     */
 | 
				
			||||||
 | 
					  .word     0                                 /* Reserved                     */
 | 
				
			||||||
 | 
					  .word     SDMMC2_IRQHandler                 /* SDMMC2                       */ 
 | 
				
			||||||
 | 
					  
 | 
				
			||||||
 | 
					/*******************************************************************************
 | 
				
			||||||
 | 
					*
 | 
				
			||||||
 | 
					* Provide weak aliases for each Exception handler to the Default_Handler. 
 | 
				
			||||||
 | 
					* As they are weak aliases, any function with the same name will override 
 | 
				
			||||||
 | 
					* this definition.
 | 
				
			||||||
 | 
					* 
 | 
				
			||||||
 | 
					*******************************************************************************/
 | 
				
			||||||
 | 
					   .weak      NMI_Handler
 | 
				
			||||||
 | 
					   .thumb_set NMI_Handler,Default_Handler
 | 
				
			||||||
 | 
					  
 | 
				
			||||||
 | 
					   .weak      HardFault_Handler
 | 
				
			||||||
 | 
					   .thumb_set HardFault_Handler,Default_Handler
 | 
				
			||||||
 | 
					  
 | 
				
			||||||
 | 
					   .weak      MemManage_Handler
 | 
				
			||||||
 | 
					   .thumb_set MemManage_Handler,Default_Handler
 | 
				
			||||||
 | 
					  
 | 
				
			||||||
 | 
					   .weak      BusFault_Handler
 | 
				
			||||||
 | 
					   .thumb_set BusFault_Handler,Default_Handler
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					   .weak      UsageFault_Handler
 | 
				
			||||||
 | 
					   .thumb_set UsageFault_Handler,Default_Handler
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					   .weak      SVC_Handler
 | 
				
			||||||
 | 
					   .thumb_set SVC_Handler,Default_Handler
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					   .weak      DebugMon_Handler
 | 
				
			||||||
 | 
					   .thumb_set DebugMon_Handler,Default_Handler
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					   .weak      PendSV_Handler
 | 
				
			||||||
 | 
					   .thumb_set PendSV_Handler,Default_Handler
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					   .weak      SysTick_Handler
 | 
				
			||||||
 | 
					   .thumb_set SysTick_Handler,Default_Handler              
 | 
				
			||||||
 | 
					  
 | 
				
			||||||
 | 
					   .weak      WWDG_IRQHandler                   
 | 
				
			||||||
 | 
					   .thumb_set WWDG_IRQHandler,Default_Handler      
 | 
				
			||||||
 | 
					                  
 | 
				
			||||||
 | 
					   .weak      PVD_IRQHandler      
 | 
				
			||||||
 | 
					   .thumb_set PVD_IRQHandler,Default_Handler
 | 
				
			||||||
 | 
					               
 | 
				
			||||||
 | 
					   .weak      TAMP_STAMP_IRQHandler            
 | 
				
			||||||
 | 
					   .thumb_set TAMP_STAMP_IRQHandler,Default_Handler
 | 
				
			||||||
 | 
					            
 | 
				
			||||||
 | 
					   .weak      RTC_WKUP_IRQHandler                  
 | 
				
			||||||
 | 
					   .thumb_set RTC_WKUP_IRQHandler,Default_Handler
 | 
				
			||||||
 | 
					            
 | 
				
			||||||
 | 
					   .weak      FLASH_IRQHandler         
 | 
				
			||||||
 | 
					   .thumb_set FLASH_IRQHandler,Default_Handler
 | 
				
			||||||
 | 
					                  
 | 
				
			||||||
 | 
					   .weak      RCC_IRQHandler      
 | 
				
			||||||
 | 
					   .thumb_set RCC_IRQHandler,Default_Handler
 | 
				
			||||||
 | 
					                  
 | 
				
			||||||
 | 
					   .weak      EXTI0_IRQHandler         
 | 
				
			||||||
 | 
					   .thumb_set EXTI0_IRQHandler,Default_Handler
 | 
				
			||||||
 | 
					                  
 | 
				
			||||||
 | 
					   .weak      EXTI1_IRQHandler         
 | 
				
			||||||
 | 
					   .thumb_set EXTI1_IRQHandler,Default_Handler
 | 
				
			||||||
 | 
					                     
 | 
				
			||||||
 | 
					   .weak      EXTI2_IRQHandler         
 | 
				
			||||||
 | 
					   .thumb_set EXTI2_IRQHandler,Default_Handler 
 | 
				
			||||||
 | 
					                 
 | 
				
			||||||
 | 
					   .weak      EXTI3_IRQHandler         
 | 
				
			||||||
 | 
					   .thumb_set EXTI3_IRQHandler,Default_Handler
 | 
				
			||||||
 | 
					                        
 | 
				
			||||||
 | 
					   .weak      EXTI4_IRQHandler         
 | 
				
			||||||
 | 
					   .thumb_set EXTI4_IRQHandler,Default_Handler
 | 
				
			||||||
 | 
					                  
 | 
				
			||||||
 | 
					   .weak      DMA1_Stream0_IRQHandler               
 | 
				
			||||||
 | 
					   .thumb_set DMA1_Stream0_IRQHandler,Default_Handler
 | 
				
			||||||
 | 
					         
 | 
				
			||||||
 | 
					   .weak      DMA1_Stream1_IRQHandler               
 | 
				
			||||||
 | 
					   .thumb_set DMA1_Stream1_IRQHandler,Default_Handler
 | 
				
			||||||
 | 
					                  
 | 
				
			||||||
 | 
					   .weak      DMA1_Stream2_IRQHandler               
 | 
				
			||||||
 | 
					   .thumb_set DMA1_Stream2_IRQHandler,Default_Handler
 | 
				
			||||||
 | 
					                  
 | 
				
			||||||
 | 
					   .weak      DMA1_Stream3_IRQHandler               
 | 
				
			||||||
 | 
					   .thumb_set DMA1_Stream3_IRQHandler,Default_Handler 
 | 
				
			||||||
 | 
					                 
 | 
				
			||||||
 | 
					   .weak      DMA1_Stream4_IRQHandler              
 | 
				
			||||||
 | 
					   .thumb_set DMA1_Stream4_IRQHandler,Default_Handler
 | 
				
			||||||
 | 
					                  
 | 
				
			||||||
 | 
					   .weak      DMA1_Stream5_IRQHandler               
 | 
				
			||||||
 | 
					   .thumb_set DMA1_Stream5_IRQHandler,Default_Handler
 | 
				
			||||||
 | 
					                  
 | 
				
			||||||
 | 
					   .weak      DMA1_Stream6_IRQHandler               
 | 
				
			||||||
 | 
					   .thumb_set DMA1_Stream6_IRQHandler,Default_Handler
 | 
				
			||||||
 | 
					                  
 | 
				
			||||||
 | 
					   .weak      ADC_IRQHandler      
 | 
				
			||||||
 | 
					   .thumb_set ADC_IRQHandler,Default_Handler
 | 
				
			||||||
 | 
					               
 | 
				
			||||||
 | 
					   .weak      CAN1_TX_IRQHandler   
 | 
				
			||||||
 | 
					   .thumb_set CAN1_TX_IRQHandler,Default_Handler
 | 
				
			||||||
 | 
					            
 | 
				
			||||||
 | 
					   .weak      CAN1_RX0_IRQHandler                  
 | 
				
			||||||
 | 
					   .thumb_set CAN1_RX0_IRQHandler,Default_Handler
 | 
				
			||||||
 | 
					                           
 | 
				
			||||||
 | 
					   .weak      CAN1_RX1_IRQHandler                  
 | 
				
			||||||
 | 
					   .thumb_set CAN1_RX1_IRQHandler,Default_Handler
 | 
				
			||||||
 | 
					            
 | 
				
			||||||
 | 
					   .weak      CAN1_SCE_IRQHandler                  
 | 
				
			||||||
 | 
					   .thumb_set CAN1_SCE_IRQHandler,Default_Handler
 | 
				
			||||||
 | 
					            
 | 
				
			||||||
 | 
					   .weak      EXTI9_5_IRQHandler   
 | 
				
			||||||
 | 
					   .thumb_set EXTI9_5_IRQHandler,Default_Handler
 | 
				
			||||||
 | 
					            
 | 
				
			||||||
 | 
					   .weak      TIM1_BRK_TIM9_IRQHandler            
 | 
				
			||||||
 | 
					   .thumb_set TIM1_BRK_TIM9_IRQHandler,Default_Handler
 | 
				
			||||||
 | 
					            
 | 
				
			||||||
 | 
					   .weak      TIM1_UP_TIM10_IRQHandler            
 | 
				
			||||||
 | 
					   .thumb_set TIM1_UP_TIM10_IRQHandler,Default_Handler
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					   .weak      TIM1_TRG_COM_TIM11_IRQHandler      
 | 
				
			||||||
 | 
					   .thumb_set TIM1_TRG_COM_TIM11_IRQHandler,Default_Handler
 | 
				
			||||||
 | 
					      
 | 
				
			||||||
 | 
					   .weak      TIM1_CC_IRQHandler   
 | 
				
			||||||
 | 
					   .thumb_set TIM1_CC_IRQHandler,Default_Handler
 | 
				
			||||||
 | 
					                  
 | 
				
			||||||
 | 
					   .weak      TIM2_IRQHandler            
 | 
				
			||||||
 | 
					   .thumb_set TIM2_IRQHandler,Default_Handler
 | 
				
			||||||
 | 
					                  
 | 
				
			||||||
 | 
					   .weak      TIM3_IRQHandler            
 | 
				
			||||||
 | 
					   .thumb_set TIM3_IRQHandler,Default_Handler
 | 
				
			||||||
 | 
					                  
 | 
				
			||||||
 | 
					   .weak      TIM4_IRQHandler            
 | 
				
			||||||
 | 
					   .thumb_set TIM4_IRQHandler,Default_Handler
 | 
				
			||||||
 | 
					                  
 | 
				
			||||||
 | 
					   .weak      I2C1_EV_IRQHandler   
 | 
				
			||||||
 | 
					   .thumb_set I2C1_EV_IRQHandler,Default_Handler
 | 
				
			||||||
 | 
					                     
 | 
				
			||||||
 | 
					   .weak      I2C1_ER_IRQHandler   
 | 
				
			||||||
 | 
					   .thumb_set I2C1_ER_IRQHandler,Default_Handler
 | 
				
			||||||
 | 
					                     
 | 
				
			||||||
 | 
					   .weak      I2C2_EV_IRQHandler   
 | 
				
			||||||
 | 
					   .thumb_set I2C2_EV_IRQHandler,Default_Handler
 | 
				
			||||||
 | 
					                  
 | 
				
			||||||
 | 
					   .weak      I2C2_ER_IRQHandler   
 | 
				
			||||||
 | 
					   .thumb_set I2C2_ER_IRQHandler,Default_Handler
 | 
				
			||||||
 | 
					                           
 | 
				
			||||||
 | 
					   .weak      SPI1_IRQHandler            
 | 
				
			||||||
 | 
					   .thumb_set SPI1_IRQHandler,Default_Handler
 | 
				
			||||||
 | 
					                        
 | 
				
			||||||
 | 
					   .weak      SPI2_IRQHandler            
 | 
				
			||||||
 | 
					   .thumb_set SPI2_IRQHandler,Default_Handler
 | 
				
			||||||
 | 
					                  
 | 
				
			||||||
 | 
					   .weak      USART1_IRQHandler      
 | 
				
			||||||
 | 
					   .thumb_set USART1_IRQHandler,Default_Handler
 | 
				
			||||||
 | 
					                     
 | 
				
			||||||
 | 
					   .weak      USART2_IRQHandler      
 | 
				
			||||||
 | 
					   .thumb_set USART2_IRQHandler,Default_Handler
 | 
				
			||||||
 | 
					                     
 | 
				
			||||||
 | 
					   .weak      USART3_IRQHandler      
 | 
				
			||||||
 | 
					   .thumb_set USART3_IRQHandler,Default_Handler
 | 
				
			||||||
 | 
					                  
 | 
				
			||||||
 | 
					   .weak      EXTI15_10_IRQHandler               
 | 
				
			||||||
 | 
					   .thumb_set EXTI15_10_IRQHandler,Default_Handler
 | 
				
			||||||
 | 
					               
 | 
				
			||||||
 | 
					   .weak      RTC_Alarm_IRQHandler               
 | 
				
			||||||
 | 
					   .thumb_set RTC_Alarm_IRQHandler,Default_Handler
 | 
				
			||||||
 | 
					            
 | 
				
			||||||
 | 
					   .weak      OTG_FS_WKUP_IRQHandler         
 | 
				
			||||||
 | 
					   .thumb_set OTG_FS_WKUP_IRQHandler,Default_Handler
 | 
				
			||||||
 | 
					            
 | 
				
			||||||
 | 
					   .weak      TIM8_BRK_TIM12_IRQHandler         
 | 
				
			||||||
 | 
					   .thumb_set TIM8_BRK_TIM12_IRQHandler,Default_Handler
 | 
				
			||||||
 | 
					         
 | 
				
			||||||
 | 
					   .weak      TIM8_UP_TIM13_IRQHandler            
 | 
				
			||||||
 | 
					   .thumb_set TIM8_UP_TIM13_IRQHandler,Default_Handler
 | 
				
			||||||
 | 
					         
 | 
				
			||||||
 | 
					   .weak      TIM8_TRG_COM_TIM14_IRQHandler      
 | 
				
			||||||
 | 
					   .thumb_set TIM8_TRG_COM_TIM14_IRQHandler,Default_Handler
 | 
				
			||||||
 | 
					      
 | 
				
			||||||
 | 
					   .weak      TIM8_CC_IRQHandler   
 | 
				
			||||||
 | 
					   .thumb_set TIM8_CC_IRQHandler,Default_Handler
 | 
				
			||||||
 | 
					                  
 | 
				
			||||||
 | 
					   .weak      DMA1_Stream7_IRQHandler               
 | 
				
			||||||
 | 
					   .thumb_set DMA1_Stream7_IRQHandler,Default_Handler
 | 
				
			||||||
 | 
					                     
 | 
				
			||||||
 | 
					   .weak      FMC_IRQHandler            
 | 
				
			||||||
 | 
					   .thumb_set FMC_IRQHandler,Default_Handler
 | 
				
			||||||
 | 
					                     
 | 
				
			||||||
 | 
					   .weak      SDMMC1_IRQHandler            
 | 
				
			||||||
 | 
					   .thumb_set SDMMC1_IRQHandler,Default_Handler
 | 
				
			||||||
 | 
					                     
 | 
				
			||||||
 | 
					   .weak      TIM5_IRQHandler            
 | 
				
			||||||
 | 
					   .thumb_set TIM5_IRQHandler,Default_Handler
 | 
				
			||||||
 | 
					                     
 | 
				
			||||||
 | 
					   .weak      SPI3_IRQHandler            
 | 
				
			||||||
 | 
					   .thumb_set SPI3_IRQHandler,Default_Handler
 | 
				
			||||||
 | 
					                     
 | 
				
			||||||
 | 
					   .weak      UART4_IRQHandler         
 | 
				
			||||||
 | 
					   .thumb_set UART4_IRQHandler,Default_Handler
 | 
				
			||||||
 | 
					                  
 | 
				
			||||||
 | 
					   .weak      UART5_IRQHandler         
 | 
				
			||||||
 | 
					   .thumb_set UART5_IRQHandler,Default_Handler
 | 
				
			||||||
 | 
					                  
 | 
				
			||||||
 | 
					   .weak      TIM6_DAC_IRQHandler                  
 | 
				
			||||||
 | 
					   .thumb_set TIM6_DAC_IRQHandler,Default_Handler
 | 
				
			||||||
 | 
					               
 | 
				
			||||||
 | 
					   .weak      TIM7_IRQHandler            
 | 
				
			||||||
 | 
					   .thumb_set TIM7_IRQHandler,Default_Handler
 | 
				
			||||||
 | 
					         
 | 
				
			||||||
 | 
					   .weak      DMA2_Stream0_IRQHandler               
 | 
				
			||||||
 | 
					   .thumb_set DMA2_Stream0_IRQHandler,Default_Handler
 | 
				
			||||||
 | 
					               
 | 
				
			||||||
 | 
					   .weak      DMA2_Stream1_IRQHandler               
 | 
				
			||||||
 | 
					   .thumb_set DMA2_Stream1_IRQHandler,Default_Handler
 | 
				
			||||||
 | 
					                  
 | 
				
			||||||
 | 
					   .weak      DMA2_Stream2_IRQHandler               
 | 
				
			||||||
 | 
					   .thumb_set DMA2_Stream2_IRQHandler,Default_Handler
 | 
				
			||||||
 | 
					            
 | 
				
			||||||
 | 
					   .weak      DMA2_Stream3_IRQHandler               
 | 
				
			||||||
 | 
					   .thumb_set DMA2_Stream3_IRQHandler,Default_Handler
 | 
				
			||||||
 | 
					            
 | 
				
			||||||
 | 
					   .weak      DMA2_Stream4_IRQHandler               
 | 
				
			||||||
 | 
					   .thumb_set DMA2_Stream4_IRQHandler,Default_Handler
 | 
				
			||||||
 | 
					                           
 | 
				
			||||||
 | 
					   .weak      OTG_FS_IRQHandler      
 | 
				
			||||||
 | 
					   .thumb_set OTG_FS_IRQHandler,Default_Handler
 | 
				
			||||||
 | 
					                     
 | 
				
			||||||
 | 
					   .weak      DMA2_Stream5_IRQHandler               
 | 
				
			||||||
 | 
					   .thumb_set DMA2_Stream5_IRQHandler,Default_Handler
 | 
				
			||||||
 | 
					                  
 | 
				
			||||||
 | 
					   .weak      DMA2_Stream6_IRQHandler               
 | 
				
			||||||
 | 
					   .thumb_set DMA2_Stream6_IRQHandler,Default_Handler
 | 
				
			||||||
 | 
					                  
 | 
				
			||||||
 | 
					   .weak      DMA2_Stream7_IRQHandler               
 | 
				
			||||||
 | 
					   .thumb_set DMA2_Stream7_IRQHandler,Default_Handler
 | 
				
			||||||
 | 
					                  
 | 
				
			||||||
 | 
					   .weak      USART6_IRQHandler      
 | 
				
			||||||
 | 
					   .thumb_set USART6_IRQHandler,Default_Handler
 | 
				
			||||||
 | 
					                        
 | 
				
			||||||
 | 
					   .weak      I2C3_EV_IRQHandler   
 | 
				
			||||||
 | 
					   .thumb_set I2C3_EV_IRQHandler,Default_Handler
 | 
				
			||||||
 | 
					                        
 | 
				
			||||||
 | 
					   .weak      I2C3_ER_IRQHandler   
 | 
				
			||||||
 | 
					   .thumb_set I2C3_ER_IRQHandler,Default_Handler
 | 
				
			||||||
 | 
					                        
 | 
				
			||||||
 | 
					   .weak      OTG_HS_EP1_OUT_IRQHandler         
 | 
				
			||||||
 | 
					   .thumb_set OTG_HS_EP1_OUT_IRQHandler,Default_Handler
 | 
				
			||||||
 | 
					               
 | 
				
			||||||
 | 
					   .weak      OTG_HS_EP1_IN_IRQHandler            
 | 
				
			||||||
 | 
					   .thumb_set OTG_HS_EP1_IN_IRQHandler,Default_Handler
 | 
				
			||||||
 | 
					               
 | 
				
			||||||
 | 
					   .weak      OTG_HS_WKUP_IRQHandler         
 | 
				
			||||||
 | 
					   .thumb_set OTG_HS_WKUP_IRQHandler,Default_Handler
 | 
				
			||||||
 | 
					            
 | 
				
			||||||
 | 
					   .weak      OTG_HS_IRQHandler      
 | 
				
			||||||
 | 
					   .thumb_set OTG_HS_IRQHandler,Default_Handler
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					   .weak      AES_IRQHandler            
 | 
				
			||||||
 | 
					   .thumb_set AES_IRQHandler,Default_Handler
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					   .weak      RNG_IRQHandler            
 | 
				
			||||||
 | 
					   .thumb_set RNG_IRQHandler,Default_Handler   
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					   .weak      FPU_IRQHandler                  
 | 
				
			||||||
 | 
					   .thumb_set FPU_IRQHandler,Default_Handler
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					   .weak      UART7_IRQHandler                  
 | 
				
			||||||
 | 
					   .thumb_set UART7_IRQHandler,Default_Handler
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					   .weak      UART8_IRQHandler                  
 | 
				
			||||||
 | 
					   .thumb_set UART8_IRQHandler,Default_Handler   
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					   .weak      SPI4_IRQHandler            
 | 
				
			||||||
 | 
					   .thumb_set SPI4_IRQHandler,Default_Handler
 | 
				
			||||||
 | 
					   
 | 
				
			||||||
 | 
					   .weak      SPI5_IRQHandler            
 | 
				
			||||||
 | 
					   .thumb_set SPI5_IRQHandler,Default_Handler  
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					   .weak      SAI1_IRQHandler            
 | 
				
			||||||
 | 
					   .thumb_set SAI1_IRQHandler,Default_Handler
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					   .weak      SAI2_IRQHandler            
 | 
				
			||||||
 | 
					   .thumb_set SAI2_IRQHandler,Default_Handler
 | 
				
			||||||
 | 
					   
 | 
				
			||||||
 | 
					   .weak      QUADSPI_IRQHandler            
 | 
				
			||||||
 | 
					   .thumb_set QUADSPI_IRQHandler,Default_Handler
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					   .weak      LPTIM1_IRQHandler            
 | 
				
			||||||
 | 
					   .thumb_set LPTIM1_IRQHandler,Default_Handler
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					   .weak      SDMMC2_IRQHandler            
 | 
				
			||||||
 | 
					   .thumb_set SDMMC2_IRQHandler,Default_Handler  
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
							
								
								
									
										90
									
								
								numworks_port/Makefile
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										90
									
								
								numworks_port/Makefile
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,90 @@
 | 
				
			|||||||
 | 
					TARGET = main
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Directories
 | 
				
			||||||
 | 
					SRC_DIR = src
 | 
				
			||||||
 | 
					BUILD_DIR = build
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Define the linker script location and chip architecture.
 | 
				
			||||||
 | 
					LD_SCRIPT = $(SRC_DIR)/linker.ld
 | 
				
			||||||
 | 
					MCU_SPEC  = cortex-m7
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Toolchain definitions (ARM bare metal defaults)
 | 
				
			||||||
 | 
					TOOLCHAIN = /usr
 | 
				
			||||||
 | 
					CP = $(TOOLCHAIN)/bin/arm-none-eabi-g++
 | 
				
			||||||
 | 
					CC = $(TOOLCHAIN)/bin/arm-none-eabi-gcc
 | 
				
			||||||
 | 
					AS = $(TOOLCHAIN)/bin/arm-none-eabi-as
 | 
				
			||||||
 | 
					LD = $(TOOLCHAIN)/bin/arm-none-eabi-ld
 | 
				
			||||||
 | 
					OC = $(TOOLCHAIN)/bin/arm-none-eabi-objcopy
 | 
				
			||||||
 | 
					OD = $(TOOLCHAIN)/bin/arm-none-eabi-objdump
 | 
				
			||||||
 | 
					OS = $(TOOLCHAIN)/bin/arm-none-eabi-size
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Assembly directives.
 | 
				
			||||||
 | 
					ASFLAGS += -c
 | 
				
			||||||
 | 
					ASFLAGS += -O0
 | 
				
			||||||
 | 
					ASFLAGS += -mcpu=$(MCU_SPEC)
 | 
				
			||||||
 | 
					ASFLAGS += -march=armv7e-m
 | 
				
			||||||
 | 
					ASFLAGS += -mfpu=fpv5-sp-d16
 | 
				
			||||||
 | 
					ASFLAGS += -mfloat-abi=softfp
 | 
				
			||||||
 | 
					ASFLAGS += -mthumb
 | 
				
			||||||
 | 
					ASFLAGS += -Wall
 | 
				
			||||||
 | 
					# (Set error messages to appear on a single line.)
 | 
				
			||||||
 | 
					ASFLAGS += -fmessage-length=0
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# C compilation directives
 | 
				
			||||||
 | 
					CFLAGS += -mcpu=$(MCU_SPEC)
 | 
				
			||||||
 | 
					CFLAGS += -march=armv7e-m
 | 
				
			||||||
 | 
					CFLAGS += -mfpu=fpv5-sp-d16
 | 
				
			||||||
 | 
					CFLAGS += -mfloat-abi=softfp
 | 
				
			||||||
 | 
					CFLAGS += -mthumb
 | 
				
			||||||
 | 
					CFLAGS += -Wall
 | 
				
			||||||
 | 
					CFLAGS += -g
 | 
				
			||||||
 | 
					# (Set error messages to appear on a single line.)
 | 
				
			||||||
 | 
					CFLAGS += -fmessage-length=0
 | 
				
			||||||
 | 
					# (Set system to ignore semihosted junk)
 | 
				
			||||||
 | 
					CFLAGS += --specs=nosys.specs
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Linker directives.
 | 
				
			||||||
 | 
					LSCRIPT = $(LD_SCRIPT)
 | 
				
			||||||
 | 
					LFLAGS += -mcpu=$(MCU_SPEC)
 | 
				
			||||||
 | 
					LFLAGS += -mthumb
 | 
				
			||||||
 | 
					LFLAGS += -Wall
 | 
				
			||||||
 | 
					LFLAGS += --specs=nosys.specs
 | 
				
			||||||
 | 
					LFLAGS += -nostdlib
 | 
				
			||||||
 | 
					LFLAGS += -lgcc
 | 
				
			||||||
 | 
					LFLAGS += -T$(LSCRIPT)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# AS_SRC   = $(SRC_DIR)/core.S
 | 
				
			||||||
 | 
					#C_SRC    = $(SRC_DIR)/main.c
 | 
				
			||||||
 | 
					CPP_SRC := $(wildcard $(SRC_DIR)/*.cpp)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					INCLUDE  =  -I./
 | 
				
			||||||
 | 
					INCLUDE  += -I./device
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#OBJS = $(BUILD_DIR)/$(notdir $(AS_SRC:.S=.o))
 | 
				
			||||||
 | 
					#OBJS += $(BUILD_DIR)/$(notdir $(C_SRC:.c=.o))
 | 
				
			||||||
 | 
					OBJS += $(patsubst $(SRC_DIR)/%.cpp, $(BUILD_DIR)/%.o, $(CPP_SRC))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.PHONY: all
 | 
				
			||||||
 | 
					all: $(BUILD_DIR)/$(TARGET).bin
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#$(BUILD_DIR)/%.o: $(SRC_DIR)/%.S
 | 
				
			||||||
 | 
					#	$(CC) -x assembler-with-cpp $(ASFLAGS) $< -o $@
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					$(BUILD_DIR)/%.o: $(SRC_DIR)/%.c
 | 
				
			||||||
 | 
						$(CC) -c $(CFLAGS) $(INCLUDE) $< -o $@
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					$(BUILD_DIR)/%.o: $(SRC_DIR)/%.cpp
 | 
				
			||||||
 | 
						$(CP) -c $(CFLAGS) $(INCLUDE) $< -o $@
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					$(BUILD_DIR)/$(TARGET).elf: $(OBJS)
 | 
				
			||||||
 | 
						$(CC) $^ $(LFLAGS) -o $@
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					$(BUILD_DIR)/$(TARGET).bin: $(BUILD_DIR)/$(TARGET).elf
 | 
				
			||||||
 | 
						$(OC) -S -O binary $< $@
 | 
				
			||||||
 | 
						$(OS) $<
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.PHONY: clean
 | 
				
			||||||
 | 
					clean:
 | 
				
			||||||
 | 
						rm -f $(BUILD_DIR)/*.o
 | 
				
			||||||
 | 
						rm -f $(BUILD_DIR)/$(TARGET).elf
 | 
				
			||||||
 | 
						rm -f $(BUILD_DIR)/$(TARGET).bin
 | 
				
			||||||
							
								
								
									
										
											BIN
										
									
								
								numworks_port/build/info_headers.o
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								numworks_port/build/info_headers.o
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								numworks_port/build/main.bin
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								numworks_port/build/main.bin
									
									
									
									
									
										Executable file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								numworks_port/build/main.elf
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								numworks_port/build/main.elf
									
									
									
									
									
										Executable file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								numworks_port/build/rt0.o
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								numworks_port/build/rt0.o
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								numworks_port/build/vector_table.o
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								numworks_port/build/vector_table.o
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										79
									
								
								numworks_port/src/core.S.BAK
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										79
									
								
								numworks_port/src/core.S.BAK
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,79 @@
 | 
				
			|||||||
 | 
					/*
 | 
				
			||||||
 | 
					 * Test program to boot an STM32 chip with the absolute
 | 
				
			||||||
 | 
					 * minimum required code for teaching about the chips.
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * Copyright William Ransohoff, Vivonomicon, LLC, 2017
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * Open source under the MIT License
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.syntax unified
 | 
				
			||||||
 | 
					.cpu cortex-m7
 | 
				
			||||||
 | 
					.fpu softvfp
 | 
				
			||||||
 | 
					.thumb
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// Global values.
 | 
				
			||||||
 | 
					.global vtable
 | 
				
			||||||
 | 
					.global reset_handler
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/*
 | 
				
			||||||
 | 
					 * The vector table.
 | 
				
			||||||
 | 
					 * Most entries are ommitted for simplicity.
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/*
 | 
				
			||||||
 | 
					 * 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
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  // Copy data from flash to RAM data init section.
 | 
				
			||||||
 | 
					  // R2 will store our progress along the sidata section.
 | 
				
			||||||
 | 
					  MOVS r0, #0
 | 
				
			||||||
 | 
					  // Load the start/end addresses of the data section,
 | 
				
			||||||
 | 
					  // and the start of the data init section.
 | 
				
			||||||
 | 
					  LDR  r1, =_sdata
 | 
				
			||||||
 | 
					  LDR  r2, =_edata
 | 
				
			||||||
 | 
					  LDR  r3, =_sidata
 | 
				
			||||||
 | 
					  B    copy_sidata_loop
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  copy_sidata:
 | 
				
			||||||
 | 
					    // Offset the data init section by our copy progress.
 | 
				
			||||||
 | 
					    LDR  r4, [r3, r0]
 | 
				
			||||||
 | 
					    // Copy the current word into data, and increment.
 | 
				
			||||||
 | 
					    STR  r4, [r1, r0]
 | 
				
			||||||
 | 
					    ADDS r0, r0, #4
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  copy_sidata_loop:
 | 
				
			||||||
 | 
					    // Unless we've copied the whole data section, copy the
 | 
				
			||||||
 | 
					    // next word from sidata->data.
 | 
				
			||||||
 | 
					    ADDS r4, r0, r1
 | 
				
			||||||
 | 
					    CMP  r4, r2
 | 
				
			||||||
 | 
					    BCC  copy_sidata
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  // Once we are done copying the data section into RAM,
 | 
				
			||||||
 | 
					  // move on to filling the BSS section with 0s.
 | 
				
			||||||
 | 
					  MOVS r0, #0
 | 
				
			||||||
 | 
					  LDR  r1, =_sbss
 | 
				
			||||||
 | 
					  LDR  r2, =_ebss
 | 
				
			||||||
 | 
					  B    reset_bss_loop
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  // Zero out the BSS segment.
 | 
				
			||||||
 | 
					  reset_bss:
 | 
				
			||||||
 | 
					    // Store a 0 and increment by a word.
 | 
				
			||||||
 | 
					    STR  r0, [r1]
 | 
				
			||||||
 | 
					    ADDS r1, r1, #4
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  reset_bss_loop:
 | 
				
			||||||
 | 
					    // We'll use R1 to count progress here; if we aren't
 | 
				
			||||||
 | 
					    // done, reset the next word and increment.
 | 
				
			||||||
 | 
					    CMP  r1, r2
 | 
				
			||||||
 | 
					    BCC  reset_bss
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  // Branch to the 'main' method.
 | 
				
			||||||
 | 
					  B    main
 | 
				
			||||||
 | 
					.size reset_handler, .-reset_handler
 | 
				
			||||||
							
								
								
									
										1373
									
								
								numworks_port/src/device/cmsis_gcc.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										1373
									
								
								numworks_port/src/device/cmsis_gcc.h
									
									
									
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
							
								
								
									
										2512
									
								
								numworks_port/src/device/core_cm7.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										2512
									
								
								numworks_port/src/device/core_cm7.h
									
									
									
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
							
								
								
									
										87
									
								
								numworks_port/src/device/core_cmFunc.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										87
									
								
								numworks_port/src/device/core_cmFunc.h
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,87 @@
 | 
				
			|||||||
 | 
					/**************************************************************************//**
 | 
				
			||||||
 | 
					 * @file     core_cmFunc.h
 | 
				
			||||||
 | 
					 * @brief    CMSIS Cortex-M Core Function Access Header File
 | 
				
			||||||
 | 
					 * @version  V4.30
 | 
				
			||||||
 | 
					 * @date     20. October 2015
 | 
				
			||||||
 | 
					 ******************************************************************************/
 | 
				
			||||||
 | 
					/* Copyright (c) 2009 - 2015 ARM LIMITED
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					   All rights reserved.
 | 
				
			||||||
 | 
					   Redistribution and use in source and binary forms, with or without
 | 
				
			||||||
 | 
					   modification, are permitted provided that the following conditions are met:
 | 
				
			||||||
 | 
					   - Redistributions of source code must retain the above copyright
 | 
				
			||||||
 | 
					     notice, this list of conditions and the following disclaimer.
 | 
				
			||||||
 | 
					   - Redistributions in binary form must reproduce the above copyright
 | 
				
			||||||
 | 
					     notice, this list of conditions and the following disclaimer in the
 | 
				
			||||||
 | 
					     documentation and/or other materials provided with the distribution.
 | 
				
			||||||
 | 
					   - Neither the name of ARM nor the names of its contributors may be used
 | 
				
			||||||
 | 
					     to endorse or promote products derived from this software without
 | 
				
			||||||
 | 
					     specific prior written permission.
 | 
				
			||||||
 | 
					   *
 | 
				
			||||||
 | 
					   THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
 | 
				
			||||||
 | 
					   AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
 | 
				
			||||||
 | 
					   IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
 | 
				
			||||||
 | 
					   ARE DISCLAIMED. IN NO EVENT SHALL COPYRIGHT HOLDERS AND CONTRIBUTORS BE
 | 
				
			||||||
 | 
					   LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
 | 
				
			||||||
 | 
					   CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
 | 
				
			||||||
 | 
					   SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
 | 
				
			||||||
 | 
					   INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
 | 
				
			||||||
 | 
					   CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
 | 
				
			||||||
 | 
					   ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
 | 
				
			||||||
 | 
					   POSSIBILITY OF SUCH DAMAGE.
 | 
				
			||||||
 | 
					   ---------------------------------------------------------------------------*/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#if   defined ( __ICCARM__ )
 | 
				
			||||||
 | 
					 #pragma system_include         /* treat file as system include file for MISRA check */
 | 
				
			||||||
 | 
					#elif defined(__ARMCC_VERSION) && (__ARMCC_VERSION >= 6010050)
 | 
				
			||||||
 | 
					  #pragma clang system_header   /* treat file as system include file */
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifndef __CORE_CMFUNC_H
 | 
				
			||||||
 | 
					#define __CORE_CMFUNC_H
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/* ###########################  Core Function Access  ########################### */
 | 
				
			||||||
 | 
					/** \ingroup  CMSIS_Core_FunctionInterface
 | 
				
			||||||
 | 
					    \defgroup CMSIS_Core_RegAccFunctions CMSIS Core Register Access Functions
 | 
				
			||||||
 | 
					  @{
 | 
				
			||||||
 | 
					*/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/*------------------ RealView Compiler -----------------*/
 | 
				
			||||||
 | 
					#if   defined ( __CC_ARM )
 | 
				
			||||||
 | 
					  #include "cmsis_armcc.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/*------------------ ARM Compiler V6 -------------------*/
 | 
				
			||||||
 | 
					#elif defined(__ARMCC_VERSION) && (__ARMCC_VERSION >= 6010050)
 | 
				
			||||||
 | 
					  #include "cmsis_armcc_V6.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/*------------------ GNU Compiler ----------------------*/
 | 
				
			||||||
 | 
					#elif defined ( __GNUC__ )
 | 
				
			||||||
 | 
					  #include "cmsis_gcc.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/*------------------ ICC Compiler ----------------------*/
 | 
				
			||||||
 | 
					#elif defined ( __ICCARM__ )
 | 
				
			||||||
 | 
					  #include <cmsis_iar.h>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/*------------------ TI CCS Compiler -------------------*/
 | 
				
			||||||
 | 
					#elif defined ( __TMS470__ )
 | 
				
			||||||
 | 
					  #include <cmsis_ccs.h>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/*------------------ TASKING Compiler ------------------*/
 | 
				
			||||||
 | 
					#elif defined ( __TASKING__ )
 | 
				
			||||||
 | 
					  /*
 | 
				
			||||||
 | 
					   * The CMSIS functions have been implemented as intrinsics in the compiler.
 | 
				
			||||||
 | 
					   * Please use "carm -?i" to get an up to date list of all intrinsics,
 | 
				
			||||||
 | 
					   * Including the CMSIS ones.
 | 
				
			||||||
 | 
					   */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/*------------------ COSMIC Compiler -------------------*/
 | 
				
			||||||
 | 
					#elif defined ( __CSMC__ )
 | 
				
			||||||
 | 
					  #include <cmsis_csm.h>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/*@} end of CMSIS_Core_RegAccFunctions */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#endif /* __CORE_CMFUNC_H */
 | 
				
			||||||
							
								
								
									
										87
									
								
								numworks_port/src/device/core_cmInstr.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										87
									
								
								numworks_port/src/device/core_cmInstr.h
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,87 @@
 | 
				
			|||||||
 | 
					/**************************************************************************//**
 | 
				
			||||||
 | 
					 * @file     core_cmInstr.h
 | 
				
			||||||
 | 
					 * @brief    CMSIS Cortex-M Core Instruction Access Header File
 | 
				
			||||||
 | 
					 * @version  V4.30
 | 
				
			||||||
 | 
					 * @date     20. October 2015
 | 
				
			||||||
 | 
					 ******************************************************************************/
 | 
				
			||||||
 | 
					/* Copyright (c) 2009 - 2015 ARM LIMITED
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					   All rights reserved.
 | 
				
			||||||
 | 
					   Redistribution and use in source and binary forms, with or without
 | 
				
			||||||
 | 
					   modification, are permitted provided that the following conditions are met:
 | 
				
			||||||
 | 
					   - Redistributions of source code must retain the above copyright
 | 
				
			||||||
 | 
					     notice, this list of conditions and the following disclaimer.
 | 
				
			||||||
 | 
					   - Redistributions in binary form must reproduce the above copyright
 | 
				
			||||||
 | 
					     notice, this list of conditions and the following disclaimer in the
 | 
				
			||||||
 | 
					     documentation and/or other materials provided with the distribution.
 | 
				
			||||||
 | 
					   - Neither the name of ARM nor the names of its contributors may be used
 | 
				
			||||||
 | 
					     to endorse or promote products derived from this software without
 | 
				
			||||||
 | 
					     specific prior written permission.
 | 
				
			||||||
 | 
					   *
 | 
				
			||||||
 | 
					   THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
 | 
				
			||||||
 | 
					   AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
 | 
				
			||||||
 | 
					   IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
 | 
				
			||||||
 | 
					   ARE DISCLAIMED. IN NO EVENT SHALL COPYRIGHT HOLDERS AND CONTRIBUTORS BE
 | 
				
			||||||
 | 
					   LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
 | 
				
			||||||
 | 
					   CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
 | 
				
			||||||
 | 
					   SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
 | 
				
			||||||
 | 
					   INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
 | 
				
			||||||
 | 
					   CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
 | 
				
			||||||
 | 
					   ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
 | 
				
			||||||
 | 
					   POSSIBILITY OF SUCH DAMAGE.
 | 
				
			||||||
 | 
					   ---------------------------------------------------------------------------*/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#if   defined ( __ICCARM__ )
 | 
				
			||||||
 | 
					 #pragma system_include         /* treat file as system include file for MISRA check */
 | 
				
			||||||
 | 
					#elif defined(__ARMCC_VERSION) && (__ARMCC_VERSION >= 6010050)
 | 
				
			||||||
 | 
					  #pragma clang system_header   /* treat file as system include file */
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifndef __CORE_CMINSTR_H
 | 
				
			||||||
 | 
					#define __CORE_CMINSTR_H
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/* ##########################  Core Instruction Access  ######################### */
 | 
				
			||||||
 | 
					/** \defgroup CMSIS_Core_InstructionInterface CMSIS Core Instruction Interface
 | 
				
			||||||
 | 
					  Access to dedicated instructions
 | 
				
			||||||
 | 
					  @{
 | 
				
			||||||
 | 
					*/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/*------------------ RealView Compiler -----------------*/
 | 
				
			||||||
 | 
					#if   defined ( __CC_ARM )
 | 
				
			||||||
 | 
					  #include "cmsis_armcc.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/*------------------ ARM Compiler V6 -------------------*/
 | 
				
			||||||
 | 
					#elif defined(__ARMCC_VERSION) && (__ARMCC_VERSION >= 6010050)
 | 
				
			||||||
 | 
					  #include "cmsis_armcc_V6.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/*------------------ GNU Compiler ----------------------*/
 | 
				
			||||||
 | 
					#elif defined ( __GNUC__ )
 | 
				
			||||||
 | 
					  #include "cmsis_gcc.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/*------------------ ICC Compiler ----------------------*/
 | 
				
			||||||
 | 
					#elif defined ( __ICCARM__ )
 | 
				
			||||||
 | 
					  #include <cmsis_iar.h>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/*------------------ TI CCS Compiler -------------------*/
 | 
				
			||||||
 | 
					#elif defined ( __TMS470__ )
 | 
				
			||||||
 | 
					  #include <cmsis_ccs.h>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/*------------------ TASKING Compiler ------------------*/
 | 
				
			||||||
 | 
					#elif defined ( __TASKING__ )
 | 
				
			||||||
 | 
					  /*
 | 
				
			||||||
 | 
					   * The CMSIS functions have been implemented as intrinsics in the compiler.
 | 
				
			||||||
 | 
					   * Please use "carm -?i" to get an up to date list of all intrinsics,
 | 
				
			||||||
 | 
					   * Including the CMSIS ones.
 | 
				
			||||||
 | 
					   */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/*------------------ COSMIC Compiler -------------------*/
 | 
				
			||||||
 | 
					#elif defined ( __CSMC__ )
 | 
				
			||||||
 | 
					  #include <cmsis_csm.h>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/*@}*/ /* end of group CMSIS_Core_InstructionInterface */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#endif /* __CORE_CMINSTR_H */
 | 
				
			||||||
							
								
								
									
										96
									
								
								numworks_port/src/device/core_cmSimd.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										96
									
								
								numworks_port/src/device/core_cmSimd.h
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,96 @@
 | 
				
			|||||||
 | 
					/**************************************************************************//**
 | 
				
			||||||
 | 
					 * @file     core_cmSimd.h
 | 
				
			||||||
 | 
					 * @brief    CMSIS Cortex-M SIMD Header File
 | 
				
			||||||
 | 
					 * @version  V4.30
 | 
				
			||||||
 | 
					 * @date     20. October 2015
 | 
				
			||||||
 | 
					 ******************************************************************************/
 | 
				
			||||||
 | 
					/* Copyright (c) 2009 - 2015 ARM LIMITED
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					   All rights reserved.
 | 
				
			||||||
 | 
					   Redistribution and use in source and binary forms, with or without
 | 
				
			||||||
 | 
					   modification, are permitted provided that the following conditions are met:
 | 
				
			||||||
 | 
					   - Redistributions of source code must retain the above copyright
 | 
				
			||||||
 | 
					     notice, this list of conditions and the following disclaimer.
 | 
				
			||||||
 | 
					   - Redistributions in binary form must reproduce the above copyright
 | 
				
			||||||
 | 
					     notice, this list of conditions and the following disclaimer in the
 | 
				
			||||||
 | 
					     documentation and/or other materials provided with the distribution.
 | 
				
			||||||
 | 
					   - Neither the name of ARM nor the names of its contributors may be used
 | 
				
			||||||
 | 
					     to endorse or promote products derived from this software without
 | 
				
			||||||
 | 
					     specific prior written permission.
 | 
				
			||||||
 | 
					   *
 | 
				
			||||||
 | 
					   THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
 | 
				
			||||||
 | 
					   AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
 | 
				
			||||||
 | 
					   IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
 | 
				
			||||||
 | 
					   ARE DISCLAIMED. IN NO EVENT SHALL COPYRIGHT HOLDERS AND CONTRIBUTORS BE
 | 
				
			||||||
 | 
					   LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
 | 
				
			||||||
 | 
					   CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
 | 
				
			||||||
 | 
					   SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
 | 
				
			||||||
 | 
					   INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
 | 
				
			||||||
 | 
					   CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
 | 
				
			||||||
 | 
					   ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
 | 
				
			||||||
 | 
					   POSSIBILITY OF SUCH DAMAGE.
 | 
				
			||||||
 | 
					   ---------------------------------------------------------------------------*/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#if   defined ( __ICCARM__ )
 | 
				
			||||||
 | 
					 #pragma system_include         /* treat file as system include file for MISRA check */
 | 
				
			||||||
 | 
					#elif defined(__ARMCC_VERSION) && (__ARMCC_VERSION >= 6010050)
 | 
				
			||||||
 | 
					  #pragma clang system_header   /* treat file as system include file */
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifndef __CORE_CMSIMD_H
 | 
				
			||||||
 | 
					#define __CORE_CMSIMD_H
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifdef __cplusplus
 | 
				
			||||||
 | 
					 extern "C" {
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/* ###################  Compiler specific Intrinsics  ########################### */
 | 
				
			||||||
 | 
					/** \defgroup CMSIS_SIMD_intrinsics CMSIS SIMD Intrinsics
 | 
				
			||||||
 | 
					  Access to dedicated SIMD instructions
 | 
				
			||||||
 | 
					  @{
 | 
				
			||||||
 | 
					*/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/*------------------ RealView Compiler -----------------*/
 | 
				
			||||||
 | 
					#if   defined ( __CC_ARM )
 | 
				
			||||||
 | 
					  #include "cmsis_armcc.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/*------------------ ARM Compiler V6 -------------------*/
 | 
				
			||||||
 | 
					#elif defined(__ARMCC_VERSION) && (__ARMCC_VERSION >= 6010050)
 | 
				
			||||||
 | 
					  #include "cmsis_armcc_V6.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/*------------------ GNU Compiler ----------------------*/
 | 
				
			||||||
 | 
					#elif defined ( __GNUC__ )
 | 
				
			||||||
 | 
					  #include "cmsis_gcc.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/*------------------ ICC Compiler ----------------------*/
 | 
				
			||||||
 | 
					#elif defined ( __ICCARM__ )
 | 
				
			||||||
 | 
					  #include <cmsis_iar.h>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/*------------------ TI CCS Compiler -------------------*/
 | 
				
			||||||
 | 
					#elif defined ( __TMS470__ )
 | 
				
			||||||
 | 
					  #include <cmsis_ccs.h>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/*------------------ TASKING Compiler ------------------*/
 | 
				
			||||||
 | 
					#elif defined ( __TASKING__ )
 | 
				
			||||||
 | 
					  /*
 | 
				
			||||||
 | 
					   * The CMSIS functions have been implemented as intrinsics in the compiler.
 | 
				
			||||||
 | 
					   * Please use "carm -?i" to get an up to date list of all intrinsics,
 | 
				
			||||||
 | 
					   * Including the CMSIS ones.
 | 
				
			||||||
 | 
					   */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/*------------------ COSMIC Compiler -------------------*/
 | 
				
			||||||
 | 
					#elif defined ( __CSMC__ )
 | 
				
			||||||
 | 
					  #include <cmsis_csm.h>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/*@} end of group CMSIS_SIMD_intrinsics */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifdef __cplusplus
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#endif /* __CORE_CMSIMD_H */
 | 
				
			||||||
							
								
								
									
										15788
									
								
								numworks_port/src/device/stm32f730xx.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										15788
									
								
								numworks_port/src/device/stm32f730xx.h
									
									
									
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
							
								
								
									
										273
									
								
								numworks_port/src/device/stm32f7xx.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										273
									
								
								numworks_port/src/device/stm32f7xx.h
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,273 @@
 | 
				
			|||||||
 | 
					/**
 | 
				
			||||||
 | 
					  ******************************************************************************
 | 
				
			||||||
 | 
					  * @file    stm32f7xx.h
 | 
				
			||||||
 | 
					  * @author  MCD Application Team
 | 
				
			||||||
 | 
					  * @brief   CMSIS STM32F7xx Device Peripheral Access Layer Header File.
 | 
				
			||||||
 | 
					  *
 | 
				
			||||||
 | 
					  *          The file is the unique include file that the application programmer
 | 
				
			||||||
 | 
					  *          is using in the C source code, usually in main.c. This file contains:
 | 
				
			||||||
 | 
					  *           - Configuration section that allows to select:
 | 
				
			||||||
 | 
					  *              - The STM32F7xx device used in the target application
 | 
				
			||||||
 | 
					  *              - To use or not the peripheral's drivers in application code(i.e.
 | 
				
			||||||
 | 
					  *                code will be based on direct access to peripheral's registers
 | 
				
			||||||
 | 
					  *                rather than drivers API), this option is controlled by
 | 
				
			||||||
 | 
					  *                "#define USE_HAL_DRIVER"
 | 
				
			||||||
 | 
					  *
 | 
				
			||||||
 | 
					  ******************************************************************************
 | 
				
			||||||
 | 
					  * @attention
 | 
				
			||||||
 | 
					  *
 | 
				
			||||||
 | 
					  * Copyright (c) 2016 STMicroelectronics.
 | 
				
			||||||
 | 
					  * All rights reserved.
 | 
				
			||||||
 | 
					  *
 | 
				
			||||||
 | 
					  * This software is licensed under terms that can be found in the LICENSE file
 | 
				
			||||||
 | 
					  * in the root directory of this software component.
 | 
				
			||||||
 | 
					  * If no LICENSE file comes with this software, it is provided AS-IS.
 | 
				
			||||||
 | 
					  *
 | 
				
			||||||
 | 
					  ******************************************************************************
 | 
				
			||||||
 | 
					  */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/** @addtogroup CMSIS
 | 
				
			||||||
 | 
					  * @{
 | 
				
			||||||
 | 
					  */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/** @addtogroup stm32f7xx
 | 
				
			||||||
 | 
					  * @{
 | 
				
			||||||
 | 
					  */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifndef __STM32F7xx_H
 | 
				
			||||||
 | 
					#define __STM32F7xx_H
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifdef __cplusplus
 | 
				
			||||||
 | 
					 extern "C" {
 | 
				
			||||||
 | 
					#endif /* __cplusplus */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/** @addtogroup Library_configuration_section
 | 
				
			||||||
 | 
					  * @{
 | 
				
			||||||
 | 
					  */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/**
 | 
				
			||||||
 | 
					  * @brief STM32 Family
 | 
				
			||||||
 | 
					  */
 | 
				
			||||||
 | 
					#if !defined  (STM32F7)
 | 
				
			||||||
 | 
					#define STM32F7
 | 
				
			||||||
 | 
					#endif /* STM32F7 */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/* Uncomment the line below according to the target STM32 device used in your
 | 
				
			||||||
 | 
					   application
 | 
				
			||||||
 | 
					  */
 | 
				
			||||||
 | 
					#if !defined (STM32F756xx) && !defined (STM32F746xx) && !defined (STM32F745xx) && !defined (STM32F765xx) && \
 | 
				
			||||||
 | 
					    !defined (STM32F767xx) && !defined (STM32F769xx) && !defined (STM32F777xx) && !defined (STM32F779xx) && \
 | 
				
			||||||
 | 
					    !defined (STM32F722xx) && !defined (STM32F723xx) && !defined (STM32F732xx) && !defined (STM32F733xx) && \
 | 
				
			||||||
 | 
					    !defined (STM32F730xx) && !defined (STM32F750xx)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  /* #define STM32F756xx */   /*!< STM32F756VG, STM32F756ZG, STM32F756ZG, STM32F756IG, STM32F756BG,
 | 
				
			||||||
 | 
					                                   STM32F756NG Devices */
 | 
				
			||||||
 | 
					  /* #define STM32F746xx */   /*!< STM32F746VE, STM32F746VG, STM32F746ZE, STM32F746ZG, STM32F746IE, STM32F746IG,
 | 
				
			||||||
 | 
					                                   STM32F746BE, STM32F746BG, STM32F746NE, STM32F746NG Devices */
 | 
				
			||||||
 | 
					  /* #define STM32F745xx */   /*!< STM32F745VE, STM32F745VG, STM32F745ZG, STM32F745ZE, STM32F745IE, STM32F745IG Devices */
 | 
				
			||||||
 | 
					  /* #define STM32F765xx */   /*!< STM32F765BI, STM32F765BG, STM32F765NI, STM32F765NG, STM32F765II, STM32F765IG,
 | 
				
			||||||
 | 
					                                   STM32F765ZI, STM32F765ZG, STM32F765VI, STM32F765VG Devices */
 | 
				
			||||||
 | 
					  /* #define STM32F767xx */   /*!< STM32F767BG, STM32F767BI, STM32F767IG, STM32F767II, STM32F767NG, STM32F767NI,
 | 
				
			||||||
 | 
					                                   STM32F767VG, STM32F767VI, STM32F767ZG, STM32F767ZI Devices */
 | 
				
			||||||
 | 
					  /* #define STM32F769xx */   /*!< STM32F769AG, STM32F769AI, STM32F769BG, STM32F769BI, STM32F769IG, STM32F769II,
 | 
				
			||||||
 | 
					                                   STM32F769NG, STM32F769NI, STM32F768AI Devices */
 | 
				
			||||||
 | 
					  /* #define STM32F777xx */   /*!< STM32F777VI, STM32F777ZI, STM32F777II, STM32F777BI, STM32F777NI Devices */
 | 
				
			||||||
 | 
					  /* #define STM32F779xx */   /*!< STM32F779II, STM32F779BI, STM32F779NI, STM32F779AI, STM32F778AI Devices */
 | 
				
			||||||
 | 
					  /* #define STM32F722xx */   /*!< STM32F722IE, STM32F722ZE, STM32F722VE, STM32F722RE, STM32F722IC, STM32F722ZC,
 | 
				
			||||||
 | 
					                                   STM32F722VC, STM32F722RC Devices */
 | 
				
			||||||
 | 
					  /* #define STM32F723xx */   /*!< STM32F723IE, STM32F723ZE, STM32F723VE, STM32F723IC, STM32F723ZC, STM32F723VC Devices */
 | 
				
			||||||
 | 
					  /* #define STM32F732xx */   /*!< STM32F732IE, STM32F732ZE, STM32F732VE, STM32F732RE Devices */
 | 
				
			||||||
 | 
					  /* #define STM32F733xx */   /*!< STM32F733IE, STM32F733ZE, STM32F733VE Devices */
 | 
				
			||||||
 | 
					  /* #define STM32F730xx */   /*!< STM32F730R, STM32F730V, STM32F730Z, STM32F730I Devices */
 | 
				
			||||||
 | 
					  /* #define STM32F750xx */   /*!< STM32F750V, STM32F750Z, STM32F750N Devices */
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/*  Tip: To avoid modifying this file each time you need to switch between these
 | 
				
			||||||
 | 
					        devices, you can define the device in your toolchain compiler preprocessor.
 | 
				
			||||||
 | 
					  */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#if !defined  (USE_HAL_DRIVER)
 | 
				
			||||||
 | 
					/**
 | 
				
			||||||
 | 
					 * @brief Comment the line below if you will not use the peripherals drivers.
 | 
				
			||||||
 | 
					   In this case, these drivers will not be included and the application code will
 | 
				
			||||||
 | 
					   be based on direct access to peripherals registers
 | 
				
			||||||
 | 
					   */
 | 
				
			||||||
 | 
					  /*#define USE_HAL_DRIVER */
 | 
				
			||||||
 | 
					#endif /* USE_HAL_DRIVER */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/**
 | 
				
			||||||
 | 
					  * @brief CMSIS Device version number V1.2.8
 | 
				
			||||||
 | 
					  */
 | 
				
			||||||
 | 
					#define __STM32F7_CMSIS_VERSION_MAIN   (0x01) /*!< [31:24] main version */
 | 
				
			||||||
 | 
					#define __STM32F7_CMSIS_VERSION_SUB1   (0x02) /*!< [23:16] sub1 version */
 | 
				
			||||||
 | 
					#define __STM32F7_CMSIS_VERSION_SUB2   (0x08) /*!< [15:8]  sub2 version */
 | 
				
			||||||
 | 
					#define __STM32F7_CMSIS_VERSION_RC     (0x00) /*!< [7:0]  release candidate */
 | 
				
			||||||
 | 
					#define __STM32F7_CMSIS_VERSION        ((__STM32F7_CMSIS_VERSION_MAIN << 24)\
 | 
				
			||||||
 | 
					                                       |(__STM32F7_CMSIS_VERSION_SUB1 << 16)\
 | 
				
			||||||
 | 
					                                       |(__STM32F7_CMSIS_VERSION_SUB2 << 8 )\
 | 
				
			||||||
 | 
					                                       |(__STM32F7_CMSIS_VERSION_RC))
 | 
				
			||||||
 | 
					/**
 | 
				
			||||||
 | 
					  * @}
 | 
				
			||||||
 | 
					  */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/** @addtogroup Device_Included
 | 
				
			||||||
 | 
					  * @{
 | 
				
			||||||
 | 
					  */
 | 
				
			||||||
 | 
					#if defined(STM32F722xx)
 | 
				
			||||||
 | 
					  #include "stm32f722xx.h"
 | 
				
			||||||
 | 
					#elif defined(STM32F723xx)
 | 
				
			||||||
 | 
					  #include "stm32f723xx.h"
 | 
				
			||||||
 | 
					#elif defined(STM32F732xx)
 | 
				
			||||||
 | 
					  #include "stm32f732xx.h"
 | 
				
			||||||
 | 
					#elif defined(STM32F733xx)
 | 
				
			||||||
 | 
					  #include "stm32f733xx.h"
 | 
				
			||||||
 | 
					#elif defined(STM32F756xx)
 | 
				
			||||||
 | 
					  #include "stm32f756xx.h"
 | 
				
			||||||
 | 
					#elif defined(STM32F746xx)
 | 
				
			||||||
 | 
					  #include "stm32f746xx.h"
 | 
				
			||||||
 | 
					#elif defined(STM32F745xx)
 | 
				
			||||||
 | 
					  #include "stm32f745xx.h"
 | 
				
			||||||
 | 
					#elif defined(STM32F765xx)
 | 
				
			||||||
 | 
					  #include "stm32f765xx.h"
 | 
				
			||||||
 | 
					#elif defined(STM32F767xx)
 | 
				
			||||||
 | 
					  #include "stm32f767xx.h"
 | 
				
			||||||
 | 
					#elif defined(STM32F769xx)
 | 
				
			||||||
 | 
					  #include "stm32f769xx.h"
 | 
				
			||||||
 | 
					#elif defined(STM32F777xx)
 | 
				
			||||||
 | 
					  #include "stm32f777xx.h"
 | 
				
			||||||
 | 
					#elif defined(STM32F779xx)
 | 
				
			||||||
 | 
					  #include "stm32f779xx.h"
 | 
				
			||||||
 | 
					#elif defined(STM32F730xx)
 | 
				
			||||||
 | 
					  #include "stm32f730xx.h"
 | 
				
			||||||
 | 
					#elif defined(STM32F750xx)
 | 
				
			||||||
 | 
					  #include "stm32f750xx.h"
 | 
				
			||||||
 | 
					#else
 | 
				
			||||||
 | 
					 #error "Please select first the target STM32F7xx device used in your application (in stm32f7xx.h file)"
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/**
 | 
				
			||||||
 | 
					  * @}
 | 
				
			||||||
 | 
					  */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/** @addtogroup Exported_types
 | 
				
			||||||
 | 
					  * @{
 | 
				
			||||||
 | 
					  */
 | 
				
			||||||
 | 
					typedef enum
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					  RESET = 0U,
 | 
				
			||||||
 | 
					  SET = !RESET
 | 
				
			||||||
 | 
					} FlagStatus, ITStatus;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					typedef enum
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					  DISABLE = 0U,
 | 
				
			||||||
 | 
					  ENABLE = !DISABLE
 | 
				
			||||||
 | 
					} FunctionalState;
 | 
				
			||||||
 | 
					#define IS_FUNCTIONAL_STATE(STATE) (((STATE) == DISABLE) || ((STATE) == ENABLE))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					typedef enum
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					  SUCCESS = 0U,
 | 
				
			||||||
 | 
					  ERROR = !SUCCESS
 | 
				
			||||||
 | 
					} ErrorStatus;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/**
 | 
				
			||||||
 | 
					  * @}
 | 
				
			||||||
 | 
					  */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/** @addtogroup Exported_macro
 | 
				
			||||||
 | 
					  * @{
 | 
				
			||||||
 | 
					  */
 | 
				
			||||||
 | 
					#define SET_BIT(REG, BIT)     ((REG) |= (BIT))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#define CLEAR_BIT(REG, BIT)   ((REG) &= ~(BIT))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#define READ_BIT(REG, BIT)    ((REG) & (BIT))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#define CLEAR_REG(REG)        ((REG) = (0x0))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#define WRITE_REG(REG, VAL)   ((REG) = (VAL))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#define READ_REG(REG)         ((REG))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#define MODIFY_REG(REG, CLEARMASK, SETMASK)  WRITE_REG((REG), (((READ_REG(REG)) & (~(CLEARMASK))) | (SETMASK)))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#define POSITION_VAL(VAL)     (__CLZ(__RBIT(VAL)))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/* Use of CMSIS compiler intrinsics for register exclusive access */
 | 
				
			||||||
 | 
					/* Atomic 32-bit register access macro to set one or several bits */
 | 
				
			||||||
 | 
					#define ATOMIC_SET_BIT(REG, BIT)                             \
 | 
				
			||||||
 | 
					  do {                                                       \
 | 
				
			||||||
 | 
					    uint32_t val;                                            \
 | 
				
			||||||
 | 
					    do {                                                     \
 | 
				
			||||||
 | 
					      val = __LDREXW((__IO uint32_t *)&(REG)) | (BIT);       \
 | 
				
			||||||
 | 
					    } while ((__STREXW(val,(__IO uint32_t *)&(REG))) != 0U); \
 | 
				
			||||||
 | 
					  } while(0)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/* Atomic 32-bit register access macro to clear one or several bits */
 | 
				
			||||||
 | 
					#define ATOMIC_CLEAR_BIT(REG, BIT)                           \
 | 
				
			||||||
 | 
					  do {                                                       \
 | 
				
			||||||
 | 
					    uint32_t val;                                            \
 | 
				
			||||||
 | 
					    do {                                                     \
 | 
				
			||||||
 | 
					      val = __LDREXW((__IO uint32_t *)&(REG)) & ~(BIT);      \
 | 
				
			||||||
 | 
					    } while ((__STREXW(val,(__IO uint32_t *)&(REG))) != 0U); \
 | 
				
			||||||
 | 
					  } while(0)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/* Atomic 32-bit register access macro to clear and set one or several bits */
 | 
				
			||||||
 | 
					#define ATOMIC_MODIFY_REG(REG, CLEARMSK, SETMASK)                          \
 | 
				
			||||||
 | 
					  do {                                                                     \
 | 
				
			||||||
 | 
					    uint32_t val;                                                          \
 | 
				
			||||||
 | 
					    do {                                                                   \
 | 
				
			||||||
 | 
					      val = (__LDREXW((__IO uint32_t *)&(REG)) & ~(CLEARMSK)) | (SETMASK); \
 | 
				
			||||||
 | 
					    } while ((__STREXW(val,(__IO uint32_t *)&(REG))) != 0U);               \
 | 
				
			||||||
 | 
					  } while(0)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/* Atomic 16-bit register access macro to set one or several bits */
 | 
				
			||||||
 | 
					#define ATOMIC_SETH_BIT(REG, BIT)                            \
 | 
				
			||||||
 | 
					  do {                                                       \
 | 
				
			||||||
 | 
					    uint16_t val;                                            \
 | 
				
			||||||
 | 
					    do {                                                     \
 | 
				
			||||||
 | 
					      val = __LDREXH((__IO uint16_t *)&(REG)) | (BIT);       \
 | 
				
			||||||
 | 
					    } while ((__STREXH(val,(__IO uint16_t *)&(REG))) != 0U); \
 | 
				
			||||||
 | 
					  } while(0)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/* Atomic 16-bit register access macro to clear one or several bits */
 | 
				
			||||||
 | 
					#define ATOMIC_CLEARH_BIT(REG, BIT)                          \
 | 
				
			||||||
 | 
					  do {                                                       \
 | 
				
			||||||
 | 
					    uint16_t val;                                            \
 | 
				
			||||||
 | 
					    do {                                                     \
 | 
				
			||||||
 | 
					      val = __LDREXH((__IO uint16_t *)&(REG)) & ~(BIT);      \
 | 
				
			||||||
 | 
					    } while ((__STREXH(val,(__IO uint16_t *)&(REG))) != 0U); \
 | 
				
			||||||
 | 
					  } while(0)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/* Atomic 16-bit register access macro to clear and set one or several bits */
 | 
				
			||||||
 | 
					#define ATOMIC_MODIFYH_REG(REG, CLEARMSK, SETMASK)                         \
 | 
				
			||||||
 | 
					  do {                                                                     \
 | 
				
			||||||
 | 
					    uint16_t val;                                                          \
 | 
				
			||||||
 | 
					    do {                                                                   \
 | 
				
			||||||
 | 
					      val = (__LDREXH((__IO uint16_t *)&(REG)) & ~(CLEARMSK)) | (SETMASK); \
 | 
				
			||||||
 | 
					    } while ((__STREXH(val,(__IO uint16_t *)&(REG))) != 0U);               \
 | 
				
			||||||
 | 
					  } while(0)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/**
 | 
				
			||||||
 | 
					  * @}
 | 
				
			||||||
 | 
					  */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifdef USE_HAL_DRIVER
 | 
				
			||||||
 | 
					 #include "stm32f7xx_hal.h"
 | 
				
			||||||
 | 
					#endif /* USE_HAL_DRIVER */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifdef __cplusplus
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					#endif /* __cplusplus */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#endif /* __STM32F7xx_H */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/**
 | 
				
			||||||
 | 
					  * @}
 | 
				
			||||||
 | 
					  */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/**
 | 
				
			||||||
 | 
					  * @}
 | 
				
			||||||
 | 
					  */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
							
								
								
									
										105
									
								
								numworks_port/src/device/system_stm32f7xx.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										105
									
								
								numworks_port/src/device/system_stm32f7xx.h
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,105 @@
 | 
				
			|||||||
 | 
					/**
 | 
				
			||||||
 | 
					  ******************************************************************************
 | 
				
			||||||
 | 
					  * @file    system_stm32f7xx.h
 | 
				
			||||||
 | 
					  * @author  MCD Application Team
 | 
				
			||||||
 | 
					  * @brief   CMSIS Cortex-M7 Device System Source File for STM32F7xx devices.       
 | 
				
			||||||
 | 
					  ******************************************************************************
 | 
				
			||||||
 | 
					  * @attention
 | 
				
			||||||
 | 
					  *
 | 
				
			||||||
 | 
					  * Copyright (c) 2016 STMicroelectronics.
 | 
				
			||||||
 | 
					  * All rights reserved.
 | 
				
			||||||
 | 
					  *
 | 
				
			||||||
 | 
					  * This software is licensed under terms that can be found in the LICENSE file
 | 
				
			||||||
 | 
					  * in the root directory of this software component.
 | 
				
			||||||
 | 
					  * If no LICENSE file comes with this software, it is provided AS-IS.
 | 
				
			||||||
 | 
					  *
 | 
				
			||||||
 | 
					  ******************************************************************************  
 | 
				
			||||||
 | 
					  */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/** @addtogroup CMSIS
 | 
				
			||||||
 | 
					  * @{
 | 
				
			||||||
 | 
					  */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/** @addtogroup stm32f7xx_system
 | 
				
			||||||
 | 
					  * @{
 | 
				
			||||||
 | 
					  */  
 | 
				
			||||||
 | 
					  
 | 
				
			||||||
 | 
					/**
 | 
				
			||||||
 | 
					  * @brief Define to prevent recursive inclusion
 | 
				
			||||||
 | 
					  */
 | 
				
			||||||
 | 
					#ifndef __SYSTEM_STM32F7XX_H
 | 
				
			||||||
 | 
					#define __SYSTEM_STM32F7XX_H
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifdef __cplusplus
 | 
				
			||||||
 | 
					 extern "C" {
 | 
				
			||||||
 | 
					#endif 
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/** @addtogroup STM32F7xx_System_Includes
 | 
				
			||||||
 | 
					  * @{
 | 
				
			||||||
 | 
					  */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/**
 | 
				
			||||||
 | 
					  * @}
 | 
				
			||||||
 | 
					  */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/** @addtogroup STM32F7xx_System_Exported_Variables
 | 
				
			||||||
 | 
					  * @{
 | 
				
			||||||
 | 
					  */
 | 
				
			||||||
 | 
					  /* The SystemCoreClock variable is updated in three ways:
 | 
				
			||||||
 | 
					      1) by calling CMSIS function SystemCoreClockUpdate()
 | 
				
			||||||
 | 
					      2) by calling HAL API function HAL_RCC_GetSysClockFreq()
 | 
				
			||||||
 | 
					      3) each time HAL_RCC_ClockConfig() is called to configure the system clock frequency 
 | 
				
			||||||
 | 
					         Note: If you use this function to configure the system clock; then there
 | 
				
			||||||
 | 
					               is no need to call the 2 first functions listed above, since SystemCoreClock
 | 
				
			||||||
 | 
					               variable is updated automatically.
 | 
				
			||||||
 | 
					    */
 | 
				
			||||||
 | 
					extern uint32_t SystemCoreClock;          /*!< System Clock Frequency (Core Clock) */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					extern const uint8_t  AHBPrescTable[16];    /*!< AHB prescalers table values */
 | 
				
			||||||
 | 
					extern const uint8_t  APBPrescTable[8];     /*!< APB prescalers table values */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/**
 | 
				
			||||||
 | 
					  * @}
 | 
				
			||||||
 | 
					  */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/** @addtogroup STM32F7xx_System_Exported_Constants
 | 
				
			||||||
 | 
					  * @{
 | 
				
			||||||
 | 
					  */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/**
 | 
				
			||||||
 | 
					  * @}
 | 
				
			||||||
 | 
					  */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/** @addtogroup STM32F7xx_System_Exported_Macros
 | 
				
			||||||
 | 
					  * @{
 | 
				
			||||||
 | 
					  */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/**
 | 
				
			||||||
 | 
					  * @}
 | 
				
			||||||
 | 
					  */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/** @addtogroup STM32F7xx_System_Exported_Functions
 | 
				
			||||||
 | 
					  * @{
 | 
				
			||||||
 | 
					  */
 | 
				
			||||||
 | 
					  
 | 
				
			||||||
 | 
					extern void SystemInit(void);
 | 
				
			||||||
 | 
					extern void SystemCoreClockUpdate(void);
 | 
				
			||||||
 | 
					/**
 | 
				
			||||||
 | 
					  * @}
 | 
				
			||||||
 | 
					  */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifdef __cplusplus
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#endif /*__SYSTEM_STM32F7XX_H */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/**
 | 
				
			||||||
 | 
					  * @}
 | 
				
			||||||
 | 
					  */
 | 
				
			||||||
 | 
					  
 | 
				
			||||||
 | 
					/**
 | 
				
			||||||
 | 
					  * @}
 | 
				
			||||||
 | 
					  */  
 | 
				
			||||||
							
								
								
									
										130
									
								
								numworks_port/src/info_headers.cpp
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										130
									
								
								numworks_port/src/info_headers.cpp
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,130 @@
 | 
				
			|||||||
 | 
					#include <assert.h>
 | 
				
			||||||
 | 
					#include <cstdint>
 | 
				
			||||||
 | 
					#include <stddef.h>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#define byte4 0xFF, 0xFF, 0xFF, 0xFF
 | 
				
			||||||
 | 
					#define byte8 byte4, byte4
 | 
				
			||||||
 | 
					#define byte16 byte8, byte8
 | 
				
			||||||
 | 
					#define byte32 byte16, byte16
 | 
				
			||||||
 | 
					#define byte64 byte32, byte32
 | 
				
			||||||
 | 
					#define byte128 byte64, byte64
 | 
				
			||||||
 | 
					#define byte256 byte128, byte128
 | 
				
			||||||
 | 
					#define byte512 byte256, byte256
 | 
				
			||||||
 | 
					#define byte1K byte512, byte512
 | 
				
			||||||
 | 
					#define byte2K byte1K, byte1K
 | 
				
			||||||
 | 
					#define byte4K byte2K, byte2K
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#define EXAM_BUFFER_CONTENT byte4K
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					constexpr static int ExamModeBufferSize = 4*1024;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					uint32_t staticStorageArea = {0};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					class KernelHeader {
 | 
				
			||||||
 | 
					    public:
 | 
				
			||||||
 | 
					    constexpr KernelHeader() :
 | 
				
			||||||
 | 
					        m_header(Magic),
 | 
				
			||||||
 | 
					        m_version{"0.0.0"},
 | 
				
			||||||
 | 
					        m_patchLevel{"zeta"},
 | 
				
			||||||
 | 
					        m_footer(Magic) { }
 | 
				
			||||||
 | 
					    const char * version() const {
 | 
				
			||||||
 | 
					        assert(m_header == Magic);
 | 
				
			||||||
 | 
					        assert(m_footer == Magic);
 | 
				
			||||||
 | 
					        return m_version;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    const char * patchLevel() const {
 | 
				
			||||||
 | 
					        assert(m_header == Magic);
 | 
				
			||||||
 | 
					        assert(m_footer == Magic);
 | 
				
			||||||
 | 
					        return m_patchLevel;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    private:
 | 
				
			||||||
 | 
					        constexpr static uint32_t Magic = 0xDEC00DF0;
 | 
				
			||||||
 | 
					        uint32_t m_header;
 | 
				
			||||||
 | 
					        const char m_version[8];
 | 
				
			||||||
 | 
					        const char m_patchLevel[8];
 | 
				
			||||||
 | 
					        uint32_t m_footer;
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					class UserlandHeader {
 | 
				
			||||||
 | 
					public:
 | 
				
			||||||
 | 
					  constexpr UserlandHeader():
 | 
				
			||||||
 | 
					    m_header(Magic),
 | 
				
			||||||
 | 
					    m_expectedEpsilonVersion{"0.0.1"},
 | 
				
			||||||
 | 
					    m_storageAddressRAM(0x20000AE8),
 | 
				
			||||||
 | 
					    m_storageSizeRAM(0x0000EA60),
 | 
				
			||||||
 | 
					    m_externalAppsFlashStart(0xFFFFFFFF),
 | 
				
			||||||
 | 
					    m_externalAppsFlashEnd(0xFFFFFFFF),
 | 
				
			||||||
 | 
					    m_externalAppsRAMStart(0xFFFFFFFF),
 | 
				
			||||||
 | 
					    m_externalAppsRAMEnd(0xFFFFFFFF),
 | 
				
			||||||
 | 
					    m_footer(Magic),
 | 
				
			||||||
 | 
					    m_omegaMagicHeader(OmegaMagic),
 | 
				
			||||||
 | 
					    m_omegaVersion{"0.0.2"},
 | 
				
			||||||
 | 
					    m_username{"Ayabusa"},
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    m_omegaMagicFooter(OmegaMagic),
 | 
				
			||||||
 | 
					    m_upsilonMagicHeader(UpsilonMagic),
 | 
				
			||||||
 | 
					    m_UpsilonVersion{"0.0.3"},
 | 
				
			||||||
 | 
					    m_osType(OSType),
 | 
				
			||||||
 | 
					    m_upsilonMagicFooter(UpsilonMagic) { }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  const char * omegaVersion() const {
 | 
				
			||||||
 | 
					    assert(m_header == Magic);
 | 
				
			||||||
 | 
					    assert(m_footer == Magic);
 | 
				
			||||||
 | 
					    assert(m_omegaMagicHeader == OmegaMagic);
 | 
				
			||||||
 | 
					    assert(m_omegaMagicFooter == OmegaMagic);
 | 
				
			||||||
 | 
					    return m_omegaVersion;
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					  const char * upsilonVersion() const {
 | 
				
			||||||
 | 
					    assert(m_header == Magic);
 | 
				
			||||||
 | 
					    assert(m_footer == Magic);
 | 
				
			||||||
 | 
					    assert(m_omegaMagicHeader == OmegaMagic);
 | 
				
			||||||
 | 
					    assert(m_omegaMagicFooter == OmegaMagic);
 | 
				
			||||||
 | 
					    return m_UpsilonVersion;
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					  const volatile char * username() const volatile {
 | 
				
			||||||
 | 
					    assert(m_header == Magic);
 | 
				
			||||||
 | 
					    assert(m_footer == Magic);
 | 
				
			||||||
 | 
					    assert(m_omegaMagicHeader == OmegaMagic);
 | 
				
			||||||
 | 
					    assert(m_omegaMagicFooter == OmegaMagic);
 | 
				
			||||||
 | 
					    return m_username;
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					  const void * storage_address() const {
 | 
				
			||||||
 | 
					    return &staticStorageArea;
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  private:
 | 
				
			||||||
 | 
					  constexpr static uint32_t Magic = 0xDEC0EDFE; // FEEDCODE in hex editor
 | 
				
			||||||
 | 
					  constexpr static uint32_t OmegaMagic = 0xEFBEADDE; // DEADBEEF in hex editor
 | 
				
			||||||
 | 
					  constexpr static uint32_t UpsilonMagic = 0x55707369; // Upsi (reverse) in hex editor (ASCII)
 | 
				
			||||||
 | 
					  constexpr static uint32_t OSType = 0x79827178;
 | 
				
			||||||
 | 
					  uint32_t m_header;
 | 
				
			||||||
 | 
					  const char m_expectedEpsilonVersion[8];
 | 
				
			||||||
 | 
					  uint32_t m_storageAddressRAM;
 | 
				
			||||||
 | 
					  uint32_t m_storageSizeRAM;
 | 
				
			||||||
 | 
					  /* We store the range addresses of external apps memory because storing the
 | 
				
			||||||
 | 
					   * size is complicated due to c++11 constexpr. */
 | 
				
			||||||
 | 
					  uint32_t m_externalAppsFlashStart;
 | 
				
			||||||
 | 
					  uint32_t m_externalAppsFlashEnd;
 | 
				
			||||||
 | 
					  uint32_t m_externalAppsRAMStart;
 | 
				
			||||||
 | 
					  uint32_t m_externalAppsRAMEnd;
 | 
				
			||||||
 | 
					  uint32_t m_footer;
 | 
				
			||||||
 | 
					  uint32_t m_omegaMagicHeader;
 | 
				
			||||||
 | 
					  const char m_omegaVersion[16];
 | 
				
			||||||
 | 
					  const volatile char m_username[16];
 | 
				
			||||||
 | 
					  uint32_t m_omegaMagicFooter;
 | 
				
			||||||
 | 
					  uint32_t m_upsilonMagicHeader;
 | 
				
			||||||
 | 
					  const char m_UpsilonVersion[16];
 | 
				
			||||||
 | 
					  uint32_t m_osType;
 | 
				
			||||||
 | 
					  uint32_t m_upsilonMagicFooter;
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// kernel header defined in linker
 | 
				
			||||||
 | 
					const KernelHeader __attribute__((section(".kernel_header"), used)) k_kernelHeader;
 | 
				
			||||||
 | 
					// userland header defined in linker
 | 
				
			||||||
 | 
					const UserlandHeader __attribute__((section(".userland_header"), used)) k_userlandHeader;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// Exam mode defined in linker
 | 
				
			||||||
 | 
					char ones[ExamModeBufferSize]
 | 
				
			||||||
 | 
					  __attribute__((section(".exam_mode_buffer")))
 | 
				
			||||||
 | 
					  __attribute__((used))
 | 
				
			||||||
 | 
					= {EXAM_BUFFER_CONTENT};
 | 
				
			||||||
							
								
								
									
										151
									
								
								numworks_port/src/linker.ld
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										151
									
								
								numworks_port/src/linker.ld
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,151 @@
 | 
				
			|||||||
 | 
					/* Label for the program's entry point */
 | 
				
			||||||
 | 
					/*ENTRY(reset_handler)*/
 | 
				
			||||||
 | 
					/* End of RAM / Start of stack */
 | 
				
			||||||
 | 
					/* (4KB SRAM) */
 | 
				
			||||||
 | 
					_estack = 0x20262144;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/* epsilon stuff */
 | 
				
			||||||
 | 
					STACK_SIZE = 32K;
 | 
				
			||||||
 | 
					FIRST_FLASH_SECTOR_SIZE = 4K;
 | 
				
			||||||
 | 
					SIGNED_PAYLOAD_LENGTH = 8;
 | 
				
			||||||
 | 
					USERLAND_OFFSET = 64K;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/* Set minimum size for stack and dynamic memory. */
 | 
				
			||||||
 | 
					/* (The linker will generate an error if there is
 | 
				
			||||||
 | 
					 * less than this much RAM leftover.) */
 | 
				
			||||||
 | 
					/* (1KB) */
 | 
				
			||||||
 | 
					_Min_Leftover_RAM = 0x400;
 | 
				
			||||||
 | 
					MEMORY
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					  FLASH ( rx )      : ORIGIN = 0x90400000, LENGTH = 4M /* This is for the B slot */
 | 
				
			||||||
 | 
					  RAM ( rxw )       : ORIGIN = 0x20000000, LENGTH = 256K
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					SECTIONS
 | 
				
			||||||
 | 
					{ 
 | 
				
			||||||
 | 
					  /* epsilon stuff */
 | 
				
			||||||
 | 
					  .signed_payload_prefix ORIGIN(FLASH) : {
 | 
				
			||||||
 | 
					    FILL(0xFF);
 | 
				
			||||||
 | 
					    BYTE(0xFF)
 | 
				
			||||||
 | 
					    . = ORIGIN(FLASH) + SIGNED_PAYLOAD_LENGTH;
 | 
				
			||||||
 | 
					  } >FLASH
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  .kernel_header : {
 | 
				
			||||||
 | 
					    KEEP(*(.kernel_header))
 | 
				
			||||||
 | 
					  } >FLASH
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  .slot_info : {
 | 
				
			||||||
 | 
					    *(.slot_info*)
 | 
				
			||||||
 | 
					  } >RAM
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  /* The vector table goes at the start of flash. */
 | 
				
			||||||
 | 
					  .isr_vector_table ORIGIN(RAM) + 512 : AT(ORIGIN(FLASH) + SIZEOF(.signed_payload_prefix) + SIZEOF(.kernel_header)) {
 | 
				
			||||||
 | 
					    /* When booting, the STM32F412 fetches the content of address 0x0, and
 | 
				
			||||||
 | 
					     * extracts from it various key infos: the initial value of the PC register
 | 
				
			||||||
 | 
					     * (program counter), the initial value of the stack pointer, and various
 | 
				
			||||||
 | 
					     * entry points to interrupt service routines. This data is called the ISR
 | 
				
			||||||
 | 
					     * vector table.
 | 
				
			||||||
 | 
					     *
 | 
				
			||||||
 | 
					     * Note that address 0x0 is always an alias. It points to the beginning of
 | 
				
			||||||
 | 
					     * Flash, SRAM, or integrated bootloader depending on the boot mode chosen.
 | 
				
			||||||
 | 
					     * (This mode is chosen by setting the BOOTn pins on the chip).
 | 
				
			||||||
 | 
					     *
 | 
				
			||||||
 | 
					     * We're generating the ISR vector table in code because it's very
 | 
				
			||||||
 | 
					     * convenient: using function pointers, we can easily point to the service
 | 
				
			||||||
 | 
					     * routine for each interrupt. */
 | 
				
			||||||
 | 
					    _isr_vector_table_start_flash = LOADADDR(.isr_vector_table);
 | 
				
			||||||
 | 
					    _isr_vector_table_start_ram = .;
 | 
				
			||||||
 | 
					    KEEP(*(.isr_vector_table))
 | 
				
			||||||
 | 
					    _isr_vector_table_end_ram = .;
 | 
				
			||||||
 | 
					  } >RAM
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  .exam_mode_buffer ORIGIN(FLASH) + SIZEOF(.signed_payload_prefix) + SIZEOF(.kernel_header) + SIZEOF(.isr_vector_table) : {
 | 
				
			||||||
 | 
					    . = ALIGN(4K);
 | 
				
			||||||
 | 
					    _exam_mode_buffer_start = .;
 | 
				
			||||||
 | 
					    KEEP(*(.exam_mode_buffer))
 | 
				
			||||||
 | 
					    /* Note: We don't increment "." here, we set it. */
 | 
				
			||||||
 | 
					    . = . + FIRST_FLASH_SECTOR_SIZE;
 | 
				
			||||||
 | 
					    _exam_mode_buffer_end = .;
 | 
				
			||||||
 | 
					  } >FLASH
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  /* External flash memory */
 | 
				
			||||||
 | 
					  .userland_header : {
 | 
				
			||||||
 | 
					    . = ORIGIN(FLASH) + USERLAND_OFFSET;
 | 
				
			||||||
 | 
					    KEEP(*(.userland_header));
 | 
				
			||||||
 | 
					  } > FLASH
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  .text : {
 | 
				
			||||||
 | 
					    . = ALIGN(4);
 | 
				
			||||||
 | 
					    *(.text)
 | 
				
			||||||
 | 
					    *(.text.*)
 | 
				
			||||||
 | 
					  } >FLASH
 | 
				
			||||||
 | 
					  /* The 'rodata' section contains read-only data,
 | 
				
			||||||
 | 
					   * constants, strings, information that won't change. */
 | 
				
			||||||
 | 
					  .rodata : {
 | 
				
			||||||
 | 
					    *(.rodata)
 | 
				
			||||||
 | 
					    *(.rodata.*)
 | 
				
			||||||
 | 
					  } >FLASH
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  /* The 'data' section is space set aside in RAM for
 | 
				
			||||||
 | 
					   * things like variables, which can change. */
 | 
				
			||||||
 | 
					  .data : {
 | 
				
			||||||
 | 
					    /* The data section is written to Flash but linked as if it were in RAM.
 | 
				
			||||||
 | 
					     *
 | 
				
			||||||
 | 
					     * This is required because its initial value matters (so it has to be in
 | 
				
			||||||
 | 
					     * persistant memory in the first place), but it is a R/W area of memory
 | 
				
			||||||
 | 
					     * so it will have to live in RAM upon execution (in linker lingo, that
 | 
				
			||||||
 | 
					     * translates to the data section having a LMA in Flash and a VMA in RAM).
 | 
				
			||||||
 | 
					     *
 | 
				
			||||||
 | 
					     * This means we'll have to copy it from Flash to RAM on initialization.
 | 
				
			||||||
 | 
					     * To do this, we'll need to know the source location of the data section
 | 
				
			||||||
 | 
					     * (in Flash), the target location (in RAM), and the size of the section.
 | 
				
			||||||
 | 
					     * That's why we're defining three symbols that we'll use in the initial-
 | 
				
			||||||
 | 
					     * -ization routine. */
 | 
				
			||||||
 | 
					    . = ALIGN(4);
 | 
				
			||||||
 | 
					    _data_section_start_flash = LOADADDR(.data);
 | 
				
			||||||
 | 
					    _data_section_start_ram = .;
 | 
				
			||||||
 | 
					    *(.data)
 | 
				
			||||||
 | 
					    *(.data.*)
 | 
				
			||||||
 | 
					    _data_section_end_ram = .;
 | 
				
			||||||
 | 
					  } >RAM AT> FLASH
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  /* The 'bss' section is similar to the 'data' section,
 | 
				
			||||||
 | 
					   * but its space is initialized to all 0s at the
 | 
				
			||||||
 | 
					   * start of the program. */
 | 
				
			||||||
 | 
					  .bss : {
 | 
				
			||||||
 | 
					    /* The bss section contains data for all uninitialized variables
 | 
				
			||||||
 | 
					     * So like the .data section, it will go in RAM, but unlike the data section
 | 
				
			||||||
 | 
					     * we don't care at all about an initial value.
 | 
				
			||||||
 | 
					     *
 | 
				
			||||||
 | 
					     * Before execution, crt0 will erase that section of memory though, so we'll
 | 
				
			||||||
 | 
					     * need pointers to the beginning and end of this section. */
 | 
				
			||||||
 | 
					    . = ALIGN(4);
 | 
				
			||||||
 | 
					    _bss_section_start_ram = .;
 | 
				
			||||||
 | 
					    *(.bss)
 | 
				
			||||||
 | 
					    *(.bss.*)
 | 
				
			||||||
 | 
					    /* The compiler may choose to allocate uninitialized global variables as
 | 
				
			||||||
 | 
					     * COMMON blocks. This can be disabled with -fno-common if needed. */
 | 
				
			||||||
 | 
					    *(COMMON)
 | 
				
			||||||
 | 
					    _bss_section_end_ram = .;
 | 
				
			||||||
 | 
					  } >RAM
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  .heap : {
 | 
				
			||||||
 | 
					    _heap_start = .;
 | 
				
			||||||
 | 
					    /* Note: We don't increment "." here, we set it. */
 | 
				
			||||||
 | 
					    . = (ORIGIN(RAM) + LENGTH(RAM) - STACK_SIZE);
 | 
				
			||||||
 | 
					    _heap_end = .;
 | 
				
			||||||
 | 
					  } >RAM
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  .stack : {
 | 
				
			||||||
 | 
					    . = ALIGN(8);
 | 
				
			||||||
 | 
					    _stack_end = .;
 | 
				
			||||||
 | 
					    . += (STACK_SIZE - 8);
 | 
				
			||||||
 | 
					    . = ALIGN(8);
 | 
				
			||||||
 | 
					    _stack_start = .;
 | 
				
			||||||
 | 
					  } >RAM
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  /DISCARD/ : {
 | 
				
			||||||
 | 
					    /* exidx and extab are needed for unwinding, which we don't use */
 | 
				
			||||||
 | 
					    *(.ARM.exidx*)
 | 
				
			||||||
 | 
					    *(.ARM.extab*)
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										21
									
								
								numworks_port/src/main.c.BAK
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										21
									
								
								numworks_port/src/main.c.BAK
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,21 @@
 | 
				
			|||||||
 | 
					#include "main.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/* Main program. */
 | 
				
			||||||
 | 
					int main(void) {
 | 
				
			||||||
 | 
					  // Enable the GPIOa and GPIOC peripheral in RCC.
 | 
				
			||||||
 | 
					  RCC->AHB1ENR   |= RCC_AHB1ENR_GPIOBEN ;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  // C0 is connected to the LED
 | 
				
			||||||
 | 
					  // It should be set to push-pull low-speed output.
 | 
				
			||||||
 | 
					  GPIOB->MODER  &= ~(0x3 << (LED_PIN*2));
 | 
				
			||||||
 | 
					  GPIOB->MODER  |=  (0x1 << (LED_PIN*2));
 | 
				
			||||||
 | 
					  GPIOB->OTYPER &= ~(1 << LED_PIN);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  // set the led on
 | 
				
			||||||
 | 
					  GPIOB->ODR = (1 << LED_PIN);
 | 
				
			||||||
 | 
					  while (0)
 | 
				
			||||||
 | 
					  {
 | 
				
			||||||
 | 
					    GPIOB->ODR = (1 << LED_PIN);
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					  
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										7
									
								
								numworks_port/src/main.h.BAK
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										7
									
								
								numworks_port/src/main.h.BAK
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,7 @@
 | 
				
			|||||||
 | 
					#ifndef _VVC_MAIN_H
 | 
				
			||||||
 | 
					#define _VVC_MAIN_H
 | 
				
			||||||
 | 
					#include <stdint.h>
 | 
				
			||||||
 | 
					#include "device/stm32f730xx.h"
 | 
				
			||||||
 | 
					// Define GPIOB pin mappings for our LED and button.
 | 
				
			||||||
 | 
					#define LED_PIN    (3) // led on PC0
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
							
								
								
									
										59
									
								
								numworks_port/src/rt0.cpp
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										59
									
								
								numworks_port/src/rt0.cpp
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,59 @@
 | 
				
			|||||||
 | 
					#include "vector_table.h"
 | 
				
			||||||
 | 
					#include <stddef.h>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					typedef void (*cxx_constructor)();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					extern "C" {
 | 
				
			||||||
 | 
					  extern char _data_section_start_flash;
 | 
				
			||||||
 | 
					  extern char _data_section_start_ram;
 | 
				
			||||||
 | 
					  extern char _data_section_end_ram;
 | 
				
			||||||
 | 
					  extern char _bss_section_start_ram;
 | 
				
			||||||
 | 
					  extern char _bss_section_end_ram;
 | 
				
			||||||
 | 
					  extern cxx_constructor _init_array_start;
 | 
				
			||||||
 | 
					  extern cxx_constructor _init_array_end;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void* memcpy_custom(void* destination, const void* source, size_t num_bytes) {
 | 
				
			||||||
 | 
					    char* dest_ptr = (char*)destination;
 | 
				
			||||||
 | 
					    const char* src_ptr = (const char*)source;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    // Copy each byte from source to destination
 | 
				
			||||||
 | 
					    for (size_t i = 0; i < num_bytes; ++i) {
 | 
				
			||||||
 | 
					        dest_ptr[i] = src_ptr[i];
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    return destination;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void* memset_custom(void* ptr, int value, size_t num_bytes) {
 | 
				
			||||||
 | 
					    unsigned char* p = (unsigned char*)ptr;
 | 
				
			||||||
 | 
					    unsigned char v = (unsigned char)value;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    // Set each byte in the memory block to the specified value
 | 
				
			||||||
 | 
					    for (size_t i = 0; i < num_bytes; ++i) {
 | 
				
			||||||
 | 
					        p[i] = v;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    return ptr;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void __attribute__((noinline)) start() {
 | 
				
			||||||
 | 
					    /* Copy data section to RAM
 | 
				
			||||||
 | 
					  * The data section is R/W but its initialization value matters. It's stored
 | 
				
			||||||
 | 
					  * in Flash, but linked as if it were in RAM. Now's our opportunity to copy
 | 
				
			||||||
 | 
					  * it. Note that until then the data section (e.g. global variables) contains
 | 
				
			||||||
 | 
					  * garbage values and should not be used. */
 | 
				
			||||||
 | 
					  size_t dataSectionLength = (&_data_section_end_ram - &_data_section_start_ram);
 | 
				
			||||||
 | 
					  memcpy_custom(&_data_section_start_ram, &_data_section_start_flash, dataSectionLength);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  /* Zero-out the bss section in RAM
 | 
				
			||||||
 | 
					  * Until we do, any uninitialized global variable will be unusable. */
 | 
				
			||||||
 | 
					  size_t bssSectionLength = (&_bss_section_end_ram - &_bss_section_start_ram);
 | 
				
			||||||
 | 
					  memset_custom(&_bss_section_start_ram, 0, bssSectionLength);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  while (0)
 | 
				
			||||||
 | 
					  {
 | 
				
			||||||
 | 
					    /* code */
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										129
									
								
								numworks_port/src/vector_table.cpp
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										129
									
								
								numworks_port/src/vector_table.cpp
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,129 @@
 | 
				
			|||||||
 | 
					#include "vector_table.h"
 | 
				
			||||||
 | 
					extern const void * _estack;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/* Interrupt Service Routines are void->void functions */
 | 
				
			||||||
 | 
					typedef void(*ISR)(void);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/* Notice: The Cortex-M4 expects all jumps to be made at an odd address when
 | 
				
			||||||
 | 
					 * jumping to Thumb code. For example, if you want to execute Thumb code at
 | 
				
			||||||
 | 
					 * address 0x100, you'll have to jump to 0x101. Luckily, this idiosyncrasy is
 | 
				
			||||||
 | 
					 * properly handled by the C compiler that will generate proper addresses when
 | 
				
			||||||
 | 
					 * using function pointers. */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#define INITIALISATION_VECTOR_SIZE 0x71
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					ISR InitialisationVector[INITIALISATION_VECTOR_SIZE]
 | 
				
			||||||
 | 
					  __attribute__((section(".isr_vector_table")))
 | 
				
			||||||
 | 
					  __attribute__((used))
 | 
				
			||||||
 | 
					  = {
 | 
				
			||||||
 | 
					  (ISR)&_estack, // Stack start
 | 
				
			||||||
 | 
					  start, // Reset service routine,
 | 
				
			||||||
 | 
					  0, // NMI service routine,
 | 
				
			||||||
 | 
					  0, // HardFault service routine,
 | 
				
			||||||
 | 
					  0, // MemManage service routine,
 | 
				
			||||||
 | 
					  0, // BusFault service routine,
 | 
				
			||||||
 | 
					  0, // UsageFault service routine,
 | 
				
			||||||
 | 
					  0, 0, 0, 0, // Reserved
 | 
				
			||||||
 | 
					  0, // SVCall service routine,
 | 
				
			||||||
 | 
					  0, // DebugMonitor service routine,
 | 
				
			||||||
 | 
					  0, // Reserved
 | 
				
			||||||
 | 
					  0, // PendSV service routine,
 | 
				
			||||||
 | 
					  0, // SysTick service routine
 | 
				
			||||||
 | 
					  0, // WWDG service routine
 | 
				
			||||||
 | 
					  0, // PVD service routine
 | 
				
			||||||
 | 
					  0, // TampStamp service routine
 | 
				
			||||||
 | 
					  0, // RtcWakeup service routine
 | 
				
			||||||
 | 
					  0, // Flash service routine
 | 
				
			||||||
 | 
					  0, // RCC service routine
 | 
				
			||||||
 | 
					  0, // EXTI0 service routine
 | 
				
			||||||
 | 
					  0, // EXTI1 service routine
 | 
				
			||||||
 | 
					  0, // EXTI2 service routine
 | 
				
			||||||
 | 
					  0, // EXTI3 service routine
 | 
				
			||||||
 | 
					  0, // EXTI4 service routine
 | 
				
			||||||
 | 
					  0, // DMA1Stream0 service routine
 | 
				
			||||||
 | 
					  0, // DMA1Stream1 service routine
 | 
				
			||||||
 | 
					  0, // DMA1Stream2 service routine
 | 
				
			||||||
 | 
					  0, // DMA1Stream3 service routine
 | 
				
			||||||
 | 
					  0, // DMA1Stream4 service routine
 | 
				
			||||||
 | 
					  0, // DMA1Stream5 service routine
 | 
				
			||||||
 | 
					  0, // DMA1Stream6 service routine
 | 
				
			||||||
 | 
					  0, // ADC1 global interrupt
 | 
				
			||||||
 | 
					  0, // CAN1 TX interrupt
 | 
				
			||||||
 | 
					  0, // CAN1 RX0 interrupt
 | 
				
			||||||
 | 
					  0, // CAN1 RX1 interrupt
 | 
				
			||||||
 | 
					  0, // CAN1 SCE interrupt
 | 
				
			||||||
 | 
					  0, // EXTI Line[9:5] interrupts
 | 
				
			||||||
 | 
					  0, // TIM1 Break interrupt and TIM9 global interrupt
 | 
				
			||||||
 | 
					  0, // TIM1 update interrupt and TIM10 global interrupt
 | 
				
			||||||
 | 
					  0, // TIM1 Trigger & Commutation interrupts and TIM11 global interrupt
 | 
				
			||||||
 | 
					  0, // TIM1 Capture Compare interrupt
 | 
				
			||||||
 | 
					  0, // TIM2 global interrupt
 | 
				
			||||||
 | 
					  0, // TIM3 global interrupt
 | 
				
			||||||
 | 
					  0, // TIM4 global interrupt
 | 
				
			||||||
 | 
					  0, // I2C1 global event interrupt
 | 
				
			||||||
 | 
					  0, // I2C1 global error interrupt
 | 
				
			||||||
 | 
					  0, // I2C2 global event interrupt
 | 
				
			||||||
 | 
					  0, // I2C2 global error interrupt
 | 
				
			||||||
 | 
					  0, // SPI1 global interrupt
 | 
				
			||||||
 | 
					  0, // SPI2 global interrupt
 | 
				
			||||||
 | 
					  0, // USART1 global interrupt
 | 
				
			||||||
 | 
					  0, // USART2 global interrupt
 | 
				
			||||||
 | 
					  0, // USART3 global interrupt
 | 
				
			||||||
 | 
					  0, // EXTI Line[15:10] interrupts
 | 
				
			||||||
 | 
					  0, // EXTI Line 17 interrupt RTC Alarms (A and B) through EXTI line interrupt
 | 
				
			||||||
 | 
					  0, // EXTI Line 18 interrupt / USB On-The-Go FS Wakeup through EXTI line interrupt
 | 
				
			||||||
 | 
					  0, // TIM8 Break interrupt TIM12 global interrupt
 | 
				
			||||||
 | 
					  0, // TIM8 Update interrupt TIM13 global interrupt
 | 
				
			||||||
 | 
					  0, // TIM8 Trigger & Commutation interrupt TIM14 global interrupt
 | 
				
			||||||
 | 
					  0, // TIM8 Cap/Com interrupt
 | 
				
			||||||
 | 
					  0, // DMA1 global interrupt Channel 7
 | 
				
			||||||
 | 
					  0, // FSMC global interrupt
 | 
				
			||||||
 | 
					  0, // SDIO global interrupt
 | 
				
			||||||
 | 
					  0, // TIM5 global interrupt
 | 
				
			||||||
 | 
					  0, // SPI3 global interrupt
 | 
				
			||||||
 | 
					  0, // ?
 | 
				
			||||||
 | 
					  0, // ?
 | 
				
			||||||
 | 
					  0, // TIM6 global interrupt
 | 
				
			||||||
 | 
					  0, // TIM7 global interrupt
 | 
				
			||||||
 | 
					  0, // DMA2 Stream0 global interrupt
 | 
				
			||||||
 | 
					  0, // DMA2 Stream1 global interrupt
 | 
				
			||||||
 | 
					  0, // DMA2 Stream2 global interrupt
 | 
				
			||||||
 | 
					  0, // DMA2 Stream3 global interrupt
 | 
				
			||||||
 | 
					  0, // DMA2 Stream4 global interrupt
 | 
				
			||||||
 | 
					  0, // SD filter0 global interrupt
 | 
				
			||||||
 | 
					  0, // SD filter1 global interrupt
 | 
				
			||||||
 | 
					  0, // CAN2 TX interrupt
 | 
				
			||||||
 | 
					  0, // BXCAN2 RX0 interrupt
 | 
				
			||||||
 | 
					  0, // BXCAN2 RX1 interrupt
 | 
				
			||||||
 | 
					  0, // CAN2 SCE interrupt
 | 
				
			||||||
 | 
					  0, // USB On The Go FS global interrupt
 | 
				
			||||||
 | 
					  0, // DMA2 Stream5 global interrupts
 | 
				
			||||||
 | 
					  0, // DMA2 Stream6 global interrupt
 | 
				
			||||||
 | 
					  0, // DMA2 Stream7 global interrupt
 | 
				
			||||||
 | 
					  0, // USART6 global interrupt
 | 
				
			||||||
 | 
					  0, // I2C3 event interrupt
 | 
				
			||||||
 | 
					  0, // I2C3 error interrupt
 | 
				
			||||||
 | 
					  0, // ?
 | 
				
			||||||
 | 
					  0, // ?
 | 
				
			||||||
 | 
					  0, // ?
 | 
				
			||||||
 | 
					  0, // ?
 | 
				
			||||||
 | 
					  0, // ?
 | 
				
			||||||
 | 
					  0, // ?
 | 
				
			||||||
 | 
					  0, // RNG global interrupt
 | 
				
			||||||
 | 
					  0, // FPU global interrupt
 | 
				
			||||||
 | 
					  0, // ?
 | 
				
			||||||
 | 
					  0, // ?
 | 
				
			||||||
 | 
					  0, // SPI4 global interrupt
 | 
				
			||||||
 | 
					  0, // SPI5 global interrupt
 | 
				
			||||||
 | 
					  0, // ?
 | 
				
			||||||
 | 
					  0, // ?
 | 
				
			||||||
 | 
					  0, // ?
 | 
				
			||||||
 | 
					  0, // ?
 | 
				
			||||||
 | 
					  0, // ?
 | 
				
			||||||
 | 
					  0, // ?
 | 
				
			||||||
 | 
					  0, // Quad-SPI global interrupt
 | 
				
			||||||
 | 
					  0, // ?
 | 
				
			||||||
 | 
					  0, // ?
 | 
				
			||||||
 | 
					  0, // I2CFMP1 event interrupt
 | 
				
			||||||
 | 
					  0  // I2CFMP1 error interrupt
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
							
								
								
									
										23
									
								
								numworks_port/src/vector_table.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										23
									
								
								numworks_port/src/vector_table.h
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,23 @@
 | 
				
			|||||||
 | 
					#ifndef VECTOR_TABLE_H
 | 
				
			||||||
 | 
					#define VECTOR_TABLE_H
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifdef __cplusplus
 | 
				
			||||||
 | 
					extern "C" {
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void start();
 | 
				
			||||||
 | 
					void abort();
 | 
				
			||||||
 | 
					void isr_systick();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// Fault handlers
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void hard_fault_handler();
 | 
				
			||||||
 | 
					void mem_fault_handler();
 | 
				
			||||||
 | 
					void usage_fault_handler();
 | 
				
			||||||
 | 
					void bus_fault_handler();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifdef __cplusplus
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
		Reference in New Issue
	
	Block a user