Cours:Vhdl : Différence entre versions

De troyesGEII
Aller à : navigation, rechercher
(cross compilation qt)
(cross compilation qt)
Ligne 241 : Ligne 241 :
 
git clone https://code.qt.io/qt/qt5.git -b 5.15
 
git clone https://code.qt.io/qt/qt5.git -b 5.15
 
cd qt5
 
cd qt5
./init-repository --module-subset=essential,qtquickcontrols2,qtserialport
+
./init-repository --module-subset=default,-qtwebengine
 
git submodule foreach --recursive "git clean -dfx"
 
git submodule foreach --recursive "git clean -dfx"
  

Version du 12 décembre 2025 à 19:23

Nios 2

interface pour le bus avalon

hardware

entity customPeriph is
    port (
        clk         : in  std_logic;
        reset_n     : in  std_logic;
        address     : in  std_logic_vector(1 downto 0);
        write       : in  std_logic;
        read        : in  std_logic;
        chipselect  : in  std_logic;
        writedata   : in  std_logic_vector(31 downto 0);
        readdata    : out std_logic_vector(31 downto 0)
    );
end entity customPeriph;

software

IOWR(CUSTOM_0_BASE,regNumber,value);

pio

Media:Nios_pio.pdf


irq avec le nios2

hardware

library ieee;
use ieee.std_logic_1164.all;
use ieee.numeric_std.all;
use ieee.std_logic_unsigned.all;


entity customIRQ is
    port (
        clk         : in  std_logic;
        reset_n     : in  std_logic;
        address     : in  std_logic_vector(1 downto 0);
        write       : in  std_logic;
        read        : in  std_logic;
        chipselect  : in  std_logic;
        writedata   : in  std_logic_vector(31 downto 0);
        irq         : out std_logic;
        readdata    : out std_logic_vector(31 downto 0)
    );
end entity customIRQ;

architecture rtl of customIRQ is

    signal s_irq     : std_logic;
	 
begin

    process(clk, reset_n)
    begin
        if rising_edge(clk) then
            -- prévoir un moyen pour acquitter l'irq
            -- par exemple avec une écriture sur un registre particulier
            if chipselect = '1' and write = '1' then
                s_irq <= '0';
	    elsif "condition pour déclencher une interruption" then
		s_irq <= '1';
            end if;
        end if;
    end process;
    irq <= s_irq;
end architecture rtl;

software

#include "sys/stdio.h"
#include <unistd.h>
#include "io.h"
#include "system.h"
#include "sys/alt_irq.h"
#include "drivers/inc/altera_avalon_pio_regs.h"

volatile int n=0;


static void myISR(void * context,alt_u32 id)
{
  // terminer par l'acquittement de l'interruption
  IOWR(BPS_0_BASE,0,0);
}

int main()
{ 
  // acquitter l'interruption si elle est déjà déclenchée
  IOWR(BPS_0_BASE,0,0);
  alt_ic_isr_register(BPS_0_IRQ_INTERRUPT_CONTROLLER_ID, BPS_0_IRQ ,(void *) myISR,NULL,NULL);

  while (1)
  {
  }
}

PIO

interruptions

static void myISR(void * context,alt_u32 id)
{
        // terminer par l'acquittement de l'interruption
	IOWR_ALTERA_AVALON_PIO_EDGE_CAP(PIO_0_BASE, 0);
	IORD_ALTERA_AVALON_PIO_EDGE_CAP(PIO_0_BASE);
}

int main()
{ 
  // choix des PIO déclenchant l'interruption
  IOWR_ALTERA_AVALON_PIO_IRQ_MASK(PIO_0_BASE, 0xff);
  // initialisation des fronts
  IOWR_ALTERA_AVALON_PIO_EDGE_CAP(PIO_0_BASE, 0);
  alt_ic_isr_register(PIO_0_IRQ_INTERRUPT_CONTROLLER_ID, PIO_0_IRQ ,(void *) myISR,NULL,NULL);
  while (1)
  {
  }
}

Evaluation

de0 nano soc

**********
**********




sudo apt-get update sudo apt-get install -y build-essential git bc bison flex \

 libssl-dev libncurses5-dev libncursesw5-dev \
 lzop u-boot-tools device-tree-compiler


Debian Jessie 8.0 rootfs The steps required to boot Debian are: This project creates a working install of Debian Jessie 8 on Altera SoC First create a working Yocto image Download the attached debian8 image file ( debian8.img.gz) Decompress the image using: $ gzip -d debian8.img.gz

Use DD to copy the image over the second partition of your sd card. If your card is /dev/mmcblk0 then this would be: $ dd if=debian8.img of=/dev/sdb2

Root password is "debian". Ethernet is preconfigured with dhcp. This can be changed through the normal debian method. Access by UART


installation

  • installer avec balena etcher DE0_Nano_SoC_Linux_Console_3.13.zip
  • remplacer la partition root avec une version debian
    • debian 10 ok
    • debian 12 semble ok avec qques erreurs de démarrage à corriger
      • Failed to start e2scrub_reap.servi…line ext4 Metadata Check Snapshots
      • Failed to start systemd-timesyncd.…ice - Network Time Synchronizatio
  • modifier le fichier fstab
sudo sh -c "echo '/dev/mmcblk0p2  /  auto  errors=remount-ro  0  1' >> /media/rootfs/etc/fstab"

creation d'un chroot

chrootRep="choisirUnDossier"
cd $chrootRep
tar -xvf /home/bas/Téléchargements/de0NanoSoc/debian-12.12-minimal-armhf-2025-12-01/armhf-rootfs-debian-bookworm.tar ./
apt install qemu-user-static binfmt-support debootstrap schroot
cp /usr/bin/qemu-arm-static  $rep/usr/bin/
# créer un fichier /etc/schroot/chroot.d/de0.conf
[de0]
description=Chroot ARMHF (Cortex-A9)
directory $chrootRep
type=directory
users=debian
groups=root
root-groups=root
preserve-environment=true
personality=linux


#utiliser le chroot
schroot -c de0 --directory /root
#dans le chroot :
sudo sh -c "echo '/dev/mmcblk0p2  /  auto  errors=remount-ro  0  1' >> /etc/fstab"
ln -s /lib/systemd/system/getty@.service /etc/systemd/system/getty.target.wants/getty@ttyS0.service
dpkg-reconfigure locales


creation de sysroot

rep="monDossier"
cd $rep
rsync -av chroot/lib sysroot/
rsync -av chroot/usr/include sysroot/usr/
rsync -av chroot/usr/lib sysroot/usr/
apt install symlinks
symlinks -rc sysroot

cross compilation qt

rep="monDossier"
cd $rep
git clone https://code.qt.io/qt/qt5.git -b 5.15
cd qt5
./init-repository --module-subset=default,-qtwebengine
git submodule foreach --recursive "git clean -dfx"

# qtwebengine doit être exclu car il ne compile pas pour ARMv7/Cortex-A9 du Cyclone V.
mkdir qtbase/mkspecs/devices/linux-cyclonev-g++
cd qtbase/mkspecs/devices/linux-cyclonev-g++
nano  qmake.conf


include(../common/linux_device_pre.conf)

DISTRO_OPTS                  += arm
COMPILER_FLAGS               += -march=armv7-a -mfpu=neon -mfloat-abi=hard

include(../common/linux_arm_device_post.conf)


nano qplatformdefs.h
#include "../../linux-g++/qplatformdefs.h"


cd $rep/qt5
git submodule foreach --recursive "git clean -dfx"
cp -R ../linux-cyclonev-g++ qtbase/mkspecs/devices/

./configure -release -device linux-cyclonev-g++ -no-eglfs \
-device-option CROSS_COMPILE=arm-linux-gnueabihf- \
-sysroot $rep/sysroot -opensource -confirm-license -make libs \
-prefix /usr/local/qt5pi -extprefix $rep/qt5_de0 -hostprefix $rep/qt5 -v \
-R $rep/sysroot/usr/lib/arm-linux-gnueabihf -no-gbm -no-use-gold-linker -v -no-opengl -release \
  -nomake tests -nomake examples \
  -skip qtwebengine


read -p "verifier la config puis appuyer pour continuer"

make -j65

rm -R $rep/qt5_de0
make install -j65

uboot

setenv ethaddr 00:11:22:33:44:55

saveenv

bug

ln -s /lib/systemd/system/getty@.service /etc/systemd/system/getty.target.wants/getty@ttyS0.service

kernel

make ARCH=arm modules_install INSTALL_MOD_PATH="tmp"

linux

fstab

ajouter dans le fstab le montage de la partition root :

/dev/mmcblk0p2 / ext4 errors=remount-ro,relatime      0 1

pb de fsck ext4 : erreur FEATURE_C12

si version trop vieille de ext tools, insérer la carte sd sur une ditrib linux récente

tune2fs -O ^orphan_file /dev/mydevice
e2fsck -f /dev/mydevice