Site : https://eewiki.net

Voir aussi :

Mettre les dip switch SW 1 et 2 à OFF, le JP9 OUVERT et le JP5 CLOSE.

ARM Cross Compiler: GCC

wget -c https://releases.linaro.org/14.09/components/toolchain/binaries/gcc-linaro-arm-none-eabi-4.9-2014.09_linux.tar.xz
tar xf gcc-linaro-arm-none-eabi-4.9-2014.09_linux.tar.xz
export CC=`pwd`/gcc-linaro-arm-none-eabi-4.9-2014.09_linux/bin/arm-none-eabi-

${CC}gcc --version
arm-none-eabi-gcc (crosstool-NG linaro-1.13.1-4.9-2014.09 - Linaro GCC 4.9-2014.09) 4.9.2 20140904 (prerelease)
Copyright (C) 2014 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

Bootloader: AT91Bootstrap

git clone https://github.com/linux4sam/at91bootstrap
cd at91bootstrap/
git checkout 6579cdb -b tmp

make ARCH=arm CROSS_COMPILE=${CC} distclean
make ARCH=arm CROSS_COMPILE=${CC} at91sam9x5eksd_uboot_defconfig
make ARCH=arm CROSS_COMPILE=${CC}
cd ..

Bootloader: U-Boot

git clone git://git.denx.de/u-boot.git
cd u-boot/
git checkout v2016.01-rc1 -b tmp

wget -c https://rcn-ee.com/repos/git/u-boot-patches/v2016.01-rc1/0001-at91sam9x5ek-uEnv.txt-bootz-n-fixes.patch
patch -p1 < 0001-at91sam9x5ek-uEnv.txt-bootz-n-fixes.patch

make ARCH=arm CROSS_COMPILE=${CC} distclean
make ARCH=arm CROSS_COMPILE=${CC} at91sam9x5ek_mmc_defconfig
make ARCH=arm CROSS_COMPILE=${CC}
cd ..

Linux Kernel

git clone https://github.com/RobertCNelson/armv5_devel
cd armv5_devel/

For v4.1.x (Longterm) :

git checkout origin/v4.1.x -b tmp
sudo apt-get install device-tree-compiler lzma lzop libncurses5-dev
./build_kernel.sh

Root File System (Debian 8)

User Password
debian temppwd
root root
wget -c https://rcn-ee.com/rootfs/eewiki/minfs/debian-8.2-minimal-armel-2015-09-07.tar.xz
tar xf debian-8.2-minimal-armel-2015-09-07.tar.xz

Setup microSD card

export DISK=/dev/sdl1
sudo sfdisk --unit M ${DISK} <<-__EOF__
1,48,0xE,*
,,,-
__EOF__

sudo mkfs.vfat -F 16 ${DISK}1 -n BOOT
sudo mkfs.ext4 ${DISK}2 -L rootfs
sudo cp -v ./at91bootstrap/binaries/at91sam9x5ek-sdcardboot-uboot-3.7.2-rc2.bin /media/boot/BOOT.BIN
sudo cp -v ./u-boot/u-boot.bin /media/boot/

vim /uEnv.txt
#ariag25 board
#fdtfile=/dtbs/at91-ariag25.dtb

#SAM9G15-EK
#fdtfile=/dtbs/at91sam9g15ek.dtb

#SAM9G25-EK
#fdtfile=/dtbs/at91sam9g25ek.dtb

#SAM9G35-EK
#fdtfile=/dtbs/at91sam9g35ek.dtb

#SAM9X25-EK
#fdtfile=/dtbs/at91sam9x25ek.dtb

#SAM9X35-EK
fdtfile=/dtbs/at91sam9x35ek.dtb

#Default u-boot settings:
#console=ttyS0,115200
#optargs=console=tty0

#mmcroot=/dev/mmcblk0p2 ro
#mmcrootfstype=ext4 rootwait fixrtc

#Run custom u-boot commands early:
#uenvcmd=

sudo cp -v ./uEnv.txt /media/boot/

export kernel_version=4.1.13-armv5-r3

sudo tar xfvp ./debian-*-*-armel-*/armel-rootfs-*.tar -C /media/rootfs/
sudo cp -v ./armv5_devel/deploy/${kernel_version}.zImage /media/boot/zImage

sudo mkdir -p /media/boot/dtbs/
sudo tar xfvo ./armv5_devel/deploy/${kernel_version}-dtbs.tar.gz -C /media/boot/dtbs/

sudo tar xfv ./armv5_devel/deploy/${kernel_version}-modules.tar.gz -C /media/rootfs/

sudo sh -c "echo '/dev/mmcblk0p2  /  auto  errors=remount-ro  0  1' >> /media/rootfs/etc/fstab"
sudo sh -c "echo '/dev/mmcblk0p1  /boot/uboot  auto  defaults  0  2' >> /media/rootfs/etc/fstab"

sudo vim /media/rootfs/etc/network/interfaces
auto lo
iface lo inet loopback

auto eth0
iface eth0 inet dhcp

Test

Mettre la SDCard en J6.

Debian GNU/Linux 8 arm ttyS0

arm login: debian
Password: temppwd
Linux arm 4.1.13-armv5-r3 #1 Sat Dec 12 11:28:34 CET 2015 armv5tejl

$ df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/root        29G  461M   27G   2% /
devtmpfs         60M     0   60M   0% /dev
tmpfs            60M     0   60M   0% /dev/shm
tmpfs            60M   13M   48M  21% /run
tmpfs           5.0M     0  5.0M   0% /run/lock
tmpfs            60M     0   60M   0% /sys/fs/cgroup
/dev/mmcblk0p1   48M  5.8M   43M  12% /boot/uboot

$ free -m
             total       used       free     shared    buffers     cached
Mem:           119         62         56         12          3         38
-/+ buffers/cache:         19         99
Swap:            0          0          0

$ cat /proc/cpuinfo 
processor   : 0
model name  : ARM926EJ-S rev 5 (v5l)
BogoMIPS    : 199.06
Features    : swp half thumb fastmult edsp java 
CPU implementer : 0x41
CPU architecture: 5TEJ
CPU variant : 0x0
CPU part    : 0x926
CPU revision    : 5

Hardware    : Atmel AT91SAM9

$ ifconfig
eth0      Link encap:Ethernet  HWaddr ae:f9:e2:fe:a3:1f  
          inet addr:192.168.52.12  Bcast:192.168.52.255  Mask:255.255.255.0
          inet6 addr: fe80::acf9:e2ff:fefe:a31f/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:143 errors:0 dropped:0 overruns:0 frame:0
          TX packets:67 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:15891 (15.5 KiB)  TX bytes:8955 (8.7 KiB)
          Interrupt:36 Base address:0xc000 

lo        Link encap:Local Loopback  
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:65536  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)

$ netstat -at 
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address           Foreign Address         State      
tcp        0      0 *:ssh                   *:*                     LISTEN     
tcp6       0      0 [::]:http               [::]:*                  LISTEN     
tcp6       0      0 [::]:ssh                [::]:*                  LISTEN
$ sudo apt-get update
# ssh-keygen -A
ssh-keygen: generating new host keys: RSA1 DSA ECDSA ED25519 
# /etc/init.d/ssh restart
$ ssh debian@192.168.52.13

TODO : XWindow (cf. CONFIG_TOUCHSCREEN_ADS7846=y)

Linux4Sam

Site : www.at91.com/linux4sam/

Voir aussi : www.at91.com/linux4sam/

git clone git://github.com/linux4sam/linux-at91.git

cd linux-at91

git checkout origin/linux-2.6.39-at91 -b linux-2.6.39-at91

export CROSS_COMPILE=`pwd`/../gcc-linaro-arm-none-eabi-4.9-2014.09_linux/bin/arm-none-eabi-

make ARCH=arm at91sam9x5ek_defconfig

make ARCH=arm menuconfig

make ARCH=arm

make ARCH=arm dtbs

Yocto/Poky rootfs

Site : www.at91.com/linux4sam/

mkdir yocto-pocky

cd yocto-pocky

git clone git://git.yoctoproject.org/poky -b jethro

git clone git://git.openembedded.org/meta-openembedded -b jethro

git clone git://github.com/meta-qt5/meta-qt5.git -b jethro

git clone git://github.com/linux4sam/meta-atmel.git -b jethro

cd poky

source oe-init-build-env build-atmel-1

vim conf/bblayers.conf
LCONF_VERSION = "6"

BBPATH = "${TOPDIR}"
BBFILES ?= ""

BSPDIR := "${@os.path.abspath(os.path.dirname(d.getVar('FILE', True)) + '/../../..')}"

BBLAYERS ?= " \
  ${BSPDIR}/meta-atmel \
  ${BSPDIR}/meta-qt5 \
  ${BSPDIR}/poky/meta \
  ${BSPDIR}/poky/meta-yocto \
  ${BSPDIR}/poky/meta-yocto-bsp \
  ${BSPDIR}/meta-openembedded/meta-oe \
  ${BSPDIR}/meta-openembedded/meta-networking \
  ${BSPDIR}/meta-openembedded/meta-python \
  ${BSPDIR}/meta-openembedded/meta-multimedia \
  "

BBLAYERS_NON_REMOVABLE ?= " \
  ${BSPDIR}/poky/meta \
  ${BSPDIR}/poky/meta-yocto \
  "
vim conf/local.conf
[...]
MACHINE ??= "at91sam9x5ek"
[...]
DL_DIR ?= "${TOPDIR}/downloads"
[...]
PACKAGE_CLASSES ?= "package_ipk"
[...]
USER_CLASSES ?= "buildstats image-mklibs"
[...]
DISTRO = "poky-atmel"
EXTRA_IMAGE_FEATURES = "debug-tweaks"
EXTRA_IMAGE_FEATURES = "tools-sdk tools-debug debug-tweaks"
sudo apt-get install diffstat gawk chrpath texinfo texi2html libsdl1.2-dev

Remarque : Il y a quatre noyaux linux dans le recipes-kernel : linux-at91-3.6.9, linux-at91-3.10, linux-at91-3.18 et linux-at91-4.1. Le linux-at91-3.6.9 ne fonctionne pas pour un problème de machine non reconnue (at91sam9x35ek). On conserve seulement le linux-at91-4.1.

mv ../../meta-atmel/recipes-kernel/linux/linux-at91_3.6.9.bb ../../meta-atmel/recipes-kernel/linux/.linux-at91_3.6.9.bb
mv ../../meta-atmel/recipes-kernel/linux/linux-at91_3.10.bb ../../meta-atmel/recipes-kernel/linux/.linux-at91_3.10.bb
mv ../../meta-atmel/recipes-kernel/linux/linux-at91_3.18.bb ../../meta-atmel/recipes-kernel/linux/.linux-at91_3.18.bb

On démarre la fabrication de la distribution :

bitbake core-image-minimal

Flashage :

$ ../../meta-atmel/scripts/flasher.sh core-image-minimal /dev/ttyACM0 at91sam9x35ek

Faire un reset.

...
Poky (Yocto Project Reference Distro) 2.0 at91sam9x5ek /dev/ttyS0

at91sam9x5ek login: root
root@at91sam9x5ek:~# uname -a
Linux at91sam9x5ek 4.1.0-linux4sam_5.0-00008-gdffd70a-dirty #1 Tue Dec 15 06:26:03 CET 2015 armv5tejl GNU/Linux

# cat /proc/cpuinfo 
processor   : 0
model name  : ARM926EJ-S rev 5 (v5l)
BogoMIPS    : 198.76
Features    : swp half thumb fastmult edsp java 
CPU implementer : 0x41
CPU architecture: 5TEJ
CPU variant : 0x0
CPU part    : 0x926
CPU revision    : 5

Hardware    : Atmel AT91SAM9

# free -m
             total         used         free       shared      buffers
Mem:        122260        10552       111708          164            0
-/+ buffers:              10552       111708
Swap:            0            0            0

# df -h
Filesystem                Size      Used Available Use% Mounted on
ubi0:rootfs             215.4M      3.0M    212.4M   1% /
devtmpfs                 51.6M         0     51.6M   0% /dev
tmpfs                    59.7M    116.0K     59.6M   0% /run
tmpfs                    59.7M     48.0K     59.6M   0% /var/volatile

# ifconfig 
eth0      Link encap:Ethernet  HWaddr 2E:96:D1:1B:3B:3A  
          inet addr:192.168.52.28  Bcast:192.168.52.255  Mask:255.255.255.0
          inet6 addr: fe80::2c96:d1ff:fe1b:3b3a/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:839 errors:0 dropped:140 overruns:0 frame:0
          TX packets:108 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:51827 (50.6 KiB)  TX bytes:9948 (9.7 KiB)
          Interrupt:37 Base address:0xc000 

lo        Link encap:Local Loopback  
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:65536  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)

Version Qt :

vim conf/local.conf
LICENSE_FLAGS_WHITELIST += "commercial"
SYSVINIT_ENABLED_GETTYS = ""
bitbake atmel-qt5-demo-image

Flashage :

$ ../../meta-atmel/scripts/flasher.sh atmel-qt5-demo-image /dev/ttyACM0 at91sam9x35ek

Faire un reset.

Compilation croisée

bitbake core-image-minimal -c populate_sdk

Ou :

bitbake meta-toolchain
. /opt/poky-atmel/2.0/environment-setup-armv5e-poky-linux-gnueabi

vim Makefile
hello-world : hello-world.o
    $(CXX) $(LDFLAGS) $< -o $@ 

clean:
    @rm -f hello-world hello-world.o

make

Copier avec scp et tester.

Angstrom

Site : www.at91.com/linux4sam/

TODO

Android4Sam

Site : www.at91.com/android4sam/

TODO

Retour au sommaire