mirror of
				https://github.com/espressif/esp-idf.git
				synced 2025-11-04 09:01:40 +01:00 
			
		
		
		
	
		
			
	
	
		
			78 lines
		
	
	
		
			2.8 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
		
		
			
		
	
	
			78 lines
		
	
	
		
			2.8 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
| 
								 | 
							
								/* Customer ID=11656; Build=0x5f626; Copyright (c) 2003-2012 Tensilica Inc.  ALL RIGHTS RESERVED.
							 | 
						||
| 
								 | 
							
								   These coded instructions, statements, and computer programs are the
							 | 
						||
| 
								 | 
							
								   copyrighted works and confidential proprietary information of Tensilica Inc.
							 | 
						||
| 
								 | 
							
								   They may not be modified, copied, reproduced, distributed, or disclosed to
							 | 
						||
| 
								 | 
							
								   third parties in any manner, medium, or form, in whole or in part, without
							 | 
						||
| 
								 | 
							
								   the prior written consent of Tensilica Inc.  */
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#ifndef _XTLOAD_API_H
							 | 
						||
| 
								 | 
							
								#define _XTLOAD_API_H
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#include <stdint.h>
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#ifdef __cplusplus
							 | 
						||
| 
								 | 
							
								extern "C" {
							 | 
						||
| 
								 | 
							
								#endif
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#define XTENSA_BYTES_PER_WORD 4
							 | 
						||
| 
								 | 
							
								#define XLOAD_ALL_CORES -1
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								typedef int core_number_t;
							 | 
						||
| 
								 | 
							
								typedef uint32_t xtload_address_t;
							 | 
						||
| 
								 | 
							
								typedef uint32_t xtload_word_count_t;
							 | 
						||
| 
								 | 
							
								typedef uint32_t * xtload_word_ptr_t;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/* These functions correspond one-to-one with xt-load script
							 | 
						||
| 
								 | 
							
								   commands. See the documentation for xt-load for their usage.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								   There are however, several higher-level script commands--such as
							 | 
						||
| 
								 | 
							
								   load-elf-file--which don't have direct analogues here.  These
							 | 
						||
| 
								 | 
							
								   "missing" commands are essentially just macros that result in
							 | 
						||
| 
								 | 
							
								   several of these commands below.  Note that you can execute several
							 | 
						||
| 
								 | 
							
								   of these commands, then the results of a script, or vice-versa.
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								void xtload_bootloader_wake (void);
							 | 
						||
| 
								 | 
							
								void xtload_bootloader_sleep (void);
							 | 
						||
| 
								 | 
							
								void xtload_bootloader_done (void);
							 | 
						||
| 
								 | 
							
								void xtload_bootloader_not_done (void);
							 | 
						||
| 
								 | 
							
								void xtload_reset_and_cont (core_number_t core);
							 | 
						||
| 
								 | 
							
								void xtload_stall_and_reset (core_number_t core);
							 | 
						||
| 
								 | 
							
								#define xtload_reset_and_stall xtload_stall_and_reset
							 | 
						||
| 
								 | 
							
								void xtload_stall_and_target (core_number_t core);
							 | 
						||
| 
								 | 
							
								void xtload_ignore_and_stall (core_number_t core);
							 | 
						||
| 
								 | 
							
								void xtload_ignore_and_cont (core_number_t core);
							 | 
						||
| 
								 | 
							
								#define xtload_ignore_and_continue xtload_ignore_and_cont
							 | 
						||
| 
								 | 
							
								void xtload_read_words (xtload_address_t addr, xtload_word_count_t count);
							 | 
						||
| 
								 | 
							
								void xtload_zero_words (xtload_address_t addr, xtload_word_count_t count);
							 | 
						||
| 
								 | 
							
								void xtload_write_words (int swap, xtload_address_t addr,
							 | 
						||
| 
								 | 
							
											 xtload_word_ptr_t ptr, xtload_word_count_t count);
							 | 
						||
| 
								 | 
							
								void xtload_setup_write_words (xtload_address_t addr, xtload_word_count_t count);
							 | 
						||
| 
								 | 
							
								void xtload_read_register (core_number_t core);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/* *I M P O R T A N T*
							 | 
						||
| 
								 | 
							
								   
							 | 
						||
| 
								 | 
							
								   The bootloader API calls this function whenever it outputs a word
							 | 
						||
| 
								 | 
							
								   to the bootloader hardware chain. 
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								   Because the API has no information about how the bootloader
							 | 
						||
| 
								 | 
							
								   hardware is connected to the host hardware, the user must
							 | 
						||
| 
								 | 
							
								   implement this function to write a word to the bootloader's register.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								   A user's implementation might write the bytes to an Xtensa queue or
							 | 
						||
| 
								 | 
							
								   to a memory-mapped register.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								   For example, xt-load uses this API just like any other client. Its
							 | 
						||
| 
								 | 
							
								   implementation of this function simply writes this word to an
							 | 
						||
| 
								 | 
							
								   output file.
							 | 
						||
| 
								 | 
							
								*/
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								void xtload_user_output_word (uint32_t word);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#ifdef __cplusplus
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								#endif
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#endif /* _XTLOAD_API_H */
							 | 
						||
| 
								 | 
							
								
							 |