hiro99ma blog

jade: タッチスクリーンは扱えるのか (2)

2025/05/23

はじめに

Blockstream Jade のコードを M5Stack Core2 で動かしたいシリーズ。

前回分かったこと

main/input.c の更新履歴 を見て、waveshare のボードに対応したのは比較的最近だということに気付いた。 だからどうしたと言われればそれまでなのだが、タッチスクリーンに対応したボードが過去にもあったから大丈夫ではないか、というのが心配になってきた。
2025年1月8日にタッチデバイスを禁止にするコードがあって、それが後に取り除かれたんだったら対応していてもよさそうだが、 それは waveshare のボードに対応するためのもので他は未確認、という可能性もある。

Espressif は FT5x06 Controller を提供している。
同じディレクトリ にはこれ以外の FT シリーズはない。

コントローラは FocalTech というところのもので、そのGitHubリポジトリ にあるドライバは FT5x06 と FT6x36 が並んでいる。
コードを見ても FT6x 系を見分けていそうなのは 1箇所だけだ。
そのレジスタにアクセスするコードは Espressif でのコード にないから、いいんじゃないかなあ。

ともかくスタックトレースで esp_lcd_new_panel_io_i2c() が出ているので、これがエラーになっているのは間違いなかろう。
esp-bsp の M5Core2 っぽいファイルでも使っている。
README でもそう書いているし、このコードを参考にすると良いはずだ。


ログを見返す。
最後の方で “ESP_ERROR_CHECK failed” になり “esp_err_t 0x103” だといっている。
発生箇所は at /COMPONENT_MAIN_DIR/input/touchscreen.inc:57esp_lcd_new_panel_io_i2c()
エラー値 0x103 はおそらく ESP_ERR_INVALID_STATE だろう。

Warning は 2箇所だが、取りあえずスルーしてよいと思う。

entry 0x40080570
I (548) quad_psram: This chip is ESP32-D0WD
I (548) esp_psram: Found 8MB PSRAM device
I (548) esp_psram: Speed: 40MHz
I (548) esp_psram: PSRAM initialized, cache is in low/high (2-core) mode.
W (554) esp_psram: Virtual address not enough for PSRAM, map as much as we can. 4MB is mapped
I (562) cpu_start: Multicore app
I (576) cpu_start: Pro cpu start user code
I (576) cpu_start: cpu freq: 240000000 Hz
I (576) app_init: Application information:
I (578) app_init: App version:      1.0.35-dirty
I (583) app_init: Secure version:   0
I (586) app_init: ELF file SHA256:  42db14068...
I (590) app_init: ESP-IDF:          v5.4.1
I (594) efuse_init: Min chip rev:     v1.0
I (598) efuse_init: Max chip rev:     v3.99 
I (602) efuse_init: Chip rev:         v3.0
I (606) heap_init: Initializing. RAM available for dynamic allocation:
I (612) heap_init: At 3FFAFF10 len 000000F0 (0 KiB): DRAM
I (617) heap_init: At 3FFB6388 len 00001C78 (7 KiB): DRAM
I (622) heap_init: At 3FFB9A20 len 00004108 (16 KiB): DRAM
I (627) heap_init: At 3FFC6928 len 000196D8 (101 KiB): DRAM
I (633) heap_init: At 3FFE0440 len 00003AE0 (14 KiB): D/IRAM
I (638) heap_init: At 3FFE4350 len 0001BCB0 (111 KiB): D/IRAM
I (644) heap_init: At 4009E1FC len 00001E04 (7 KiB): IRAM
I (649) esp_psram: Adding pool of 4089K of PSRAM memory to heap allocator
I (656) spi_flash: detected chip: generic
I (659) spi_flash: flash io: dio
W (662) spi_flash: Detected size(16384k) larger than the size in the binary image header(4096k). Using the size in the binary image header.
I (675) main_task: Started on CPU0
I (685) esp_psram: Reserving pool of 32K of internal memory for DMA/internal allocations
I (685) main_task: Calling app_main()
I (695) main.c: 96: Running partition ptr: 0x3ffcf744
I (695) main.c: 106: Running firmware version: 1.0.35-dirty
I (705) main.c: 118: Running partition state: 2
ESP_ERROR_CHECK failed: esp_err_t 0x103 at 0x40119b9b
--- 0x40119b9b: touchscreen_task at /COMPONENT_MAIN_DIR/input/touchscreen.inc:57 (discriminator 1)

ただ、もとの esp_lcd_new_panel_io_i2c() がよくわからない。
ここってタッチスクリーンではなく LCD だよねぇ。
LCD には出力があるから動いていると思うのだが、Jade のコードでは main/input/touchscreen.inc にあるから入力デバイスの処理だと思うのだよ。

この手順に従うとこうなる。

  1. i2c_new_master_bus()
  2. esp_lcd_new_panel_io_i2c() : 今回エラーになった関数
  3. esp_lcd_new_panel_ssd1306(): これは SSD1306 というコントローラの場合だろう

順番はそうなっているのでよかろう。

esp_lcd_new_panel_io_i2c() はマクロだった。 ただ、返すエラーは ESP_ERR_INVALID_ARG(0x102)ESP_ERR_NO_MEM(0x101) となっている。


 < Top page


コメント(Google Formへ飛びます)

GitHub

X/Twitter

Homepage