adding ea4088 quickstart, able to blink
This commit is contained in:
		| @@ -8,4 +8,5 @@ | ||||
|   <import file_name="lpc13xx/lpc13xx.emProject" /> | ||||
|   <import file_name="lpc11u6x/lpc11u6x.emProject" /> | ||||
|   <import file_name="lpc18xx/lpc18xx.emProject" /> | ||||
|   <import file_name="lpc40xx/lpc40xx.emProject" /> | ||||
| </solution> | ||||
|   | ||||
							
								
								
									
										128
									
								
								examples/device/cdc_msc_hid/ses/lpc40xx/LPC4000_Startup.s
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										128
									
								
								examples/device/cdc_msc_hid/ses/lpc40xx/LPC4000_Startup.s
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,128 @@ | ||||
| /***************************************************************************** | ||||
|  *                   SEGGER Microcontroller GmbH & Co. KG                    * | ||||
|  *            Solutions for real time microcontroller applications           * | ||||
|  ***************************************************************************** | ||||
|  *                                                                           * | ||||
|  *               (c) 2017 SEGGER Microcontroller GmbH & Co. KG               * | ||||
|  *                                                                           * | ||||
|  *           Internet: www.segger.com   Support: support@segger.com          * | ||||
|  *                                                                           * | ||||
|  *****************************************************************************/ | ||||
|  | ||||
| /***************************************************************************** | ||||
|  *                         Preprocessor Definitions                          * | ||||
|  *                         ------------------------                          * | ||||
|  * NO_FPU_ENABLE                                                             * | ||||
|  *                                                                           * | ||||
|  *   If defined, FPU will not be enabled.                                    * | ||||
|  *                                                                           * | ||||
|  * NO_STACK_INIT                                                             * | ||||
|  *                                                                           * | ||||
|  *   If defined, the stack pointer will not be initialised.                  * | ||||
|  *                                                                           * | ||||
|  * NO_SYSTEM_INIT                                                            * | ||||
|  *                                                                           * | ||||
|  *   If defined, the SystemInit() function will not be called. By default    * | ||||
|  *   SystemInit() is called after reset to enable the clocks and memories to * | ||||
|  *   be initialised prior to any C startup initialisation.                   * | ||||
|  *                                                                           * | ||||
|  * NO_VTOR_CONFIG                                                            * | ||||
|  *                                                                           * | ||||
|  *   If defined, the vector table offset register will not be configured.    * | ||||
|  *                                                                           * | ||||
|  * MEMORY_INIT                                                               * | ||||
|  *                                                                           * | ||||
|  *   If defined, the MemoryInit() function will be called. By default        * | ||||
|  *   MemoryInit() is called after SystemInit() to enable an external memory  * | ||||
|  *   controller.                                                             * | ||||
|  *                                                                           * | ||||
|  * STACK_INIT_VAL                                                            * | ||||
|  *                                                                           * | ||||
|  *   If defined, specifies the initial stack pointer value. If undefined,    * | ||||
|  *   the stack pointer will be initialised to point to the end of the        * | ||||
|  *   RAM segment.                                                            * | ||||
|  *                                                                           * | ||||
|  * VECTORS_IN_RAM                                                            * | ||||
|  *                                                                           * | ||||
|  *   If defined, the exception vectors will be copied from Flash to RAM.     * | ||||
|  *                                                                           * | ||||
|  *****************************************************************************/ | ||||
|  | ||||
|   .syntax unified | ||||
|  | ||||
|   .global Reset_Handler | ||||
|   .extern _vectors | ||||
|  | ||||
|   .section .init, "ax" | ||||
|   .thumb_func | ||||
|  | ||||
|   .equ VTOR_REG, 0xE000ED08 | ||||
|   .equ FPU_CPACR_REG, 0xE000ED88 | ||||
|  | ||||
| #ifndef STACK_INIT_VAL | ||||
| #define STACK_INIT_VAL __RAM_segment_end__ | ||||
| #endif | ||||
|  | ||||
| Reset_Handler: | ||||
| #ifndef NO_STACK_INIT | ||||
|   /* Initialise main stack */ | ||||
|   ldr r0, =STACK_INIT_VAL | ||||
|   bic r0, #0x7 | ||||
|   mov sp, r0 | ||||
| #endif | ||||
|  | ||||
| #ifndef NO_SYSTEM_INIT | ||||
|   /* Initialise system */ | ||||
|   ldr r0, =SystemInit | ||||
|   blx r0 | ||||
|   .pushsection .init_array, "aw", %init_array | ||||
|   .word SystemCoreClockUpdate | ||||
|   .popsection | ||||
| #endif | ||||
|  | ||||
| #ifdef MEMORY_INIT | ||||
|   ldr r0, =MemoryInit | ||||
|   blx r0 | ||||
| #endif | ||||
|  | ||||
| #ifdef VECTORS_IN_RAM | ||||
|   /* Copy exception vectors into RAM */ | ||||
|   ldr r0, =__vectors_start__ | ||||
|   ldr r1, =__vectors_end__ | ||||
|   ldr r2, =__vectors_ram_start__ | ||||
| 1: | ||||
|   cmp r0, r1 | ||||
|   beq 2f | ||||
|   ldr r3, [r0] | ||||
|   str r3, [r2] | ||||
|   adds r0, r0, #4 | ||||
|   adds r2, r2, #4 | ||||
|   b 1b | ||||
| 2: | ||||
| #endif | ||||
|  | ||||
| #ifndef NO_VTOR_CONFIG | ||||
|   /* Configure vector table offset register */ | ||||
|   ldr r0, =VTOR_REG | ||||
| #ifdef VECTORS_IN_RAM | ||||
|   ldr r1, =_vectors_ram | ||||
| #else | ||||
|   ldr r1, =_vectors | ||||
| #endif | ||||
|   str r1, [r0] | ||||
| #endif | ||||
|  | ||||
| #if (defined(__ARM_ARCH_FPV4_SP_D16__) || defined(__ARM_ARCH_FPV5_D16__)) && !defined(NO_FPU_ENABLE) | ||||
|   /* Enable FPU */ | ||||
|   ldr r0, =FPU_CPACR_REG | ||||
|   ldr r1, [r0] | ||||
|   orr r1, r1, #(0xF << 20) | ||||
|   str r1, [r0] | ||||
|   dsb | ||||
|   isb | ||||
| #endif | ||||
|  | ||||
|   /* Jump to program start */ | ||||
|   b _start | ||||
|  | ||||
|  | ||||
							
								
								
									
										19
									
								
								examples/device/cdc_msc_hid/ses/lpc40xx/LPC4000_Target.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										19
									
								
								examples/device/cdc_msc_hid/ses/lpc40xx/LPC4000_Target.js
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,19 @@ | ||||
| /***************************************************************************** | ||||
|  *                   SEGGER Microcontroller GmbH & Co. KG                    * | ||||
|  *            Solutions for real time microcontroller applications           * | ||||
|  ***************************************************************************** | ||||
|  *                                                                           * | ||||
|  *               (c) 2017 SEGGER Microcontroller GmbH & Co. KG               * | ||||
|  *                                                                           * | ||||
|  *           Internet: www.segger.com   Support: support@segger.com          * | ||||
|  *                                                                           * | ||||
|  *****************************************************************************/ | ||||
|  | ||||
| function Reset() { | ||||
|   TargetInterface.resetAndStop(); | ||||
| } | ||||
|  | ||||
| function EnableTrace(traceInterfaceType) { | ||||
|   // TODO: Enable trace | ||||
| } | ||||
|  | ||||
| @@ -0,0 +1,6 @@ | ||||
| <!DOCTYPE Board_Memory_Definition_File> | ||||
| <root name="LPC4088FBD208"> | ||||
|   <MemorySegment name="FLASH" start="0x00000000" size="0x00080000" access="ReadOnly" /> | ||||
|   <MemorySegment name="RAM" start="0x10000000" size="0x00010000" access="Read/Write" /> | ||||
|   <MemorySegment name="RAM2" start="0x20000000" size="0x00008000" access="Read/Write" /> | ||||
| </root> | ||||
							
								
								
									
										18992
									
								
								examples/device/cdc_msc_hid/ses/lpc40xx/LPC408x_7x_Registers.xml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										18992
									
								
								examples/device/cdc_msc_hid/ses/lpc40xx/LPC408x_7x_Registers.xml
									
									
									
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
							
								
								
									
										458
									
								
								examples/device/cdc_msc_hid/ses/lpc40xx/LPC408x_7x_Vectors.s
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										458
									
								
								examples/device/cdc_msc_hid/ses/lpc40xx/LPC408x_7x_Vectors.s
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,458 @@ | ||||
| /***************************************************************************** | ||||
|  *                   SEGGER Microcontroller GmbH & Co. KG                    * | ||||
|  *            Solutions for real time microcontroller applications           * | ||||
|  ***************************************************************************** | ||||
|  *                                                                           * | ||||
|  *               (c) 2017 SEGGER Microcontroller GmbH & Co. KG               * | ||||
|  *                                                                           * | ||||
|  *           Internet: www.segger.com   Support: support@segger.com          * | ||||
|  *                                                                           * | ||||
|  *****************************************************************************/ | ||||
|  | ||||
| /***************************************************************************** | ||||
|  *                         Preprocessor Definitions                          * | ||||
|  *                         ------------------------                          * | ||||
|  * VECTORS_IN_RAM                                                            * | ||||
|  *                                                                           * | ||||
|  *   If defined, an area of RAM will large enough to store the vector table  * | ||||
|  *   will be reserved.                                                       * | ||||
|  *                                                                           * | ||||
|  *****************************************************************************/ | ||||
|  | ||||
|   .syntax unified | ||||
|   .code 16 | ||||
|  | ||||
|   .section .init, "ax" | ||||
|   .align 0 | ||||
|  | ||||
| /***************************************************************************** | ||||
|  * Default Exception Handlers                                                * | ||||
|  *****************************************************************************/ | ||||
|  | ||||
|   .thumb_func | ||||
|   .weak NMI_Handler | ||||
| NMI_Handler: | ||||
|   b . | ||||
|  | ||||
|   .thumb_func | ||||
|   .weak HardFault_Handler | ||||
| HardFault_Handler: | ||||
|   b . | ||||
|  | ||||
|   .thumb_func | ||||
|   .weak SVC_Handler | ||||
| SVC_Handler: | ||||
|   b . | ||||
|  | ||||
|   .thumb_func | ||||
|   .weak PendSV_Handler | ||||
| PendSV_Handler: | ||||
|   b . | ||||
|  | ||||
|   .thumb_func | ||||
|   .weak SysTick_Handler | ||||
| SysTick_Handler: | ||||
|   b . | ||||
|  | ||||
|   .thumb_func | ||||
| Dummy_Handler: | ||||
|   b . | ||||
|  | ||||
| #if defined(__OPTIMIZATION_SMALL) | ||||
|  | ||||
|   .weak WWDT_IRQHandler | ||||
|   .thumb_set WWDT_IRQHandler,Dummy_Handler | ||||
|  | ||||
|   .weak TIMER0_IRQHandler | ||||
|   .thumb_set TIMER0_IRQHandler,Dummy_Handler | ||||
|  | ||||
|   .weak TIMER1_IRQHandler | ||||
|   .thumb_set TIMER1_IRQHandler,Dummy_Handler | ||||
|  | ||||
|   .weak TIMER2_IRQHandler | ||||
|   .thumb_set TIMER2_IRQHandler,Dummy_Handler | ||||
|  | ||||
|   .weak TIMER3_IRQHandler | ||||
|   .thumb_set TIMER3_IRQHandler,Dummy_Handler | ||||
|  | ||||
|   .weak UART0_IRQHandler | ||||
|   .thumb_set UART0_IRQHandler,Dummy_Handler | ||||
|  | ||||
|   .weak UART1_IRQHandler | ||||
|   .thumb_set UART1_IRQHandler,Dummy_Handler | ||||
|  | ||||
|   .weak UART2_IRQHandler | ||||
|   .thumb_set UART2_IRQHandler,Dummy_Handler | ||||
|  | ||||
|   .weak UART3_IRQHandler | ||||
|   .thumb_set UART3_IRQHandler,Dummy_Handler | ||||
|  | ||||
|   .weak PWM1_IRQHandler | ||||
|   .thumb_set PWM1_IRQHandler,Dummy_Handler | ||||
|  | ||||
|   .weak I2C0_IRQHandler | ||||
|   .thumb_set I2C0_IRQHandler,Dummy_Handler | ||||
|  | ||||
|   .weak I2C1_IRQHandler | ||||
|   .thumb_set I2C1_IRQHandler,Dummy_Handler | ||||
|  | ||||
|   .weak I2C2_IRQHandler | ||||
|   .thumb_set I2C2_IRQHandler,Dummy_Handler | ||||
|  | ||||
|   .weak SSP0_IRQHandler | ||||
|   .thumb_set SSP0_IRQHandler,Dummy_Handler | ||||
|  | ||||
|   .weak SSP1_IRQHandler | ||||
|   .thumb_set SSP1_IRQHandler,Dummy_Handler | ||||
|  | ||||
|   .weak RTC_IRQHandler | ||||
|   .thumb_set RTC_IRQHandler,Dummy_Handler | ||||
|  | ||||
|   .weak EINT0_IRQHandler | ||||
|   .thumb_set EINT0_IRQHandler,Dummy_Handler | ||||
|  | ||||
|   .weak EINT1_IRQHandler | ||||
|   .thumb_set EINT1_IRQHandler,Dummy_Handler | ||||
|  | ||||
|   .weak EINT2_IRQHandler | ||||
|   .thumb_set EINT2_IRQHandler,Dummy_Handler | ||||
|  | ||||
|   .weak EINT3_IRQHandler | ||||
|   .thumb_set EINT3_IRQHandler,Dummy_Handler | ||||
|  | ||||
|   .weak ADC_IRQHandler | ||||
|   .thumb_set ADC_IRQHandler,Dummy_Handler | ||||
|  | ||||
|   .weak BOD_IRQHandler | ||||
|   .thumb_set BOD_IRQHandler,Dummy_Handler | ||||
|  | ||||
|   .weak USB_IRQHandler | ||||
|   .thumb_set USB_IRQHandler,Dummy_Handler | ||||
|  | ||||
|   .weak CAN_IRQHandler | ||||
|   .thumb_set CAN_IRQHandler,Dummy_Handler | ||||
|  | ||||
|   .weak GPDMA_IRQHandler | ||||
|   .thumb_set GPDMA_IRQHandler,Dummy_Handler | ||||
|  | ||||
|   .weak I2S_IRQHandler | ||||
|   .thumb_set I2S_IRQHandler,Dummy_Handler | ||||
|  | ||||
|   .weak ETHERNET_IRQHandler | ||||
|   .thumb_set ETHERNET_IRQHandler,Dummy_Handler | ||||
|  | ||||
|   .weak SDMMC_IRQHandler | ||||
|   .thumb_set SDMMC_IRQHandler,Dummy_Handler | ||||
|  | ||||
|   .weak MCPWM_IRQHandler | ||||
|   .thumb_set MCPWM_IRQHandler,Dummy_Handler | ||||
|  | ||||
|   .weak QEI_IRQHandler | ||||
|   .thumb_set QEI_IRQHandler,Dummy_Handler | ||||
|  | ||||
|   .weak USB_NEED_CLK_IRQHandler | ||||
|   .thumb_set USB_NEED_CLK_IRQHandler,Dummy_Handler | ||||
|  | ||||
|   .weak UART4_IRQHandler | ||||
|   .thumb_set UART4_IRQHandler,Dummy_Handler | ||||
|  | ||||
|   .weak SSP2_IRQHandler | ||||
|   .thumb_set SSP2_IRQHandler,Dummy_Handler | ||||
|  | ||||
|   .weak LCD_IRQHandler | ||||
|   .thumb_set LCD_IRQHandler,Dummy_Handler | ||||
|  | ||||
|   .weak GPIOINT_IRQHandler | ||||
|   .thumb_set GPIOINT_IRQHandler,Dummy_Handler | ||||
|  | ||||
|   .weak PWM0_IRQHandler | ||||
|   .thumb_set PWM0_IRQHandler,Dummy_Handler | ||||
|  | ||||
|   .weak EEPROM_IRQHandler | ||||
|   .thumb_set EEPROM_IRQHandler,Dummy_Handler | ||||
|  | ||||
|   .weak CMP0_IRQHandler | ||||
|   .thumb_set CMP0_IRQHandler,Dummy_Handler | ||||
|  | ||||
|   .weak CMP1_IRQHandler | ||||
|   .thumb_set CMP1_IRQHandler,Dummy_Handler | ||||
|  | ||||
| #else | ||||
|  | ||||
|   .thumb_func | ||||
|   .weak WWDT_IRQHandler | ||||
| WWDT_IRQHandler: | ||||
|   b . | ||||
|  | ||||
|   .thumb_func | ||||
|   .weak TIMER0_IRQHandler | ||||
| TIMER0_IRQHandler: | ||||
|   b . | ||||
|  | ||||
|   .thumb_func | ||||
|   .weak TIMER1_IRQHandler | ||||
| TIMER1_IRQHandler: | ||||
|   b . | ||||
|  | ||||
|   .thumb_func | ||||
|   .weak TIMER2_IRQHandler | ||||
| TIMER2_IRQHandler: | ||||
|   b . | ||||
|  | ||||
|   .thumb_func | ||||
|   .weak TIMER3_IRQHandler | ||||
| TIMER3_IRQHandler: | ||||
|   b . | ||||
|  | ||||
|   .thumb_func | ||||
|   .weak UART0_IRQHandler | ||||
| UART0_IRQHandler: | ||||
|   b . | ||||
|  | ||||
|   .thumb_func | ||||
|   .weak UART1_IRQHandler | ||||
| UART1_IRQHandler: | ||||
|   b . | ||||
|  | ||||
|   .thumb_func | ||||
|   .weak UART2_IRQHandler | ||||
| UART2_IRQHandler: | ||||
|   b . | ||||
|  | ||||
|   .thumb_func | ||||
|   .weak UART3_IRQHandler | ||||
| UART3_IRQHandler: | ||||
|   b . | ||||
|  | ||||
|   .thumb_func | ||||
|   .weak PWM1_IRQHandler | ||||
| PWM1_IRQHandler: | ||||
|   b . | ||||
|  | ||||
|   .thumb_func | ||||
|   .weak I2C0_IRQHandler | ||||
| I2C0_IRQHandler: | ||||
|   b . | ||||
|  | ||||
|   .thumb_func | ||||
|   .weak I2C1_IRQHandler | ||||
| I2C1_IRQHandler: | ||||
|   b . | ||||
|  | ||||
|   .thumb_func | ||||
|   .weak I2C2_IRQHandler | ||||
| I2C2_IRQHandler: | ||||
|   b . | ||||
|  | ||||
|   .thumb_func | ||||
|   .weak SSP0_IRQHandler | ||||
| SSP0_IRQHandler: | ||||
|   b . | ||||
|  | ||||
|   .thumb_func | ||||
|   .weak SSP1_IRQHandler | ||||
| SSP1_IRQHandler: | ||||
|   b . | ||||
|  | ||||
|   .thumb_func | ||||
|   .weak RTC_IRQHandler | ||||
| RTC_IRQHandler: | ||||
|   b . | ||||
|  | ||||
|   .thumb_func | ||||
|   .weak EINT0_IRQHandler | ||||
| EINT0_IRQHandler: | ||||
|   b . | ||||
|  | ||||
|   .thumb_func | ||||
|   .weak EINT1_IRQHandler | ||||
| EINT1_IRQHandler: | ||||
|   b . | ||||
|  | ||||
|   .thumb_func | ||||
|   .weak EINT2_IRQHandler | ||||
| EINT2_IRQHandler: | ||||
|   b . | ||||
|  | ||||
|   .thumb_func | ||||
|   .weak EINT3_IRQHandler | ||||
| EINT3_IRQHandler: | ||||
|   b . | ||||
|  | ||||
|   .thumb_func | ||||
|   .weak ADC_IRQHandler | ||||
| ADC_IRQHandler: | ||||
|   b . | ||||
|  | ||||
|   .thumb_func | ||||
|   .weak BOD_IRQHandler | ||||
| BOD_IRQHandler: | ||||
|   b . | ||||
|  | ||||
|   .thumb_func | ||||
|   .weak USB_IRQHandler | ||||
| USB_IRQHandler: | ||||
|   b . | ||||
|  | ||||
|   .thumb_func | ||||
|   .weak CAN_IRQHandler | ||||
| CAN_IRQHandler: | ||||
|   b . | ||||
|  | ||||
|   .thumb_func | ||||
|   .weak GPDMA_IRQHandler | ||||
| GPDMA_IRQHandler: | ||||
|   b . | ||||
|  | ||||
|   .thumb_func | ||||
|   .weak I2S_IRQHandler | ||||
| I2S_IRQHandler: | ||||
|   b . | ||||
|  | ||||
|   .thumb_func | ||||
|   .weak ETHERNET_IRQHandler | ||||
| ETHERNET_IRQHandler: | ||||
|   b . | ||||
|  | ||||
|   .thumb_func | ||||
|   .weak SDMMC_IRQHandler | ||||
| SDMMC_IRQHandler: | ||||
|   b . | ||||
|  | ||||
|   .thumb_func | ||||
|   .weak MCPWM_IRQHandler | ||||
| MCPWM_IRQHandler: | ||||
|   b . | ||||
|  | ||||
|   .thumb_func | ||||
|   .weak QEI_IRQHandler | ||||
| QEI_IRQHandler: | ||||
|   b . | ||||
|  | ||||
|   .thumb_func | ||||
|   .weak USB_NEED_CLK_IRQHandler | ||||
| USB_NEED_CLK_IRQHandler: | ||||
|   b . | ||||
|  | ||||
|   .thumb_func | ||||
|   .weak UART4_IRQHandler | ||||
| UART4_IRQHandler: | ||||
|   b . | ||||
|  | ||||
|   .thumb_func | ||||
|   .weak SSP2_IRQHandler | ||||
| SSP2_IRQHandler: | ||||
|   b . | ||||
|  | ||||
|   .thumb_func | ||||
|   .weak LCD_IRQHandler | ||||
| LCD_IRQHandler: | ||||
|   b . | ||||
|  | ||||
|   .thumb_func | ||||
|   .weak GPIOINT_IRQHandler | ||||
| GPIOINT_IRQHandler: | ||||
|   b . | ||||
|  | ||||
|   .thumb_func | ||||
|   .weak PWM0_IRQHandler | ||||
| PWM0_IRQHandler: | ||||
|   b . | ||||
|  | ||||
|   .thumb_func | ||||
|   .weak EEPROM_IRQHandler | ||||
| EEPROM_IRQHandler: | ||||
|   b . | ||||
|  | ||||
|   .thumb_func | ||||
|   .weak CMP0_IRQHandler | ||||
| CMP0_IRQHandler: | ||||
|   b . | ||||
|  | ||||
|   .thumb_func | ||||
|   .weak CMP1_IRQHandler | ||||
| CMP1_IRQHandler: | ||||
|   b . | ||||
|  | ||||
| #endif | ||||
|  | ||||
| /***************************************************************************** | ||||
|  * Vector Table                                                              * | ||||
|  *****************************************************************************/ | ||||
|  | ||||
|   .section .vectors, "ax" | ||||
|   .align 0 | ||||
|   .global _vectors | ||||
|   .extern __stack_end__ | ||||
|   .extern Reset_Handler | ||||
|  | ||||
| _vectors: | ||||
|   .word __stack_end__ | ||||
|   .word Reset_Handler | ||||
|   .word NMI_Handler | ||||
|   .word HardFault_Handler | ||||
|   .word 0 /* Reserved */ | ||||
|   .word 0 /* Reserved */ | ||||
|   .word 0 /* Reserved */ | ||||
|   .word 0 /* Reserved */ | ||||
|   .word 0 /* Reserved */ | ||||
|   .word 0 /* Reserved */ | ||||
|   .word 0 /* Reserved */ | ||||
|   .word SVC_Handler | ||||
|   .word 0 /* Reserved */ | ||||
|   .word 0 /* Reserved */ | ||||
|   .word PendSV_Handler | ||||
|   .word SysTick_Handler | ||||
|   .word WWDT_IRQHandler | ||||
|   .word TIMER0_IRQHandler | ||||
|   .word TIMER1_IRQHandler | ||||
|   .word TIMER2_IRQHandler | ||||
|   .word TIMER3_IRQHandler | ||||
|   .word UART0_IRQHandler | ||||
|   .word UART1_IRQHandler | ||||
|   .word UART2_IRQHandler | ||||
|   .word UART3_IRQHandler | ||||
|   .word PWM1_IRQHandler | ||||
|   .word I2C0_IRQHandler | ||||
|   .word I2C1_IRQHandler | ||||
|   .word I2C2_IRQHandler | ||||
|   .word Dummy_Handler /* Reserved */ | ||||
|   .word SSP0_IRQHandler | ||||
|   .word SSP1_IRQHandler | ||||
|   .word Dummy_Handler /* Reserved */ | ||||
|   .word RTC_IRQHandler | ||||
|   .word EINT0_IRQHandler | ||||
|   .word EINT1_IRQHandler | ||||
|   .word EINT2_IRQHandler | ||||
|   .word EINT3_IRQHandler | ||||
|   .word ADC_IRQHandler | ||||
|   .word BOD_IRQHandler | ||||
|   .word USB_IRQHandler | ||||
|   .word CAN_IRQHandler | ||||
|   .word GPDMA_IRQHandler | ||||
|   .word I2S_IRQHandler | ||||
|   .word ETHERNET_IRQHandler | ||||
|   .word SDMMC_IRQHandler | ||||
|   .word MCPWM_IRQHandler | ||||
|   .word QEI_IRQHandler | ||||
|   .word Dummy_Handler /* Reserved */ | ||||
|   .word USB_NEED_CLK_IRQHandler | ||||
|   .word Dummy_Handler /* Reserved */ | ||||
|   .word UART4_IRQHandler | ||||
|   .word SSP2_IRQHandler | ||||
|   .word LCD_IRQHandler | ||||
|   .word GPIOINT_IRQHandler | ||||
|   .word PWM0_IRQHandler | ||||
|   .word EEPROM_IRQHandler | ||||
|   .word CMP0_IRQHandler | ||||
|   .word CMP1_IRQHandler | ||||
| _vectors_end: | ||||
|  | ||||
| #ifdef VECTORS_IN_RAM | ||||
|   .section .vectors_ram, "ax" | ||||
|   .align 0 | ||||
|   .global _vectors_ram | ||||
|  | ||||
| _vectors_ram: | ||||
|   .space _vectors_end - _vectors, 0 | ||||
| #endif | ||||
							
								
								
									
										37
									
								
								examples/device/cdc_msc_hid/ses/lpc40xx/flash_placement.xml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										37
									
								
								examples/device/cdc_msc_hid/ses/lpc40xx/flash_placement.xml
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,37 @@ | ||||
| <!DOCTYPE Linker_Placement_File> | ||||
| <Root name="Flash Section Placement"> | ||||
|   <MemorySegment name="$(FLASH_NAME:FLASH)"> | ||||
|     <ProgramSection alignment="0x100" load="Yes" name=".vectors" start="$(FLASH_START:)" /> | ||||
|     <ProgramSection alignment="4" load="Yes" name=".init" /> | ||||
|     <ProgramSection alignment="4" load="Yes" name=".init_rodata" /> | ||||
|     <ProgramSection alignment="4" load="Yes" name=".text" /> | ||||
|     <ProgramSection alignment="4" load="Yes" name=".dtors" /> | ||||
|     <ProgramSection alignment="4" load="Yes" name=".ctors" /> | ||||
|     <ProgramSection alignment="4" load="Yes" name=".rodata" /> | ||||
|     <ProgramSection alignment="4" load="Yes" name=".ARM.exidx" address_symbol="__exidx_start" end_symbol="__exidx_end" /> | ||||
|     <ProgramSection alignment="4" load="Yes" runin=".fast_run" name=".fast" /> | ||||
|     <ProgramSection alignment="4" load="Yes" runin=".data_run" name=".data" /> | ||||
|     <ProgramSection alignment="4" load="Yes" runin=".tdata_run" name=".tdata" /> | ||||
|   </MemorySegment> | ||||
|   <MemorySegment name="$(RAM_NAME:RAM);SRAM"> | ||||
|     <ProgramSection alignment="0x100" load="No" name=".vectors_ram" start="$(RAM_START:$(SRAM_START:))" /> | ||||
|     <ProgramSection alignment="4" load="No" name=".fast_run" /> | ||||
|     <ProgramSection alignment="4" load="No" name=".data_run" /> | ||||
|     <ProgramSection alignment="4" load="No" name=".bss" /> | ||||
|     <ProgramSection alignment="4" load="No" name=".tbss" /> | ||||
|     <ProgramSection alignment="4" load="No" name=".tdata_run" /> | ||||
|     <ProgramSection alignment="4" load="No" name=".non_init" /> | ||||
|     <ProgramSection alignment="4" size="__HEAPSIZE__" load="No" name=".heap" /> | ||||
|     <ProgramSection alignment="8" size="__STACKSIZE__" load="No" place_from_segment_end="Yes" name=".stack" /> | ||||
|     <ProgramSection alignment="8" size="__STACKSIZE_PROCESS__" load="No" name=".stack_process" /> | ||||
|   </MemorySegment> | ||||
|   <MemorySegment name="$(FLASH2_NAME:FLASH2)"> | ||||
|     <ProgramSection alignment="4" load="Yes" name=".text2" /> | ||||
|     <ProgramSection alignment="4" load="Yes" name=".rodata2" /> | ||||
|     <ProgramSection alignment="4" load="Yes" runin=".data2_run" name=".data2" /> | ||||
|   </MemorySegment> | ||||
|   <MemorySegment name="$(RAM2_NAME:RAM2)"> | ||||
|     <ProgramSection alignment="4" load="No" name=".data2_run" /> | ||||
|     <ProgramSection alignment="4" load="No" name=".bss2" /> | ||||
|   </MemorySegment> | ||||
| </Root> | ||||
							
								
								
									
										118
									
								
								examples/device/cdc_msc_hid/ses/lpc40xx/lpc40xx.emProject
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										118
									
								
								examples/device/cdc_msc_hid/ses/lpc40xx/lpc40xx.emProject
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,118 @@ | ||||
| <!DOCTYPE CrossStudio_Project_File> | ||||
| <solution Name="lpc40xx" target="8" version="2"> | ||||
|   <project Name="lpc40xx"> | ||||
|     <configuration | ||||
|       Name="Common" | ||||
|       Placement="Flash" | ||||
|       Target="LPC4088FBD208" | ||||
|       arm_architecture="v7EM" | ||||
|       arm_core_type="Cortex-M4" | ||||
|       arm_endian="Little" | ||||
|       arm_fp_abi="Hard" | ||||
|       arm_fpu_type="FPv4-SP-D16" | ||||
|       arm_interwork="No" | ||||
|       arm_linker_heap_size="256" | ||||
|       arm_linker_process_stack_size="0" | ||||
|       arm_linker_stack_size="256" | ||||
|       arm_simulator_memory_simulation_parameter="ROM;0x00000000;0x00080000;RAM;0x10000000;0x00010000;RAM;0x20000000;0x00008000" | ||||
|       arm_target_debug_interface_type="ADIv5" | ||||
|       arm_target_device_name="LPC4088" | ||||
|       arm_target_interface_type="SWD" | ||||
|       c_preprocessor_definitions="CORE_M4;__LPC4000_FAMILY;__LPC408x_SUBFAMILY;ARM_MATH_CM4;FLASH_PLACEMENT=1;BOARD_EA4088QS;CFG_TUSB_MCU=OPT_MCU_LPC40XX" | ||||
|       c_user_include_directories="../../src;$(rootDir)/hw;$(rootDir)/src;$(lpcDir)/inc" | ||||
|       debug_register_definition_file="$(ProjectDir)/LPC408x_7x_Registers.xml" | ||||
|       debug_target_connection="J-Link" | ||||
|       gcc_entry_point="Reset_Handler" | ||||
|       linker_memory_map_file="$(ProjectDir)/LPC4088FBD208_MemoryMap.xml" | ||||
|       linker_section_placement_file="$(ProjectDir)/flash_placement.xml" | ||||
|       macros="DeviceFamily=LPC4000;DeviceSubFamily=LPC408x;Target=LPC4088FBD208;Placement=Flash;rootDir=../../../../..;lpcDir=../../../../../hw/mcu/nxp/lpc_chip_40xx" | ||||
|       package_dependencies="LPC4000" | ||||
|       project_directory="" | ||||
|       project_type="Executable" | ||||
|       target_reset_script="Reset();" | ||||
|       target_trace_initialize_script="EnableTrace("$(TraceInterfaceType)")" /> | ||||
|     <folder Name="System Files"> | ||||
|       <file file_name="thumb_crt0.s" /> | ||||
|       <file file_name="LPC4000_Startup.s" /> | ||||
|       <file file_name="LPC408x_7x_Vectors.s"> | ||||
|         <configuration Name="Common" file_type="Assembly" /> | ||||
|       </file> | ||||
|       <file file_name="LPC4088FBD208_MemoryMap.xml" /> | ||||
|       <file file_name="flash_placement.xml" /> | ||||
|       <file file_name="LPC4000_Target.js"> | ||||
|         <configuration Name="Common" file_type="Reset Script" /> | ||||
|       </file> | ||||
|     </folder> | ||||
|     <configuration | ||||
|       Name="EA4088 QuickStart" | ||||
|       link_use_linker_script_file="No" | ||||
|       linker_section_placement_file="flash_placement.xml" /> | ||||
|     <folder Name="hw"> | ||||
|       <folder Name="bsp"> | ||||
|         <file file_name="../../../../../hw/bsp/ansi_escape.h" /> | ||||
|         <file file_name="../../../../../hw/bsp/board.h" /> | ||||
|         <folder Name="ea4088qs"> | ||||
|           <file file_name="../../../../../hw/bsp/ea4088qs/board_ea4088qs.c" /> | ||||
|           <file file_name="../../../../../hw/bsp/ea4088qs/board_ea4088qs.h" /> | ||||
|         </folder> | ||||
|       </folder> | ||||
|       <folder Name="mcu"> | ||||
|         <folder Name="nxp"> | ||||
|           <folder Name="lpc_chip_40xx"> | ||||
|             <folder Name="inc"> | ||||
|               <file file_name="../../../../../hw/mcu/nxp/lpc_chip_40xx/inc/chip.h" /> | ||||
|               <file file_name="../../../../../hw/mcu/nxp/lpc_chip_40xx/inc/chip_lpc175x_6x.h" /> | ||||
|               <file file_name="../../../../../hw/mcu/nxp/lpc_chip_40xx/inc/chip_lpc177x_8x.h" /> | ||||
|               <file file_name="../../../../../hw/mcu/nxp/lpc_chip_40xx/inc/chip_lpc407x_8x.h" /> | ||||
|               <file file_name="../../../../../hw/mcu/nxp/lpc_chip_40xx/inc/clock_17xx_40xx.h" /> | ||||
|               <file file_name="../../../../../hw/mcu/nxp/lpc_chip_40xx/inc/cmsis.h" /> | ||||
|               <file file_name="../../../../../hw/mcu/nxp/lpc_chip_40xx/inc/cmsis_40xx.h" /> | ||||
|               <file file_name="../../../../../hw/mcu/nxp/lpc_chip_40xx/inc/core_cm4.h" /> | ||||
|               <file file_name="../../../../../hw/mcu/nxp/lpc_chip_40xx/inc/core_cm4_simd.h" /> | ||||
|               <file file_name="../../../../../hw/mcu/nxp/lpc_chip_40xx/inc/core_cmFunc.h" /> | ||||
|               <file file_name="../../../../../hw/mcu/nxp/lpc_chip_40xx/inc/core_cmInstr.h" /> | ||||
|               <file file_name="../../../../../hw/mcu/nxp/lpc_chip_40xx/inc/gpio_17xx_40xx.h" /> | ||||
|               <file file_name="../../../../../hw/mcu/nxp/lpc_chip_40xx/inc/sys_config.h" /> | ||||
|               <file file_name="../../../../../hw/mcu/nxp/lpc_chip_40xx/inc/sysctl_17xx_40xx.h" /> | ||||
|               <file file_name="../../../../../hw/mcu/nxp/lpc_chip_40xx/inc/uart_17xx_40xx.h" /> | ||||
|               <file file_name="../../../../../hw/mcu/nxp/lpc_chip_40xx/inc/usb_17xx_40xx.h" /> | ||||
|               <file file_name="../../../../../hw/mcu/nxp/lpc_chip_40xx/inc/iocon_17xx_40xx.h" /> | ||||
|             </folder> | ||||
|             <folder Name="src"> | ||||
|               <file file_name="../../../../../hw/mcu/nxp/lpc_chip_40xx/src/chip_17xx_40xx.c" /> | ||||
|               <file file_name="../../../../../hw/mcu/nxp/lpc_chip_40xx/src/clock_17xx_40xx.c" /> | ||||
|               <file file_name="../../../../../hw/mcu/nxp/lpc_chip_40xx/src/gpio_17xx_40xx.c" /> | ||||
|               <file file_name="../../../../../hw/mcu/nxp/lpc_chip_40xx/src/iocon_17xx_40xx.c" /> | ||||
|               <file file_name="../../../../../hw/mcu/nxp/lpc_chip_40xx/src/sysctl_17xx_40xx.c" /> | ||||
|               <file file_name="../../../../../hw/mcu/nxp/lpc_chip_40xx/src/sysinit_17xx_40xx.c" /> | ||||
|               <file file_name="../../../../../hw/mcu/nxp/lpc_chip_40xx/src/uart_17xx_40xx.c" /> | ||||
|             </folder> | ||||
|           </folder> | ||||
|         </folder> | ||||
|       </folder> | ||||
|     </folder> | ||||
|     <folder | ||||
|       Name="segger_rtt" | ||||
|       exclude="" | ||||
|       filter="*.c;*.h" | ||||
|       path="../../../../../lib/segger_rtt" | ||||
|       recurse="No" /> | ||||
|     <folder | ||||
|       Name="src" | ||||
|       exclude="" | ||||
|       filter="*.c;*.h" | ||||
|       path="../../src" | ||||
|       recurse="Yes" /> | ||||
|     <folder | ||||
|       Name="tinyusb" | ||||
|       exclude="" | ||||
|       filter="*.c;*.h" | ||||
|       path="../../../../../src" | ||||
|       recurse="Yes" /> | ||||
|   </project> | ||||
|   <configuration | ||||
|     Name="EA4088 QuickStart" | ||||
|     c_preprocessor_definitions="DEBUG" | ||||
|     gcc_debugging_level="Level 3" | ||||
|     gcc_optimization_level="None" /> | ||||
| </solution> | ||||
							
								
								
									
										415
									
								
								examples/device/cdc_msc_hid/ses/lpc40xx/thumb_crt0.s
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										415
									
								
								examples/device/cdc_msc_hid/ses/lpc40xx/thumb_crt0.s
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,415 @@ | ||||
| // ********************************************************************** | ||||
| // *                    SEGGER Microcontroller GmbH                     * | ||||
| // *                        The Embedded Experts                        * | ||||
| // ********************************************************************** | ||||
| // *                                                                    * | ||||
| // *            (c) 2014 - 2018 SEGGER Microcontroller GmbH             * | ||||
| // *            (c) 2001 - 2018 Rowley Associates Limited               * | ||||
| // *                                                                    * | ||||
| // *           www.segger.com     Support: support@segger.com           * | ||||
| // *                                                                    * | ||||
| // ********************************************************************** | ||||
| // *                                                                    * | ||||
| // * 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.    * | ||||
| // *                                                                    * | ||||
| // * - Neither the name of SEGGER Microcontroller GmbH                  * | ||||
| // *   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 SEGGER Microcontroller GmbH 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.                                                            * | ||||
| // *                                                                    * | ||||
| // ********************************************************************** | ||||
| // | ||||
| // | ||||
| //                           Preprocessor Definitions | ||||
| //                           ------------------------ | ||||
| // APP_ENTRY_POINT | ||||
| // | ||||
| //   Defines the application entry point function, if undefined this setting | ||||
| //   defaults to "main". | ||||
| // | ||||
| // INITIALIZE_STACK | ||||
| // | ||||
| //   If defined, the contents of the stack will be initialized to a the | ||||
| //   value 0xCC. | ||||
| // | ||||
| // INITIALIZE_SECONDARY_SECTIONS | ||||
| // | ||||
| //   If defined, the .data2, .text2, .rodata2 and .bss2 sections will be initialized. | ||||
| // | ||||
| // INITIALIZE_TCM_SECTIONS | ||||
| // | ||||
| //   If defined, the .data_tcm, .text_tcm, .rodata_tcm and .bss_tcm sections  | ||||
| //   will be initialized. | ||||
| // | ||||
| // INITIALIZE_USER_SECTIONS | ||||
| // | ||||
| //   If defined, the function InitializeUserMemorySections will be called prior | ||||
| //   to entering main in order to allow the user to initialize any user defined | ||||
| //   memory sections. | ||||
| // | ||||
| // FULL_LIBRARY | ||||
| // | ||||
| //  If defined then  | ||||
| //    - argc, argv are setup by the debug_getargs. | ||||
| //    - the exit symbol is defined and executes on return from main. | ||||
| //    - the exit symbol calls destructors, atexit functions and then debug_exit. | ||||
| //   | ||||
| //  If not defined then | ||||
| //    - argc and argv are zero. | ||||
| //    - the exit symbol is defined, executes on return from main and loops | ||||
| // | ||||
|  | ||||
| #ifndef APP_ENTRY_POINT | ||||
| #define APP_ENTRY_POINT main | ||||
| #endif | ||||
|  | ||||
| #ifndef ARGSSPACE | ||||
| #define ARGSSPACE 128 | ||||
| #endif | ||||
|   .syntax unified | ||||
|  | ||||
|   .global _start | ||||
|   .extern APP_ENTRY_POINT | ||||
|   .global exit | ||||
|   .weak exit | ||||
|  | ||||
| #ifdef INITIALIZE_USER_SECTIONS | ||||
|   .extern InitializeUserMemorySections | ||||
| #endif | ||||
|  | ||||
|   .section .init, "ax" | ||||
|   .code 16 | ||||
|   .balign 2 | ||||
|   .thumb_func | ||||
|  | ||||
| _start: | ||||
|   /* Set up main stack if size > 0 */ | ||||
|   ldr r1, =__stack_end__ | ||||
|   ldr r0, =__stack_start__ | ||||
|   subs r2, r1, r0 | ||||
|   beq 1f | ||||
| #ifdef __ARM_EABI__ | ||||
|   movs r2, #0x7 | ||||
|   bics r1, r2 | ||||
| #endif | ||||
|   mov sp, r1 | ||||
| #ifdef INITIALIZE_STACK | ||||
|   movs r2, #0xCC | ||||
|   ldr r0, =__stack_start__ | ||||
|   bl memory_set | ||||
| #endif | ||||
| 1: | ||||
|  | ||||
|   /* Set up process stack if size > 0 */ | ||||
|   ldr r1, =__stack_process_end__ | ||||
|   ldr r0, =__stack_process_start__ | ||||
|   subs r2, r1, r0 | ||||
|   beq 1f | ||||
| #ifdef __ARM_EABI__ | ||||
|   movs r2, #0x7 | ||||
|   bics r1, r2 | ||||
| #endif | ||||
|   msr psp, r1 | ||||
|   movs r2, #2 | ||||
|   msr control, r2 | ||||
| #ifdef INITIALIZE_STACK | ||||
|   movs r2, #0xCC | ||||
|   bl memory_set | ||||
| #endif | ||||
| 1: | ||||
|  | ||||
|   /* Copy initialized memory sections into RAM (if necessary). */ | ||||
|   ldr r0, =__data_load_start__ | ||||
|   ldr r1, =__data_start__ | ||||
|   ldr r2, =__data_end__ | ||||
|   bl memory_copy | ||||
|   ldr r0, =__text_load_start__ | ||||
|   ldr r1, =__text_start__ | ||||
|   ldr r2, =__text_end__ | ||||
|   bl memory_copy | ||||
|   ldr r0, =__fast_load_start__ | ||||
|   ldr r1, =__fast_start__ | ||||
|   ldr r2, =__fast_end__ | ||||
|   bl memory_copy | ||||
|   ldr r0, =__ctors_load_start__ | ||||
|   ldr r1, =__ctors_start__ | ||||
|   ldr r2, =__ctors_end__ | ||||
|   bl memory_copy | ||||
|   ldr r0, =__dtors_load_start__ | ||||
|   ldr r1, =__dtors_start__ | ||||
|   ldr r2, =__dtors_end__ | ||||
|   bl memory_copy | ||||
|   ldr r0, =__rodata_load_start__ | ||||
|   ldr r1, =__rodata_start__ | ||||
|   ldr r2, =__rodata_end__ | ||||
|   bl memory_copy | ||||
|   ldr r0, =__tdata_load_start__ | ||||
|   ldr r1, =__tdata_start__ | ||||
|   ldr r2, =__tdata_end__ | ||||
|   bl memory_copy | ||||
| #ifdef INITIALIZE_SECONDARY_SECTIONS | ||||
|   ldr r0, =__data2_load_start__ | ||||
|   ldr r1, =__data2_start__ | ||||
|   ldr r2, =__data2_end__ | ||||
|   bl memory_copy | ||||
|   ldr r0, =__text2_load_start__ | ||||
|   ldr r1, =__text2_start__ | ||||
|   ldr r2, =__text2_end__ | ||||
|   bl memory_copy | ||||
|   ldr r0, =__rodata2_load_start__ | ||||
|   ldr r1, =__rodata2_start__ | ||||
|   ldr r2, =__rodata2_end__ | ||||
|   bl memory_copy | ||||
| #endif /* #ifdef INITIALIZE_SECONDARY_SECTIONS */ | ||||
| #ifdef INITIALIZE_TCM_SECTIONS | ||||
|   ldr r0, =__data_tcm_load_start__ | ||||
|   ldr r1, =__data_tcm_start__ | ||||
|   ldr r2, =__data_tcm_end__ | ||||
|   bl memory_copy | ||||
|   ldr r0, =__text_tcm_load_start__ | ||||
|   ldr r1, =__text_tcm_start__ | ||||
|   ldr r2, =__text_tcm_end__ | ||||
|   bl memory_copy | ||||
|   ldr r0, =__rodata_tcm_load_start__ | ||||
|   ldr r1, =__rodata_tcm_start__ | ||||
|   ldr r2, =__rodata_tcm_end__ | ||||
|   bl memory_copy | ||||
| #endif /* #ifdef INITIALIZE_TCM_SECTIONS */ | ||||
|  | ||||
|   /* Zero the bss. */ | ||||
|   ldr r0, =__bss_start__ | ||||
|   ldr r1, =__bss_end__ | ||||
|   movs r2, #0 | ||||
|   bl memory_set | ||||
|   ldr r0, =__tbss_start__ | ||||
|   ldr r1, =__tbss_end__ | ||||
|   movs r2, #0 | ||||
|   bl memory_set | ||||
| #ifdef INITIALIZE_SECONDARY_SECTIONS | ||||
|   ldr r0, =__bss2_start__ | ||||
|   ldr r1, =__bss2_end__ | ||||
|   mov r2, #0 | ||||
|   bl memory_set | ||||
| #endif /* #ifdef INITIALIZE_SECONDARY_SECTIONS */ | ||||
| #ifdef INITIALIZE_TCM_SECTIONS | ||||
|   ldr r0, =__bss_tcm_start__ | ||||
|   ldr r1, =__bss_tcm_end__ | ||||
|   mov r2, #0 | ||||
|   bl memory_set | ||||
| #endif /* #ifdef INITIALIZE_TCM_SECTIONS */ | ||||
|  | ||||
|   /* Initialize the heap */ | ||||
|   ldr r0, = __heap_start__ | ||||
|   ldr r1, = __heap_end__ | ||||
|   subs r1, r1, r0 | ||||
|   cmp r1, #8 | ||||
|   blt 1f | ||||
|   movs r2, #0 | ||||
|   str r2, [r0] | ||||
|   adds r0, r0, #4 | ||||
|   str r1, [r0] | ||||
| 1: | ||||
|  | ||||
| #ifdef INITIALIZE_USER_SECTIONS | ||||
|   ldr r2, =InitializeUserMemorySections | ||||
|   blx r2 | ||||
| #endif | ||||
|  | ||||
|   /* Call constructors */ | ||||
|   ldr r0, =__ctors_start__ | ||||
|   ldr r1, =__ctors_end__ | ||||
| ctor_loop: | ||||
|   cmp r0, r1 | ||||
|   beq ctor_end | ||||
|   ldr r2, [r0] | ||||
|   adds r0, #4 | ||||
|   push {r0-r1}   | ||||
|   blx r2 | ||||
|   pop {r0-r1} | ||||
|   b ctor_loop | ||||
| ctor_end: | ||||
|  | ||||
|   /* Setup initial call frame */ | ||||
|   movs r0, #0 | ||||
|   mov lr, r0 | ||||
|   mov r12, sp | ||||
|  | ||||
|   .type start, function | ||||
| start: | ||||
|   /* Jump to application entry point */ | ||||
| #ifdef FULL_LIBRARY | ||||
|   movs r0, #ARGSSPACE | ||||
|   ldr r1, =args | ||||
|   ldr r2, =debug_getargs   | ||||
|   blx r2 | ||||
|   ldr r1, =args | ||||
| #else | ||||
|   movs r0, #0 | ||||
|   movs r1, #0 | ||||
| #endif | ||||
|   ldr r2, =APP_ENTRY_POINT | ||||
|   blx r2 | ||||
|  | ||||
|   .thumb_func | ||||
| exit: | ||||
| #ifdef FULL_LIBRARY   | ||||
|   mov r5, r0 // save the exit parameter/return result | ||||
|  | ||||
|   /* Call destructors */ | ||||
|   ldr r0, =__dtors_start__ | ||||
|   ldr r1, =__dtors_end__ | ||||
| dtor_loop: | ||||
|   cmp r0, r1 | ||||
|   beq dtor_end | ||||
|   ldr r2, [r0] | ||||
|   add r0, #4 | ||||
|   push {r0-r1} | ||||
|   blx r2 | ||||
|   pop {r0-r1} | ||||
|   b dtor_loop | ||||
| dtor_end: | ||||
|  | ||||
|   /* Call atexit functions */ | ||||
|   ldr r2, =_execute_at_exit_fns   | ||||
|   blx r2 | ||||
|  | ||||
|   /* Call debug_exit with return result/exit parameter */ | ||||
|   mov r0, r5 | ||||
|   ldr r2, =debug_exit   | ||||
|   blx r2 | ||||
| #endif | ||||
|  | ||||
|   /* Returned from application entry point, loop forever. */ | ||||
| exit_loop: | ||||
|   b exit_loop | ||||
|  | ||||
|   .thumb_func | ||||
| memory_copy: | ||||
|   cmp r0, r1 | ||||
|   beq 2f | ||||
|   subs r2, r2, r1 | ||||
|   beq 2f | ||||
| 1: | ||||
|   ldrb r3, [r0] | ||||
|   adds r0, r0, #1 | ||||
|   strb r3, [r1] | ||||
|   adds r1, r1, #1 | ||||
|   subs r2, r2, #1 | ||||
|   bne 1b | ||||
| 2: | ||||
|   bx lr | ||||
|  | ||||
|   .thumb_func | ||||
| memory_set: | ||||
|   cmp r0, r1 | ||||
|   beq 1f | ||||
|   strb r2, [r0] | ||||
|   adds r0, r0, #1 | ||||
|   b memory_set | ||||
| 1: | ||||
|   bx lr | ||||
|  | ||||
|   // default C/C++ library helpers | ||||
|  | ||||
| .macro HELPER helper_name | ||||
|   .section .text.\helper_name, "ax", %progbits | ||||
|   .balign 2 | ||||
|   .global \helper_name | ||||
|   .weak \helper_name   | ||||
| \helper_name: | ||||
|   .thumb_func | ||||
| .endm | ||||
|  | ||||
| .macro JUMPTO name | ||||
| #if defined(__thumb__) && !defined(__thumb2__) | ||||
|   mov r12, r0 | ||||
|   ldr r0, =\name | ||||
|   push {r0} | ||||
|   mov r0, r12 | ||||
|   pop {pc} | ||||
| #else | ||||
|   b \name | ||||
| #endif | ||||
| .endm | ||||
|  | ||||
| HELPER __aeabi_read_tp | ||||
|   ldr r0, =__tbss_start__-8 | ||||
|   bx lr | ||||
| HELPER abort | ||||
|   b . | ||||
| HELPER __assert | ||||
|   b . | ||||
| HELPER __aeabi_assert | ||||
|   b . | ||||
| HELPER __sync_synchronize | ||||
|   bx lr | ||||
| HELPER __getchar | ||||
|   JUMPTO debug_getchar | ||||
| HELPER __putchar | ||||
|   JUMPTO debug_putchar | ||||
| HELPER __open | ||||
|   JUMPTO debug_fopen | ||||
| HELPER __close | ||||
|   JUMPTO debug_fclose | ||||
| HELPER __write    | ||||
|   mov r3, r0 | ||||
|   mov r0, r1 | ||||
|   movs r1, #1   | ||||
|   JUMPTO debug_fwrite | ||||
| HELPER __read   | ||||
|   mov r3, r0 | ||||
|   mov r0, r1 | ||||
|   movs r1, #1  | ||||
|   JUMPTO debug_fread | ||||
| HELPER __seek | ||||
|   push {r4, lr} | ||||
|   mov r4, r0 | ||||
|   bl debug_fseek | ||||
|   cmp r0, #0 | ||||
|   bne 1f | ||||
|   mov r0, r4 | ||||
|   bl debug_ftell | ||||
|   pop {r4, pc} | ||||
| 1: | ||||
|   ldr r0, =-1 | ||||
|   pop {r4, pc} | ||||
|   // char __user_locale_name_buffer[]; | ||||
|   .section .bss.__user_locale_name_buffer, "aw", %nobits | ||||
|   .global __user_locale_name_buffer | ||||
|   .weak __user_locale_name_buffer | ||||
|   __user_locale_name_buffer: | ||||
|   .word 0x0 | ||||
|  | ||||
| #ifdef FULL_LIBRARY | ||||
|   .bss | ||||
| args: | ||||
|   .space ARGSSPACE | ||||
| #endif | ||||
|  | ||||
|   /* Setup attibutes of stack and heap sections so they don't take up room in the elf file */ | ||||
|   .section .stack, "wa", %nobits | ||||
|   .section .stack_process, "wa", %nobits | ||||
|   .section .heap, "wa", %nobits | ||||
|  | ||||
		Reference in New Issue
	
	Block a user
	 hathach
					hathach