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

Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐