mirror of
				https://github.com/espressif/esp-idf.git
				synced 2025-11-04 06:11:06 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			115 lines
		
	
	
		
			3.0 KiB
		
	
	
	
		
			ReStructuredText
		
	
	
	
	
	
			
		
		
	
	
			115 lines
		
	
	
		
			3.0 KiB
		
	
	
	
		
			ReStructuredText
		
	
	
	
	
	
*****************
 | 
						|
ESP32 ROM console
 | 
						|
*****************
 | 
						|
 | 
						|
When an ESP32 is unable to boot from flash ROM (and the fuse disabling it hasn't been blown), it boots into a rom console. The console
 | 
						|
is based on TinyBasic, and statements entered should be in the form of BASIC statements. As is common in the BASIC language, without a 
 | 
						|
preceeding line number, commands entered are executed immediately; lines with a prefixed line number are stored as part of a program.
 | 
						|
 | 
						|
Full list of supported statements and functions
 | 
						|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 | 
						|
 | 
						|
System
 | 
						|
------
 | 
						|
 | 
						|
- BYE		- *exits Basic, reboots ESP32, retries booting from flash*
 | 
						|
- END 		- *stops execution from the program, also "STOP"*
 | 
						|
- MEM		- *displays memory usage statistics*
 | 
						|
- NEW		- *clears the current program*
 | 
						|
- RUN		- *executes the current program*
 | 
						|
 | 
						|
IO, Documentation
 | 
						|
-----------------
 | 
						|
 | 
						|
- PEEK( address )	- *get a 32-bit value from a memory address*
 | 
						|
- POKE			- *write a 32-bit value to memory*
 | 
						|
- USR(addr, arg1, ..) - *Execute a machine language function*
 | 
						|
- PRINT expression	- *print out the expression, also "?"*
 | 
						|
- PHEX expression	- *print expression as a hex number*
 | 
						|
- REM stuff		- *remark/comment, also "'"*
 | 
						|
 | 
						|
Expressions, Math
 | 
						|
-----------------
 | 
						|
 | 
						|
- A=V, LET A=V	- *assign value to a variable*
 | 
						|
- +, -, \*, / - *Math*
 | 
						|
- <,<=,=,<>,!=,>=,> - *Comparisons*
 | 
						|
- ABS( expression )  - *returns the absolute value of the expression*
 | 
						|
- RSEED( v ) - *sets the random seed to v*
 | 
						|
- RND( m ) - *returns a random number from 0 to m*
 | 
						|
- A=1234 - * Assign a decimal value*
 | 
						|
- A=&h1A2 - * Assign a hex value*
 | 
						|
- A=&b1001 - *Assign a binary value*
 | 
						|
 | 
						|
Control
 | 
						|
-------
 | 
						|
 | 
						|
- IF expression statement - *perform statement if expression is true*
 | 
						|
- FOR variable = start TO end	- *start for block*
 | 
						|
- FOR variable = start TO end STEP value - *start for block with step*
 | 
						|
- NEXT - *end of for block*
 | 
						|
- GOTO linenumber - *continue execution at this line number*
 | 
						|
- GOSUB linenumber - *call a subroutine at this line number*
 | 
						|
- RETURN	- *return from a subroutine*
 | 
						|
- DELAY		- *Delay a given number of milliseconds*
 | 
						|
 | 
						|
Pin IO
 | 
						|
------
 | 
						|
- IODIR		- *Set a GPIO-pin as an output (1) or input (0)*
 | 
						|
- IOSET		- *Set a GPIO-pin, configured as output, to high (1) or low (0)*
 | 
						|
- IOGET		- *Get the value of a GPIO-pin*
 | 
						|
 | 
						|
 | 
						|
Example programs
 | 
						|
~~~~~~~~~~~~~~~~
 | 
						|
 | 
						|
Here are a few example commands and programs to get you started...
 | 
						|
 | 
						|
Read UART_DATE register of uart0
 | 
						|
--------------------------------
 | 
						|
 | 
						|
::
 | 
						|
 | 
						|
	> PHEX PEEK(&h3FF40078)
 | 
						|
	15122500
 | 
						|
 | 
						|
Set GPIO2 using memory writes to GPIO_OUT_REG
 | 
						|
---------------------------------------------
 | 
						|
 | 
						|
Note: you can do this easier with the IOSET command
 | 
						|
 | 
						|
::
 | 
						|
 | 
						|
	> POKE &h3FF44004,PEEK(&h3FF44004) OR &b100
 | 
						|
 | 
						|
Get value of GPIO0
 | 
						|
------------------
 | 
						|
 | 
						|
::
 | 
						|
 | 
						|
	> IODIR 0,0
 | 
						|
	> PRINT IOGET(0)
 | 
						|
	0
 | 
						|
 | 
						|
Blink LED
 | 
						|
---------
 | 
						|
 | 
						|
Hook up an LED between GPIO2 and ground. When running the program, the LED should blink 10 times.
 | 
						|
 | 
						|
::
 | 
						|
 | 
						|
	10 IODIR 2,1
 | 
						|
	20 FOR A=1 TO 10
 | 
						|
	30 IOSET 2,1
 | 
						|
	40 DELAY 250
 | 
						|
	50 IOSET 2,0
 | 
						|
	60 DELAY 250
 | 
						|
	70 NEXT A
 | 
						|
	RUN
 | 
						|
 | 
						|
Credits
 | 
						|
~~~~~~~
 | 
						|
 | 
						|
The ROM console is based on "TinyBasicPlus" by Mike Field and Scott Lawrence, which is based on "68000 TinyBasic" by Gordon Brandly
 | 
						|
 |