hybridgroup / mechanoid-examples

Examples written using Mechanoid framework for WASM-based embedded development.
https://mechanoid.io/
Apache License 2.0
11 stars 0 forks source link

Blink example not working on RPI Pico #12

Open siashish opened 6 months ago

siashish commented 6 months ago

I try to run the blink example on rpi pico with default board lead on pin 25. but led not blink on pico. Anyone have any suggestion, whats going wrong there. Thanks for the support.

deadprogram commented 6 months ago

Hello @siashish

If you change this code here to the pin number on your board it should work: https://github.com/hybridgroup/mechanoid-examples/blob/main/blinky/modules/blink/main.go#L10

Hope that helps!

siashish commented 6 months ago

Hi @deadprogram

Despite changing the pin within the same code base for the Raspberry Pi Pico to pin 25, it still does not function as expected.

scottfeldman commented 6 months ago

Is it a Pico or Pico-W? I remember blinking the LED on Pico-W requires going thru the Wifi device somehow. I think @soypat has Pico-W LED working, but outside the TinyGo code base.

soypat commented 6 months ago

@siashish if you do in fact have a Pico W you can try the following program to blink the LED and verify the LED is not damaged https://github.com/soypat/cyw43439/blob/main/examples/blinky/blinky.go

deadprogram commented 6 months ago

Just tried with a Pico changing to led = machine.Pin(25) and it is blinking

https://github.com/hybridgroup/mechanoid-examples/assets/5520/d4245748-660a-4aa8-ae6a-0e93d40847d6

Sandesh-verma commented 6 months ago

HI @scottfeldman, @soypat We are using PICO_W and the led is working fine. We have cross checked with (https://github.com/soypat/cyw43439/blob/main/examples/blinky/blinky.go) this example.

But when using mechanoid example blinky for PICO_W , we faced the below issue after running the mecha build command -

user:~/mechanoid-examples/blinky$ ls
go.mod  go.sum  main.go  modules  README.md

user:~/mechanoid-examples/blinky$ mecha build
Building module blink
Done.
package github.com/hybridgroup/mechanoid-examples/blinky/modules/blink
    imports github.com/soypat/cyw43439
    imports github.com/tinygo-org/pio/rp2-pio
    imports device/rp: build constraints exclude all Go files in /home/user/.cache/tinygo/goroot-1300efd6eec7ee073f4512e2eb558a951848cb6a899247aebb806e8f806dc738/src/device/rp
tinygo build error /home/user/mechanoid-examples/blinky/modules/blink: exit status 1
Sandesh-verma commented 3 months ago

Just tried with a Pico changing to led = machine.Pin(25) and it is blinking PXL_20240406_120224813.TS.mp4

Hi @deadprogram

I now have a PICO (not pico_w) board with me and I was trying out the blinky example again.

However, I get the below error during mecha flash command..

~/mechanoid-examples/blinky$ mecha flash -i wazero -m pico
Building TinyGo module blink
Done.
# os
/usr/local/lib/tinygo/src/os/types_unix.go:20:18: undefined: syscall.Stat_t
/usr/local/lib/tinygo/src/os/stat_linuxlike.go:50:32: undefined: syscall.Timespec
/usr/local/lib/tinygo/src/os/dir_unix.go:55:28: undefined: syscall.ReadDirent
/usr/local/lib/tinygo/src/os/dir_unix.go:82:49: undefined: syscall.Dirent
/usr/local/lib/tinygo/src/os/dirent_linux.go:15:46: undefined: syscall.Dirent
/usr/local/lib/tinygo/src/os/dirent_linux.go:15:83: undefined: syscall.Dirent
/usr/local/lib/tinygo/src/os/dirent_linux.go:19:46: undefined: syscall.Dirent
/usr/local/lib/tinygo/src/os/dirent_linux.go:19:86: undefined: syscall.Dirent
/usr/local/lib/tinygo/src/os/dirent_linux.go:27:49: undefined: syscall.Dirent
/usr/local/lib/tinygo/src/os/dirent_linux.go:31:33: undefined: syscall.Dirent
/usr/local/lib/tinygo/src/os/dirent_linux.go:37:15: undefined: syscall.DT_BLK
/usr/local/lib/tinygo/src/os/dirent_linux.go:39:15: undefined: syscall.DT_CHR
/usr/local/lib/tinygo/src/os/dirent_linux.go:41:15: undefined: syscall.DT_DIR
/usr/local/lib/tinygo/src/os/dirent_linux.go:43:15: undefined: syscall.DT_FIFO
/usr/local/lib/tinygo/src/os/dirent_linux.go:45:15: undefined: syscall.DT_LNK
/usr/local/lib/tinygo/src/os/dirent_linux.go:47:15: undefined: syscall.DT_REG
/usr/local/lib/tinygo/src/os/dirent_linux.go:49:15: undefined: syscall.DT_SOCK
/usr/local/lib/tinygo/src/os/file_anyos.go:35:18: undefined: syscall.Chdir
/usr/local/lib/tinygo/src/os/file_anyos.go:55:36: undefined: syscall.Mkdir
/usr/local/lib/tinygo/src/os/file_anyos.go:63:34: undefined: syscall.Unlink
/usr/local/lib/tinygo/src/os/file_anyos.go:67:35: undefined: syscall.Rmdir
/usr/local/lib/tinygo/src/os/file_anyos.go:110:19: undefined: syscall.Write
/usr/local/lib/tinygo/src/os/file_anyos.go:142:18: undefined: syscall.Chmod
/usr/local/lib/tinygo/src/os/file_anyos.go:186:16: undefined: syscall.S_ISUID
/usr/local/lib/tinygo/src/os/file_anyos.go:189:16: undefined: syscall.S_ISGID
/usr/local/lib/tinygo/src/os/file_anyos.go:192:16: undefined: syscall.S_ISVTX
/usr/local/lib/tinygo/src/os/file_unix.go:28:17: undefined: syscall.Rename
/usr/local/lib/tinygo/src/os/file_unix.go:81:18: undefined: syscall.Link
/usr/local/lib/tinygo/src/os/file_unix.go:96:18: undefined: syscall.Symlink
/usr/local/lib/tinygo/src/os/file_unix.go:114:28: undefined: syscall.Readlink
/usr/local/lib/tinygo/src/os/file_unix.go:114:45: not enough arguments in call to fixCount
    have (unknown type)
    want (int, error)
/usr/local/lib/tinygo/src/os/file_unix.go:133:19: undefined: syscall.Pread
/usr/local/lib/tinygo/src/os/file_unix.go:149:20: undefined: syscall.Pwrite
/usr/local/lib/tinygo/src/os/file_unix.go:160:17: undefined: syscall.Fsync
/usr/local/lib/tinygo/src/os/stat_linuxlike.go:23:31: undefined: syscall.S_IFMT
/usr/local/lib/tinygo/src/os/stat_linuxlike.go:24:15: undefined: syscall.S_IFBLK
/usr/local/lib/tinygo/src/os/stat_linuxlike.go:26:15: undefined: syscall.S_IFCHR
/usr/local/lib/tinygo/src/os/stat_linuxlike.go:28:15: undefined: syscall.S_IFDIR
/usr/local/lib/tinygo/src/os/stat_linuxlike.go:30:15: undefined: syscall.S_IFIFO
/usr/local/lib/tinygo/src/os/stat_linuxlike.go:32:15: undefined: syscall.S_IFLNK
/usr/local/lib/tinygo/src/os/stat_linuxlike.go:34:15: undefined: syscall.S_IFREG
/usr/local/lib/tinygo/src/os/stat_linuxlike.go:36:15: undefined: syscall.S_IFSOCK
/usr/local/lib/tinygo/src/os/stat_linuxlike.go:39:25: undefined: syscall.S_ISGID
/usr/local/lib/tinygo/src/os/stat_linuxlike.go:42:25: undefined: syscall.S_ISUID
/usr/local/lib/tinygo/src/os/stat_linuxlike.go:45:25: undefined: syscall.S_ISVTX
/usr/local/lib/tinygo/src/os/stat_linuxlike.go:56:43: undefined: syscall.Stat_t
/usr/local/lib/tinygo/src/os/stat_unix.go:18:18: undefined: syscall.Fstat
/usr/local/lib/tinygo/src/os/stat_unix.go:31:37: undefined: syscall.Stat
/usr/local/lib/tinygo/src/os/stat_unix.go:44:37: undefined: syscall.Lstat
tinygo build error /home/user/mechanoid-examples/blinky/modules/blink: exit status 1

Do you have any insights on this ?

I am building on a linux machine with tinygo version

$ tinygo --version
Unknown command: --version
TinyGo is a Go compiler for small places.
version: 0.32.0
deadprogram commented 2 months ago

@Sandesh-verma you can either try updating to the pre-release version of wazero (1.7.4) or else try the mecha command with the wasman runtime (-i wasman)

There is an issue with the latest release of tinygo with the latest release of wazero that is will be resolved on the next release of wazero.

Hope that helps!

Sandesh-verma commented 2 months ago

Hi @deadprogram we tried mecha command with wasman runtime still we have the same error :-

user:~/mechanoid-examples/blinky$ mecha flash -i wasman -m pico

Building TinyGo module blink

Done.

# os

/usr/local/lib/tinygo/src/os/types_unix.go:20:18: undefined: syscall.Stat_t

/usr/local/lib/tinygo/src/os/stat_linuxlike.go:50:32: undefined: syscall.Timespec

/usr/local/lib/tinygo/src/os/dir_unix.go:55:28: undefined: syscall.ReadDirent

/usr/local/lib/tinygo/src/os/dir_unix.go:82:49: undefined: syscall.Dirent

/usr/local/lib/tinygo/src/os/dirent_linux.go:15:46: undefined: syscall.Dirent

/usr/local/lib/tinygo/src/os/dirent_linux.go:15:83: undefined: syscall.Dirent

/usr/local/lib/tinygo/src/os/dirent_linux.go:19:46: undefined: syscall.Dirent

/usr/local/lib/tinygo/src/os/dirent_linux.go:19:86: undefined: syscall.Dirent

/usr/local/lib/tinygo/src/os/dirent_linux.go:27:49: undefined: syscall.Dirent

/usr/local/lib/tinygo/src/os/dirent_linux.go:31:33: undefined: syscall.Dirent

/usr/local/lib/tinygo/src/os/dirent_linux.go:37:15: undefined: syscall.DT_BLK

/usr/local/lib/tinygo/src/os/dirent_linux.go:39:15: undefined: syscall.DT_CHR

/usr/local/lib/tinygo/src/os/dirent_linux.go:41:15: undefined: syscall.DT_DIR

/usr/local/lib/tinygo/src/os/dirent_linux.go:43:15: undefined: syscall.DT_FIFO

/usr/local/lib/tinygo/src/os/dirent_linux.go:45:15: undefined: syscall.DT_LNK

/usr/local/lib/tinygo/src/os/dirent_linux.go:47:15: undefined: syscall.DT_REG

/usr/local/lib/tinygo/src/os/dirent_linux.go:49:15: undefined: syscall.DT_SOCK

/usr/local/lib/tinygo/src/os/file_anyos.go:35:18: undefined: syscall.Chdir

/usr/local/lib/tinygo/src/os/file_anyos.go:55:36: undefined: syscall.Mkdir

/usr/local/lib/tinygo/src/os/file_anyos.go:63:34: undefined: syscall.Unlink

/usr/local/lib/tinygo/src/os/file_anyos.go:67:35: undefined: syscall.Rmdir

/usr/local/lib/tinygo/src/os/file_anyos.go:110:19: undefined: syscall.Write

/usr/local/lib/tinygo/src/os/file_anyos.go:142:18: undefined: syscall.Chmod

/usr/local/lib/tinygo/src/os/file_anyos.go:186:16: undefined: syscall.S_ISUID

/usr/local/lib/tinygo/src/os/file_anyos.go:189:16: undefined: syscall.S_ISGID

/usr/local/lib/tinygo/src/os/file_anyos.go:192:16: undefined: syscall.S_ISVTX

/usr/local/lib/tinygo/src/os/file_unix.go:28:17: undefined: syscall.Rename

/usr/local/lib/tinygo/src/os/file_unix.go:81:18: undefined: syscall.Link

/usr/local/lib/tinygo/src/os/file_unix.go:96:18: undefined: syscall.Symlink

/usr/local/lib/tinygo/src/os/file_unix.go:114:28: undefined: syscall.Readlink

/usr/local/lib/tinygo/src/os/file_unix.go:114:45: not enough arguments in call to fixCount

    have (unknown type)

    want (int, error)

/usr/local/lib/tinygo/src/os/file_unix.go:133:19: undefined: syscall.Pread

/usr/local/lib/tinygo/src/os/file_unix.go:149:20: undefined: syscall.Pwrite

/usr/local/lib/tinygo/src/os/file_unix.go:160:17: undefined: syscall.Fsync

/usr/local/lib/tinygo/src/os/stat_linuxlike.go:23:31: undefined: syscall.S_IFMT

/usr/local/lib/tinygo/src/os/stat_linuxlike.go:24:15: undefined: syscall.S_IFBLK

/usr/local/lib/tinygo/src/os/stat_linuxlike.go:26:15: undefined: syscall.S_IFCHR

/usr/local/lib/tinygo/src/os/stat_linuxlike.go:28:15: undefined: syscall.S_IFDIR

/usr/local/lib/tinygo/src/os/stat_linuxlike.go:30:15: undefined: syscall.S_IFIFO

/usr/local/lib/tinygo/src/os/stat_linuxlike.go:32:15: undefined: syscall.S_IFLNK

/usr/local/lib/tinygo/src/os/stat_linuxlike.go:34:15: undefined: syscall.S_IFREG

/usr/local/lib/tinygo/src/os/stat_linuxlike.go:36:15: undefined: syscall.S_IFSOCK

/usr/local/lib/tinygo/src/os/stat_linuxlike.go:39:25: undefined: syscall.S_ISGID

/usr/local/lib/tinygo/src/os/stat_linuxlike.go:42:25: undefined: syscall.S_ISUID

/usr/local/lib/tinygo/src/os/stat_linuxlike.go:45:25: undefined: syscall.S_ISVTX

/usr/local/lib/tinygo/src/os/stat_linuxlike.go:56:43: undefined: syscall.Stat_t

/usr/local/lib/tinygo/src/os/stat_unix.go:18:18: undefined: syscall.Fstat

/usr/local/lib/tinygo/src/os/stat_unix.go:31:37: undefined: syscall.Stat

/usr/local/lib/tinygo/src/os/stat_unix.go:44:37: undefined: syscall.Lstat

tinygo build error /home/eca3kor/mechanoid-examples/blinky/modules/blink: exit status 1

and for the wazero pre release version (1.7.4) we couldn't find it in the official github page , the latest version listed there is 1.7.3