45 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
		
		
			
		
	
	
			45 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
| 
								 | 
							
								/****************************************************************************
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * Copyright(c) 2019 by Aerospace C.Power (Chongqing) Microelectronics. ALL RIGHTS RESERVED.
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * This Information is proprietary to Aerospace C.Power (Chongqing) Microelectronics and MAY NOT
							 | 
						||
| 
								 | 
							
								 * be copied by any method or incorporated into another program without
							 | 
						||
| 
								 | 
							
								 * the express written consent of Aerospace C.Power. This Information or any portion
							 | 
						||
| 
								 | 
							
								 * thereof remains the property of Aerospace C.Power. The Information contained herein
							 | 
						||
| 
								 | 
							
								 * is believed to be accurate and Aerospace C.Power assumes no responsibility or
							 | 
						||
| 
								 | 
							
								 * liability for its use in any way and conveys no license or title under
							 | 
						||
| 
								 | 
							
								 * any patent or copyright and makes no representation or warranty that this
							 | 
						||
| 
								 | 
							
								 * Information is free from patent or copyright infringement.
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * ****************************************************************************/
							 | 
						||
| 
								 | 
							
								#include "os_types.h"
							 | 
						||
| 
								 | 
							
								#include "sections.h"
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								void* memcpy(void* aa, const void* bb, size_t n);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								void* memset(void* s, int32_t c, uint32_t size);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								static void romlib_data_init(void)
							 | 
						||
| 
								 | 
							
								{
							 | 
						||
| 
								 | 
							
								    uint8_t *start = (uint8_t*)&_data_start;
							 | 
						||
| 
								 | 
							
								    uint8_t *end = (uint8_t*)&_data_end;
							 | 
						||
| 
								 | 
							
								    uint8_t *load = (uint8_t*)&_data_load_addr;
							 | 
						||
| 
								 | 
							
								    int len = (end - start);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    memcpy(start, load, len);
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								static void romlib_bss_init(void)
							 | 
						||
| 
								 | 
							
								{
							 | 
						||
| 
								 | 
							
								    uint8_t *start = (uint8_t*)&_bss_start;
							 | 
						||
| 
								 | 
							
								    uint8_t *end = (uint8_t*)&_bss_end;
							 | 
						||
| 
								 | 
							
								    int len = (end - start);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    memset(start, 0x0, len);
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								void romlib_section_init(void) {
							 | 
						||
| 
								 | 
							
								    romlib_data_init();
							 | 
						||
| 
								 | 
							
								    romlib_bss_init();
							 | 
						||
| 
								 | 
							
								}
							 |