Cours:De0NanoSoc : Différence entre versions
(→compilateur arm 8) |
(→compiler Qt) |
||
| Ligne 105 : | Ligne 105 : | ||
==compiler Qt== | ==compiler Qt== | ||
| + | |||
| + | |||
| + | ===get qtSource=== | ||
| + | <source lang=bash> | ||
| + | rep="monDossier" | ||
| + | cd $rep | ||
| + | mkdir qt5Source | ||
| + | cd qt5Source | ||
| + | git clone https://code.qt.io/qt/qt5.git -b 5.15 | ||
| + | cd qt5 | ||
| + | ./init-repository --module-subset=essential,qtserialport | ||
| + | git submodule foreach --recursive "git clean -dfx" | ||
| + | </source> | ||
| + | |||
| + | ===créer le fichier "devices"=== | ||
| + | |||
| + | <source lang=bash> | ||
| + | mkdir linux-cyclonev-g++ | ||
| + | cd linux-cyclonev-g++ | ||
| + | nano qmake.conf | ||
| + | //contenu | ||
| + | |||
| + | #include(../common/linux_device_pre.conf) | ||
| + | |||
| + | #DISTRO_OPTS += arm | ||
| + | #COMPILER_FLAGS += -march=armv7-a+fp -mfloat-abi=hard | ||
| + | |||
| + | #DISTRO_OPTS += hard-float | ||
| + | |||
| + | #CONFIG += incremental cross_compile qpa | ||
| + | #QT_QPA_DEFAULT_PLATFORM = linuxfb | ||
| + | |||
| + | |||
| + | #include(../common/linux_arm_device_post.conf) | ||
| + | |||
| + | |||
| + | #------------------------------------------------- | ||
| + | # Qt mkspec for DE0-Nano-SoC (Cyclone V, ARMv7-A, hard-float) | ||
| + | # Cross-compilation using Linaro or Intel SoC EDS toolchain | ||
| + | #------------------------------------------------- | ||
| + | |||
| + | MAKEFILE_GENERATOR = UNIX | ||
| + | CONFIG += incremental global_init_link_order | ||
| + | CONFIG += cross_compile qpa | ||
| + | |||
| + | # QPA platforms | ||
| + | QMAKE_QPA_PLATFORM = linuxfb eglfs | ||
| + | |||
| + | #------------------------------------------------- | ||
| + | # Toolchain | ||
| + | #------------------------------------------------- | ||
| + | QMAKE_CC = $$CROSS_COMPILEgcc-12 | ||
| + | QMAKE_CXX = $$CROSS_COMPILEg++-12 | ||
| + | QMAKE_LINK = $$CROSS_COMPILEg++-12 | ||
| + | QMAKE_LINK_SHLIB= $$CROSS_COMPILEg++-12 | ||
| + | QMAKE_AR = $$CROSS_COMPILEar cqs | ||
| + | QMAKE_OBJCOPY = $$CROSS_COMPILEobjcopy | ||
| + | QMAKE_STRIP = $$CROSS_COMPILEstrip | ||
| + | |||
| + | #------------------------------------------------- | ||
| + | # CPU architecture flags (Cyclone V = ARMv7-A + NEON) | ||
| + | #------------------------------------------------- | ||
| + | QMAKE_CFLAGS += -march=armv7-a -mfloat-abi=hard -mfpu=neon | ||
| + | QMAKE_CXXFLAGS += -march=armv7-a -mfloat-abi=hard -mfpu=neon | ||
| + | |||
| + | #------------------------------------------------- | ||
| + | # Sysroot | ||
| + | #------------------------------------------------- | ||
| + | |||
| + | QMAKE_INCDIR += \ | ||
| + | $$[QT_SYSROOT]/usr/include \ | ||
| + | $$[QT_SYSROOT]/usr/include/arm-linux-gnueabihf \ | ||
| + | $$[QT_SYSROOT]/usr/arm-linux-gnueabi/include | ||
| + | |||
| + | QMAKE_LIBDIR += \ | ||
| + | $$[QT_SYSROOT]/lib \ | ||
| + | $$[QT_SYSROOT]/lib/arm-linux-gnueabihf \ | ||
| + | $$[QT_SYSROOT]/usr/lib \ | ||
| + | $$[QT_SYSROOT]/usr/lib/arm-linux-gnueabihf | ||
| + | |||
| + | |||
| + | QMAKE_LIBS += -ldl | ||
| + | QMAKE_LIBS_PRIVATE += -ldl | ||
| + | |||
| + | # Avoid RPATH for embedded targets | ||
| + | QMAKE_LFLAGS_RPATH = | ||
| + | |||
| + | # Default QPA platform | ||
| + | QT_QPA_DEFAULT_PLATFORM = linuxfb | ||
| + | |||
| + | # EGLFS backend (requires SGX drivers) | ||
| + | EGLFS_DEVICE_INTEGRATION = eglfs | ||
| + | |||
| + | #------------------------------------------------- | ||
| + | # Common includes for embedded Linux | ||
| + | #------------------------------------------------- | ||
| + | DISTRO_OPTS += hard-float | ||
| + | |||
| + | QT_CPU_FEATURES.arm = neon | ||
| + | |||
| + | load(device_config) | ||
| + | include(../common/linux_device_pre.conf) | ||
| + | include(../common/linux_arm_device_post.conf) | ||
| + | load(qt_config) | ||
| + | |||
| + | |||
| + | nano qplatformdefs.h | ||
| + | |||
| + | //contenu | ||
| + | /dev/mmcblk0p2 / auto errors=remount-ro 0 1 | ||
| + | |||
| + | </source> | ||
={{Rouge|Projet Quartus}}= | ={{Rouge|Projet Quartus}}= | ||
Version du 15 décembre 2025 à 22:38
Sommaire
installation Linux
- créer la carte SD avec l'image :
https://www.terasic.com.tw/cgi-bin/page/archive.pl?Language=English&CategoryNo=167&No=941&PartNo=4
- modifier la partition racine
- installer debian 10
https://rcn-ee.com/rootfs/eewiki/minfs/
- installer debian 8
https://rocketboards.org/foswiki/pub/Projects/Debian/debian.img.gz
- ajouter la partition racine dans le fichier fstab
/dev/mmcblk0p2 / auto errors=remount-ro 0 1
- démarrer la de0 nano soc
- configurer le reseau
- bug :
ln -s /lib/systemd/system/getty@.service /etc/systemd/system/getty.target.wants/getty@ttyS0.service
modifier sur la Debian
apt sources list
modifier le fichier /etc/apt/sources.list avec :
deb http://archive.debian.org/debian buster main contrib non-free
#deb-src http://archive.debian.org/debian buster main contrib non-free
deb http://archive.debian.org/debian-security buster/updates main contrib non-free
#deb-src http://security.debian.org/debian-security buster/updates main contrib non-free
deb http://archive.debian.org/debian buster-updates main contrib non-free
#deb-src http://archive.debian.org/debian buster-updates main contrib non-free
#Kernel source (repos.rcn-ee.com) : https://github.com/RobertCNelson/linux-stable-rcn-ee
#
#git clone https://github.com/RobertCNelson/linux-stable-rcn-ee
#cd ./linux-stable-rcn-ee
#git checkout `uname -r` -b tmp
deb [arch=armhf signed-by=/usr/share/keyrings/rcn-ee-archive-keyring.gpg] http://repos.rcn-ee.com/debian/ buster main
#deb-src [arch=armhf signed-by=/usr/share/keyrings/rcn-ee-archive-keyring.gpg] http://repos.rcn-ee.com/debian/ buster main
installer
- dpkg-reconfigure locales
- apt install build-essential
- apt install zlib1g-dev libicu-dev libdouble-conversion-dev libpcre2-dev libzstd-dev libglib2.0-0 libglib2.0-dev libpng-dev libharfbuzz-dev
- apt install libssl-dev libkrb5-dev libudev-dev libfontconfig-dev libxkbcommon-dev
- libmd4c
wget http://ftp.fr.debian.org/debian/pool/main/m/md4c/libmd4c0_0.4.8-1_armhf.deb wget http://ftp.fr.debian.org/debian/pool/main/m/md4c/libmd4c-dev_0.4.8-1_armhf.deb dpkg -i *.deb
chroot
mount -t proc /proc /apps/de0NanoSoc/chroot/proc/
mount --rbind /sys /apps/de0NanoSoc/chroot/sys/
mount --rbind /dev /apps/de0NanoSoc/chroot/dev/
chroot /apps/de0NanoSoc/chroot/
umount /apps/de0NanoSoc/chroot/dev/
umount /apps/de0NanoSoc/chroot/sys/
umount /apps/de0NanoSoc/chroot/proc/
cross compilation
sysroot
rep="monDossier"
cd $rep
rsync -av chroot/lib sysroot/
rsync -av chroot/usr/include sysroot/usr/
rsync -av chroot/usr/lib sysroot/usr/
rsync -av chroot/usr/arm-linux-gnueabi rsync -av sysroot/usr/
apt install symlinks
symlinks -rc sysroot
cd sysroot/usr/include/
ln -s ../arm-linux-gnueabi/include/gnu ./
compilateur arm 8
- ajouter au fichier /etc/apt/sources.list
http://archive.ubuntu.com/ubuntu focal main universe http://archive.ubuntu.com/ubuntu focal main universe
mkdir -p /apps/gcc/arm-8/
cp /apps/gcc/arm-8/
ln -s /usr/bin/arm-linux-gnueabihf-cpp-8 arm-linux-gnueabihf-cpp
ln -s /usr/bin/arm-linux-gnueabihf-g++-8 arm-linux-gnueabihf-g++
ln -s /usr/bin/arm-linux-gnueabihf-gcc-8 arm-linux-gnueabihf-gcc
ln -s /usr/bin/arm-linux-gnueabihf-gcc-ar-8 arm-linux-gnueabihf-ar
ln -s /usr/bin/arm-linux-gnueabihf-gcc-nm-8 arm-linux-gnueabihf-nm
ln -s /usr/bin/arm-linux-gnueabihf-gcc-ranlib-8 arm-linux-gnueabihf-ranlib
ln -s /usr/bin/arm-linux-gnueabihf-gcov-8 arm-linux-gnueabihf-gcov
ln -s /usr/bin/arm-linux-gnueabihf-gcov-dump-8 arm-linux-gnueabihf-gcov-dump
ln -s /usr/bin/arm-linux-gnueabihf-gcov-tool-8 arm-linux-gnueabihf-gcov-tool
ln -s /usr/bin/arm-linux-gnueabihf-lto-dump-8 arm-linux-gnueabihf-dump
PATH=/apps/gcc/arm-12:$PATH
compiler Qt
get qtSource
rep="monDossier"
cd $rep
mkdir qt5Source
cd qt5Source
git clone https://code.qt.io/qt/qt5.git -b 5.15
cd qt5
./init-repository --module-subset=essential,qtserialport
git submodule foreach --recursive "git clean -dfx"
créer le fichier "devices"
mkdir linux-cyclonev-g++
cd linux-cyclonev-g++
nano qmake.conf
//contenu
#include(../common/linux_device_pre.conf)
#DISTRO_OPTS += arm
#COMPILER_FLAGS += -march=armv7-a+fp -mfloat-abi=hard
#DISTRO_OPTS += hard-float
#CONFIG += incremental cross_compile qpa
#QT_QPA_DEFAULT_PLATFORM = linuxfb
#include(../common/linux_arm_device_post.conf)
#-------------------------------------------------
# Qt mkspec for DE0-Nano-SoC (Cyclone V, ARMv7-A, hard-float)
# Cross-compilation using Linaro or Intel SoC EDS toolchain
#-------------------------------------------------
MAKEFILE_GENERATOR = UNIX
CONFIG += incremental global_init_link_order
CONFIG += cross_compile qpa
# QPA platforms
QMAKE_QPA_PLATFORM = linuxfb eglfs
#-------------------------------------------------
# Toolchain
#-------------------------------------------------
QMAKE_CC = $$CROSS_COMPILEgcc-12
QMAKE_CXX = $$CROSS_COMPILEg++-12
QMAKE_LINK = $$CROSS_COMPILEg++-12
QMAKE_LINK_SHLIB= $$CROSS_COMPILEg++-12
QMAKE_AR = $$CROSS_COMPILEar cqs
QMAKE_OBJCOPY = $$CROSS_COMPILEobjcopy
QMAKE_STRIP = $$CROSS_COMPILEstrip
#-------------------------------------------------
# CPU architecture flags (Cyclone V = ARMv7-A + NEON)
#-------------------------------------------------
QMAKE_CFLAGS += -march=armv7-a -mfloat-abi=hard -mfpu=neon
QMAKE_CXXFLAGS += -march=armv7-a -mfloat-abi=hard -mfpu=neon
#-------------------------------------------------
# Sysroot
#-------------------------------------------------
QMAKE_INCDIR += \
$$[QT_SYSROOT]/usr/include \
$$[QT_SYSROOT]/usr/include/arm-linux-gnueabihf \
$$[QT_SYSROOT]/usr/arm-linux-gnueabi/include
QMAKE_LIBDIR += \
$$[QT_SYSROOT]/lib \
$$[QT_SYSROOT]/lib/arm-linux-gnueabihf \
$$[QT_SYSROOT]/usr/lib \
$$[QT_SYSROOT]/usr/lib/arm-linux-gnueabihf
QMAKE_LIBS += -ldl
QMAKE_LIBS_PRIVATE += -ldl
# Avoid RPATH for embedded targets
QMAKE_LFLAGS_RPATH =
# Default QPA platform
QT_QPA_DEFAULT_PLATFORM = linuxfb
# EGLFS backend (requires SGX drivers)
EGLFS_DEVICE_INTEGRATION = eglfs
#-------------------------------------------------
# Common includes for embedded Linux
#-------------------------------------------------
DISTRO_OPTS += hard-float
QT_CPU_FEATURES.arm = neon
load(device_config)
include(../common/linux_device_pre.conf)
include(../common/linux_arm_device_post.conf)
load(qt_config)
nano qplatformdefs.h
//contenu
/dev/mmcblk0p2 / auto errors=remount-ro 0 1
Projet Quartus
Device :
- Altera Cyclone® V
- SE Mainstream
- 5CSEMA4U23C6 N
positions
| Nom | Led7 | Led6 | Led5 | Led4 | Led3 | Led2 | Led1 | Led0 |
| Broche | AA23 | Y16 | AE26 | AF26 | V15 | V16 | AA24 | W15 |
| Nom | SW3 | SW2 | SW1 | SW0 |
| Broche | H5 | H6 | L9 | L10 |
Ressources
- préparation de la carte SD avec debian
- configuration du noyau
- device/fpga_config_support .... altera
- device/gpio ... altera