close_uart0_rom_code_printf

发布时间 2023-04-23 21:57:11作者: SpinJump

img# 关闭 uart0 的 ROM code 打印

简介

每次 uart0 在上电重启、deepsleep、或者其它复位启动的时候,都会打印一大段 ROM code 里面的信息。这个打印会影响启动的速度,如果想要加快一些启动速度,那么就可以选择关闭这个打印信息。

关闭配置

![UART0 的 ROM 日志打印控制.jpg](./picture_collection\UART0 的 ROM 日志打印控制.jpg)

  1. 由上图可知,控制关闭 ROM code 的打印有三个控制变量。

临时关闭

  1. 只需要将 RTC_CNTL_RTC_STORE4_REG[0] 寄存器的值写为 1 ,就能在下次启动时临时关闭 ROM code 的打印。

  2. 这个只能生效一次,所以每次重启之前都需要操作一下这个寄存器。

  3. 这个寄存器里面的值,不能断电保存,所以在断电重启时,这个寄存器不会生效。

    //提供一种在ESP32-S3 里面快捷使能临时关闭 ROM code 打印的方案,直接操作寄存器的值。
    
     (* (uint32_t *) 0x600080c0)=1;
    

永久关闭

  1. 可以通过写 eFuse 的相关值为 3 。这样就直接关闭了,不受其它条件的影响。
  2. eFuse 不为 3 时,只能可以通过外部上下拉 GPIO46 来对其进行控制。

  1. 这篇文章是参看 ESP32-S3 的手册所写的,其它的型号可能会不一样。
  2. RTC_CNTL_RTC_STORE4_REG[0] 的值可以任意多次读写,而 eFuse 仅可烧写一次。因此,RTC_CNTL_RTC_STORE4_
    REG[0] 可用于临时关闭 ROM 日志打印,而 eFuse 可用于永久关闭 ROM 日志打印。
  3. GPIO46 的上下拉,只能通过外部的上拉电阻或者下拉电阻进行,程序里面的上下拉在启动时是检测不到的。

参考手册

  1. esp32-s3_datasheet_cn.pdf

  2. esp32-s3_technical_reference_manual_cn.pdf