The Mer Wiki now uses your Mer user account and password (create account on https://bugs.merproject.org/)
Community Workspace/Tegra3
(typofix) |
m (wording change) |
||
(3 intermediate revisions by one user not shown) | |||
Line 3: | Line 3: | ||
DISCLAIMER: This project is not endorsed or supported by any company. This is purely a community based effort. | DISCLAIMER: This project is not endorsed or supported by any company. This is purely a community based effort. | ||
− | This page describes the Tegra3 common parts. For the device specific notes, check the Tegra3 section in [[Community_Workspace]] | + | This page describes the Tegra3 common parts. For the device specific notes, check the Tegra3 section in [[Community_Workspace]]. |
The hardware adaptation is maintained in the project [https://build.merproject.org/project/show?project=nemo%3Adevel%3Ahw%3Anv%3Ategra3%3Acommon nemo:devel:hw:nv:tegra3:common] | The hardware adaptation is maintained in the project [https://build.merproject.org/project/show?project=nemo%3Adevel%3Ahw%3Anv%3Ategra3%3Acommon nemo:devel:hw:nv:tegra3:common] | ||
Line 19: | Line 19: | ||
* ? | * ? | ||
+ | |||
+ | == Target Platform Development Using SB2 == | ||
+ | |||
+ | (Adapted from [[Community_Workspace/RaspberryPi]]) | ||
+ | |||
+ | Cross-compiling on the host SDK (as opposed to compiling natively on device) is possible by creating a ''target'' (an unpacked rootfs) and using sb2 to "emulate" the ARM device. | ||
+ | |||
+ | Install proper SB2 related tools: | ||
+ | sudo zypper in -t pattern Mer-SB2-armv7hl | ||
+ | |||
+ | === Step-by-step Setup === | ||
+ | |||
+ | Step one is to create the target rootfs. This can be done with '''mic''' using the same ''kickstart'' file used to create the image: | ||
+ | |||
+ | sudo mic create fs tegra3-image.ks -o /path/to/target --arch=armv7hl | ||
+ | |||
+ | This will create a ''/path/to/target/tegra3-image'' directory with a rootfs that contains all the default packages from that ks. | ||
+ | |||
+ | Step two is changing the permissions so we can write anywhere on the rootfs: | ||
+ | |||
+ | sudo chown -R $USER.mer tegra3-image | ||
+ | |||
+ | Step three is initializing the sb2 target (yes, a lot of options there): | ||
+ | |||
+ | cd tegra3-image | ||
+ | sb2-init -A armv7hl -M armv7hl -d -L --sysroot=/ -C --sysroot=/ -c /usr/bin/qemu-arm-dynamic -m sdk-build -n -N -t / tegra3 /opt/cross/bin/armv7hl-meego-linux-gnueabi-gcc | ||
+ | |||
+ | There will be errors from sb2-init (concerning ld and host-gcc), but it should be safe to ignore them. | ||
+ | |||
+ | Step four is to fix a quirk about /var/run in the target being a symlink, sb2 doesn't like this: | ||
+ | |||
+ | rm var/run | ||
+ | mkdir var/run | ||
+ | |||
+ | And another quirk: | ||
+ | |||
+ | echo -n 'armv7hl-meego-linux' > etc/rpm/platform | ||
+ | echo 'arch = armv7hl' >> etc/zypp/zypp.conf | ||
+ | |||
+ | Step five is to rebuild and refresh the packaging system so we can install devel packages: | ||
+ | |||
+ | sb2 -t tegra3 -m sdk-install -R rpm --rebuilddb | ||
+ | sb2 -t tegra3 -m sdk-install -R zypper ref | ||
+ | |||
+ | === Building with SB2 === | ||
+ | |||
+ | Install some build tools and dependencies inside the new SB2 target: | ||
+ | |||
+ | sb2 -m sdk-install -R zypper install gcc make gst-plugins-base-devel gstreamer-devel qt-qmake libqt-devel libqtopengl-devel graphics-adaptation-tegra3-devel graphics-adaptation-tegra3-libEGL-devel graphics-adaptation-tegra3-libGLESv1-devel graphics-adaptation-tegra3-libGLESv2-devel graphics-adaptation-tegra3-libOMX-devel | ||
+ | |||
+ | NOTE: sometimes it's necessary to be on the top directory of the target to successfully run commands in the sdk-install mode. If a command fails mysteriously, try that first. | ||
+ | |||
+ | Build the project: | ||
+ | |||
+ | cd project | ||
+ | sb2 -t tegra3 qmake -recursive | ||
+ | sb2 -t tegra3 make |
Latest revision as of 14:06, 5 February 2013
Contents |
[edit] Mer on Tegra3
DISCLAIMER: This project is not endorsed or supported by any company. This is purely a community based effort.
This page describes the Tegra3 common parts. For the device specific notes, check the Tegra3 section in Community_Workspace.
The hardware adaptation is maintained in the project nemo:devel:hw:nv:tegra3:common
[edit] Working
- X.Org with HW accelerated 2D
- OpenGL ES 1 & 2 (including X.Org support)
- Gstreamer with HW accelerated video and audio encode/decode/render
- At least H.264/MPEG4 and AAC are supported
- For XV sink one must use nvxvimagesink when using a HW decoder.
- Using nvxvimagesink instead of the de-facto xvimagesink needs patched Qt
[edit] Not working
- ?
[edit] Target Platform Development Using SB2
(Adapted from Community_Workspace/RaspberryPi)
Cross-compiling on the host SDK (as opposed to compiling natively on device) is possible by creating a target (an unpacked rootfs) and using sb2 to "emulate" the ARM device.
Install proper SB2 related tools:
sudo zypper in -t pattern Mer-SB2-armv7hl
[edit] Step-by-step Setup
Step one is to create the target rootfs. This can be done with mic using the same kickstart file used to create the image:
sudo mic create fs tegra3-image.ks -o /path/to/target --arch=armv7hl
This will create a /path/to/target/tegra3-image directory with a rootfs that contains all the default packages from that ks.
Step two is changing the permissions so we can write anywhere on the rootfs:
sudo chown -R $USER.mer tegra3-image
Step three is initializing the sb2 target (yes, a lot of options there):
cd tegra3-image sb2-init -A armv7hl -M armv7hl -d -L --sysroot=/ -C --sysroot=/ -c /usr/bin/qemu-arm-dynamic -m sdk-build -n -N -t / tegra3 /opt/cross/bin/armv7hl-meego-linux-gnueabi-gcc
There will be errors from sb2-init (concerning ld and host-gcc), but it should be safe to ignore them.
Step four is to fix a quirk about /var/run in the target being a symlink, sb2 doesn't like this:
rm var/run mkdir var/run
And another quirk:
echo -n 'armv7hl-meego-linux' > etc/rpm/platform echo 'arch = armv7hl' >> etc/zypp/zypp.conf
Step five is to rebuild and refresh the packaging system so we can install devel packages:
sb2 -t tegra3 -m sdk-install -R rpm --rebuilddb sb2 -t tegra3 -m sdk-install -R zypper ref
[edit] Building with SB2
Install some build tools and dependencies inside the new SB2 target:
sb2 -m sdk-install -R zypper install gcc make gst-plugins-base-devel gstreamer-devel qt-qmake libqt-devel libqtopengl-devel graphics-adaptation-tegra3-devel graphics-adaptation-tegra3-libEGL-devel graphics-adaptation-tegra3-libGLESv1-devel graphics-adaptation-tegra3-libGLESv2-devel graphics-adaptation-tegra3-libOMX-devel
NOTE: sometimes it's necessary to be on the top directory of the target to successfully run commands in the sdk-install mode. If a command fails mysteriously, try that first.
Build the project:
cd project sb2 -t tegra3 qmake -recursive sb2 -t tegra3 make