Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

How to use it on Jetson Nano? #98

Closed
fayfive opened this issue Jun 19, 2022 · 9 comments
Closed

How to use it on Jetson Nano? #98

fayfive opened this issue Jun 19, 2022 · 9 comments
Labels
question Further information is requested

Comments

@fayfive
Copy link

fayfive commented Jun 19, 2022

I have followed the steps

$ flutter-elinux create sample
$ cd sample
$ flutter-elinux run -d elinux-wayland

But it just run on ubuntu x86
I want to run it on DRM mode of Jetson Nano. How to use it?
Can I cross compile the flutter app?
Thanks!

@fayfive
Copy link
Author

fayfive commented Jun 20, 2022

Hello.
Can you tell me what's different of flutter-elinux and flutter-embedded-linux ?
I'm confuse about this.

@HidenoriMatsubayashi
Copy link
Collaborator

flutter-elinux is a build and debug tool for elinux (embedded linux). Whereas flutter-embedded-linux is a porting layer of Flutter engine for elinux. Please check READMEs.

@fayfive
Copy link
Author

fayfive commented Jun 20, 2022

Here is my compile command.
~/flutter-elinux$ bin/flutter-elinux build elinux --target-backend-type=eglstsroot=/media/alfred/nfs/ --target-arch=arm64 --target-compiler-triple=aarch64-linux-gnu
/media/alfred/nfs/ is the / of jetson nano
At last, it shows that Downloading elinux-x64-release tools... ⣻Downloading elinux-x64-release tools... 12.2s Target file "lib/main.dart" not found.
I don't know if it works well.

And then I see the directory of engine

~/flutter-elinux/flutter/bin/cache/artifacts/engine$ ls
android-arm64-profile  android-arm-release  common                elinux-arm64-release  elinux-x64-profile
android-arm64-release  android-x64-profile  elinux-arm64-debug    elinux-common         elinux-x64-release
android-arm-profile    android-x64-release  elinux-arm64-profile  elinux-x64-debug      linux-x64
~/flutter-elinux/flutter/bin/cache/artifacts/engine/elinux-arm64-release$ ls
libflutter_elinux_eglstream.so  libflutter_elinux_wayland.so  libflutter_engine.so
libflutter_elinux_gbm.so        libflutter_elinux_x11.so      linux-x64

It seems that I have compiled the project.

And then I create a flutter project
~/flutter-elinux/bin/flutter-elinux build elinux --target-backend-type=eglstream --target-sysroot=/media/alfred/nfs/ --target-arch=arm64 --target-compiler-triple=aarch64-linux-gnu

/media/alfred/nfs/ is the / of jetson nano

At last,

Failed to cmake build:
Scanning dependencies of target flutter_assemble
[  0%] Built target flutter_assemble
Scanning dependencies of target flutter_wrapper_plugin
[  7%] Building CXX object flutter/CMakeFiles/flutter_wrapper_plugin.dir/ephemeral/cpp_client_wrapper/core_implementations.cc.o
[ 15%] Building CXX object flutter/CMakeFiles/flutter_wrapper_plugin.dir/ephemeral/cpp_client_wrapper/standard_codec.cc.o
[ 23%] Building CXX object flutter/CMakeFiles/flutter_wrapper_plugin.dir/ephemeral/cpp_client_wrapper/plugin_registrar.cc.o
[ 30%] Linking CXX static library libflutter_wrapper_plugin.a
[ 30%] Built target flutter_wrapper_plugin
Scanning dependencies of target flutter_wrapper_app
[ 38%] Building CXX object flutter/CMakeFiles/flutter_wrapper_app.dir/ephemeral/cpp_client_wrapper/core_implementations.cc.o
[ 46%] Building CXX object flutter/CMakeFiles/flutter_wrapper_app.dir/ephemeral/cpp_client_wrapper/standard_codec.cc.o
[ 53%] Building CXX object flutter/CMakeFiles/flutter_wrapper_app.dir/ephemeral/cpp_client_wrapper/flutter_engine.cc.o
[ 61%] Building CXX object flutter/CMakeFiles/flutter_wrapper_app.dir/ephemeral/cpp_client_wrapper/flutter_view_controller.cc.o
[ 69%] Linking CXX static library libflutter_wrapper_app.a
[ 69%] Built target flutter_wrapper_app
Scanning dependencies of target sample
[ 76%] Building CXX object runner/CMakeFiles/sample.dir/flutter_window.cc.o
[ 84%] Building CXX object runner/CMakeFiles/sample.dir/main.cc.o
[ 92%] Building CXX object runner/CMakeFiles/sample.dir/__/flutter/generated_plugin_registrant.cc.o
[100%] Linking CXX executable sample
runner/CMakeFiles/sample.dir/build.make:116: recipe for target 'runner/sample' failed
CMakeFiles/Makefile2:199: recipe for target 'runner/CMakeFiles/sample.dir/all' failed
Makefile:129: recipe for target 'all' failed

/usr/bin/aarch64-linux-gnu-ld: 找不到 -lgcc_s
clang: error: linker command failed with exit code 1 (use -v to see invocation)
make[2]: *** [runner/sample] Error 1
make[1]: *** [runner/CMakeFiles/sample.dir/all] Error 2
make: *** [all] Error 2

But I can find the libgcc_s.so in the toolchain

/usr/bin/aarch64-linux-gnu-ld --verbose | grep SEARCH_DIR
SEARCH_DIR("=/usr/local/lib/aarch64-linux-gnu"); SEARCH_DIR("=/lib/aarch64-linux-gnu"); SEARCH_DIR("=/usr/lib/aarch64-linux-gnu"); SEARCH_DIR("=/usr/local/lib"); SEARCH_DIR("=/lib"); SEARCH_DIR("=/usr/lib"); SEARCH_DIR("=/usr/aarch64-linux-gnu/lib");
ll /usr/aarch64-linux-gnu/lib/libgcc_s.so*
lrwxrwxrwx 1 root root    13 6月  21 10:55 /usr/aarch64-linux-gnu/lib/libgcc_s.so -> libgcc_s.so.1
-rw-r--r-- 1 root root 80168 3月  11  2020 /usr/aarch64-linux-gnu/lib/libgcc_s.so.1

cmake is 3.15 aarch64-linux-gnu is 7.5.

I compile it on the jetson nano and I run a created project

flutter-elinux build elinux --profile --target-backend-type=eglstream
sudo FLUTTER_DRM_DEVICE=drm-nvdc ./sample --bundle=~/sample/build/elinux/arm64/profile/bundle
[ERROR][NativeWindowDrm(22)] Couldn't open drm-nvdc
[ERROR][CreateRenderSurface(118)] Failed to create the native window
Failed to create view controller.

I don't know the FLUTTER_DRM_DEVICE of jetson.
I see the jetson sample #define DRM_DEVICE_NAME "drm-nvdc"
I am using jetpack 4.6

@HidenoriMatsubayashi
Copy link
Collaborator

I see the jetson sample #define DRM_DEVICE_NAME "drm-nvdc"

I don't think so as "/dev/dri/card0" is common, but I don't remember it.

@fayfive
Copy link
Author

fayfive commented Jun 22, 2022

I see the jetson sample #define DRM_DEVICE_NAME "drm-nvdc"

I don't think so as "/dev/dri/card0" is common, but I don't remember it.

Maybe you use jetpack 4.3. But now I am using jetpack4.6.

~$ ls /dev/dri/card0
ls: cannot access '/dev/dri/card0': No such file or directory

How can I fix it? Maybe it can't use udev for drm.

Here is the link that jetson doesn't have the "/dev/dri/card0".
https://forums.developer.nvidia.com/t/why-doesnt-jetson-have-the-directory-of-dev-dri-drm/218578
How dose flutter-elinux use the drm?

@fayfive
Copy link
Author

fayfive commented Jul 5, 2022

@HidenoriMatsubayashi
I see your video of youtube. I see your demo is nano. Can you tell me which jetpack you used?

@fayfive
Copy link
Author

fayfive commented Aug 30, 2022

@HidenoriMatsubayashi
I have a test on jetson nano jp4.3. But I can't find the /dev/dri/card0 too.
How can you do it on jetson nano?

@HidenoriMatsubayashi
Copy link
Collaborator

I'll close the issue. See #121

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
question Further information is requested
Projects
None yet
Development

No branches or pull requests

2 participants