<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://daq00.triumf.ca/DaqWiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Bvelghe</id>
	<title>DaqWiki - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://daq00.triumf.ca/DaqWiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Bvelghe"/>
	<link rel="alternate" type="text/html" href="https://daq00.triumf.ca/DaqWiki/index.php/Special:Contributions/Bvelghe"/>
	<updated>2026-05-10T17:09:08Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.39.6</generator>
	<entry>
		<id>https://daq00.triumf.ca/DaqWiki/index.php?title=RPI&amp;diff=2768</id>
		<title>RPI</title>
		<link rel="alternate" type="text/html" href="https://daq00.triumf.ca/DaqWiki/index.php?title=RPI&amp;diff=2768"/>
		<updated>2020-04-23T05:58:16Z</updated>

		<summary type="html">&lt;p&gt;Bvelghe: update the GUIAutoBuild repo URL&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Raspberry Pi3 =&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
&lt;br /&gt;
* AAA&lt;br /&gt;
&lt;br /&gt;
== On-board hardware ==&lt;br /&gt;
&lt;br /&gt;
* AAA&lt;br /&gt;
&lt;br /&gt;
== Serial console ==&lt;br /&gt;
&lt;br /&gt;
there is no useful serial console&lt;br /&gt;
&lt;br /&gt;
== Benchmarks ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[root@armdaq05 ~]# uname -a&lt;br /&gt;
Linux armdaq05.triumf.ca 4.4.21-v7+ #911 SMP Thu Sep 15 14:22:38 BST 2016 armv7l armv7l armv7l GNU/Linux&lt;br /&gt;
[root@armdaq05 ~]# cat /proc/cpuinfo &lt;br /&gt;
processor	: 0&lt;br /&gt;
model name	: ARMv7 Processor rev 4 (v7l)&lt;br /&gt;
BogoMIPS	: 38.40&lt;br /&gt;
Features	: half thumb fastmult vfp edsp neon vfpv3 tls vfpv4 idiva idivt vfpd32 lpae evtstrm crc32 &lt;br /&gt;
CPU implementer	: 0x41&lt;br /&gt;
CPU architecture: 7&lt;br /&gt;
CPU variant	: 0x0&lt;br /&gt;
CPU part	: 0xd03&lt;br /&gt;
CPU revision	: 4&lt;br /&gt;
&lt;br /&gt;
processor	: 1&lt;br /&gt;
model name	: ARMv7 Processor rev 4 (v7l)&lt;br /&gt;
BogoMIPS	: 38.40&lt;br /&gt;
Features	: half thumb fastmult vfp edsp neon vfpv3 tls vfpv4 idiva idivt vfpd32 lpae evtstrm crc32 &lt;br /&gt;
CPU implementer	: 0x41&lt;br /&gt;
CPU architecture: 7&lt;br /&gt;
CPU variant	: 0x0&lt;br /&gt;
CPU part	: 0xd03&lt;br /&gt;
CPU revision	: 4&lt;br /&gt;
&lt;br /&gt;
processor	: 2&lt;br /&gt;
model name	: ARMv7 Processor rev 4 (v7l)&lt;br /&gt;
BogoMIPS	: 38.40&lt;br /&gt;
Features	: half thumb fastmult vfp edsp neon vfpv3 tls vfpv4 idiva idivt vfpd32 lpae evtstrm crc32 &lt;br /&gt;
CPU implementer	: 0x41&lt;br /&gt;
CPU architecture: 7&lt;br /&gt;
CPU variant	: 0x0&lt;br /&gt;
CPU part	: 0xd03&lt;br /&gt;
CPU revision	: 4&lt;br /&gt;
&lt;br /&gt;
processor	: 3&lt;br /&gt;
model name	: ARMv7 Processor rev 4 (v7l)&lt;br /&gt;
BogoMIPS	: 38.40&lt;br /&gt;
Features	: half thumb fastmult vfp edsp neon vfpv3 tls vfpv4 idiva idivt vfpd32 lpae evtstrm crc32 &lt;br /&gt;
CPU implementer	: 0x41&lt;br /&gt;
CPU architecture: 7&lt;br /&gt;
CPU variant	: 0x0&lt;br /&gt;
CPU part	: 0xd03&lt;br /&gt;
CPU revision	: 4&lt;br /&gt;
&lt;br /&gt;
Hardware	: BCM2709&lt;br /&gt;
Revision	: a22082&lt;br /&gt;
Serial		: 00000000852ec765&lt;br /&gt;
[root@armdaq05 ~]# &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[root@armdaq05 ~]# ./memcpy_arm &lt;br /&gt;
memcpy       1 KiBytes:    710 MB/sec&lt;br /&gt;
memcpy       2 KiBytes:   1037 MB/sec&lt;br /&gt;
memcpy       4 KiBytes:   1340 MB/sec&lt;br /&gt;
memcpy       8 KiBytes:   1572 MB/sec&lt;br /&gt;
memcpy      16 KiBytes:   1703 MB/sec&lt;br /&gt;
memcpy      32 KiBytes:   2010 MB/sec&lt;br /&gt;
memcpy      64 KiBytes:   1780 MB/sec&lt;br /&gt;
memcpy     128 KiBytes:   1808 MB/sec&lt;br /&gt;
memcpy     256 KiBytes:   1421 MB/sec&lt;br /&gt;
memcpy     512 KiBytes:    971 MB/sec&lt;br /&gt;
memcpy    1024 KiBytes:    862 MB/sec&lt;br /&gt;
memcpy    2048 KiBytes:    824 MB/sec&lt;br /&gt;
memcpy    4096 KiBytes:    862 MB/sec&lt;br /&gt;
memcpy    8192 KiBytes:    817 MB/sec&lt;br /&gt;
memcpy   16384 KiBytes:    797 MB/sec&lt;br /&gt;
memcpy   32768 KiBytes:    767 MB/sec&lt;br /&gt;
memcpy   65536 KiBytes:    765 MB/sec&lt;br /&gt;
memcpy  131072 KiBytes:    766 MB/sec&lt;br /&gt;
[root@armdaq05 ~]# &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Original boot files with the CentOS 7.1 userland ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[root@armdaq05 ~]# blkid&lt;br /&gt;
/dev/mmcblk0p1: SEC_TYPE=&amp;quot;msdos&amp;quot; LABEL=&amp;quot;boot&amp;quot; UUID=&amp;quot;70F7-FA1D&amp;quot; TYPE=&amp;quot;vfat&amp;quot; &lt;br /&gt;
/dev/mmcblk0p2: LABEL=&amp;quot;el7&amp;quot; UUID=&amp;quot;0ca625c5-8db1-4f78-a9fd-e6cce04f399e&amp;quot; TYPE=&amp;quot;ext4&amp;quot; &lt;br /&gt;
/dev/mmcblk0: PTTYPE=&amp;quot;dos&amp;quot; &lt;br /&gt;
[root@armdaq05 ~]# &lt;br /&gt;
[root@armdaq05 ~]# fdisk -l&lt;br /&gt;
&lt;br /&gt;
Disk /dev/mmcblk0: 31.4 GB, 31439454208 bytes, 61405184 sectors&lt;br /&gt;
Units = sectors of 1 * 512 = 512 bytes&lt;br /&gt;
Sector size (logical/physical): 512 bytes / 512 bytes&lt;br /&gt;
I/O size (minimum/optimal): 512 bytes / 512 bytes&lt;br /&gt;
Disk label type: dos&lt;br /&gt;
Disk identifier: 0x5a7089a1&lt;br /&gt;
&lt;br /&gt;
        Device Boot      Start         End      Blocks   Id  System&lt;br /&gt;
/dev/mmcblk0p1            8192      137215       64512    c  W95 FAT32 (LBA)&lt;br /&gt;
/dev/mmcblk0p2          137216     2713599     1288192   83  Linux&lt;br /&gt;
[root@armdaq05 ~]# &lt;br /&gt;
[root@armdaq05 ~]# df -kl&lt;br /&gt;
Filesystem     1K-blocks    Used Available Use% Mounted on&lt;br /&gt;
/dev/root        1235136 1029272    125072  90% /&lt;br /&gt;
devtmpfs          469536       0    469536   0% /dev&lt;br /&gt;
tmpfs             473868       0    473868   0% /dev/shm&lt;br /&gt;
tmpfs             473868   29964    443904   7% /run&lt;br /&gt;
tmpfs             473868       0    473868   0% /sys/fs/cgroup&lt;br /&gt;
tmpfs              94776       0     94776   0% /run/user/0&lt;br /&gt;
/dev/mmcblk0p1     64456   21192     43264  33% /mnt/tmp&lt;br /&gt;
[root@armdaq05 ~]# &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Install Boot files ==&lt;br /&gt;
&lt;br /&gt;
Original boot files are in /daq/daqshare/olchansk/RPI3/bootfs&lt;br /&gt;
&lt;br /&gt;
* use 32GB micro-SD flash&lt;br /&gt;
* connect to USB-to-SD flash adapter, plug into linux computer&lt;br /&gt;
* login as root&lt;br /&gt;
* identify the /dev/sdXXX device corresponding to target media: use &amp;quot;fdisk -l&amp;quot;, look for a 32GB disk with a single MS-DOS partition&lt;br /&gt;
* ensure the partitions of /dev/sdXXX are not mounted, use &amp;quot;df -kl&amp;quot; and umount /dev/sdXXX1, etc.&lt;br /&gt;
* run &amp;quot;fdisk /dev/sdXXX&amp;quot;&lt;br /&gt;
* create MSDOS partition table: command &amp;quot;o&amp;quot;&lt;br /&gt;
* create first partition 64Mbytes: command &amp;quot;n&amp;quot;, primary &amp;quot;p&amp;quot;, first sector &amp;quot;&amp;lt;enter&amp;gt;&amp;quot;, last sector: &amp;quot;+64M&amp;quot;&lt;br /&gt;
* set partition type &amp;quot;C&amp;quot;: command &amp;quot;t&amp;quot;, partition 1 is selected automatically, hex code &amp;quot;c&amp;quot;&lt;br /&gt;
* mark bootable: command &amp;quot;a&amp;quot;, partition 1 is selected automatically&lt;br /&gt;
* confirm correct layout: command &amp;quot;p&amp;quot;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Disk /dev/sde: 31.1 GB, 31104958464 bytes, 60751872 sectors&lt;br /&gt;
   Device Boot      Start         End      Blocks   Id  System&lt;br /&gt;
/dev/sde1   *        2048      133119       65536    c  W95 FAT32 (LBA)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* save new partition table: command &amp;quot;w&amp;quot;, there should be no messages other than &amp;quot;syncing disks&amp;quot;&lt;br /&gt;
* mkfs.msdos /dev/sdXXX1&lt;br /&gt;
* mkdir -p /mnt/tmp&lt;br /&gt;
* mount /dev/sdXXX1 /mnt/tmp, cd /mnt/tmp&lt;br /&gt;
* rsync -av /daq/daqshare/olchansk/RPI3/bootfs/ .&lt;br /&gt;
* sync&lt;br /&gt;
* select boot method:&lt;br /&gt;
** cp cmdline-mmcblk.txt cmdline.txt ### to boot from SD flash&lt;br /&gt;
** cp cmdline-nfsroot.txt cmdline.txt ### to boot from network (dhcp and nfsroot)&lt;br /&gt;
* sync&lt;br /&gt;
* cd /; umount /mnt/tmp&lt;br /&gt;
* eject /dev/sdXXX&lt;br /&gt;
* try to boot from the SD flash - on HDMI video, should see Linux kernel boot all the way to a panic on failure to mount rootfs.&lt;br /&gt;
&lt;br /&gt;
== Install CentOS7 rootfs image ==&lt;br /&gt;
&lt;br /&gt;
* use bootable 32GB micro-SD flash&lt;br /&gt;
* connect and identify /dev/sdXXX same as above&lt;br /&gt;
* ensure all partitions are unmounted, same as above&lt;br /&gt;
* create second partion of maximum size:&lt;br /&gt;
* fdisk /dev/sdXXX&lt;br /&gt;
* command &amp;quot;n&amp;quot;, &amp;quot;p&amp;quot;, enter, enter&lt;br /&gt;
* command &amp;quot;p&amp;quot; to see the layout:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Disk /dev/sde: 31.1 GB, 31104958464 bytes, 60751872 sectors&lt;br /&gt;
   Device Boot      Start         End      Blocks   Id  System&lt;br /&gt;
/dev/sde1   *        2048      133119       65536    c  W95 FAT32 (LBA)&lt;br /&gt;
/dev/sde2          133120    60751871    30309376   83  Linux&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* command &amp;quot;w&amp;quot; to save the changes&lt;br /&gt;
* if it complains about &amp;quot;Device or resource busy&amp;quot;:&lt;br /&gt;
** eject /dev/sdXXX&lt;br /&gt;
** remove it from usb adapter&lt;br /&gt;
** connect to usb adapter and identify device again, same as above&lt;br /&gt;
* ls -l /dev/sdXXX* to see there are two partitions &amp;quot;1&amp;quot; and &amp;quot;2&amp;quot;&lt;br /&gt;
* mkfs.ext4 /dev/sdXXX2&lt;br /&gt;
* mkdir -p /mnt/tmp&lt;br /&gt;
* mount /dev/sdXXX2 /mnt/tmp, cd /mnt/tmp&lt;br /&gt;
* rsync -av /ladd/data0/backup.os/armdaq06/ .&lt;br /&gt;
* e2label /dev/sdXXX2 el7&lt;br /&gt;
* sync&lt;br /&gt;
* cd /; umount /mnt/tmp&lt;br /&gt;
* eject /dev/sdXXX&lt;br /&gt;
* try to boot, should boot all the way to the login prompt.&lt;br /&gt;
&lt;br /&gt;
== Setup Python i2c tools ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
su - root&lt;br /&gt;
yum install python-setuptools.noarch&lt;br /&gt;
yum install python-cffi&lt;br /&gt;
yum install python-devel&lt;br /&gt;
cd git&lt;br /&gt;
git clone https://github.com/bivab/smbus-cffi.git&lt;br /&gt;
cd smbus-cffi&lt;br /&gt;
python setup.py install&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Enable i2c drivers ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
(already done) edit boot config.txt, uncomment &amp;quot;dtparam=i2c_arm=on&amp;quot; and &amp;quot;dtparam=i2c1=on&amp;quot;, reboot&lt;br /&gt;
echo modprobe i2c-dev &amp;gt;&amp;gt; /etc/rc.local&lt;br /&gt;
echo modprobe i2c_bcm2708 &amp;gt;&amp;gt; /etc/rc.local&lt;br /&gt;
ls -l /dev/i2c*&lt;br /&gt;
i2cdetect -l&lt;br /&gt;
i2cdetect 1&lt;br /&gt;
echo chmod a+wr /dev/i2c* &amp;gt;&amp;gt; /etc/rc.local&lt;br /&gt;
reboot, run i2cdetect again.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Script for creating boot files ==&lt;br /&gt;
&lt;br /&gt;
~olchansk/git/scripts/clone/boot_rpi3.perl&lt;br /&gt;
&lt;br /&gt;
= Boot modes =&lt;br /&gt;
&lt;br /&gt;
See https://www.raspberrypi.org/documentation/hardware/raspberrypi/bootmodes/msd.md and https://www.raspberrypi.org/documentation/hardware/raspberrypi/bootmodes/bootflow_2711.md&lt;br /&gt;
&lt;br /&gt;
* RPi2, RPi3B - SD flash is the default. USB mass storage boot is disabled, but can be enabled.&lt;br /&gt;
* RPi3B+ - default boot order: SD flash, USB boot&lt;br /&gt;
* RPi4B - boots from internal SPI EEPROM (see recovery.bin). continues booting from SD flash. network boot (DHCP+TFTP), firmware 2020-xx-yy. (how to enable?). usb mass storage boot (not available as of 2020-apr-21).&lt;br /&gt;
&lt;br /&gt;
= Raspbian OS =&lt;br /&gt;
&lt;br /&gt;
Recommended RaspberryPi OS is &amp;quot;Raspbian&amp;quot;. Current version is:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Raspbian Buster Lite&lt;br /&gt;
Version:February 2020&lt;br /&gt;
Release date:2020-02-13&lt;br /&gt;
Kernel version:4.19&lt;br /&gt;
Size:434 MB&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Identification and important packages:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@raspberrypi:~# uname -a&lt;br /&gt;
Linux raspberrypi 4.19.97-v7+ #1294 SMP Thu Jan 30 13:15:58 GMT 2020 armv7l GNU/Linux&lt;br /&gt;
root@raspberrypi:~# gcc -v&lt;br /&gt;
gcc version 8.3.0 (Raspbian 8.3.0-6+rpi1) &lt;br /&gt;
root@raspberrypi:~# python --version&lt;br /&gt;
Python 2.7.16&lt;br /&gt;
root@raspberrypi:~# python3 --version&lt;br /&gt;
Python 3.7.3&lt;br /&gt;
root@raspberrypi:~# cmake --version&lt;br /&gt;
cmake version 3.13.4&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* download here https://www.raspberrypi.org/downloads/raspbian/&lt;br /&gt;
* unzip, dd to a 32GB SDflash card&lt;br /&gt;
* insert card into RPi3, power up, it will boot into login prompt&lt;br /&gt;
* default user: pi, password: raspbian, login change default password, install ssh keys for user pi and user root.&lt;br /&gt;
* change default keyboard layout from UK (with the pound key): vi /etc/default/keyboard, set XKBLAYOUT=&amp;quot;us&amp;quot;&lt;br /&gt;
* change default locale from UK to &amp;quot;C&amp;quot; (en_US.UTF8 does not seem to be available): vi /etc/default/locale, set LANG=C.UTF-8&lt;br /&gt;
* enable ssh server: apt-get install openssh-server, systemctl enable sshd.service, systemctl start sshd.service&lt;br /&gt;
* reboot: shutdown -r now&lt;br /&gt;
* RJ45 ethernet network will autoconfigure by DHCP, ssh pi@... and root@... should work&lt;br /&gt;
* login as root, install missing packages:&lt;br /&gt;
** apt-get update&lt;br /&gt;
** apt-get install git emacs xemacs21 cmake&lt;br /&gt;
&lt;br /&gt;
= Backport python3-yaml to Debian Buster =&lt;br /&gt;
Debian Bullseye ships pyYAML 5.3.1, it is relatively easy to build the package for Debian Buster.&lt;br /&gt;
&lt;br /&gt;
1. Downlowd &lt;br /&gt;
&lt;br /&gt;
 http://deb.debian.org/debian/pool/main/p/pyyaml/pyyaml_5.3.1.orig.tar.gz&lt;br /&gt;
&lt;br /&gt;
and&lt;br /&gt;
&lt;br /&gt;
 http://deb.debian.org/debian/pool/main/p/pyyaml/pyyaml_5.3.1-1.debian.tar.xz&lt;br /&gt;
&lt;br /&gt;
from https://packages.debian.org/bullseye/python3-yaml (under &amp;quot;Download Source Package&amp;quot;). Note the bullseye in the URL.&lt;br /&gt;
&lt;br /&gt;
2. Unpack pyyaml_5.3.1.orig.tar.gz and, inside the PyYAML-5.3.1 directory, pyyaml_5.3.1-1.debian.tar.xz.&lt;br /&gt;
&lt;br /&gt;
3. Install some dependencies needed for the build: &lt;br /&gt;
&lt;br /&gt;
 sudo apt install python3-all-dev python3-all-dbg libyaml-dev cython cython-dbg python-all-dev python-all-dbg&lt;br /&gt;
&lt;br /&gt;
 sudo apt install dpkg-dev&lt;br /&gt;
&lt;br /&gt;
4. Build the package (on the target architecture)&lt;br /&gt;
&lt;br /&gt;
 sudo dpkg-buildpackage -us -uc -nc&lt;br /&gt;
&lt;br /&gt;
= Openbox X Session =&lt;br /&gt;
&lt;br /&gt;
Have a look in /etc/xdg/openbox &lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
= Custom Raspbian Images =&lt;br /&gt;
The official tool used raspberrypi.org is available here: https://github.com/RPi-Distro/pi-gen&lt;br /&gt;
&lt;br /&gt;
It is working out of the box with Debian bullseye. The tool is built around [https://wiki.debian.org/Debootstrap debootstrap], all packages are pulled from http://archive.raspbian.org/ (not the official debian repos!).&lt;br /&gt;
&lt;br /&gt;
The user has to provide a config file named &amp;quot;config&amp;quot; in the root directory. For instance:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
IMG_NAME=MVM_GUI_TRIUMF &lt;br /&gt;
RELEASE=buster&lt;br /&gt;
DEPLOY_ZIP=0&lt;br /&gt;
USE_QEMU=0&lt;br /&gt;
LOCALE_DEFAULT=C.UTF-8&lt;br /&gt;
TARGET_HOSTNAME=mvm_gui&lt;br /&gt;
KEYBOARD_KEYMAP=us&lt;br /&gt;
KEYBOARD_LAYOUT=&amp;quot;English (US)&amp;quot;&lt;br /&gt;
TIMEZONE_DEFAULT=&amp;quot;America/Vancouver&amp;quot;&lt;br /&gt;
FIRST_USER_NAME=&amp;quot;mvm&amp;quot; &lt;br /&gt;
FIRST_USER_PASS=&amp;quot;gui&amp;quot;&lt;br /&gt;
ENABLE_SSH=0&lt;br /&gt;
STAGE_LIST=&amp;quot;stage0 stage1 stage2 stage3 stage4&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To build the image, simply run ./build.sh and wait.&lt;br /&gt;
&lt;br /&gt;
== MVM example ==&lt;br /&gt;
&lt;br /&gt;
Let&#039;s build an image tailored to the MVM GUI. The assumes the user is running Debian bullseye.&lt;br /&gt;
&lt;br /&gt;
=== Optional Step: Setup a Local APT Cache ===&lt;br /&gt;
A local cache speeds-up things if you have to (re)build multiple images.&lt;br /&gt;
The procedure supposes that you have docker and docker-compose installed on the build machine. &lt;br /&gt;
&lt;br /&gt;
In the root directory, run&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt install docker-compose ### Ubuntu LTS 18.04&lt;br /&gt;
docker-compose up -d &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Add the line &lt;br /&gt;
 APT_PROXY=http://172.17.0.1:3142 &lt;br /&gt;
to the config file&lt;br /&gt;
&lt;br /&gt;
=== Main Procedure ===&lt;br /&gt;
&lt;br /&gt;
Install dependencies (Debian):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo apt install coreutils quilt parted qemu-user-static debootstrap zerofree zip \&lt;br /&gt;
dosfstools bsdtar libcap2-bin grep rsync xz-utils file git curl bc&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Install dependancies (Ubuntu LTS 18.04)&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ssh root@...&lt;br /&gt;
apt-get install quilt qemu-user-static debootstrap zerofree bsdtar curl&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Clone the TRIUMF repo:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
https://gitlab.triumf.ca/mvmdev/GUIAutoBuild --single-branch slim-raspbian-buster&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Run:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
LANG=C.UTF-8 ./build.sh&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Wait ... the images will be saved in the deploy directory.&lt;br /&gt;
&lt;br /&gt;
= GPIO =&lt;br /&gt;
&lt;br /&gt;
* apt-get install wiringpi&lt;br /&gt;
* gpio readall&lt;br /&gt;
* gpio mode 24 output&lt;br /&gt;
* gpio write 24 1&lt;br /&gt;
* gpio write 24 0&lt;br /&gt;
&lt;br /&gt;
= SPI =&lt;br /&gt;
&lt;br /&gt;
* if there is no /dev/spidev0.0 and /dev/spidev0.1, edit /boot/config.txt, uncomment dtparam=spi=on, reboot&lt;br /&gt;
* CS pins are:&lt;br /&gt;
** CE0 is J8 pin 24 (GPIO8) is /dev/spidev0,0&lt;br /&gt;
** CE1 is J8 pin 26 (GPIO7) is /dev/spidev0,1&lt;br /&gt;
&lt;br /&gt;
= I2C =&lt;br /&gt;
&lt;br /&gt;
* if there is no /dev/i2c*, edit /boot/config.txt, uncomment &amp;quot;dtparam=i2c_arm=on&amp;quot;, reboot&lt;br /&gt;
* apt-get install python-smbus i2c-tools&lt;br /&gt;
* i2cdetect -y 1 ### found device at address 0x70:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
     0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f&lt;br /&gt;
00:          -- -- -- -- -- -- -- -- -- -- -- -- -- &lt;br /&gt;
10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- &lt;br /&gt;
20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- &lt;br /&gt;
30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- &lt;br /&gt;
40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- &lt;br /&gt;
50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- &lt;br /&gt;
60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- &lt;br /&gt;
70: 70 -- -- -- -- -- -- --                         &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= WiFi and Bluetooth =&lt;br /&gt;
The WiFi and Bluetooth interfaces can be disabled in the boot/config.txt. As a side effect, the [http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.ddi0183g/index.html PL011] UART is re-routed to the GPIOs 14 and 15. By default, the UART is used by the BT modem.&lt;br /&gt;
&lt;br /&gt;
One has to disable the BT modem initialization service to avoid conflicts.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl disable hciuart&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note: there is a second &amp;quot;MiniUART&amp;quot; aviabale on the Rpi, but its fonctionally are very limited. See https://www.raspberrypi.org/documentation/configuration/uart.md   &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# Disables the Bluetooth device (also restores UART0/ttyAMA0 to GPIOs 14 and 15).&lt;br /&gt;
dtoverlay=disable-bt&lt;br /&gt;
dtoverlay=disable-wifi&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= RS232 =&lt;br /&gt;
The Rpi3 has two serial interfaces (https://www.raspberrypi.org/documentation/configuration/uart.md). Levels are *3.3V*.&lt;br /&gt;
 &lt;br /&gt;
[[File:Rpi3 rs232 3 3v.jpg|thumb|Rpi3 RS233 3.3V wiring with a standard TTL-232R to USB serial cable (FTDI chip)]]&lt;br /&gt;
&lt;br /&gt;
= End =&lt;/div&gt;</summary>
		<author><name>Bvelghe</name></author>
	</entry>
	<entry>
		<id>https://daq00.triumf.ca/DaqWiki/index.php?title=RPI&amp;diff=2767</id>
		<title>RPI</title>
		<link rel="alternate" type="text/html" href="https://daq00.triumf.ca/DaqWiki/index.php?title=RPI&amp;diff=2767"/>
		<updated>2020-04-23T01:09:31Z</updated>

		<summary type="html">&lt;p&gt;Bvelghe: Openbox configuration tips&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Raspberry Pi3 =&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
&lt;br /&gt;
* AAA&lt;br /&gt;
&lt;br /&gt;
== On-board hardware ==&lt;br /&gt;
&lt;br /&gt;
* AAA&lt;br /&gt;
&lt;br /&gt;
== Serial console ==&lt;br /&gt;
&lt;br /&gt;
there is no useful serial console&lt;br /&gt;
&lt;br /&gt;
== Benchmarks ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[root@armdaq05 ~]# uname -a&lt;br /&gt;
Linux armdaq05.triumf.ca 4.4.21-v7+ #911 SMP Thu Sep 15 14:22:38 BST 2016 armv7l armv7l armv7l GNU/Linux&lt;br /&gt;
[root@armdaq05 ~]# cat /proc/cpuinfo &lt;br /&gt;
processor	: 0&lt;br /&gt;
model name	: ARMv7 Processor rev 4 (v7l)&lt;br /&gt;
BogoMIPS	: 38.40&lt;br /&gt;
Features	: half thumb fastmult vfp edsp neon vfpv3 tls vfpv4 idiva idivt vfpd32 lpae evtstrm crc32 &lt;br /&gt;
CPU implementer	: 0x41&lt;br /&gt;
CPU architecture: 7&lt;br /&gt;
CPU variant	: 0x0&lt;br /&gt;
CPU part	: 0xd03&lt;br /&gt;
CPU revision	: 4&lt;br /&gt;
&lt;br /&gt;
processor	: 1&lt;br /&gt;
model name	: ARMv7 Processor rev 4 (v7l)&lt;br /&gt;
BogoMIPS	: 38.40&lt;br /&gt;
Features	: half thumb fastmult vfp edsp neon vfpv3 tls vfpv4 idiva idivt vfpd32 lpae evtstrm crc32 &lt;br /&gt;
CPU implementer	: 0x41&lt;br /&gt;
CPU architecture: 7&lt;br /&gt;
CPU variant	: 0x0&lt;br /&gt;
CPU part	: 0xd03&lt;br /&gt;
CPU revision	: 4&lt;br /&gt;
&lt;br /&gt;
processor	: 2&lt;br /&gt;
model name	: ARMv7 Processor rev 4 (v7l)&lt;br /&gt;
BogoMIPS	: 38.40&lt;br /&gt;
Features	: half thumb fastmult vfp edsp neon vfpv3 tls vfpv4 idiva idivt vfpd32 lpae evtstrm crc32 &lt;br /&gt;
CPU implementer	: 0x41&lt;br /&gt;
CPU architecture: 7&lt;br /&gt;
CPU variant	: 0x0&lt;br /&gt;
CPU part	: 0xd03&lt;br /&gt;
CPU revision	: 4&lt;br /&gt;
&lt;br /&gt;
processor	: 3&lt;br /&gt;
model name	: ARMv7 Processor rev 4 (v7l)&lt;br /&gt;
BogoMIPS	: 38.40&lt;br /&gt;
Features	: half thumb fastmult vfp edsp neon vfpv3 tls vfpv4 idiva idivt vfpd32 lpae evtstrm crc32 &lt;br /&gt;
CPU implementer	: 0x41&lt;br /&gt;
CPU architecture: 7&lt;br /&gt;
CPU variant	: 0x0&lt;br /&gt;
CPU part	: 0xd03&lt;br /&gt;
CPU revision	: 4&lt;br /&gt;
&lt;br /&gt;
Hardware	: BCM2709&lt;br /&gt;
Revision	: a22082&lt;br /&gt;
Serial		: 00000000852ec765&lt;br /&gt;
[root@armdaq05 ~]# &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[root@armdaq05 ~]# ./memcpy_arm &lt;br /&gt;
memcpy       1 KiBytes:    710 MB/sec&lt;br /&gt;
memcpy       2 KiBytes:   1037 MB/sec&lt;br /&gt;
memcpy       4 KiBytes:   1340 MB/sec&lt;br /&gt;
memcpy       8 KiBytes:   1572 MB/sec&lt;br /&gt;
memcpy      16 KiBytes:   1703 MB/sec&lt;br /&gt;
memcpy      32 KiBytes:   2010 MB/sec&lt;br /&gt;
memcpy      64 KiBytes:   1780 MB/sec&lt;br /&gt;
memcpy     128 KiBytes:   1808 MB/sec&lt;br /&gt;
memcpy     256 KiBytes:   1421 MB/sec&lt;br /&gt;
memcpy     512 KiBytes:    971 MB/sec&lt;br /&gt;
memcpy    1024 KiBytes:    862 MB/sec&lt;br /&gt;
memcpy    2048 KiBytes:    824 MB/sec&lt;br /&gt;
memcpy    4096 KiBytes:    862 MB/sec&lt;br /&gt;
memcpy    8192 KiBytes:    817 MB/sec&lt;br /&gt;
memcpy   16384 KiBytes:    797 MB/sec&lt;br /&gt;
memcpy   32768 KiBytes:    767 MB/sec&lt;br /&gt;
memcpy   65536 KiBytes:    765 MB/sec&lt;br /&gt;
memcpy  131072 KiBytes:    766 MB/sec&lt;br /&gt;
[root@armdaq05 ~]# &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Original boot files with the CentOS 7.1 userland ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[root@armdaq05 ~]# blkid&lt;br /&gt;
/dev/mmcblk0p1: SEC_TYPE=&amp;quot;msdos&amp;quot; LABEL=&amp;quot;boot&amp;quot; UUID=&amp;quot;70F7-FA1D&amp;quot; TYPE=&amp;quot;vfat&amp;quot; &lt;br /&gt;
/dev/mmcblk0p2: LABEL=&amp;quot;el7&amp;quot; UUID=&amp;quot;0ca625c5-8db1-4f78-a9fd-e6cce04f399e&amp;quot; TYPE=&amp;quot;ext4&amp;quot; &lt;br /&gt;
/dev/mmcblk0: PTTYPE=&amp;quot;dos&amp;quot; &lt;br /&gt;
[root@armdaq05 ~]# &lt;br /&gt;
[root@armdaq05 ~]# fdisk -l&lt;br /&gt;
&lt;br /&gt;
Disk /dev/mmcblk0: 31.4 GB, 31439454208 bytes, 61405184 sectors&lt;br /&gt;
Units = sectors of 1 * 512 = 512 bytes&lt;br /&gt;
Sector size (logical/physical): 512 bytes / 512 bytes&lt;br /&gt;
I/O size (minimum/optimal): 512 bytes / 512 bytes&lt;br /&gt;
Disk label type: dos&lt;br /&gt;
Disk identifier: 0x5a7089a1&lt;br /&gt;
&lt;br /&gt;
        Device Boot      Start         End      Blocks   Id  System&lt;br /&gt;
/dev/mmcblk0p1            8192      137215       64512    c  W95 FAT32 (LBA)&lt;br /&gt;
/dev/mmcblk0p2          137216     2713599     1288192   83  Linux&lt;br /&gt;
[root@armdaq05 ~]# &lt;br /&gt;
[root@armdaq05 ~]# df -kl&lt;br /&gt;
Filesystem     1K-blocks    Used Available Use% Mounted on&lt;br /&gt;
/dev/root        1235136 1029272    125072  90% /&lt;br /&gt;
devtmpfs          469536       0    469536   0% /dev&lt;br /&gt;
tmpfs             473868       0    473868   0% /dev/shm&lt;br /&gt;
tmpfs             473868   29964    443904   7% /run&lt;br /&gt;
tmpfs             473868       0    473868   0% /sys/fs/cgroup&lt;br /&gt;
tmpfs              94776       0     94776   0% /run/user/0&lt;br /&gt;
/dev/mmcblk0p1     64456   21192     43264  33% /mnt/tmp&lt;br /&gt;
[root@armdaq05 ~]# &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Install Boot files ==&lt;br /&gt;
&lt;br /&gt;
Original boot files are in /daq/daqshare/olchansk/RPI3/bootfs&lt;br /&gt;
&lt;br /&gt;
* use 32GB micro-SD flash&lt;br /&gt;
* connect to USB-to-SD flash adapter, plug into linux computer&lt;br /&gt;
* login as root&lt;br /&gt;
* identify the /dev/sdXXX device corresponding to target media: use &amp;quot;fdisk -l&amp;quot;, look for a 32GB disk with a single MS-DOS partition&lt;br /&gt;
* ensure the partitions of /dev/sdXXX are not mounted, use &amp;quot;df -kl&amp;quot; and umount /dev/sdXXX1, etc.&lt;br /&gt;
* run &amp;quot;fdisk /dev/sdXXX&amp;quot;&lt;br /&gt;
* create MSDOS partition table: command &amp;quot;o&amp;quot;&lt;br /&gt;
* create first partition 64Mbytes: command &amp;quot;n&amp;quot;, primary &amp;quot;p&amp;quot;, first sector &amp;quot;&amp;lt;enter&amp;gt;&amp;quot;, last sector: &amp;quot;+64M&amp;quot;&lt;br /&gt;
* set partition type &amp;quot;C&amp;quot;: command &amp;quot;t&amp;quot;, partition 1 is selected automatically, hex code &amp;quot;c&amp;quot;&lt;br /&gt;
* mark bootable: command &amp;quot;a&amp;quot;, partition 1 is selected automatically&lt;br /&gt;
* confirm correct layout: command &amp;quot;p&amp;quot;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Disk /dev/sde: 31.1 GB, 31104958464 bytes, 60751872 sectors&lt;br /&gt;
   Device Boot      Start         End      Blocks   Id  System&lt;br /&gt;
/dev/sde1   *        2048      133119       65536    c  W95 FAT32 (LBA)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* save new partition table: command &amp;quot;w&amp;quot;, there should be no messages other than &amp;quot;syncing disks&amp;quot;&lt;br /&gt;
* mkfs.msdos /dev/sdXXX1&lt;br /&gt;
* mkdir -p /mnt/tmp&lt;br /&gt;
* mount /dev/sdXXX1 /mnt/tmp, cd /mnt/tmp&lt;br /&gt;
* rsync -av /daq/daqshare/olchansk/RPI3/bootfs/ .&lt;br /&gt;
* sync&lt;br /&gt;
* select boot method:&lt;br /&gt;
** cp cmdline-mmcblk.txt cmdline.txt ### to boot from SD flash&lt;br /&gt;
** cp cmdline-nfsroot.txt cmdline.txt ### to boot from network (dhcp and nfsroot)&lt;br /&gt;
* sync&lt;br /&gt;
* cd /; umount /mnt/tmp&lt;br /&gt;
* eject /dev/sdXXX&lt;br /&gt;
* try to boot from the SD flash - on HDMI video, should see Linux kernel boot all the way to a panic on failure to mount rootfs.&lt;br /&gt;
&lt;br /&gt;
== Install CentOS7 rootfs image ==&lt;br /&gt;
&lt;br /&gt;
* use bootable 32GB micro-SD flash&lt;br /&gt;
* connect and identify /dev/sdXXX same as above&lt;br /&gt;
* ensure all partitions are unmounted, same as above&lt;br /&gt;
* create second partion of maximum size:&lt;br /&gt;
* fdisk /dev/sdXXX&lt;br /&gt;
* command &amp;quot;n&amp;quot;, &amp;quot;p&amp;quot;, enter, enter&lt;br /&gt;
* command &amp;quot;p&amp;quot; to see the layout:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Disk /dev/sde: 31.1 GB, 31104958464 bytes, 60751872 sectors&lt;br /&gt;
   Device Boot      Start         End      Blocks   Id  System&lt;br /&gt;
/dev/sde1   *        2048      133119       65536    c  W95 FAT32 (LBA)&lt;br /&gt;
/dev/sde2          133120    60751871    30309376   83  Linux&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* command &amp;quot;w&amp;quot; to save the changes&lt;br /&gt;
* if it complains about &amp;quot;Device or resource busy&amp;quot;:&lt;br /&gt;
** eject /dev/sdXXX&lt;br /&gt;
** remove it from usb adapter&lt;br /&gt;
** connect to usb adapter and identify device again, same as above&lt;br /&gt;
* ls -l /dev/sdXXX* to see there are two partitions &amp;quot;1&amp;quot; and &amp;quot;2&amp;quot;&lt;br /&gt;
* mkfs.ext4 /dev/sdXXX2&lt;br /&gt;
* mkdir -p /mnt/tmp&lt;br /&gt;
* mount /dev/sdXXX2 /mnt/tmp, cd /mnt/tmp&lt;br /&gt;
* rsync -av /ladd/data0/backup.os/armdaq06/ .&lt;br /&gt;
* e2label /dev/sdXXX2 el7&lt;br /&gt;
* sync&lt;br /&gt;
* cd /; umount /mnt/tmp&lt;br /&gt;
* eject /dev/sdXXX&lt;br /&gt;
* try to boot, should boot all the way to the login prompt.&lt;br /&gt;
&lt;br /&gt;
== Setup Python i2c tools ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
su - root&lt;br /&gt;
yum install python-setuptools.noarch&lt;br /&gt;
yum install python-cffi&lt;br /&gt;
yum install python-devel&lt;br /&gt;
cd git&lt;br /&gt;
git clone https://github.com/bivab/smbus-cffi.git&lt;br /&gt;
cd smbus-cffi&lt;br /&gt;
python setup.py install&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Enable i2c drivers ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
(already done) edit boot config.txt, uncomment &amp;quot;dtparam=i2c_arm=on&amp;quot; and &amp;quot;dtparam=i2c1=on&amp;quot;, reboot&lt;br /&gt;
echo modprobe i2c-dev &amp;gt;&amp;gt; /etc/rc.local&lt;br /&gt;
echo modprobe i2c_bcm2708 &amp;gt;&amp;gt; /etc/rc.local&lt;br /&gt;
ls -l /dev/i2c*&lt;br /&gt;
i2cdetect -l&lt;br /&gt;
i2cdetect 1&lt;br /&gt;
echo chmod a+wr /dev/i2c* &amp;gt;&amp;gt; /etc/rc.local&lt;br /&gt;
reboot, run i2cdetect again.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Script for creating boot files ==&lt;br /&gt;
&lt;br /&gt;
~olchansk/git/scripts/clone/boot_rpi3.perl&lt;br /&gt;
&lt;br /&gt;
= Boot modes =&lt;br /&gt;
&lt;br /&gt;
See https://www.raspberrypi.org/documentation/hardware/raspberrypi/bootmodes/msd.md and https://www.raspberrypi.org/documentation/hardware/raspberrypi/bootmodes/bootflow_2711.md&lt;br /&gt;
&lt;br /&gt;
* RPi2, RPi3B - SD flash is the default. USB mass storage boot is disabled, but can be enabled.&lt;br /&gt;
* RPi3B+ - default boot order: SD flash, USB boot&lt;br /&gt;
* RPi4B - boots from internal SPI EEPROM (see recovery.bin). continues booting from SD flash. network boot (DHCP+TFTP), firmware 2020-xx-yy. (how to enable?). usb mass storage boot (not available as of 2020-apr-21).&lt;br /&gt;
&lt;br /&gt;
= Raspbian OS =&lt;br /&gt;
&lt;br /&gt;
Recommended RaspberryPi OS is &amp;quot;Raspbian&amp;quot;. Current version is:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Raspbian Buster Lite&lt;br /&gt;
Version:February 2020&lt;br /&gt;
Release date:2020-02-13&lt;br /&gt;
Kernel version:4.19&lt;br /&gt;
Size:434 MB&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Identification and important packages:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@raspberrypi:~# uname -a&lt;br /&gt;
Linux raspberrypi 4.19.97-v7+ #1294 SMP Thu Jan 30 13:15:58 GMT 2020 armv7l GNU/Linux&lt;br /&gt;
root@raspberrypi:~# gcc -v&lt;br /&gt;
gcc version 8.3.0 (Raspbian 8.3.0-6+rpi1) &lt;br /&gt;
root@raspberrypi:~# python --version&lt;br /&gt;
Python 2.7.16&lt;br /&gt;
root@raspberrypi:~# python3 --version&lt;br /&gt;
Python 3.7.3&lt;br /&gt;
root@raspberrypi:~# cmake --version&lt;br /&gt;
cmake version 3.13.4&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* download here https://www.raspberrypi.org/downloads/raspbian/&lt;br /&gt;
* unzip, dd to a 32GB SDflash card&lt;br /&gt;
* insert card into RPi3, power up, it will boot into login prompt&lt;br /&gt;
* default user: pi, password: raspbian, login change default password, install ssh keys for user pi and user root.&lt;br /&gt;
* change default keyboard layout from UK (with the pound key): vi /etc/default/keyboard, set XKBLAYOUT=&amp;quot;us&amp;quot;&lt;br /&gt;
* change default locale from UK to &amp;quot;C&amp;quot; (en_US.UTF8 does not seem to be available): vi /etc/default/locale, set LANG=C.UTF-8&lt;br /&gt;
* enable ssh server: apt-get install openssh-server, systemctl enable sshd.service, systemctl start sshd.service&lt;br /&gt;
* reboot: shutdown -r now&lt;br /&gt;
* RJ45 ethernet network will autoconfigure by DHCP, ssh pi@... and root@... should work&lt;br /&gt;
* login as root, install missing packages:&lt;br /&gt;
** apt-get update&lt;br /&gt;
** apt-get install git emacs xemacs21 cmake&lt;br /&gt;
&lt;br /&gt;
= Backport python3-yaml to Debian Buster =&lt;br /&gt;
Debian Bullseye ships pyYAML 5.3.1, it is relatively easy to build the package for Debian Buster.&lt;br /&gt;
&lt;br /&gt;
1. Downlowd &lt;br /&gt;
&lt;br /&gt;
 http://deb.debian.org/debian/pool/main/p/pyyaml/pyyaml_5.3.1.orig.tar.gz&lt;br /&gt;
&lt;br /&gt;
and&lt;br /&gt;
&lt;br /&gt;
 http://deb.debian.org/debian/pool/main/p/pyyaml/pyyaml_5.3.1-1.debian.tar.xz&lt;br /&gt;
&lt;br /&gt;
from https://packages.debian.org/bullseye/python3-yaml (under &amp;quot;Download Source Package&amp;quot;). Note the bullseye in the URL.&lt;br /&gt;
&lt;br /&gt;
2. Unpack pyyaml_5.3.1.orig.tar.gz and, inside the PyYAML-5.3.1 directory, pyyaml_5.3.1-1.debian.tar.xz.&lt;br /&gt;
&lt;br /&gt;
3. Install some dependencies needed for the build: &lt;br /&gt;
&lt;br /&gt;
 sudo apt install python3-all-dev python3-all-dbg libyaml-dev cython cython-dbg python-all-dev python-all-dbg&lt;br /&gt;
&lt;br /&gt;
 sudo apt install dpkg-dev&lt;br /&gt;
&lt;br /&gt;
4. Build the package (on the target architecture)&lt;br /&gt;
&lt;br /&gt;
 sudo dpkg-buildpackage -us -uc -nc&lt;br /&gt;
&lt;br /&gt;
= Openbox X Session =&lt;br /&gt;
&lt;br /&gt;
Have a look in /etc/xdg/openbox &lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
= Custom Raspbian Images =&lt;br /&gt;
The official tool used raspberrypi.org is available here: https://github.com/RPi-Distro/pi-gen&lt;br /&gt;
&lt;br /&gt;
It is working out of the box with Debian bullseye. The tool is built around [https://wiki.debian.org/Debootstrap debootstrap], all packages are pulled from http://archive.raspbian.org/ (not the official debian repos!).&lt;br /&gt;
&lt;br /&gt;
The user has to provide a config file named &amp;quot;config&amp;quot; in the root directory. For instance:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
IMG_NAME=MVM_GUI_TRIUMF &lt;br /&gt;
RELEASE=buster&lt;br /&gt;
DEPLOY_ZIP=0&lt;br /&gt;
USE_QEMU=0&lt;br /&gt;
LOCALE_DEFAULT=C.UTF-8&lt;br /&gt;
TARGET_HOSTNAME=mvm_gui&lt;br /&gt;
KEYBOARD_KEYMAP=us&lt;br /&gt;
KEYBOARD_LAYOUT=&amp;quot;English (US)&amp;quot;&lt;br /&gt;
TIMEZONE_DEFAULT=&amp;quot;America/Vancouver&amp;quot;&lt;br /&gt;
FIRST_USER_NAME=&amp;quot;mvm&amp;quot; &lt;br /&gt;
FIRST_USER_PASS=&amp;quot;gui&amp;quot;&lt;br /&gt;
ENABLE_SSH=0&lt;br /&gt;
STAGE_LIST=&amp;quot;stage0 stage1 stage2 stage3 stage4&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To build the image, simply run ./build.sh and wait.&lt;br /&gt;
&lt;br /&gt;
== MVM example ==&lt;br /&gt;
&lt;br /&gt;
Let&#039;s build an image tailored to the MVM GUI. The assumes the user is running Debian bullseye.&lt;br /&gt;
&lt;br /&gt;
=== Optional Step: Setup a Local APT Cache ===&lt;br /&gt;
A local cache speeds-up things if you have to (re)build multiple images.&lt;br /&gt;
The procedure supposes that you have docker and docker-compose installed on the build machine. &lt;br /&gt;
&lt;br /&gt;
In the root directory, run&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt install docker-compose ### Ubuntu LTS 18.04&lt;br /&gt;
docker-compose up -d &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Add the line &lt;br /&gt;
 APT_PROXY=http://172.17.0.1:3142 &lt;br /&gt;
to the config file&lt;br /&gt;
&lt;br /&gt;
=== Main Procedure ===&lt;br /&gt;
&lt;br /&gt;
Install dependencies (Debian):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo apt install coreutils quilt parted qemu-user-static debootstrap zerofree zip \&lt;br /&gt;
dosfstools bsdtar libcap2-bin grep rsync xz-utils file git curl bc&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Install dependancies (Ubuntu LTS 18.04)&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ssh root@...&lt;br /&gt;
apt-get install quilt qemu-user-static debootstrap zerofree bsdtar curl&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Clone the TRIUMF repo:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
git clone git@gitlab.triumf.ca:bvelghe/pi-gen.git --single-branch slim-raspbian-buster&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Run:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
LANG=C.UTF-8 ./build.sh&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Wait ... the images will be saved in the deploy directory.&lt;br /&gt;
&lt;br /&gt;
= GPIO =&lt;br /&gt;
&lt;br /&gt;
* apt-get install wiringpi&lt;br /&gt;
* gpio readall&lt;br /&gt;
* gpio mode 24 output&lt;br /&gt;
* gpio write 24 1&lt;br /&gt;
* gpio write 24 0&lt;br /&gt;
&lt;br /&gt;
= SPI =&lt;br /&gt;
&lt;br /&gt;
* if there is no /dev/spidev0.0 and /dev/spidev0.1, edit /boot/config.txt, uncomment dtparam=spi=on, reboot&lt;br /&gt;
* CS pins are:&lt;br /&gt;
** CE0 is J8 pin 24 (GPIO8) is /dev/spidev0,0&lt;br /&gt;
** CE1 is J8 pin 26 (GPIO7) is /dev/spidev0,1&lt;br /&gt;
&lt;br /&gt;
= I2C =&lt;br /&gt;
&lt;br /&gt;
* if there is no /dev/i2c*, edit /boot/config.txt, uncomment &amp;quot;dtparam=i2c_arm=on&amp;quot;, reboot&lt;br /&gt;
* apt-get install python-smbus i2c-tools&lt;br /&gt;
* i2cdetect -y 1 ### found device at address 0x70:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
     0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f&lt;br /&gt;
00:          -- -- -- -- -- -- -- -- -- -- -- -- -- &lt;br /&gt;
10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- &lt;br /&gt;
20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- &lt;br /&gt;
30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- &lt;br /&gt;
40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- &lt;br /&gt;
50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- &lt;br /&gt;
60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- &lt;br /&gt;
70: 70 -- -- -- -- -- -- --                         &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= WiFi and Bluetooth =&lt;br /&gt;
The WiFi and Bluetooth interfaces can be disabled in the boot/config.txt. As a side effect, the [http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.ddi0183g/index.html PL011] UART is re-routed to the GPIOs 14 and 15. By default, the UART is used by the BT modem.&lt;br /&gt;
&lt;br /&gt;
One has to disable the BT modem initialization service to avoid conflicts.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl disable hciuart&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note: there is a second &amp;quot;MiniUART&amp;quot; aviabale on the Rpi, but its fonctionally are very limited. See https://www.raspberrypi.org/documentation/configuration/uart.md   &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# Disables the Bluetooth device (also restores UART0/ttyAMA0 to GPIOs 14 and 15).&lt;br /&gt;
dtoverlay=disable-bt&lt;br /&gt;
dtoverlay=disable-wifi&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= RS232 =&lt;br /&gt;
The Rpi3 has two serial interfaces (https://www.raspberrypi.org/documentation/configuration/uart.md). Levels are *3.3V*.&lt;br /&gt;
 &lt;br /&gt;
[[File:Rpi3 rs232 3 3v.jpg|thumb|Rpi3 RS233 3.3V wiring with a standard TTL-232R to USB serial cable (FTDI chip)]]&lt;br /&gt;
&lt;br /&gt;
= End =&lt;/div&gt;</summary>
		<author><name>Bvelghe</name></author>
	</entry>
	<entry>
		<id>https://daq00.triumf.ca/DaqWiki/index.php?title=RPI&amp;diff=2766</id>
		<title>RPI</title>
		<link rel="alternate" type="text/html" href="https://daq00.triumf.ca/DaqWiki/index.php?title=RPI&amp;diff=2766"/>
		<updated>2020-04-23T00:22:05Z</updated>

		<summary type="html">&lt;p&gt;Bvelghe: Instructions to backport python3-yaml to Debian Buster&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Raspberry Pi3 =&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
&lt;br /&gt;
* AAA&lt;br /&gt;
&lt;br /&gt;
== On-board hardware ==&lt;br /&gt;
&lt;br /&gt;
* AAA&lt;br /&gt;
&lt;br /&gt;
== Serial console ==&lt;br /&gt;
&lt;br /&gt;
there is no useful serial console&lt;br /&gt;
&lt;br /&gt;
== Benchmarks ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[root@armdaq05 ~]# uname -a&lt;br /&gt;
Linux armdaq05.triumf.ca 4.4.21-v7+ #911 SMP Thu Sep 15 14:22:38 BST 2016 armv7l armv7l armv7l GNU/Linux&lt;br /&gt;
[root@armdaq05 ~]# cat /proc/cpuinfo &lt;br /&gt;
processor	: 0&lt;br /&gt;
model name	: ARMv7 Processor rev 4 (v7l)&lt;br /&gt;
BogoMIPS	: 38.40&lt;br /&gt;
Features	: half thumb fastmult vfp edsp neon vfpv3 tls vfpv4 idiva idivt vfpd32 lpae evtstrm crc32 &lt;br /&gt;
CPU implementer	: 0x41&lt;br /&gt;
CPU architecture: 7&lt;br /&gt;
CPU variant	: 0x0&lt;br /&gt;
CPU part	: 0xd03&lt;br /&gt;
CPU revision	: 4&lt;br /&gt;
&lt;br /&gt;
processor	: 1&lt;br /&gt;
model name	: ARMv7 Processor rev 4 (v7l)&lt;br /&gt;
BogoMIPS	: 38.40&lt;br /&gt;
Features	: half thumb fastmult vfp edsp neon vfpv3 tls vfpv4 idiva idivt vfpd32 lpae evtstrm crc32 &lt;br /&gt;
CPU implementer	: 0x41&lt;br /&gt;
CPU architecture: 7&lt;br /&gt;
CPU variant	: 0x0&lt;br /&gt;
CPU part	: 0xd03&lt;br /&gt;
CPU revision	: 4&lt;br /&gt;
&lt;br /&gt;
processor	: 2&lt;br /&gt;
model name	: ARMv7 Processor rev 4 (v7l)&lt;br /&gt;
BogoMIPS	: 38.40&lt;br /&gt;
Features	: half thumb fastmult vfp edsp neon vfpv3 tls vfpv4 idiva idivt vfpd32 lpae evtstrm crc32 &lt;br /&gt;
CPU implementer	: 0x41&lt;br /&gt;
CPU architecture: 7&lt;br /&gt;
CPU variant	: 0x0&lt;br /&gt;
CPU part	: 0xd03&lt;br /&gt;
CPU revision	: 4&lt;br /&gt;
&lt;br /&gt;
processor	: 3&lt;br /&gt;
model name	: ARMv7 Processor rev 4 (v7l)&lt;br /&gt;
BogoMIPS	: 38.40&lt;br /&gt;
Features	: half thumb fastmult vfp edsp neon vfpv3 tls vfpv4 idiva idivt vfpd32 lpae evtstrm crc32 &lt;br /&gt;
CPU implementer	: 0x41&lt;br /&gt;
CPU architecture: 7&lt;br /&gt;
CPU variant	: 0x0&lt;br /&gt;
CPU part	: 0xd03&lt;br /&gt;
CPU revision	: 4&lt;br /&gt;
&lt;br /&gt;
Hardware	: BCM2709&lt;br /&gt;
Revision	: a22082&lt;br /&gt;
Serial		: 00000000852ec765&lt;br /&gt;
[root@armdaq05 ~]# &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[root@armdaq05 ~]# ./memcpy_arm &lt;br /&gt;
memcpy       1 KiBytes:    710 MB/sec&lt;br /&gt;
memcpy       2 KiBytes:   1037 MB/sec&lt;br /&gt;
memcpy       4 KiBytes:   1340 MB/sec&lt;br /&gt;
memcpy       8 KiBytes:   1572 MB/sec&lt;br /&gt;
memcpy      16 KiBytes:   1703 MB/sec&lt;br /&gt;
memcpy      32 KiBytes:   2010 MB/sec&lt;br /&gt;
memcpy      64 KiBytes:   1780 MB/sec&lt;br /&gt;
memcpy     128 KiBytes:   1808 MB/sec&lt;br /&gt;
memcpy     256 KiBytes:   1421 MB/sec&lt;br /&gt;
memcpy     512 KiBytes:    971 MB/sec&lt;br /&gt;
memcpy    1024 KiBytes:    862 MB/sec&lt;br /&gt;
memcpy    2048 KiBytes:    824 MB/sec&lt;br /&gt;
memcpy    4096 KiBytes:    862 MB/sec&lt;br /&gt;
memcpy    8192 KiBytes:    817 MB/sec&lt;br /&gt;
memcpy   16384 KiBytes:    797 MB/sec&lt;br /&gt;
memcpy   32768 KiBytes:    767 MB/sec&lt;br /&gt;
memcpy   65536 KiBytes:    765 MB/sec&lt;br /&gt;
memcpy  131072 KiBytes:    766 MB/sec&lt;br /&gt;
[root@armdaq05 ~]# &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Original boot files with the CentOS 7.1 userland ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[root@armdaq05 ~]# blkid&lt;br /&gt;
/dev/mmcblk0p1: SEC_TYPE=&amp;quot;msdos&amp;quot; LABEL=&amp;quot;boot&amp;quot; UUID=&amp;quot;70F7-FA1D&amp;quot; TYPE=&amp;quot;vfat&amp;quot; &lt;br /&gt;
/dev/mmcblk0p2: LABEL=&amp;quot;el7&amp;quot; UUID=&amp;quot;0ca625c5-8db1-4f78-a9fd-e6cce04f399e&amp;quot; TYPE=&amp;quot;ext4&amp;quot; &lt;br /&gt;
/dev/mmcblk0: PTTYPE=&amp;quot;dos&amp;quot; &lt;br /&gt;
[root@armdaq05 ~]# &lt;br /&gt;
[root@armdaq05 ~]# fdisk -l&lt;br /&gt;
&lt;br /&gt;
Disk /dev/mmcblk0: 31.4 GB, 31439454208 bytes, 61405184 sectors&lt;br /&gt;
Units = sectors of 1 * 512 = 512 bytes&lt;br /&gt;
Sector size (logical/physical): 512 bytes / 512 bytes&lt;br /&gt;
I/O size (minimum/optimal): 512 bytes / 512 bytes&lt;br /&gt;
Disk label type: dos&lt;br /&gt;
Disk identifier: 0x5a7089a1&lt;br /&gt;
&lt;br /&gt;
        Device Boot      Start         End      Blocks   Id  System&lt;br /&gt;
/dev/mmcblk0p1            8192      137215       64512    c  W95 FAT32 (LBA)&lt;br /&gt;
/dev/mmcblk0p2          137216     2713599     1288192   83  Linux&lt;br /&gt;
[root@armdaq05 ~]# &lt;br /&gt;
[root@armdaq05 ~]# df -kl&lt;br /&gt;
Filesystem     1K-blocks    Used Available Use% Mounted on&lt;br /&gt;
/dev/root        1235136 1029272    125072  90% /&lt;br /&gt;
devtmpfs          469536       0    469536   0% /dev&lt;br /&gt;
tmpfs             473868       0    473868   0% /dev/shm&lt;br /&gt;
tmpfs             473868   29964    443904   7% /run&lt;br /&gt;
tmpfs             473868       0    473868   0% /sys/fs/cgroup&lt;br /&gt;
tmpfs              94776       0     94776   0% /run/user/0&lt;br /&gt;
/dev/mmcblk0p1     64456   21192     43264  33% /mnt/tmp&lt;br /&gt;
[root@armdaq05 ~]# &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Install Boot files ==&lt;br /&gt;
&lt;br /&gt;
Original boot files are in /daq/daqshare/olchansk/RPI3/bootfs&lt;br /&gt;
&lt;br /&gt;
* use 32GB micro-SD flash&lt;br /&gt;
* connect to USB-to-SD flash adapter, plug into linux computer&lt;br /&gt;
* login as root&lt;br /&gt;
* identify the /dev/sdXXX device corresponding to target media: use &amp;quot;fdisk -l&amp;quot;, look for a 32GB disk with a single MS-DOS partition&lt;br /&gt;
* ensure the partitions of /dev/sdXXX are not mounted, use &amp;quot;df -kl&amp;quot; and umount /dev/sdXXX1, etc.&lt;br /&gt;
* run &amp;quot;fdisk /dev/sdXXX&amp;quot;&lt;br /&gt;
* create MSDOS partition table: command &amp;quot;o&amp;quot;&lt;br /&gt;
* create first partition 64Mbytes: command &amp;quot;n&amp;quot;, primary &amp;quot;p&amp;quot;, first sector &amp;quot;&amp;lt;enter&amp;gt;&amp;quot;, last sector: &amp;quot;+64M&amp;quot;&lt;br /&gt;
* set partition type &amp;quot;C&amp;quot;: command &amp;quot;t&amp;quot;, partition 1 is selected automatically, hex code &amp;quot;c&amp;quot;&lt;br /&gt;
* mark bootable: command &amp;quot;a&amp;quot;, partition 1 is selected automatically&lt;br /&gt;
* confirm correct layout: command &amp;quot;p&amp;quot;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Disk /dev/sde: 31.1 GB, 31104958464 bytes, 60751872 sectors&lt;br /&gt;
   Device Boot      Start         End      Blocks   Id  System&lt;br /&gt;
/dev/sde1   *        2048      133119       65536    c  W95 FAT32 (LBA)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* save new partition table: command &amp;quot;w&amp;quot;, there should be no messages other than &amp;quot;syncing disks&amp;quot;&lt;br /&gt;
* mkfs.msdos /dev/sdXXX1&lt;br /&gt;
* mkdir -p /mnt/tmp&lt;br /&gt;
* mount /dev/sdXXX1 /mnt/tmp, cd /mnt/tmp&lt;br /&gt;
* rsync -av /daq/daqshare/olchansk/RPI3/bootfs/ .&lt;br /&gt;
* sync&lt;br /&gt;
* select boot method:&lt;br /&gt;
** cp cmdline-mmcblk.txt cmdline.txt ### to boot from SD flash&lt;br /&gt;
** cp cmdline-nfsroot.txt cmdline.txt ### to boot from network (dhcp and nfsroot)&lt;br /&gt;
* sync&lt;br /&gt;
* cd /; umount /mnt/tmp&lt;br /&gt;
* eject /dev/sdXXX&lt;br /&gt;
* try to boot from the SD flash - on HDMI video, should see Linux kernel boot all the way to a panic on failure to mount rootfs.&lt;br /&gt;
&lt;br /&gt;
== Install CentOS7 rootfs image ==&lt;br /&gt;
&lt;br /&gt;
* use bootable 32GB micro-SD flash&lt;br /&gt;
* connect and identify /dev/sdXXX same as above&lt;br /&gt;
* ensure all partitions are unmounted, same as above&lt;br /&gt;
* create second partion of maximum size:&lt;br /&gt;
* fdisk /dev/sdXXX&lt;br /&gt;
* command &amp;quot;n&amp;quot;, &amp;quot;p&amp;quot;, enter, enter&lt;br /&gt;
* command &amp;quot;p&amp;quot; to see the layout:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Disk /dev/sde: 31.1 GB, 31104958464 bytes, 60751872 sectors&lt;br /&gt;
   Device Boot      Start         End      Blocks   Id  System&lt;br /&gt;
/dev/sde1   *        2048      133119       65536    c  W95 FAT32 (LBA)&lt;br /&gt;
/dev/sde2          133120    60751871    30309376   83  Linux&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* command &amp;quot;w&amp;quot; to save the changes&lt;br /&gt;
* if it complains about &amp;quot;Device or resource busy&amp;quot;:&lt;br /&gt;
** eject /dev/sdXXX&lt;br /&gt;
** remove it from usb adapter&lt;br /&gt;
** connect to usb adapter and identify device again, same as above&lt;br /&gt;
* ls -l /dev/sdXXX* to see there are two partitions &amp;quot;1&amp;quot; and &amp;quot;2&amp;quot;&lt;br /&gt;
* mkfs.ext4 /dev/sdXXX2&lt;br /&gt;
* mkdir -p /mnt/tmp&lt;br /&gt;
* mount /dev/sdXXX2 /mnt/tmp, cd /mnt/tmp&lt;br /&gt;
* rsync -av /ladd/data0/backup.os/armdaq06/ .&lt;br /&gt;
* e2label /dev/sdXXX2 el7&lt;br /&gt;
* sync&lt;br /&gt;
* cd /; umount /mnt/tmp&lt;br /&gt;
* eject /dev/sdXXX&lt;br /&gt;
* try to boot, should boot all the way to the login prompt.&lt;br /&gt;
&lt;br /&gt;
== Setup Python i2c tools ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
su - root&lt;br /&gt;
yum install python-setuptools.noarch&lt;br /&gt;
yum install python-cffi&lt;br /&gt;
yum install python-devel&lt;br /&gt;
cd git&lt;br /&gt;
git clone https://github.com/bivab/smbus-cffi.git&lt;br /&gt;
cd smbus-cffi&lt;br /&gt;
python setup.py install&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Enable i2c drivers ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
(already done) edit boot config.txt, uncomment &amp;quot;dtparam=i2c_arm=on&amp;quot; and &amp;quot;dtparam=i2c1=on&amp;quot;, reboot&lt;br /&gt;
echo modprobe i2c-dev &amp;gt;&amp;gt; /etc/rc.local&lt;br /&gt;
echo modprobe i2c_bcm2708 &amp;gt;&amp;gt; /etc/rc.local&lt;br /&gt;
ls -l /dev/i2c*&lt;br /&gt;
i2cdetect -l&lt;br /&gt;
i2cdetect 1&lt;br /&gt;
echo chmod a+wr /dev/i2c* &amp;gt;&amp;gt; /etc/rc.local&lt;br /&gt;
reboot, run i2cdetect again.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Script for creating boot files ==&lt;br /&gt;
&lt;br /&gt;
~olchansk/git/scripts/clone/boot_rpi3.perl&lt;br /&gt;
&lt;br /&gt;
= Boot modes =&lt;br /&gt;
&lt;br /&gt;
See https://www.raspberrypi.org/documentation/hardware/raspberrypi/bootmodes/msd.md and https://www.raspberrypi.org/documentation/hardware/raspberrypi/bootmodes/bootflow_2711.md&lt;br /&gt;
&lt;br /&gt;
* RPi2, RPi3B - SD flash is the default. USB mass storage boot is disabled, but can be enabled.&lt;br /&gt;
* RPi3B+ - default boot order: SD flash, USB boot&lt;br /&gt;
* RPi4B - boots from internal SPI EEPROM (see recovery.bin). continues booting from SD flash. network boot (DHCP+TFTP), firmware 2020-xx-yy. (how to enable?). usb mass storage boot (not available as of 2020-apr-21).&lt;br /&gt;
&lt;br /&gt;
= Raspbian OS =&lt;br /&gt;
&lt;br /&gt;
Recommended RaspberryPi OS is &amp;quot;Raspbian&amp;quot;. Current version is:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Raspbian Buster Lite&lt;br /&gt;
Version:February 2020&lt;br /&gt;
Release date:2020-02-13&lt;br /&gt;
Kernel version:4.19&lt;br /&gt;
Size:434 MB&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Identification and important packages:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@raspberrypi:~# uname -a&lt;br /&gt;
Linux raspberrypi 4.19.97-v7+ #1294 SMP Thu Jan 30 13:15:58 GMT 2020 armv7l GNU/Linux&lt;br /&gt;
root@raspberrypi:~# gcc -v&lt;br /&gt;
gcc version 8.3.0 (Raspbian 8.3.0-6+rpi1) &lt;br /&gt;
root@raspberrypi:~# python --version&lt;br /&gt;
Python 2.7.16&lt;br /&gt;
root@raspberrypi:~# python3 --version&lt;br /&gt;
Python 3.7.3&lt;br /&gt;
root@raspberrypi:~# cmake --version&lt;br /&gt;
cmake version 3.13.4&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* download here https://www.raspberrypi.org/downloads/raspbian/&lt;br /&gt;
* unzip, dd to a 32GB SDflash card&lt;br /&gt;
* insert card into RPi3, power up, it will boot into login prompt&lt;br /&gt;
* default user: pi, password: raspbian, login change default password, install ssh keys for user pi and user root.&lt;br /&gt;
* change default keyboard layout from UK (with the pound key): vi /etc/default/keyboard, set XKBLAYOUT=&amp;quot;us&amp;quot;&lt;br /&gt;
* change default locale from UK to &amp;quot;C&amp;quot; (en_US.UTF8 does not seem to be available): vi /etc/default/locale, set LANG=C.UTF-8&lt;br /&gt;
* enable ssh server: apt-get install openssh-server, systemctl enable sshd.service, systemctl start sshd.service&lt;br /&gt;
* reboot: shutdown -r now&lt;br /&gt;
* RJ45 ethernet network will autoconfigure by DHCP, ssh pi@... and root@... should work&lt;br /&gt;
* login as root, install missing packages:&lt;br /&gt;
** apt-get update&lt;br /&gt;
** apt-get install git emacs xemacs21 cmake&lt;br /&gt;
&lt;br /&gt;
= Backport python3-yaml to Debian Buster =&lt;br /&gt;
Debian Bullseye ships pyYAML 5.3.1, it is relatively easy to build the package for Debian Buster.&lt;br /&gt;
&lt;br /&gt;
1. Downlowd &lt;br /&gt;
&lt;br /&gt;
 http://deb.debian.org/debian/pool/main/p/pyyaml/pyyaml_5.3.1.orig.tar.gz&lt;br /&gt;
&lt;br /&gt;
and&lt;br /&gt;
&lt;br /&gt;
 http://deb.debian.org/debian/pool/main/p/pyyaml/pyyaml_5.3.1-1.debian.tar.xz&lt;br /&gt;
&lt;br /&gt;
from https://packages.debian.org/bullseye/python3-yaml (under &amp;quot;Download Source Package&amp;quot;). Note the bullseye in the URL.&lt;br /&gt;
&lt;br /&gt;
2. Unpack pyyaml_5.3.1.orig.tar.gz and, inside the PyYAML-5.3.1 directory, pyyaml_5.3.1-1.debian.tar.xz.&lt;br /&gt;
&lt;br /&gt;
3. Install some dependencies needed for the build: &lt;br /&gt;
&lt;br /&gt;
 sudo apt install python3-all-dev python3-all-dbg libyaml-dev cython cython-dbg python-all-dev python-all-dbg&lt;br /&gt;
&lt;br /&gt;
 sudo apt install dpkg-dev&lt;br /&gt;
&lt;br /&gt;
4. Build the package (on the target architecture)&lt;br /&gt;
&lt;br /&gt;
 sudo dpkg-buildpackage -us -uc -nc&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Custom Raspbian Images =&lt;br /&gt;
The official tool used raspberrypi.org is available here: https://github.com/RPi-Distro/pi-gen&lt;br /&gt;
&lt;br /&gt;
It is working out of the box with Debian bullseye. The tool is built around [https://wiki.debian.org/Debootstrap debootstrap], all packages are pulled from http://archive.raspbian.org/ (not the official debian repos!).&lt;br /&gt;
&lt;br /&gt;
The user has to provide a config file named &amp;quot;config&amp;quot; in the root directory. For instance:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
IMG_NAME=MVM_GUI_TRIUMF &lt;br /&gt;
RELEASE=buster&lt;br /&gt;
DEPLOY_ZIP=0&lt;br /&gt;
USE_QEMU=0&lt;br /&gt;
LOCALE_DEFAULT=C.UTF-8&lt;br /&gt;
TARGET_HOSTNAME=mvm_gui&lt;br /&gt;
KEYBOARD_KEYMAP=us&lt;br /&gt;
KEYBOARD_LAYOUT=&amp;quot;English (US)&amp;quot;&lt;br /&gt;
TIMEZONE_DEFAULT=&amp;quot;America/Vancouver&amp;quot;&lt;br /&gt;
FIRST_USER_NAME=&amp;quot;mvm&amp;quot; &lt;br /&gt;
FIRST_USER_PASS=&amp;quot;gui&amp;quot;&lt;br /&gt;
ENABLE_SSH=0&lt;br /&gt;
STAGE_LIST=&amp;quot;stage0 stage1 stage2 stage3 stage4&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To build the image, simply run ./build.sh and wait.&lt;br /&gt;
&lt;br /&gt;
== MVM example ==&lt;br /&gt;
&lt;br /&gt;
Let&#039;s build an image tailored to the MVM GUI. The assumes the user is running Debian bullseye.&lt;br /&gt;
&lt;br /&gt;
=== Optional Step: Setup a Local APT Cache ===&lt;br /&gt;
A local cache speeds-up things if you have to (re)build multiple images.&lt;br /&gt;
The procedure supposes that you have docker and docker-compose installed on the build machine. &lt;br /&gt;
&lt;br /&gt;
In the root directory, run&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt install docker-compose ### Ubuntu LTS 18.04&lt;br /&gt;
docker-compose up -d &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Add the line &lt;br /&gt;
 APT_PROXY=http://172.17.0.1:3142 &lt;br /&gt;
to the config file&lt;br /&gt;
&lt;br /&gt;
=== Main Procedure ===&lt;br /&gt;
&lt;br /&gt;
Install dependencies (Debian):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo apt install coreutils quilt parted qemu-user-static debootstrap zerofree zip \&lt;br /&gt;
dosfstools bsdtar libcap2-bin grep rsync xz-utils file git curl bc&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Install dependancies (Ubuntu LTS 18.04)&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ssh root@...&lt;br /&gt;
apt-get install quilt qemu-user-static debootstrap zerofree bsdtar curl&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Clone the TRIUMF repo:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
git clone git@gitlab.triumf.ca:bvelghe/pi-gen.git --single-branch slim-raspbian-buster&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Run:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
LANG=C.UTF-8 ./build.sh&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Wait ... the images will be saved in the deploy directory.&lt;br /&gt;
&lt;br /&gt;
= GPIO =&lt;br /&gt;
&lt;br /&gt;
* apt-get install wiringpi&lt;br /&gt;
* gpio readall&lt;br /&gt;
* gpio mode 24 output&lt;br /&gt;
* gpio write 24 1&lt;br /&gt;
* gpio write 24 0&lt;br /&gt;
&lt;br /&gt;
= SPI =&lt;br /&gt;
&lt;br /&gt;
* if there is no /dev/spidev0.0 and /dev/spidev0.1, edit /boot/config.txt, uncomment dtparam=spi=on, reboot&lt;br /&gt;
* CS pins are:&lt;br /&gt;
** CE0 is J8 pin 24 (GPIO8) is /dev/spidev0,0&lt;br /&gt;
** CE1 is J8 pin 26 (GPIO7) is /dev/spidev0,1&lt;br /&gt;
&lt;br /&gt;
= I2C =&lt;br /&gt;
&lt;br /&gt;
* if there is no /dev/i2c*, edit /boot/config.txt, uncomment &amp;quot;dtparam=i2c_arm=on&amp;quot;, reboot&lt;br /&gt;
* apt-get install python-smbus i2c-tools&lt;br /&gt;
* i2cdetect -y 1 ### found device at address 0x70:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
     0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f&lt;br /&gt;
00:          -- -- -- -- -- -- -- -- -- -- -- -- -- &lt;br /&gt;
10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- &lt;br /&gt;
20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- &lt;br /&gt;
30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- &lt;br /&gt;
40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- &lt;br /&gt;
50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- &lt;br /&gt;
60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- &lt;br /&gt;
70: 70 -- -- -- -- -- -- --                         &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= WiFi and Bluetooth =&lt;br /&gt;
The WiFi and Bluetooth interfaces can be disabled in the boot/config.txt. As a side effect, the [http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.ddi0183g/index.html PL011] UART is re-routed to the GPIOs 14 and 15. By default, the UART is used by the BT modem.&lt;br /&gt;
&lt;br /&gt;
One has to disable the BT modem initialization service to avoid conflicts.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl disable hciuart&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note: there is a second &amp;quot;MiniUART&amp;quot; aviabale on the Rpi, but its fonctionally are very limited. See https://www.raspberrypi.org/documentation/configuration/uart.md   &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# Disables the Bluetooth device (also restores UART0/ttyAMA0 to GPIOs 14 and 15).&lt;br /&gt;
dtoverlay=disable-bt&lt;br /&gt;
dtoverlay=disable-wifi&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= RS232 =&lt;br /&gt;
The Rpi3 has two serial interfaces (https://www.raspberrypi.org/documentation/configuration/uart.md). Levels are *3.3V*.&lt;br /&gt;
 &lt;br /&gt;
[[File:Rpi3 rs232 3 3v.jpg|thumb|Rpi3 RS233 3.3V wiring with a standard TTL-232R to USB serial cable (FTDI chip)]]&lt;br /&gt;
&lt;br /&gt;
= End =&lt;/div&gt;</summary>
		<author><name>Bvelghe</name></author>
	</entry>
	<entry>
		<id>https://daq00.triumf.ca/DaqWiki/index.php?title=RPI&amp;diff=2738</id>
		<title>RPI</title>
		<link rel="alternate" type="text/html" href="https://daq00.triumf.ca/DaqWiki/index.php?title=RPI&amp;diff=2738"/>
		<updated>2020-04-21T02:32:59Z</updated>

		<summary type="html">&lt;p&gt;Bvelghe: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Raspberry Pi3 =&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
&lt;br /&gt;
* AAA&lt;br /&gt;
&lt;br /&gt;
== On-board hardware ==&lt;br /&gt;
&lt;br /&gt;
* AAA&lt;br /&gt;
&lt;br /&gt;
== Serial console ==&lt;br /&gt;
&lt;br /&gt;
there is no useful serial console&lt;br /&gt;
&lt;br /&gt;
== Benchmarks ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[root@armdaq05 ~]# uname -a&lt;br /&gt;
Linux armdaq05.triumf.ca 4.4.21-v7+ #911 SMP Thu Sep 15 14:22:38 BST 2016 armv7l armv7l armv7l GNU/Linux&lt;br /&gt;
[root@armdaq05 ~]# cat /proc/cpuinfo &lt;br /&gt;
processor	: 0&lt;br /&gt;
model name	: ARMv7 Processor rev 4 (v7l)&lt;br /&gt;
BogoMIPS	: 38.40&lt;br /&gt;
Features	: half thumb fastmult vfp edsp neon vfpv3 tls vfpv4 idiva idivt vfpd32 lpae evtstrm crc32 &lt;br /&gt;
CPU implementer	: 0x41&lt;br /&gt;
CPU architecture: 7&lt;br /&gt;
CPU variant	: 0x0&lt;br /&gt;
CPU part	: 0xd03&lt;br /&gt;
CPU revision	: 4&lt;br /&gt;
&lt;br /&gt;
processor	: 1&lt;br /&gt;
model name	: ARMv7 Processor rev 4 (v7l)&lt;br /&gt;
BogoMIPS	: 38.40&lt;br /&gt;
Features	: half thumb fastmult vfp edsp neon vfpv3 tls vfpv4 idiva idivt vfpd32 lpae evtstrm crc32 &lt;br /&gt;
CPU implementer	: 0x41&lt;br /&gt;
CPU architecture: 7&lt;br /&gt;
CPU variant	: 0x0&lt;br /&gt;
CPU part	: 0xd03&lt;br /&gt;
CPU revision	: 4&lt;br /&gt;
&lt;br /&gt;
processor	: 2&lt;br /&gt;
model name	: ARMv7 Processor rev 4 (v7l)&lt;br /&gt;
BogoMIPS	: 38.40&lt;br /&gt;
Features	: half thumb fastmult vfp edsp neon vfpv3 tls vfpv4 idiva idivt vfpd32 lpae evtstrm crc32 &lt;br /&gt;
CPU implementer	: 0x41&lt;br /&gt;
CPU architecture: 7&lt;br /&gt;
CPU variant	: 0x0&lt;br /&gt;
CPU part	: 0xd03&lt;br /&gt;
CPU revision	: 4&lt;br /&gt;
&lt;br /&gt;
processor	: 3&lt;br /&gt;
model name	: ARMv7 Processor rev 4 (v7l)&lt;br /&gt;
BogoMIPS	: 38.40&lt;br /&gt;
Features	: half thumb fastmult vfp edsp neon vfpv3 tls vfpv4 idiva idivt vfpd32 lpae evtstrm crc32 &lt;br /&gt;
CPU implementer	: 0x41&lt;br /&gt;
CPU architecture: 7&lt;br /&gt;
CPU variant	: 0x0&lt;br /&gt;
CPU part	: 0xd03&lt;br /&gt;
CPU revision	: 4&lt;br /&gt;
&lt;br /&gt;
Hardware	: BCM2709&lt;br /&gt;
Revision	: a22082&lt;br /&gt;
Serial		: 00000000852ec765&lt;br /&gt;
[root@armdaq05 ~]# &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[root@armdaq05 ~]# ./memcpy_arm &lt;br /&gt;
memcpy       1 KiBytes:    710 MB/sec&lt;br /&gt;
memcpy       2 KiBytes:   1037 MB/sec&lt;br /&gt;
memcpy       4 KiBytes:   1340 MB/sec&lt;br /&gt;
memcpy       8 KiBytes:   1572 MB/sec&lt;br /&gt;
memcpy      16 KiBytes:   1703 MB/sec&lt;br /&gt;
memcpy      32 KiBytes:   2010 MB/sec&lt;br /&gt;
memcpy      64 KiBytes:   1780 MB/sec&lt;br /&gt;
memcpy     128 KiBytes:   1808 MB/sec&lt;br /&gt;
memcpy     256 KiBytes:   1421 MB/sec&lt;br /&gt;
memcpy     512 KiBytes:    971 MB/sec&lt;br /&gt;
memcpy    1024 KiBytes:    862 MB/sec&lt;br /&gt;
memcpy    2048 KiBytes:    824 MB/sec&lt;br /&gt;
memcpy    4096 KiBytes:    862 MB/sec&lt;br /&gt;
memcpy    8192 KiBytes:    817 MB/sec&lt;br /&gt;
memcpy   16384 KiBytes:    797 MB/sec&lt;br /&gt;
memcpy   32768 KiBytes:    767 MB/sec&lt;br /&gt;
memcpy   65536 KiBytes:    765 MB/sec&lt;br /&gt;
memcpy  131072 KiBytes:    766 MB/sec&lt;br /&gt;
[root@armdaq05 ~]# &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Original boot files with the CentOS 7.1 userland ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[root@armdaq05 ~]# blkid&lt;br /&gt;
/dev/mmcblk0p1: SEC_TYPE=&amp;quot;msdos&amp;quot; LABEL=&amp;quot;boot&amp;quot; UUID=&amp;quot;70F7-FA1D&amp;quot; TYPE=&amp;quot;vfat&amp;quot; &lt;br /&gt;
/dev/mmcblk0p2: LABEL=&amp;quot;el7&amp;quot; UUID=&amp;quot;0ca625c5-8db1-4f78-a9fd-e6cce04f399e&amp;quot; TYPE=&amp;quot;ext4&amp;quot; &lt;br /&gt;
/dev/mmcblk0: PTTYPE=&amp;quot;dos&amp;quot; &lt;br /&gt;
[root@armdaq05 ~]# &lt;br /&gt;
[root@armdaq05 ~]# fdisk -l&lt;br /&gt;
&lt;br /&gt;
Disk /dev/mmcblk0: 31.4 GB, 31439454208 bytes, 61405184 sectors&lt;br /&gt;
Units = sectors of 1 * 512 = 512 bytes&lt;br /&gt;
Sector size (logical/physical): 512 bytes / 512 bytes&lt;br /&gt;
I/O size (minimum/optimal): 512 bytes / 512 bytes&lt;br /&gt;
Disk label type: dos&lt;br /&gt;
Disk identifier: 0x5a7089a1&lt;br /&gt;
&lt;br /&gt;
        Device Boot      Start         End      Blocks   Id  System&lt;br /&gt;
/dev/mmcblk0p1            8192      137215       64512    c  W95 FAT32 (LBA)&lt;br /&gt;
/dev/mmcblk0p2          137216     2713599     1288192   83  Linux&lt;br /&gt;
[root@armdaq05 ~]# &lt;br /&gt;
[root@armdaq05 ~]# df -kl&lt;br /&gt;
Filesystem     1K-blocks    Used Available Use% Mounted on&lt;br /&gt;
/dev/root        1235136 1029272    125072  90% /&lt;br /&gt;
devtmpfs          469536       0    469536   0% /dev&lt;br /&gt;
tmpfs             473868       0    473868   0% /dev/shm&lt;br /&gt;
tmpfs             473868   29964    443904   7% /run&lt;br /&gt;
tmpfs             473868       0    473868   0% /sys/fs/cgroup&lt;br /&gt;
tmpfs              94776       0     94776   0% /run/user/0&lt;br /&gt;
/dev/mmcblk0p1     64456   21192     43264  33% /mnt/tmp&lt;br /&gt;
[root@armdaq05 ~]# &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Install Boot files ==&lt;br /&gt;
&lt;br /&gt;
Original boot files are in /daq/daqshare/olchansk/RPI3/bootfs&lt;br /&gt;
&lt;br /&gt;
* use 32GB micro-SD flash&lt;br /&gt;
* connect to USB-to-SD flash adapter, plug into linux computer&lt;br /&gt;
* login as root&lt;br /&gt;
* identify the /dev/sdXXX device corresponding to target media: use &amp;quot;fdisk -l&amp;quot;, look for a 32GB disk with a single MS-DOS partition&lt;br /&gt;
* ensure the partitions of /dev/sdXXX are not mounted, use &amp;quot;df -kl&amp;quot; and umount /dev/sdXXX1, etc.&lt;br /&gt;
* run &amp;quot;fdisk /dev/sdXXX&amp;quot;&lt;br /&gt;
* create MSDOS partition table: command &amp;quot;o&amp;quot;&lt;br /&gt;
* create first partition 64Mbytes: command &amp;quot;n&amp;quot;, primary &amp;quot;p&amp;quot;, first sector &amp;quot;&amp;lt;enter&amp;gt;&amp;quot;, last sector: &amp;quot;+64M&amp;quot;&lt;br /&gt;
* set partition type &amp;quot;C&amp;quot;: command &amp;quot;t&amp;quot;, partition 1 is selected automatically, hex code &amp;quot;c&amp;quot;&lt;br /&gt;
* mark bootable: command &amp;quot;a&amp;quot;, partition 1 is selected automatically&lt;br /&gt;
* confirm correct layout: command &amp;quot;p&amp;quot;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Disk /dev/sde: 31.1 GB, 31104958464 bytes, 60751872 sectors&lt;br /&gt;
   Device Boot      Start         End      Blocks   Id  System&lt;br /&gt;
/dev/sde1   *        2048      133119       65536    c  W95 FAT32 (LBA)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* save new partition table: command &amp;quot;w&amp;quot;, there should be no messages other than &amp;quot;syncing disks&amp;quot;&lt;br /&gt;
* mkfs.msdos /dev/sdXXX1&lt;br /&gt;
* mkdir -p /mnt/tmp&lt;br /&gt;
* mount /dev/sdXXX1 /mnt/tmp, cd /mnt/tmp&lt;br /&gt;
* rsync -av /daq/daqshare/olchansk/RPI3/bootfs/ .&lt;br /&gt;
* sync&lt;br /&gt;
* select boot method:&lt;br /&gt;
** cp cmdline-mmcblk.txt cmdline.txt ### to boot from SD flash&lt;br /&gt;
** cp cmdline-nfsroot.txt cmdline.txt ### to boot from network (dhcp and nfsroot)&lt;br /&gt;
* sync&lt;br /&gt;
* cd /; umount /mnt/tmp&lt;br /&gt;
* eject /dev/sdXXX&lt;br /&gt;
* try to boot from the SD flash - on HDMI video, should see Linux kernel boot all the way to a panic on failure to mount rootfs.&lt;br /&gt;
&lt;br /&gt;
== Install CentOS7 rootfs image ==&lt;br /&gt;
&lt;br /&gt;
* use bootable 32GB micro-SD flash&lt;br /&gt;
* connect and identify /dev/sdXXX same as above&lt;br /&gt;
* ensure all partitions are unmounted, same as above&lt;br /&gt;
* create second partion of maximum size:&lt;br /&gt;
* fdisk /dev/sdXXX&lt;br /&gt;
* command &amp;quot;n&amp;quot;, &amp;quot;p&amp;quot;, enter, enter&lt;br /&gt;
* command &amp;quot;p&amp;quot; to see the layout:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Disk /dev/sde: 31.1 GB, 31104958464 bytes, 60751872 sectors&lt;br /&gt;
   Device Boot      Start         End      Blocks   Id  System&lt;br /&gt;
/dev/sde1   *        2048      133119       65536    c  W95 FAT32 (LBA)&lt;br /&gt;
/dev/sde2          133120    60751871    30309376   83  Linux&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* command &amp;quot;w&amp;quot; to save the changes&lt;br /&gt;
* if it complains about &amp;quot;Device or resource busy&amp;quot;:&lt;br /&gt;
** eject /dev/sdXXX&lt;br /&gt;
** remove it from usb adapter&lt;br /&gt;
** connect to usb adapter and identify device again, same as above&lt;br /&gt;
* ls -l /dev/sdXXX* to see there are two partitions &amp;quot;1&amp;quot; and &amp;quot;2&amp;quot;&lt;br /&gt;
* mkfs.ext4 /dev/sdXXX2&lt;br /&gt;
* mkdir -p /mnt/tmp&lt;br /&gt;
* mount /dev/sdXXX2 /mnt/tmp, cd /mnt/tmp&lt;br /&gt;
* rsync -av /ladd/data0/backup.os/armdaq06/ .&lt;br /&gt;
* e2label /dev/sdXXX2 el7&lt;br /&gt;
* sync&lt;br /&gt;
* cd /; umount /mnt/tmp&lt;br /&gt;
* eject /dev/sdXXX&lt;br /&gt;
* try to boot, should boot all the way to the login prompt.&lt;br /&gt;
&lt;br /&gt;
== Setup Python i2c tools ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
su - root&lt;br /&gt;
yum install python-setuptools.noarch&lt;br /&gt;
yum install python-cffi&lt;br /&gt;
yum install python-devel&lt;br /&gt;
cd git&lt;br /&gt;
git clone https://github.com/bivab/smbus-cffi.git&lt;br /&gt;
cd smbus-cffi&lt;br /&gt;
python setup.py install&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Enable i2c drivers ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
(already done) edit boot config.txt, uncomment &amp;quot;dtparam=i2c_arm=on&amp;quot; and &amp;quot;dtparam=i2c1=on&amp;quot;, reboot&lt;br /&gt;
echo modprobe i2c-dev &amp;gt;&amp;gt; /etc/rc.local&lt;br /&gt;
echo modprobe i2c_bcm2708 &amp;gt;&amp;gt; /etc/rc.local&lt;br /&gt;
ls -l /dev/i2c*&lt;br /&gt;
i2cdetect -l&lt;br /&gt;
i2cdetect 1&lt;br /&gt;
echo chmod a+wr /dev/i2c* &amp;gt;&amp;gt; /etc/rc.local&lt;br /&gt;
reboot, run i2cdetect again.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Script for creating boot files ==&lt;br /&gt;
&lt;br /&gt;
~olchansk/git/scripts/clone/boot_rpi3.perl&lt;br /&gt;
&lt;br /&gt;
= Raspbian OS =&lt;br /&gt;
&lt;br /&gt;
Recommended RaspberryPi OS is &amp;quot;Raspbian&amp;quot;. Current version is:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Raspbian Buster Lite&lt;br /&gt;
Version:February 2020&lt;br /&gt;
Release date:2020-02-13&lt;br /&gt;
Kernel version:4.19&lt;br /&gt;
Size:434 MB&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Identification and important packages:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@raspberrypi:~# uname -a&lt;br /&gt;
Linux raspberrypi 4.19.97-v7+ #1294 SMP Thu Jan 30 13:15:58 GMT 2020 armv7l GNU/Linux&lt;br /&gt;
root@raspberrypi:~# gcc -v&lt;br /&gt;
gcc version 8.3.0 (Raspbian 8.3.0-6+rpi1) &lt;br /&gt;
root@raspberrypi:~# python --version&lt;br /&gt;
Python 2.7.16&lt;br /&gt;
root@raspberrypi:~# python3 --version&lt;br /&gt;
Python 3.7.3&lt;br /&gt;
root@raspberrypi:~# cmake --version&lt;br /&gt;
cmake version 3.13.4&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* download here https://www.raspberrypi.org/downloads/raspbian/&lt;br /&gt;
* unzip, dd to a 32GB SDflash card&lt;br /&gt;
* insert card into RPi3, power up, it will boot into login prompt&lt;br /&gt;
* default user: pi, password: raspbian, login change default password, install ssh keys for user pi and user root.&lt;br /&gt;
* change default keyboard layout from UK (with the pound key): vi /etc/default/keyboard, set XKBLAYOUT=&amp;quot;us&amp;quot;&lt;br /&gt;
* change default locale from UK to &amp;quot;C&amp;quot; (en_US.UTF8 does not seem to be available): vi /etc/default/locale, set LANG=C.UTF-8&lt;br /&gt;
* enable ssh server: apt-get install openssh-server, systemctl enable sshd.service, systemctl start sshd.service&lt;br /&gt;
* reboot: shutdown -r now&lt;br /&gt;
* RJ45 ethernet network will autoconfigure by DHCP, ssh pi@... and root@... should work&lt;br /&gt;
* login as root, install missing packages:&lt;br /&gt;
** apt-get update&lt;br /&gt;
** apt-get install git emacs xemacs21 cmake&lt;br /&gt;
&lt;br /&gt;
= Custom Raspbian Images =&lt;br /&gt;
The official tool used raspberrypi.org is available here: https://github.com/RPi-Distro/pi-gen&lt;br /&gt;
&lt;br /&gt;
It is working out of the box with Debian bullseye. The tool is built around [https://wiki.debian.org/Debootstrap debootstrap], all packages are pulled from http://archive.raspbian.org/ (not the official debian repos!).&lt;br /&gt;
&lt;br /&gt;
The user has to provide a config file named &amp;quot;config&amp;quot; in the root directory. For instance:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
IMG_NAME=MVM_GUI_TRIUMF &lt;br /&gt;
RELEASE=buster&lt;br /&gt;
DEPLOY_ZIP=0&lt;br /&gt;
USE_QEMU=0&lt;br /&gt;
LOCALE_DEFAULT=en_CA.UTF-8&lt;br /&gt;
TARGET_HOSTNAME=mvm_gui&lt;br /&gt;
KEYBOARD_KEYMAP=ca&lt;br /&gt;
KEYBOARD_LAYOUT=&amp;quot;English (US)&amp;quot;&lt;br /&gt;
TIMEZONE_DEFAULT=&amp;quot;America/Vancouver&amp;quot;&lt;br /&gt;
FIRST_USER_NAME=&amp;quot;mvm&amp;quot; &lt;br /&gt;
FIRST_USER_PASS=&amp;quot;gui&amp;quot;&lt;br /&gt;
ENABLE_SSH=0&lt;br /&gt;
STAGE_LIST=&amp;quot;stage1 stage2 stage3 stage4&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To build the image, simply run ./build.sh and wait.&lt;br /&gt;
&lt;br /&gt;
== MVM example ==&lt;br /&gt;
&lt;br /&gt;
Let&#039;s build an image tailored to the MVM GUI. The assumes the user is running Debian bullseye.&lt;br /&gt;
&lt;br /&gt;
=== Optional Step: Setup a Local APT Cache ===&lt;br /&gt;
A local cache speeds-up things if you have to (re)build multiple images.&lt;br /&gt;
The procedure supposes that you have docker and docker-compose installed on the build machine. &lt;br /&gt;
&lt;br /&gt;
In the root directory, run&lt;br /&gt;
 run docker-compose up -d &lt;br /&gt;
&lt;br /&gt;
Add the line &lt;br /&gt;
 APT_PROXY=http://172.17.0.1:3142 &lt;br /&gt;
to the config file&lt;br /&gt;
&lt;br /&gt;
=== Main Procedure ===&lt;br /&gt;
&lt;br /&gt;
Install dependencies (Debian):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo apt install coreutils quilt parted qemu-user-static debootstrap zerofree zip \&lt;br /&gt;
dosfstools bsdtar libcap2-bin grep rsync xz-utils file git curl bc&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Install dependancies (Ubuntu LTS 18.04)&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ssh root@...&lt;br /&gt;
apt-get install quilt qemu-user-static debootstrap zerofree bsdtar curl&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Clone the TRIUMF repo:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
git clone git@gitlab.triumf.ca:bvelghe/pi-gen.git --single-branch slim-raspbian-buster&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Run:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo ./build.sh&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Wait ... the images will be saved in the deploy directory.&lt;br /&gt;
&lt;br /&gt;
= GPIO =&lt;br /&gt;
&lt;br /&gt;
* apt-get install wiringpi&lt;br /&gt;
* gpio readall&lt;br /&gt;
* gpio mode 24 output&lt;br /&gt;
* gpio write 24 1&lt;br /&gt;
* gpio write 24 0&lt;br /&gt;
&lt;br /&gt;
= SPI =&lt;br /&gt;
&lt;br /&gt;
* if there is no /dev/spidev0.0 and /dev/spidev0.1, edit /boot/config.txt, uncomment dtparam=spi=on, reboot&lt;br /&gt;
* CS pins are:&lt;br /&gt;
** CE0 is J8 pin 24 (GPIO8) is /dev/spidev0,0&lt;br /&gt;
** CE1 is J8 pin 26 (GPIO7) is /dev/spidev0,1&lt;br /&gt;
&lt;br /&gt;
= I2C =&lt;br /&gt;
&lt;br /&gt;
* if there is no /dev/i2c*, edit /boot/config.txt, uncomment &amp;quot;dtparam=i2c_arm=on&amp;quot;, reboot&lt;br /&gt;
* apt-get install python-smbus i2c-tools&lt;br /&gt;
* i2cdetect -y 1 ### found device at address 0x70:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
     0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f&lt;br /&gt;
00:          -- -- -- -- -- -- -- -- -- -- -- -- -- &lt;br /&gt;
10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- &lt;br /&gt;
20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- &lt;br /&gt;
30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- &lt;br /&gt;
40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- &lt;br /&gt;
50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- &lt;br /&gt;
60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- &lt;br /&gt;
70: 70 -- -- -- -- -- -- --                         &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= WiFi and Bluetooth =&lt;br /&gt;
The WiFi and Bluetooth interfaces can be disabled in the boot/config.txt. As a side effect, the [http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.ddi0183g/index.html PL011] UART is re-routed to the GPIOs 14 and 15. By default, the UART is used by the BT modem.&lt;br /&gt;
&lt;br /&gt;
One has to disable the BT modem initialization service to avoid conflicts.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl disable hciuart&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note: there is a second &amp;quot;MiniUART&amp;quot; aviabale on the Rpi, but its fonctionally are very limited. See https://www.raspberrypi.org/documentation/configuration/uart.md   &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# Disables the Bluetooth device (also restores UART0/ttyAMA0 to GPIOs 14 and 15).&lt;br /&gt;
dtoverlay=disable-bt&lt;br /&gt;
dtoverlay=disable-wifi&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= RS232 =&lt;br /&gt;
The Rpi3 has two serial interfaces (https://www.raspberrypi.org/documentation/configuration/uart.md). Levels are *3.3V*.&lt;br /&gt;
 &lt;br /&gt;
[[File:Rpi3 rs232 3 3v.jpg|thumb|Rpi3 RS233 3.3V wiring with a standard TTL-232R to USB serial cable (FTDI chip)]]&lt;br /&gt;
&lt;br /&gt;
= End =&lt;/div&gt;</summary>
		<author><name>Bvelghe</name></author>
	</entry>
	<entry>
		<id>https://daq00.triumf.ca/DaqWiki/index.php?title=RPI&amp;diff=2734</id>
		<title>RPI</title>
		<link rel="alternate" type="text/html" href="https://daq00.triumf.ca/DaqWiki/index.php?title=RPI&amp;diff=2734"/>
		<updated>2020-04-20T20:44:43Z</updated>

		<summary type="html">&lt;p&gt;Bvelghe: Add concrete instructions for the MVM build&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Raspberry Pi3 =&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
&lt;br /&gt;
* AAA&lt;br /&gt;
&lt;br /&gt;
== On-board hardware ==&lt;br /&gt;
&lt;br /&gt;
* AAA&lt;br /&gt;
&lt;br /&gt;
== Serial console ==&lt;br /&gt;
&lt;br /&gt;
there is no useful serial console&lt;br /&gt;
&lt;br /&gt;
== Benchmarks ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[root@armdaq05 ~]# uname -a&lt;br /&gt;
Linux armdaq05.triumf.ca 4.4.21-v7+ #911 SMP Thu Sep 15 14:22:38 BST 2016 armv7l armv7l armv7l GNU/Linux&lt;br /&gt;
[root@armdaq05 ~]# cat /proc/cpuinfo &lt;br /&gt;
processor	: 0&lt;br /&gt;
model name	: ARMv7 Processor rev 4 (v7l)&lt;br /&gt;
BogoMIPS	: 38.40&lt;br /&gt;
Features	: half thumb fastmult vfp edsp neon vfpv3 tls vfpv4 idiva idivt vfpd32 lpae evtstrm crc32 &lt;br /&gt;
CPU implementer	: 0x41&lt;br /&gt;
CPU architecture: 7&lt;br /&gt;
CPU variant	: 0x0&lt;br /&gt;
CPU part	: 0xd03&lt;br /&gt;
CPU revision	: 4&lt;br /&gt;
&lt;br /&gt;
processor	: 1&lt;br /&gt;
model name	: ARMv7 Processor rev 4 (v7l)&lt;br /&gt;
BogoMIPS	: 38.40&lt;br /&gt;
Features	: half thumb fastmult vfp edsp neon vfpv3 tls vfpv4 idiva idivt vfpd32 lpae evtstrm crc32 &lt;br /&gt;
CPU implementer	: 0x41&lt;br /&gt;
CPU architecture: 7&lt;br /&gt;
CPU variant	: 0x0&lt;br /&gt;
CPU part	: 0xd03&lt;br /&gt;
CPU revision	: 4&lt;br /&gt;
&lt;br /&gt;
processor	: 2&lt;br /&gt;
model name	: ARMv7 Processor rev 4 (v7l)&lt;br /&gt;
BogoMIPS	: 38.40&lt;br /&gt;
Features	: half thumb fastmult vfp edsp neon vfpv3 tls vfpv4 idiva idivt vfpd32 lpae evtstrm crc32 &lt;br /&gt;
CPU implementer	: 0x41&lt;br /&gt;
CPU architecture: 7&lt;br /&gt;
CPU variant	: 0x0&lt;br /&gt;
CPU part	: 0xd03&lt;br /&gt;
CPU revision	: 4&lt;br /&gt;
&lt;br /&gt;
processor	: 3&lt;br /&gt;
model name	: ARMv7 Processor rev 4 (v7l)&lt;br /&gt;
BogoMIPS	: 38.40&lt;br /&gt;
Features	: half thumb fastmult vfp edsp neon vfpv3 tls vfpv4 idiva idivt vfpd32 lpae evtstrm crc32 &lt;br /&gt;
CPU implementer	: 0x41&lt;br /&gt;
CPU architecture: 7&lt;br /&gt;
CPU variant	: 0x0&lt;br /&gt;
CPU part	: 0xd03&lt;br /&gt;
CPU revision	: 4&lt;br /&gt;
&lt;br /&gt;
Hardware	: BCM2709&lt;br /&gt;
Revision	: a22082&lt;br /&gt;
Serial		: 00000000852ec765&lt;br /&gt;
[root@armdaq05 ~]# &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[root@armdaq05 ~]# ./memcpy_arm &lt;br /&gt;
memcpy       1 KiBytes:    710 MB/sec&lt;br /&gt;
memcpy       2 KiBytes:   1037 MB/sec&lt;br /&gt;
memcpy       4 KiBytes:   1340 MB/sec&lt;br /&gt;
memcpy       8 KiBytes:   1572 MB/sec&lt;br /&gt;
memcpy      16 KiBytes:   1703 MB/sec&lt;br /&gt;
memcpy      32 KiBytes:   2010 MB/sec&lt;br /&gt;
memcpy      64 KiBytes:   1780 MB/sec&lt;br /&gt;
memcpy     128 KiBytes:   1808 MB/sec&lt;br /&gt;
memcpy     256 KiBytes:   1421 MB/sec&lt;br /&gt;
memcpy     512 KiBytes:    971 MB/sec&lt;br /&gt;
memcpy    1024 KiBytes:    862 MB/sec&lt;br /&gt;
memcpy    2048 KiBytes:    824 MB/sec&lt;br /&gt;
memcpy    4096 KiBytes:    862 MB/sec&lt;br /&gt;
memcpy    8192 KiBytes:    817 MB/sec&lt;br /&gt;
memcpy   16384 KiBytes:    797 MB/sec&lt;br /&gt;
memcpy   32768 KiBytes:    767 MB/sec&lt;br /&gt;
memcpy   65536 KiBytes:    765 MB/sec&lt;br /&gt;
memcpy  131072 KiBytes:    766 MB/sec&lt;br /&gt;
[root@armdaq05 ~]# &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Original boot files with the CentOS 7.1 userland ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[root@armdaq05 ~]# blkid&lt;br /&gt;
/dev/mmcblk0p1: SEC_TYPE=&amp;quot;msdos&amp;quot; LABEL=&amp;quot;boot&amp;quot; UUID=&amp;quot;70F7-FA1D&amp;quot; TYPE=&amp;quot;vfat&amp;quot; &lt;br /&gt;
/dev/mmcblk0p2: LABEL=&amp;quot;el7&amp;quot; UUID=&amp;quot;0ca625c5-8db1-4f78-a9fd-e6cce04f399e&amp;quot; TYPE=&amp;quot;ext4&amp;quot; &lt;br /&gt;
/dev/mmcblk0: PTTYPE=&amp;quot;dos&amp;quot; &lt;br /&gt;
[root@armdaq05 ~]# &lt;br /&gt;
[root@armdaq05 ~]# fdisk -l&lt;br /&gt;
&lt;br /&gt;
Disk /dev/mmcblk0: 31.4 GB, 31439454208 bytes, 61405184 sectors&lt;br /&gt;
Units = sectors of 1 * 512 = 512 bytes&lt;br /&gt;
Sector size (logical/physical): 512 bytes / 512 bytes&lt;br /&gt;
I/O size (minimum/optimal): 512 bytes / 512 bytes&lt;br /&gt;
Disk label type: dos&lt;br /&gt;
Disk identifier: 0x5a7089a1&lt;br /&gt;
&lt;br /&gt;
        Device Boot      Start         End      Blocks   Id  System&lt;br /&gt;
/dev/mmcblk0p1            8192      137215       64512    c  W95 FAT32 (LBA)&lt;br /&gt;
/dev/mmcblk0p2          137216     2713599     1288192   83  Linux&lt;br /&gt;
[root@armdaq05 ~]# &lt;br /&gt;
[root@armdaq05 ~]# df -kl&lt;br /&gt;
Filesystem     1K-blocks    Used Available Use% Mounted on&lt;br /&gt;
/dev/root        1235136 1029272    125072  90% /&lt;br /&gt;
devtmpfs          469536       0    469536   0% /dev&lt;br /&gt;
tmpfs             473868       0    473868   0% /dev/shm&lt;br /&gt;
tmpfs             473868   29964    443904   7% /run&lt;br /&gt;
tmpfs             473868       0    473868   0% /sys/fs/cgroup&lt;br /&gt;
tmpfs              94776       0     94776   0% /run/user/0&lt;br /&gt;
/dev/mmcblk0p1     64456   21192     43264  33% /mnt/tmp&lt;br /&gt;
[root@armdaq05 ~]# &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Install Boot files ==&lt;br /&gt;
&lt;br /&gt;
Original boot files are in /daq/daqshare/olchansk/RPI3/bootfs&lt;br /&gt;
&lt;br /&gt;
* use 32GB micro-SD flash&lt;br /&gt;
* connect to USB-to-SD flash adapter, plug into linux computer&lt;br /&gt;
* login as root&lt;br /&gt;
* identify the /dev/sdXXX device corresponding to target media: use &amp;quot;fdisk -l&amp;quot;, look for a 32GB disk with a single MS-DOS partition&lt;br /&gt;
* ensure the partitions of /dev/sdXXX are not mounted, use &amp;quot;df -kl&amp;quot; and umount /dev/sdXXX1, etc.&lt;br /&gt;
* run &amp;quot;fdisk /dev/sdXXX&amp;quot;&lt;br /&gt;
* create MSDOS partition table: command &amp;quot;o&amp;quot;&lt;br /&gt;
* create first partition 64Mbytes: command &amp;quot;n&amp;quot;, primary &amp;quot;p&amp;quot;, first sector &amp;quot;&amp;lt;enter&amp;gt;&amp;quot;, last sector: &amp;quot;+64M&amp;quot;&lt;br /&gt;
* set partition type &amp;quot;C&amp;quot;: command &amp;quot;t&amp;quot;, partition 1 is selected automatically, hex code &amp;quot;c&amp;quot;&lt;br /&gt;
* mark bootable: command &amp;quot;a&amp;quot;, partition 1 is selected automatically&lt;br /&gt;
* confirm correct layout: command &amp;quot;p&amp;quot;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Disk /dev/sde: 31.1 GB, 31104958464 bytes, 60751872 sectors&lt;br /&gt;
   Device Boot      Start         End      Blocks   Id  System&lt;br /&gt;
/dev/sde1   *        2048      133119       65536    c  W95 FAT32 (LBA)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* save new partition table: command &amp;quot;w&amp;quot;, there should be no messages other than &amp;quot;syncing disks&amp;quot;&lt;br /&gt;
* mkfs.msdos /dev/sdXXX1&lt;br /&gt;
* mkdir -p /mnt/tmp&lt;br /&gt;
* mount /dev/sdXXX1 /mnt/tmp, cd /mnt/tmp&lt;br /&gt;
* rsync -av /daq/daqshare/olchansk/RPI3/bootfs/ .&lt;br /&gt;
* sync&lt;br /&gt;
* select boot method:&lt;br /&gt;
** cp cmdline-mmcblk.txt cmdline.txt ### to boot from SD flash&lt;br /&gt;
** cp cmdline-nfsroot.txt cmdline.txt ### to boot from network (dhcp and nfsroot)&lt;br /&gt;
* sync&lt;br /&gt;
* cd /; umount /mnt/tmp&lt;br /&gt;
* eject /dev/sdXXX&lt;br /&gt;
* try to boot from the SD flash - on HDMI video, should see Linux kernel boot all the way to a panic on failure to mount rootfs.&lt;br /&gt;
&lt;br /&gt;
== Install CentOS7 rootfs image ==&lt;br /&gt;
&lt;br /&gt;
* use bootable 32GB micro-SD flash&lt;br /&gt;
* connect and identify /dev/sdXXX same as above&lt;br /&gt;
* ensure all partitions are unmounted, same as above&lt;br /&gt;
* create second partion of maximum size:&lt;br /&gt;
* fdisk /dev/sdXXX&lt;br /&gt;
* command &amp;quot;n&amp;quot;, &amp;quot;p&amp;quot;, enter, enter&lt;br /&gt;
* command &amp;quot;p&amp;quot; to see the layout:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Disk /dev/sde: 31.1 GB, 31104958464 bytes, 60751872 sectors&lt;br /&gt;
   Device Boot      Start         End      Blocks   Id  System&lt;br /&gt;
/dev/sde1   *        2048      133119       65536    c  W95 FAT32 (LBA)&lt;br /&gt;
/dev/sde2          133120    60751871    30309376   83  Linux&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* command &amp;quot;w&amp;quot; to save the changes&lt;br /&gt;
* if it complains about &amp;quot;Device or resource busy&amp;quot;:&lt;br /&gt;
** eject /dev/sdXXX&lt;br /&gt;
** remove it from usb adapter&lt;br /&gt;
** connect to usb adapter and identify device again, same as above&lt;br /&gt;
* ls -l /dev/sdXXX* to see there are two partitions &amp;quot;1&amp;quot; and &amp;quot;2&amp;quot;&lt;br /&gt;
* mkfs.ext4 /dev/sdXXX2&lt;br /&gt;
* mkdir -p /mnt/tmp&lt;br /&gt;
* mount /dev/sdXXX2 /mnt/tmp, cd /mnt/tmp&lt;br /&gt;
* rsync -av /ladd/data0/backup.os/armdaq06/ .&lt;br /&gt;
* e2label /dev/sdXXX2 el7&lt;br /&gt;
* sync&lt;br /&gt;
* cd /; umount /mnt/tmp&lt;br /&gt;
* eject /dev/sdXXX&lt;br /&gt;
* try to boot, should boot all the way to the login prompt.&lt;br /&gt;
&lt;br /&gt;
== Setup Python i2c tools ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
su - root&lt;br /&gt;
yum install python-setuptools.noarch&lt;br /&gt;
yum install python-cffi&lt;br /&gt;
yum install python-devel&lt;br /&gt;
cd git&lt;br /&gt;
git clone https://github.com/bivab/smbus-cffi.git&lt;br /&gt;
cd smbus-cffi&lt;br /&gt;
python setup.py install&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Enable i2c drivers ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
(already done) edit boot config.txt, uncomment &amp;quot;dtparam=i2c_arm=on&amp;quot; and &amp;quot;dtparam=i2c1=on&amp;quot;, reboot&lt;br /&gt;
echo modprobe i2c-dev &amp;gt;&amp;gt; /etc/rc.local&lt;br /&gt;
echo modprobe i2c_bcm2708 &amp;gt;&amp;gt; /etc/rc.local&lt;br /&gt;
ls -l /dev/i2c*&lt;br /&gt;
i2cdetect -l&lt;br /&gt;
i2cdetect 1&lt;br /&gt;
echo chmod a+wr /dev/i2c* &amp;gt;&amp;gt; /etc/rc.local&lt;br /&gt;
reboot, run i2cdetect again.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Script for creating boot files ==&lt;br /&gt;
&lt;br /&gt;
~olchansk/git/scripts/clone/boot_rpi3.perl&lt;br /&gt;
&lt;br /&gt;
= Raspbian OS =&lt;br /&gt;
&lt;br /&gt;
Recommended RaspberryPi OS is &amp;quot;Raspbian&amp;quot;. Current version is:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Raspbian Buster Lite&lt;br /&gt;
Version:February 2020&lt;br /&gt;
Release date:2020-02-13&lt;br /&gt;
Kernel version:4.19&lt;br /&gt;
Size:434 MB&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Identification and important packages:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@raspberrypi:~# uname -a&lt;br /&gt;
Linux raspberrypi 4.19.97-v7+ #1294 SMP Thu Jan 30 13:15:58 GMT 2020 armv7l GNU/Linux&lt;br /&gt;
root@raspberrypi:~# gcc -v&lt;br /&gt;
gcc version 8.3.0 (Raspbian 8.3.0-6+rpi1) &lt;br /&gt;
root@raspberrypi:~# python --version&lt;br /&gt;
Python 2.7.16&lt;br /&gt;
root@raspberrypi:~# python3 --version&lt;br /&gt;
Python 3.7.3&lt;br /&gt;
root@raspberrypi:~# cmake --version&lt;br /&gt;
cmake version 3.13.4&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* download here https://www.raspberrypi.org/downloads/raspbian/&lt;br /&gt;
* unzip, dd to a 32GB SDflash card&lt;br /&gt;
* insert card into RPi3, power up, it will boot into login prompt&lt;br /&gt;
* default user: pi, password: raspbian, login change default password, install ssh keys for user pi and user root.&lt;br /&gt;
* change default keyboard layout from UK (with the pound key): vi /etc/default/keyboard, set XKBLAYOUT=&amp;quot;us&amp;quot;&lt;br /&gt;
* change default locale from UK to &amp;quot;C&amp;quot; (en_US.UTF8 does not seem to be available): vi /etc/default/locale, set LANG=C.UTF-8&lt;br /&gt;
* enable ssh server: apt-get install openssh-server, systemctl enable sshd.service, systemctl start sshd.service&lt;br /&gt;
* reboot: shutdown -r now&lt;br /&gt;
* RJ45 ethernet network will autoconfigure by DHCP, ssh pi@... and root@... should work&lt;br /&gt;
* login as root, install missing packages:&lt;br /&gt;
** apt-get update&lt;br /&gt;
** apt-get install git emacs xemacs21 cmake&lt;br /&gt;
&lt;br /&gt;
== Create Custom Images ==&lt;br /&gt;
The official tool used raspberrypi.org is available here: https://github.com/RPi-Distro/pi-gen&lt;br /&gt;
&lt;br /&gt;
It is working out of the box with Debian bullseye. The tool is built around [https://wiki.debian.org/Debootstrap debootstrap], all packages are pulled from http://archive.raspbian.org/ (not the official debian repos!).&lt;br /&gt;
&lt;br /&gt;
The user has to provide a config file named &amp;quot;config&amp;quot; in the root directory. For instance:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
IMG_NAME=MVM_GUI_TRIUMF &lt;br /&gt;
RELEASE=buster&lt;br /&gt;
DEPLOY_ZIP=0&lt;br /&gt;
USE_QEMU=0&lt;br /&gt;
LOCALE_DEFAULT=en_CA.UTF-8&lt;br /&gt;
TARGET_HOSTNAME=mvm_gui&lt;br /&gt;
KEYBOARD_KEYMAP=ca&lt;br /&gt;
KEYBOARD_LAYOUT=&amp;quot;English (US)&amp;quot;&lt;br /&gt;
TIMEZONE_DEFAULT=&amp;quot;America/Vancouver&amp;quot;&lt;br /&gt;
FIRST_USER_NAME=&amp;quot;mvm&amp;quot; &lt;br /&gt;
FIRST_USER_PASS=&amp;quot;gui&amp;quot;&lt;br /&gt;
ENABLE_SSH=0&lt;br /&gt;
STAGE_LIST=&amp;quot;stage1 stage2 stage3 stage4&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To build the image, simply run ./build.sh and wait.&lt;br /&gt;
&lt;br /&gt;
=== Concrete example ===&lt;br /&gt;
Let&#039;s build an image tailored to the MVM GUI. The assumes the user is running Debian bullseye&lt;br /&gt;
&lt;br /&gt;
Install dependencies:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo apt install coreutils quilt parted qemu-user-static debootstrap zerofree zip \&lt;br /&gt;
dosfstools bsdtar libcap2-bin grep rsync xz-utils file git curl bc&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Clone the TRIUMF repo:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
git clone git@gitlab.triumf.ca:bvelghe/pi-gen.git --single-branch slim-raspbian-buster&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Run:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo ./build.sh&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Wait ... the images will be saved in the deploy directory.&lt;br /&gt;
&lt;br /&gt;
= GPIO =&lt;br /&gt;
&lt;br /&gt;
* apt-get install wiringpi&lt;br /&gt;
* gpio readall&lt;br /&gt;
* gpio mode 24 output&lt;br /&gt;
* gpio write 24 1&lt;br /&gt;
* gpio write 24 0&lt;br /&gt;
&lt;br /&gt;
= SPI =&lt;br /&gt;
&lt;br /&gt;
* if there is no /dev/spidev0.0 and /dev/spidev0.1, edit /boot/config.txt, uncomment dtparam=spi=on, reboot&lt;br /&gt;
* CS pins are:&lt;br /&gt;
** CE0 is J8 pin 24 (GPIO8) is /dev/spidev0,0&lt;br /&gt;
** CE1 is J8 pin 26 (GPIO7) is /dev/spidev0,1&lt;br /&gt;
&lt;br /&gt;
= I2C =&lt;br /&gt;
&lt;br /&gt;
* if there is no /dev/i2c*, edit /boot/config.txt, uncomment &amp;quot;dtparam=i2c_arm=on&amp;quot;, reboot&lt;br /&gt;
* apt-get install python-smbus i2c-tools&lt;br /&gt;
* i2cdetect -y 1 ### found device at address 0x70:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
     0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f&lt;br /&gt;
00:          -- -- -- -- -- -- -- -- -- -- -- -- -- &lt;br /&gt;
10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- &lt;br /&gt;
20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- &lt;br /&gt;
30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- &lt;br /&gt;
40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- &lt;br /&gt;
50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- &lt;br /&gt;
60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- &lt;br /&gt;
70: 70 -- -- -- -- -- -- --                         &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= WiFi and Bluetooth =&lt;br /&gt;
The WiFi and Bluetooth interfaces can be disabled in the boot/config.txt. As a side effect, the [http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.ddi0183g/index.html PL011] UART is re-routed to the GPIOs 14 and 15. By default, the UART is used by the BT modem.&lt;br /&gt;
&lt;br /&gt;
One has to disable the BT modem initialization service to avoid conflicts.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl disable hciuart&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note: there is a second &amp;quot;MiniUART&amp;quot; aviabale on the Rpi, but its fonctionally are very limited. See https://www.raspberrypi.org/documentation/configuration/uart.md   &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# Disables the Bluetooth device (also restores UART0/ttyAMA0 to GPIOs 14 and 15).&lt;br /&gt;
dtoverlay=disable-bt&lt;br /&gt;
dtoverlay=disable-wifi&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= RS232 =&lt;br /&gt;
The Rpi3 has two serial interfaces (https://www.raspberrypi.org/documentation/configuration/uart.md). Levels are *3.3V*.&lt;br /&gt;
 &lt;br /&gt;
[[File:Rpi3 rs232 3 3v.jpg|thumb|Rpi3 RS233 3.3V wiring with a standard TTL-232R to USB serial cable (FTDI chip)]]&lt;br /&gt;
&lt;br /&gt;
= End =&lt;/div&gt;</summary>
		<author><name>Bvelghe</name></author>
	</entry>
	<entry>
		<id>https://daq00.triumf.ca/DaqWiki/index.php?title=RPI&amp;diff=2733</id>
		<title>RPI</title>
		<link rel="alternate" type="text/html" href="https://daq00.triumf.ca/DaqWiki/index.php?title=RPI&amp;diff=2733"/>
		<updated>2020-04-20T20:05:35Z</updated>

		<summary type="html">&lt;p&gt;Bvelghe: Add a note about the BT modem init. service&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Raspberry Pi3 =&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
&lt;br /&gt;
* AAA&lt;br /&gt;
&lt;br /&gt;
== On-board hardware ==&lt;br /&gt;
&lt;br /&gt;
* AAA&lt;br /&gt;
&lt;br /&gt;
== Serial console ==&lt;br /&gt;
&lt;br /&gt;
there is no useful serial console&lt;br /&gt;
&lt;br /&gt;
== Benchmarks ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[root@armdaq05 ~]# uname -a&lt;br /&gt;
Linux armdaq05.triumf.ca 4.4.21-v7+ #911 SMP Thu Sep 15 14:22:38 BST 2016 armv7l armv7l armv7l GNU/Linux&lt;br /&gt;
[root@armdaq05 ~]# cat /proc/cpuinfo &lt;br /&gt;
processor	: 0&lt;br /&gt;
model name	: ARMv7 Processor rev 4 (v7l)&lt;br /&gt;
BogoMIPS	: 38.40&lt;br /&gt;
Features	: half thumb fastmult vfp edsp neon vfpv3 tls vfpv4 idiva idivt vfpd32 lpae evtstrm crc32 &lt;br /&gt;
CPU implementer	: 0x41&lt;br /&gt;
CPU architecture: 7&lt;br /&gt;
CPU variant	: 0x0&lt;br /&gt;
CPU part	: 0xd03&lt;br /&gt;
CPU revision	: 4&lt;br /&gt;
&lt;br /&gt;
processor	: 1&lt;br /&gt;
model name	: ARMv7 Processor rev 4 (v7l)&lt;br /&gt;
BogoMIPS	: 38.40&lt;br /&gt;
Features	: half thumb fastmult vfp edsp neon vfpv3 tls vfpv4 idiva idivt vfpd32 lpae evtstrm crc32 &lt;br /&gt;
CPU implementer	: 0x41&lt;br /&gt;
CPU architecture: 7&lt;br /&gt;
CPU variant	: 0x0&lt;br /&gt;
CPU part	: 0xd03&lt;br /&gt;
CPU revision	: 4&lt;br /&gt;
&lt;br /&gt;
processor	: 2&lt;br /&gt;
model name	: ARMv7 Processor rev 4 (v7l)&lt;br /&gt;
BogoMIPS	: 38.40&lt;br /&gt;
Features	: half thumb fastmult vfp edsp neon vfpv3 tls vfpv4 idiva idivt vfpd32 lpae evtstrm crc32 &lt;br /&gt;
CPU implementer	: 0x41&lt;br /&gt;
CPU architecture: 7&lt;br /&gt;
CPU variant	: 0x0&lt;br /&gt;
CPU part	: 0xd03&lt;br /&gt;
CPU revision	: 4&lt;br /&gt;
&lt;br /&gt;
processor	: 3&lt;br /&gt;
model name	: ARMv7 Processor rev 4 (v7l)&lt;br /&gt;
BogoMIPS	: 38.40&lt;br /&gt;
Features	: half thumb fastmult vfp edsp neon vfpv3 tls vfpv4 idiva idivt vfpd32 lpae evtstrm crc32 &lt;br /&gt;
CPU implementer	: 0x41&lt;br /&gt;
CPU architecture: 7&lt;br /&gt;
CPU variant	: 0x0&lt;br /&gt;
CPU part	: 0xd03&lt;br /&gt;
CPU revision	: 4&lt;br /&gt;
&lt;br /&gt;
Hardware	: BCM2709&lt;br /&gt;
Revision	: a22082&lt;br /&gt;
Serial		: 00000000852ec765&lt;br /&gt;
[root@armdaq05 ~]# &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[root@armdaq05 ~]# ./memcpy_arm &lt;br /&gt;
memcpy       1 KiBytes:    710 MB/sec&lt;br /&gt;
memcpy       2 KiBytes:   1037 MB/sec&lt;br /&gt;
memcpy       4 KiBytes:   1340 MB/sec&lt;br /&gt;
memcpy       8 KiBytes:   1572 MB/sec&lt;br /&gt;
memcpy      16 KiBytes:   1703 MB/sec&lt;br /&gt;
memcpy      32 KiBytes:   2010 MB/sec&lt;br /&gt;
memcpy      64 KiBytes:   1780 MB/sec&lt;br /&gt;
memcpy     128 KiBytes:   1808 MB/sec&lt;br /&gt;
memcpy     256 KiBytes:   1421 MB/sec&lt;br /&gt;
memcpy     512 KiBytes:    971 MB/sec&lt;br /&gt;
memcpy    1024 KiBytes:    862 MB/sec&lt;br /&gt;
memcpy    2048 KiBytes:    824 MB/sec&lt;br /&gt;
memcpy    4096 KiBytes:    862 MB/sec&lt;br /&gt;
memcpy    8192 KiBytes:    817 MB/sec&lt;br /&gt;
memcpy   16384 KiBytes:    797 MB/sec&lt;br /&gt;
memcpy   32768 KiBytes:    767 MB/sec&lt;br /&gt;
memcpy   65536 KiBytes:    765 MB/sec&lt;br /&gt;
memcpy  131072 KiBytes:    766 MB/sec&lt;br /&gt;
[root@armdaq05 ~]# &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Original boot files with the CentOS 7.1 userland ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[root@armdaq05 ~]# blkid&lt;br /&gt;
/dev/mmcblk0p1: SEC_TYPE=&amp;quot;msdos&amp;quot; LABEL=&amp;quot;boot&amp;quot; UUID=&amp;quot;70F7-FA1D&amp;quot; TYPE=&amp;quot;vfat&amp;quot; &lt;br /&gt;
/dev/mmcblk0p2: LABEL=&amp;quot;el7&amp;quot; UUID=&amp;quot;0ca625c5-8db1-4f78-a9fd-e6cce04f399e&amp;quot; TYPE=&amp;quot;ext4&amp;quot; &lt;br /&gt;
/dev/mmcblk0: PTTYPE=&amp;quot;dos&amp;quot; &lt;br /&gt;
[root@armdaq05 ~]# &lt;br /&gt;
[root@armdaq05 ~]# fdisk -l&lt;br /&gt;
&lt;br /&gt;
Disk /dev/mmcblk0: 31.4 GB, 31439454208 bytes, 61405184 sectors&lt;br /&gt;
Units = sectors of 1 * 512 = 512 bytes&lt;br /&gt;
Sector size (logical/physical): 512 bytes / 512 bytes&lt;br /&gt;
I/O size (minimum/optimal): 512 bytes / 512 bytes&lt;br /&gt;
Disk label type: dos&lt;br /&gt;
Disk identifier: 0x5a7089a1&lt;br /&gt;
&lt;br /&gt;
        Device Boot      Start         End      Blocks   Id  System&lt;br /&gt;
/dev/mmcblk0p1            8192      137215       64512    c  W95 FAT32 (LBA)&lt;br /&gt;
/dev/mmcblk0p2          137216     2713599     1288192   83  Linux&lt;br /&gt;
[root@armdaq05 ~]# &lt;br /&gt;
[root@armdaq05 ~]# df -kl&lt;br /&gt;
Filesystem     1K-blocks    Used Available Use% Mounted on&lt;br /&gt;
/dev/root        1235136 1029272    125072  90% /&lt;br /&gt;
devtmpfs          469536       0    469536   0% /dev&lt;br /&gt;
tmpfs             473868       0    473868   0% /dev/shm&lt;br /&gt;
tmpfs             473868   29964    443904   7% /run&lt;br /&gt;
tmpfs             473868       0    473868   0% /sys/fs/cgroup&lt;br /&gt;
tmpfs              94776       0     94776   0% /run/user/0&lt;br /&gt;
/dev/mmcblk0p1     64456   21192     43264  33% /mnt/tmp&lt;br /&gt;
[root@armdaq05 ~]# &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Install Boot files ==&lt;br /&gt;
&lt;br /&gt;
Original boot files are in /daq/daqshare/olchansk/RPI3/bootfs&lt;br /&gt;
&lt;br /&gt;
* use 32GB micro-SD flash&lt;br /&gt;
* connect to USB-to-SD flash adapter, plug into linux computer&lt;br /&gt;
* login as root&lt;br /&gt;
* identify the /dev/sdXXX device corresponding to target media: use &amp;quot;fdisk -l&amp;quot;, look for a 32GB disk with a single MS-DOS partition&lt;br /&gt;
* ensure the partitions of /dev/sdXXX are not mounted, use &amp;quot;df -kl&amp;quot; and umount /dev/sdXXX1, etc.&lt;br /&gt;
* run &amp;quot;fdisk /dev/sdXXX&amp;quot;&lt;br /&gt;
* create MSDOS partition table: command &amp;quot;o&amp;quot;&lt;br /&gt;
* create first partition 64Mbytes: command &amp;quot;n&amp;quot;, primary &amp;quot;p&amp;quot;, first sector &amp;quot;&amp;lt;enter&amp;gt;&amp;quot;, last sector: &amp;quot;+64M&amp;quot;&lt;br /&gt;
* set partition type &amp;quot;C&amp;quot;: command &amp;quot;t&amp;quot;, partition 1 is selected automatically, hex code &amp;quot;c&amp;quot;&lt;br /&gt;
* mark bootable: command &amp;quot;a&amp;quot;, partition 1 is selected automatically&lt;br /&gt;
* confirm correct layout: command &amp;quot;p&amp;quot;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Disk /dev/sde: 31.1 GB, 31104958464 bytes, 60751872 sectors&lt;br /&gt;
   Device Boot      Start         End      Blocks   Id  System&lt;br /&gt;
/dev/sde1   *        2048      133119       65536    c  W95 FAT32 (LBA)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* save new partition table: command &amp;quot;w&amp;quot;, there should be no messages other than &amp;quot;syncing disks&amp;quot;&lt;br /&gt;
* mkfs.msdos /dev/sdXXX1&lt;br /&gt;
* mkdir -p /mnt/tmp&lt;br /&gt;
* mount /dev/sdXXX1 /mnt/tmp, cd /mnt/tmp&lt;br /&gt;
* rsync -av /daq/daqshare/olchansk/RPI3/bootfs/ .&lt;br /&gt;
* sync&lt;br /&gt;
* select boot method:&lt;br /&gt;
** cp cmdline-mmcblk.txt cmdline.txt ### to boot from SD flash&lt;br /&gt;
** cp cmdline-nfsroot.txt cmdline.txt ### to boot from network (dhcp and nfsroot)&lt;br /&gt;
* sync&lt;br /&gt;
* cd /; umount /mnt/tmp&lt;br /&gt;
* eject /dev/sdXXX&lt;br /&gt;
* try to boot from the SD flash - on HDMI video, should see Linux kernel boot all the way to a panic on failure to mount rootfs.&lt;br /&gt;
&lt;br /&gt;
== Install CentOS7 rootfs image ==&lt;br /&gt;
&lt;br /&gt;
* use bootable 32GB micro-SD flash&lt;br /&gt;
* connect and identify /dev/sdXXX same as above&lt;br /&gt;
* ensure all partitions are unmounted, same as above&lt;br /&gt;
* create second partion of maximum size:&lt;br /&gt;
* fdisk /dev/sdXXX&lt;br /&gt;
* command &amp;quot;n&amp;quot;, &amp;quot;p&amp;quot;, enter, enter&lt;br /&gt;
* command &amp;quot;p&amp;quot; to see the layout:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Disk /dev/sde: 31.1 GB, 31104958464 bytes, 60751872 sectors&lt;br /&gt;
   Device Boot      Start         End      Blocks   Id  System&lt;br /&gt;
/dev/sde1   *        2048      133119       65536    c  W95 FAT32 (LBA)&lt;br /&gt;
/dev/sde2          133120    60751871    30309376   83  Linux&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* command &amp;quot;w&amp;quot; to save the changes&lt;br /&gt;
* if it complains about &amp;quot;Device or resource busy&amp;quot;:&lt;br /&gt;
** eject /dev/sdXXX&lt;br /&gt;
** remove it from usb adapter&lt;br /&gt;
** connect to usb adapter and identify device again, same as above&lt;br /&gt;
* ls -l /dev/sdXXX* to see there are two partitions &amp;quot;1&amp;quot; and &amp;quot;2&amp;quot;&lt;br /&gt;
* mkfs.ext4 /dev/sdXXX2&lt;br /&gt;
* mkdir -p /mnt/tmp&lt;br /&gt;
* mount /dev/sdXXX2 /mnt/tmp, cd /mnt/tmp&lt;br /&gt;
* rsync -av /ladd/data0/backup.os/armdaq06/ .&lt;br /&gt;
* e2label /dev/sdXXX2 el7&lt;br /&gt;
* sync&lt;br /&gt;
* cd /; umount /mnt/tmp&lt;br /&gt;
* eject /dev/sdXXX&lt;br /&gt;
* try to boot, should boot all the way to the login prompt.&lt;br /&gt;
&lt;br /&gt;
== Setup Python i2c tools ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
su - root&lt;br /&gt;
yum install python-setuptools.noarch&lt;br /&gt;
yum install python-cffi&lt;br /&gt;
yum install python-devel&lt;br /&gt;
cd git&lt;br /&gt;
git clone https://github.com/bivab/smbus-cffi.git&lt;br /&gt;
cd smbus-cffi&lt;br /&gt;
python setup.py install&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Enable i2c drivers ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
(already done) edit boot config.txt, uncomment &amp;quot;dtparam=i2c_arm=on&amp;quot; and &amp;quot;dtparam=i2c1=on&amp;quot;, reboot&lt;br /&gt;
echo modprobe i2c-dev &amp;gt;&amp;gt; /etc/rc.local&lt;br /&gt;
echo modprobe i2c_bcm2708 &amp;gt;&amp;gt; /etc/rc.local&lt;br /&gt;
ls -l /dev/i2c*&lt;br /&gt;
i2cdetect -l&lt;br /&gt;
i2cdetect 1&lt;br /&gt;
echo chmod a+wr /dev/i2c* &amp;gt;&amp;gt; /etc/rc.local&lt;br /&gt;
reboot, run i2cdetect again.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Script for creating boot files ==&lt;br /&gt;
&lt;br /&gt;
~olchansk/git/scripts/clone/boot_rpi3.perl&lt;br /&gt;
&lt;br /&gt;
= Raspbian OS =&lt;br /&gt;
&lt;br /&gt;
Recommended RaspberryPi OS is &amp;quot;Raspbian&amp;quot;. Current version is:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Raspbian Buster Lite&lt;br /&gt;
Version:February 2020&lt;br /&gt;
Release date:2020-02-13&lt;br /&gt;
Kernel version:4.19&lt;br /&gt;
Size:434 MB&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Identification and important packages:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@raspberrypi:~# uname -a&lt;br /&gt;
Linux raspberrypi 4.19.97-v7+ #1294 SMP Thu Jan 30 13:15:58 GMT 2020 armv7l GNU/Linux&lt;br /&gt;
root@raspberrypi:~# gcc -v&lt;br /&gt;
gcc version 8.3.0 (Raspbian 8.3.0-6+rpi1) &lt;br /&gt;
root@raspberrypi:~# python --version&lt;br /&gt;
Python 2.7.16&lt;br /&gt;
root@raspberrypi:~# python3 --version&lt;br /&gt;
Python 3.7.3&lt;br /&gt;
root@raspberrypi:~# cmake --version&lt;br /&gt;
cmake version 3.13.4&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* download here https://www.raspberrypi.org/downloads/raspbian/&lt;br /&gt;
* unzip, dd to a 32GB SDflash card&lt;br /&gt;
* insert card into RPi3, power up, it will boot into login prompt&lt;br /&gt;
* default user: pi, password: raspbian, login change default password, install ssh keys for user pi and user root.&lt;br /&gt;
* change default keyboard layout from UK (with the pound key): vi /etc/default/keyboard, set XKBLAYOUT=&amp;quot;us&amp;quot;&lt;br /&gt;
* change default locale from UK to &amp;quot;C&amp;quot; (en_US.UTF8 does not seem to be available): vi /etc/default/locale, set LANG=C.UTF-8&lt;br /&gt;
* enable ssh server: apt-get install openssh-server, systemctl enable sshd.service, systemctl start sshd.service&lt;br /&gt;
* reboot: shutdown -r now&lt;br /&gt;
* RJ45 ethernet network will autoconfigure by DHCP, ssh pi@... and root@... should work&lt;br /&gt;
* login as root, install missing packages:&lt;br /&gt;
** apt-get update&lt;br /&gt;
** apt-get install git emacs xemacs21 cmake&lt;br /&gt;
&lt;br /&gt;
== Create custom images ==&lt;br /&gt;
The official tool used raspberrypi.org is available here: https://github.com/RPi-Distro/pi-gen&lt;br /&gt;
&lt;br /&gt;
It is working out of the box with Debian bullseye. The tool is built around [https://wiki.debian.org/Debootstrap debootstrap], all packages are pulled from http://archive.raspbian.org/ (not the official debian repos!).&lt;br /&gt;
&lt;br /&gt;
The user has to provide a config file named &amp;quot;config&amp;quot; in the root directory. A example is provided below:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
IMG_NAME=MVM_GUI_TRIUMF &lt;br /&gt;
RELEASE=buster&lt;br /&gt;
DEPLOY_ZIP=0&lt;br /&gt;
USE_QEMU=0&lt;br /&gt;
LOCALE_DEFAULT=en_CA.UTF-8&lt;br /&gt;
TARGET_HOSTNAME=mvm_gui&lt;br /&gt;
KEYBOARD_KEYMAP=ca&lt;br /&gt;
KEYBOARD_LAYOUT=&amp;quot;English (US)&amp;quot;&lt;br /&gt;
TIMEZONE_DEFAULT=&amp;quot;America/Vancouver&amp;quot;&lt;br /&gt;
FIRST_USER_NAME=&amp;quot;mvm&amp;quot; &lt;br /&gt;
FIRST_USER_PASS=&amp;quot;gui&amp;quot;&lt;br /&gt;
ENABLE_SSH=0&lt;br /&gt;
STAGE_LIST=&amp;quot;stage1 stage2 stage3 stage4&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To build the image, simply run ./build.sh and wait.&lt;br /&gt;
&lt;br /&gt;
= GPIO =&lt;br /&gt;
&lt;br /&gt;
* apt-get install wiringpi&lt;br /&gt;
* gpio readall&lt;br /&gt;
* gpio mode 24 output&lt;br /&gt;
* gpio write 24 1&lt;br /&gt;
* gpio write 24 0&lt;br /&gt;
&lt;br /&gt;
= SPI =&lt;br /&gt;
&lt;br /&gt;
* if there is no /dev/spidev0.0 and /dev/spidev0.1, edit /boot/config.txt, uncomment dtparam=spi=on, reboot&lt;br /&gt;
* CS pins are:&lt;br /&gt;
** CE0 is J8 pin 24 (GPIO8) is /dev/spidev0,0&lt;br /&gt;
** CE1 is J8 pin 26 (GPIO7) is /dev/spidev0,1&lt;br /&gt;
&lt;br /&gt;
= I2C =&lt;br /&gt;
&lt;br /&gt;
* if there is no /dev/i2c*, edit /boot/config.txt, uncomment &amp;quot;dtparam=i2c_arm=on&amp;quot;, reboot&lt;br /&gt;
* apt-get install python-smbus i2c-tools&lt;br /&gt;
* i2cdetect -y 1 ### found device at address 0x70:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
     0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f&lt;br /&gt;
00:          -- -- -- -- -- -- -- -- -- -- -- -- -- &lt;br /&gt;
10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- &lt;br /&gt;
20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- &lt;br /&gt;
30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- &lt;br /&gt;
40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- &lt;br /&gt;
50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- &lt;br /&gt;
60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- &lt;br /&gt;
70: 70 -- -- -- -- -- -- --                         &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= WiFi and Bluetooth =&lt;br /&gt;
The WiFi and Bluetooth interfaces can be disabled in the boot/config.txt. As a side effect, the [http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.ddi0183g/index.html PL011] UART is re-routed to the GPIOs 14 and 15. By default, the UART is used by the BT modem.&lt;br /&gt;
&lt;br /&gt;
One has to disable the BT modem initialization service to avoid conflicts.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl disable hciuart&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note: there is a second &amp;quot;MiniUART&amp;quot; aviabale on the Rpi, but its fonctionally are very limited. See https://www.raspberrypi.org/documentation/configuration/uart.md   &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# Disables the Bluetooth device (also restores UART0/ttyAMA0 to GPIOs 14 and 15).&lt;br /&gt;
dtoverlay=disable-bt&lt;br /&gt;
dtoverlay=disable-wifi&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= RS232 =&lt;br /&gt;
The Rpi3 has two serial interfaces (https://www.raspberrypi.org/documentation/configuration/uart.md). Levels are *3.3V*.&lt;br /&gt;
 &lt;br /&gt;
[[File:Rpi3 rs232 3 3v.jpg|thumb|Rpi3 RS233 3.3V wiring with a standard TTL-232R to USB serial cable (FTDI chip)]]&lt;br /&gt;
&lt;br /&gt;
= End =&lt;/div&gt;</summary>
		<author><name>Bvelghe</name></author>
	</entry>
	<entry>
		<id>https://daq00.triumf.ca/DaqWiki/index.php?title=RPI&amp;diff=2732</id>
		<title>RPI</title>
		<link rel="alternate" type="text/html" href="https://daq00.triumf.ca/DaqWiki/index.php?title=RPI&amp;diff=2732"/>
		<updated>2020-04-20T19:25:57Z</updated>

		<summary type="html">&lt;p&gt;Bvelghe: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Raspberry Pi3 =&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
&lt;br /&gt;
* AAA&lt;br /&gt;
&lt;br /&gt;
== On-board hardware ==&lt;br /&gt;
&lt;br /&gt;
* AAA&lt;br /&gt;
&lt;br /&gt;
== Serial console ==&lt;br /&gt;
&lt;br /&gt;
there is no useful serial console&lt;br /&gt;
&lt;br /&gt;
== Benchmarks ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[root@armdaq05 ~]# uname -a&lt;br /&gt;
Linux armdaq05.triumf.ca 4.4.21-v7+ #911 SMP Thu Sep 15 14:22:38 BST 2016 armv7l armv7l armv7l GNU/Linux&lt;br /&gt;
[root@armdaq05 ~]# cat /proc/cpuinfo &lt;br /&gt;
processor	: 0&lt;br /&gt;
model name	: ARMv7 Processor rev 4 (v7l)&lt;br /&gt;
BogoMIPS	: 38.40&lt;br /&gt;
Features	: half thumb fastmult vfp edsp neon vfpv3 tls vfpv4 idiva idivt vfpd32 lpae evtstrm crc32 &lt;br /&gt;
CPU implementer	: 0x41&lt;br /&gt;
CPU architecture: 7&lt;br /&gt;
CPU variant	: 0x0&lt;br /&gt;
CPU part	: 0xd03&lt;br /&gt;
CPU revision	: 4&lt;br /&gt;
&lt;br /&gt;
processor	: 1&lt;br /&gt;
model name	: ARMv7 Processor rev 4 (v7l)&lt;br /&gt;
BogoMIPS	: 38.40&lt;br /&gt;
Features	: half thumb fastmult vfp edsp neon vfpv3 tls vfpv4 idiva idivt vfpd32 lpae evtstrm crc32 &lt;br /&gt;
CPU implementer	: 0x41&lt;br /&gt;
CPU architecture: 7&lt;br /&gt;
CPU variant	: 0x0&lt;br /&gt;
CPU part	: 0xd03&lt;br /&gt;
CPU revision	: 4&lt;br /&gt;
&lt;br /&gt;
processor	: 2&lt;br /&gt;
model name	: ARMv7 Processor rev 4 (v7l)&lt;br /&gt;
BogoMIPS	: 38.40&lt;br /&gt;
Features	: half thumb fastmult vfp edsp neon vfpv3 tls vfpv4 idiva idivt vfpd32 lpae evtstrm crc32 &lt;br /&gt;
CPU implementer	: 0x41&lt;br /&gt;
CPU architecture: 7&lt;br /&gt;
CPU variant	: 0x0&lt;br /&gt;
CPU part	: 0xd03&lt;br /&gt;
CPU revision	: 4&lt;br /&gt;
&lt;br /&gt;
processor	: 3&lt;br /&gt;
model name	: ARMv7 Processor rev 4 (v7l)&lt;br /&gt;
BogoMIPS	: 38.40&lt;br /&gt;
Features	: half thumb fastmult vfp edsp neon vfpv3 tls vfpv4 idiva idivt vfpd32 lpae evtstrm crc32 &lt;br /&gt;
CPU implementer	: 0x41&lt;br /&gt;
CPU architecture: 7&lt;br /&gt;
CPU variant	: 0x0&lt;br /&gt;
CPU part	: 0xd03&lt;br /&gt;
CPU revision	: 4&lt;br /&gt;
&lt;br /&gt;
Hardware	: BCM2709&lt;br /&gt;
Revision	: a22082&lt;br /&gt;
Serial		: 00000000852ec765&lt;br /&gt;
[root@armdaq05 ~]# &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[root@armdaq05 ~]# ./memcpy_arm &lt;br /&gt;
memcpy       1 KiBytes:    710 MB/sec&lt;br /&gt;
memcpy       2 KiBytes:   1037 MB/sec&lt;br /&gt;
memcpy       4 KiBytes:   1340 MB/sec&lt;br /&gt;
memcpy       8 KiBytes:   1572 MB/sec&lt;br /&gt;
memcpy      16 KiBytes:   1703 MB/sec&lt;br /&gt;
memcpy      32 KiBytes:   2010 MB/sec&lt;br /&gt;
memcpy      64 KiBytes:   1780 MB/sec&lt;br /&gt;
memcpy     128 KiBytes:   1808 MB/sec&lt;br /&gt;
memcpy     256 KiBytes:   1421 MB/sec&lt;br /&gt;
memcpy     512 KiBytes:    971 MB/sec&lt;br /&gt;
memcpy    1024 KiBytes:    862 MB/sec&lt;br /&gt;
memcpy    2048 KiBytes:    824 MB/sec&lt;br /&gt;
memcpy    4096 KiBytes:    862 MB/sec&lt;br /&gt;
memcpy    8192 KiBytes:    817 MB/sec&lt;br /&gt;
memcpy   16384 KiBytes:    797 MB/sec&lt;br /&gt;
memcpy   32768 KiBytes:    767 MB/sec&lt;br /&gt;
memcpy   65536 KiBytes:    765 MB/sec&lt;br /&gt;
memcpy  131072 KiBytes:    766 MB/sec&lt;br /&gt;
[root@armdaq05 ~]# &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Original boot files with the CentOS 7.1 userland ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[root@armdaq05 ~]# blkid&lt;br /&gt;
/dev/mmcblk0p1: SEC_TYPE=&amp;quot;msdos&amp;quot; LABEL=&amp;quot;boot&amp;quot; UUID=&amp;quot;70F7-FA1D&amp;quot; TYPE=&amp;quot;vfat&amp;quot; &lt;br /&gt;
/dev/mmcblk0p2: LABEL=&amp;quot;el7&amp;quot; UUID=&amp;quot;0ca625c5-8db1-4f78-a9fd-e6cce04f399e&amp;quot; TYPE=&amp;quot;ext4&amp;quot; &lt;br /&gt;
/dev/mmcblk0: PTTYPE=&amp;quot;dos&amp;quot; &lt;br /&gt;
[root@armdaq05 ~]# &lt;br /&gt;
[root@armdaq05 ~]# fdisk -l&lt;br /&gt;
&lt;br /&gt;
Disk /dev/mmcblk0: 31.4 GB, 31439454208 bytes, 61405184 sectors&lt;br /&gt;
Units = sectors of 1 * 512 = 512 bytes&lt;br /&gt;
Sector size (logical/physical): 512 bytes / 512 bytes&lt;br /&gt;
I/O size (minimum/optimal): 512 bytes / 512 bytes&lt;br /&gt;
Disk label type: dos&lt;br /&gt;
Disk identifier: 0x5a7089a1&lt;br /&gt;
&lt;br /&gt;
        Device Boot      Start         End      Blocks   Id  System&lt;br /&gt;
/dev/mmcblk0p1            8192      137215       64512    c  W95 FAT32 (LBA)&lt;br /&gt;
/dev/mmcblk0p2          137216     2713599     1288192   83  Linux&lt;br /&gt;
[root@armdaq05 ~]# &lt;br /&gt;
[root@armdaq05 ~]# df -kl&lt;br /&gt;
Filesystem     1K-blocks    Used Available Use% Mounted on&lt;br /&gt;
/dev/root        1235136 1029272    125072  90% /&lt;br /&gt;
devtmpfs          469536       0    469536   0% /dev&lt;br /&gt;
tmpfs             473868       0    473868   0% /dev/shm&lt;br /&gt;
tmpfs             473868   29964    443904   7% /run&lt;br /&gt;
tmpfs             473868       0    473868   0% /sys/fs/cgroup&lt;br /&gt;
tmpfs              94776       0     94776   0% /run/user/0&lt;br /&gt;
/dev/mmcblk0p1     64456   21192     43264  33% /mnt/tmp&lt;br /&gt;
[root@armdaq05 ~]# &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Install Boot files ==&lt;br /&gt;
&lt;br /&gt;
Original boot files are in /daq/daqshare/olchansk/RPI3/bootfs&lt;br /&gt;
&lt;br /&gt;
* use 32GB micro-SD flash&lt;br /&gt;
* connect to USB-to-SD flash adapter, plug into linux computer&lt;br /&gt;
* login as root&lt;br /&gt;
* identify the /dev/sdXXX device corresponding to target media: use &amp;quot;fdisk -l&amp;quot;, look for a 32GB disk with a single MS-DOS partition&lt;br /&gt;
* ensure the partitions of /dev/sdXXX are not mounted, use &amp;quot;df -kl&amp;quot; and umount /dev/sdXXX1, etc.&lt;br /&gt;
* run &amp;quot;fdisk /dev/sdXXX&amp;quot;&lt;br /&gt;
* create MSDOS partition table: command &amp;quot;o&amp;quot;&lt;br /&gt;
* create first partition 64Mbytes: command &amp;quot;n&amp;quot;, primary &amp;quot;p&amp;quot;, first sector &amp;quot;&amp;lt;enter&amp;gt;&amp;quot;, last sector: &amp;quot;+64M&amp;quot;&lt;br /&gt;
* set partition type &amp;quot;C&amp;quot;: command &amp;quot;t&amp;quot;, partition 1 is selected automatically, hex code &amp;quot;c&amp;quot;&lt;br /&gt;
* mark bootable: command &amp;quot;a&amp;quot;, partition 1 is selected automatically&lt;br /&gt;
* confirm correct layout: command &amp;quot;p&amp;quot;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Disk /dev/sde: 31.1 GB, 31104958464 bytes, 60751872 sectors&lt;br /&gt;
   Device Boot      Start         End      Blocks   Id  System&lt;br /&gt;
/dev/sde1   *        2048      133119       65536    c  W95 FAT32 (LBA)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* save new partition table: command &amp;quot;w&amp;quot;, there should be no messages other than &amp;quot;syncing disks&amp;quot;&lt;br /&gt;
* mkfs.msdos /dev/sdXXX1&lt;br /&gt;
* mkdir -p /mnt/tmp&lt;br /&gt;
* mount /dev/sdXXX1 /mnt/tmp, cd /mnt/tmp&lt;br /&gt;
* rsync -av /daq/daqshare/olchansk/RPI3/bootfs/ .&lt;br /&gt;
* sync&lt;br /&gt;
* select boot method:&lt;br /&gt;
** cp cmdline-mmcblk.txt cmdline.txt ### to boot from SD flash&lt;br /&gt;
** cp cmdline-nfsroot.txt cmdline.txt ### to boot from network (dhcp and nfsroot)&lt;br /&gt;
* sync&lt;br /&gt;
* cd /; umount /mnt/tmp&lt;br /&gt;
* eject /dev/sdXXX&lt;br /&gt;
* try to boot from the SD flash - on HDMI video, should see Linux kernel boot all the way to a panic on failure to mount rootfs.&lt;br /&gt;
&lt;br /&gt;
== Install CentOS7 rootfs image ==&lt;br /&gt;
&lt;br /&gt;
* use bootable 32GB micro-SD flash&lt;br /&gt;
* connect and identify /dev/sdXXX same as above&lt;br /&gt;
* ensure all partitions are unmounted, same as above&lt;br /&gt;
* create second partion of maximum size:&lt;br /&gt;
* fdisk /dev/sdXXX&lt;br /&gt;
* command &amp;quot;n&amp;quot;, &amp;quot;p&amp;quot;, enter, enter&lt;br /&gt;
* command &amp;quot;p&amp;quot; to see the layout:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Disk /dev/sde: 31.1 GB, 31104958464 bytes, 60751872 sectors&lt;br /&gt;
   Device Boot      Start         End      Blocks   Id  System&lt;br /&gt;
/dev/sde1   *        2048      133119       65536    c  W95 FAT32 (LBA)&lt;br /&gt;
/dev/sde2          133120    60751871    30309376   83  Linux&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* command &amp;quot;w&amp;quot; to save the changes&lt;br /&gt;
* if it complains about &amp;quot;Device or resource busy&amp;quot;:&lt;br /&gt;
** eject /dev/sdXXX&lt;br /&gt;
** remove it from usb adapter&lt;br /&gt;
** connect to usb adapter and identify device again, same as above&lt;br /&gt;
* ls -l /dev/sdXXX* to see there are two partitions &amp;quot;1&amp;quot; and &amp;quot;2&amp;quot;&lt;br /&gt;
* mkfs.ext4 /dev/sdXXX2&lt;br /&gt;
* mkdir -p /mnt/tmp&lt;br /&gt;
* mount /dev/sdXXX2 /mnt/tmp, cd /mnt/tmp&lt;br /&gt;
* rsync -av /ladd/data0/backup.os/armdaq06/ .&lt;br /&gt;
* e2label /dev/sdXXX2 el7&lt;br /&gt;
* sync&lt;br /&gt;
* cd /; umount /mnt/tmp&lt;br /&gt;
* eject /dev/sdXXX&lt;br /&gt;
* try to boot, should boot all the way to the login prompt.&lt;br /&gt;
&lt;br /&gt;
== Setup Python i2c tools ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
su - root&lt;br /&gt;
yum install python-setuptools.noarch&lt;br /&gt;
yum install python-cffi&lt;br /&gt;
yum install python-devel&lt;br /&gt;
cd git&lt;br /&gt;
git clone https://github.com/bivab/smbus-cffi.git&lt;br /&gt;
cd smbus-cffi&lt;br /&gt;
python setup.py install&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Enable i2c drivers ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
(already done) edit boot config.txt, uncomment &amp;quot;dtparam=i2c_arm=on&amp;quot; and &amp;quot;dtparam=i2c1=on&amp;quot;, reboot&lt;br /&gt;
echo modprobe i2c-dev &amp;gt;&amp;gt; /etc/rc.local&lt;br /&gt;
echo modprobe i2c_bcm2708 &amp;gt;&amp;gt; /etc/rc.local&lt;br /&gt;
ls -l /dev/i2c*&lt;br /&gt;
i2cdetect -l&lt;br /&gt;
i2cdetect 1&lt;br /&gt;
echo chmod a+wr /dev/i2c* &amp;gt;&amp;gt; /etc/rc.local&lt;br /&gt;
reboot, run i2cdetect again.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Script for creating boot files ==&lt;br /&gt;
&lt;br /&gt;
~olchansk/git/scripts/clone/boot_rpi3.perl&lt;br /&gt;
&lt;br /&gt;
= Raspbian OS =&lt;br /&gt;
&lt;br /&gt;
Recommended RaspberryPi OS is &amp;quot;Raspbian&amp;quot;. Current version is:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Raspbian Buster Lite&lt;br /&gt;
Version:February 2020&lt;br /&gt;
Release date:2020-02-13&lt;br /&gt;
Kernel version:4.19&lt;br /&gt;
Size:434 MB&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Identification and important packages:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@raspberrypi:~# uname -a&lt;br /&gt;
Linux raspberrypi 4.19.97-v7+ #1294 SMP Thu Jan 30 13:15:58 GMT 2020 armv7l GNU/Linux&lt;br /&gt;
root@raspberrypi:~# gcc -v&lt;br /&gt;
gcc version 8.3.0 (Raspbian 8.3.0-6+rpi1) &lt;br /&gt;
root@raspberrypi:~# python --version&lt;br /&gt;
Python 2.7.16&lt;br /&gt;
root@raspberrypi:~# python3 --version&lt;br /&gt;
Python 3.7.3&lt;br /&gt;
root@raspberrypi:~# cmake --version&lt;br /&gt;
cmake version 3.13.4&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* download here https://www.raspberrypi.org/downloads/raspbian/&lt;br /&gt;
* unzip, dd to a 32GB SDflash card&lt;br /&gt;
* insert card into RPi3, power up, it will boot into login prompt&lt;br /&gt;
* default user: pi, password: raspbian, login change default password, install ssh keys for user pi and user root.&lt;br /&gt;
* change default keyboard layout from UK (with the pound key): vi /etc/default/keyboard, set XKBLAYOUT=&amp;quot;us&amp;quot;&lt;br /&gt;
* change default locale from UK to &amp;quot;C&amp;quot; (en_US.UTF8 does not seem to be available): vi /etc/default/locale, set LANG=C.UTF-8&lt;br /&gt;
* enable ssh server: apt-get install openssh-server, systemctl enable sshd.service, systemctl start sshd.service&lt;br /&gt;
* reboot: shutdown -r now&lt;br /&gt;
* RJ45 ethernet network will autoconfigure by DHCP, ssh pi@... and root@... should work&lt;br /&gt;
* login as root, install missing packages:&lt;br /&gt;
** apt-get update&lt;br /&gt;
** apt-get install git emacs xemacs21 cmake&lt;br /&gt;
&lt;br /&gt;
== Create custom images ==&lt;br /&gt;
The official tool used raspberrypi.org is available here: https://github.com/RPi-Distro/pi-gen&lt;br /&gt;
&lt;br /&gt;
It is working out of the box with Debian bullseye. The tool is built around [https://wiki.debian.org/Debootstrap debootstrap], all packages are pulled from http://archive.raspbian.org/ (not the official debian repos!).&lt;br /&gt;
&lt;br /&gt;
The user has to provide a config file named &amp;quot;config&amp;quot; in the root directory. A example is provided below:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
IMG_NAME=MVM_GUI_TRIUMF &lt;br /&gt;
RELEASE=buster&lt;br /&gt;
DEPLOY_ZIP=0&lt;br /&gt;
USE_QEMU=0&lt;br /&gt;
LOCALE_DEFAULT=en_CA.UTF-8&lt;br /&gt;
TARGET_HOSTNAME=mvm_gui&lt;br /&gt;
KEYBOARD_KEYMAP=ca&lt;br /&gt;
KEYBOARD_LAYOUT=&amp;quot;English (US)&amp;quot;&lt;br /&gt;
TIMEZONE_DEFAULT=&amp;quot;America/Vancouver&amp;quot;&lt;br /&gt;
FIRST_USER_NAME=&amp;quot;mvm&amp;quot; &lt;br /&gt;
FIRST_USER_PASS=&amp;quot;gui&amp;quot;&lt;br /&gt;
ENABLE_SSH=0&lt;br /&gt;
STAGE_LIST=&amp;quot;stage1 stage2 stage3 stage4&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To build the image, simply run ./build.sh and wait.&lt;br /&gt;
&lt;br /&gt;
= GPIO =&lt;br /&gt;
&lt;br /&gt;
* apt-get install wiringpi&lt;br /&gt;
* gpio readall&lt;br /&gt;
* gpio mode 24 output&lt;br /&gt;
* gpio write 24 1&lt;br /&gt;
* gpio write 24 0&lt;br /&gt;
&lt;br /&gt;
= SPI =&lt;br /&gt;
&lt;br /&gt;
* if there is no /dev/spidev0.0 and /dev/spidev0.1, edit /boot/config.txt, uncomment dtparam=spi=on, reboot&lt;br /&gt;
* CS pins are:&lt;br /&gt;
** CE0 is J8 pin 24 (GPIO8) is /dev/spidev0,0&lt;br /&gt;
** CE1 is J8 pin 26 (GPIO7) is /dev/spidev0,1&lt;br /&gt;
&lt;br /&gt;
= I2C =&lt;br /&gt;
&lt;br /&gt;
* if there is no /dev/i2c*, edit /boot/config.txt, uncomment &amp;quot;dtparam=i2c_arm=on&amp;quot;, reboot&lt;br /&gt;
* apt-get install python-smbus i2c-tools&lt;br /&gt;
* i2cdetect -y 1 ### found device at address 0x70:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
     0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f&lt;br /&gt;
00:          -- -- -- -- -- -- -- -- -- -- -- -- -- &lt;br /&gt;
10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- &lt;br /&gt;
20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- &lt;br /&gt;
30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- &lt;br /&gt;
40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- &lt;br /&gt;
50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- &lt;br /&gt;
60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- &lt;br /&gt;
70: 70 -- -- -- -- -- -- --                         &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= WiFi and Bluetooth =&lt;br /&gt;
The WiFi and Bluetooth interfaces can be disabled in the boot/config.txt. As a side effect, the [http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.ddi0183g/index.html PL011] UART is re-routed to the GPIOs 14 and 15. By default, the UART is used by the BT modem.&lt;br /&gt;
&lt;br /&gt;
Note: there is a second &amp;quot;MiniUART&amp;quot; aviabale on the Rpi, but its fonctionally are very limited. See https://www.raspberrypi.org/documentation/configuration/uart.md   &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# Disables the Bluetooth device (also restores UART0/ttyAMA0 to GPIOs 14 and 15).&lt;br /&gt;
dtoverlay=disable-bt&lt;br /&gt;
dtoverlay=disable-wifi&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= RS232 =&lt;br /&gt;
The Rpi3 has two serial interfaces (https://www.raspberrypi.org/documentation/configuration/uart.md). Levels are *3.3V*.&lt;br /&gt;
 &lt;br /&gt;
[[File:Rpi3 rs232 3 3v.jpg|thumb|Rpi3 RS233 3.3V wiring with a standard TTL-232R to USB serial cable (FTDI chip)]]&lt;br /&gt;
&lt;br /&gt;
= End =&lt;/div&gt;</summary>
		<author><name>Bvelghe</name></author>
	</entry>
	<entry>
		<id>https://daq00.triumf.ca/DaqWiki/index.php?title=File:Rpi3_rs232_3_3v.jpg&amp;diff=2731</id>
		<title>File:Rpi3 rs232 3 3v.jpg</title>
		<link rel="alternate" type="text/html" href="https://daq00.triumf.ca/DaqWiki/index.php?title=File:Rpi3_rs232_3_3v.jpg&amp;diff=2731"/>
		<updated>2020-04-20T19:22:29Z</updated>

		<summary type="html">&lt;p&gt;Bvelghe: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Rpi3 RS323 wiring&lt;/div&gt;</summary>
		<author><name>Bvelghe</name></author>
	</entry>
	<entry>
		<id>https://daq00.triumf.ca/DaqWiki/index.php?title=RPI&amp;diff=2730</id>
		<title>RPI</title>
		<link rel="alternate" type="text/html" href="https://daq00.triumf.ca/DaqWiki/index.php?title=RPI&amp;diff=2730"/>
		<updated>2020-04-20T19:02:48Z</updated>

		<summary type="html">&lt;p&gt;Bvelghe: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Raspberry Pi3 =&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
&lt;br /&gt;
* AAA&lt;br /&gt;
&lt;br /&gt;
== On-board hardware ==&lt;br /&gt;
&lt;br /&gt;
* AAA&lt;br /&gt;
&lt;br /&gt;
== Serial console ==&lt;br /&gt;
&lt;br /&gt;
there is no useful serial console&lt;br /&gt;
&lt;br /&gt;
== Benchmarks ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[root@armdaq05 ~]# uname -a&lt;br /&gt;
Linux armdaq05.triumf.ca 4.4.21-v7+ #911 SMP Thu Sep 15 14:22:38 BST 2016 armv7l armv7l armv7l GNU/Linux&lt;br /&gt;
[root@armdaq05 ~]# cat /proc/cpuinfo &lt;br /&gt;
processor	: 0&lt;br /&gt;
model name	: ARMv7 Processor rev 4 (v7l)&lt;br /&gt;
BogoMIPS	: 38.40&lt;br /&gt;
Features	: half thumb fastmult vfp edsp neon vfpv3 tls vfpv4 idiva idivt vfpd32 lpae evtstrm crc32 &lt;br /&gt;
CPU implementer	: 0x41&lt;br /&gt;
CPU architecture: 7&lt;br /&gt;
CPU variant	: 0x0&lt;br /&gt;
CPU part	: 0xd03&lt;br /&gt;
CPU revision	: 4&lt;br /&gt;
&lt;br /&gt;
processor	: 1&lt;br /&gt;
model name	: ARMv7 Processor rev 4 (v7l)&lt;br /&gt;
BogoMIPS	: 38.40&lt;br /&gt;
Features	: half thumb fastmult vfp edsp neon vfpv3 tls vfpv4 idiva idivt vfpd32 lpae evtstrm crc32 &lt;br /&gt;
CPU implementer	: 0x41&lt;br /&gt;
CPU architecture: 7&lt;br /&gt;
CPU variant	: 0x0&lt;br /&gt;
CPU part	: 0xd03&lt;br /&gt;
CPU revision	: 4&lt;br /&gt;
&lt;br /&gt;
processor	: 2&lt;br /&gt;
model name	: ARMv7 Processor rev 4 (v7l)&lt;br /&gt;
BogoMIPS	: 38.40&lt;br /&gt;
Features	: half thumb fastmult vfp edsp neon vfpv3 tls vfpv4 idiva idivt vfpd32 lpae evtstrm crc32 &lt;br /&gt;
CPU implementer	: 0x41&lt;br /&gt;
CPU architecture: 7&lt;br /&gt;
CPU variant	: 0x0&lt;br /&gt;
CPU part	: 0xd03&lt;br /&gt;
CPU revision	: 4&lt;br /&gt;
&lt;br /&gt;
processor	: 3&lt;br /&gt;
model name	: ARMv7 Processor rev 4 (v7l)&lt;br /&gt;
BogoMIPS	: 38.40&lt;br /&gt;
Features	: half thumb fastmult vfp edsp neon vfpv3 tls vfpv4 idiva idivt vfpd32 lpae evtstrm crc32 &lt;br /&gt;
CPU implementer	: 0x41&lt;br /&gt;
CPU architecture: 7&lt;br /&gt;
CPU variant	: 0x0&lt;br /&gt;
CPU part	: 0xd03&lt;br /&gt;
CPU revision	: 4&lt;br /&gt;
&lt;br /&gt;
Hardware	: BCM2709&lt;br /&gt;
Revision	: a22082&lt;br /&gt;
Serial		: 00000000852ec765&lt;br /&gt;
[root@armdaq05 ~]# &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[root@armdaq05 ~]# ./memcpy_arm &lt;br /&gt;
memcpy       1 KiBytes:    710 MB/sec&lt;br /&gt;
memcpy       2 KiBytes:   1037 MB/sec&lt;br /&gt;
memcpy       4 KiBytes:   1340 MB/sec&lt;br /&gt;
memcpy       8 KiBytes:   1572 MB/sec&lt;br /&gt;
memcpy      16 KiBytes:   1703 MB/sec&lt;br /&gt;
memcpy      32 KiBytes:   2010 MB/sec&lt;br /&gt;
memcpy      64 KiBytes:   1780 MB/sec&lt;br /&gt;
memcpy     128 KiBytes:   1808 MB/sec&lt;br /&gt;
memcpy     256 KiBytes:   1421 MB/sec&lt;br /&gt;
memcpy     512 KiBytes:    971 MB/sec&lt;br /&gt;
memcpy    1024 KiBytes:    862 MB/sec&lt;br /&gt;
memcpy    2048 KiBytes:    824 MB/sec&lt;br /&gt;
memcpy    4096 KiBytes:    862 MB/sec&lt;br /&gt;
memcpy    8192 KiBytes:    817 MB/sec&lt;br /&gt;
memcpy   16384 KiBytes:    797 MB/sec&lt;br /&gt;
memcpy   32768 KiBytes:    767 MB/sec&lt;br /&gt;
memcpy   65536 KiBytes:    765 MB/sec&lt;br /&gt;
memcpy  131072 KiBytes:    766 MB/sec&lt;br /&gt;
[root@armdaq05 ~]# &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Original boot files with the CentOS 7.1 userland ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[root@armdaq05 ~]# blkid&lt;br /&gt;
/dev/mmcblk0p1: SEC_TYPE=&amp;quot;msdos&amp;quot; LABEL=&amp;quot;boot&amp;quot; UUID=&amp;quot;70F7-FA1D&amp;quot; TYPE=&amp;quot;vfat&amp;quot; &lt;br /&gt;
/dev/mmcblk0p2: LABEL=&amp;quot;el7&amp;quot; UUID=&amp;quot;0ca625c5-8db1-4f78-a9fd-e6cce04f399e&amp;quot; TYPE=&amp;quot;ext4&amp;quot; &lt;br /&gt;
/dev/mmcblk0: PTTYPE=&amp;quot;dos&amp;quot; &lt;br /&gt;
[root@armdaq05 ~]# &lt;br /&gt;
[root@armdaq05 ~]# fdisk -l&lt;br /&gt;
&lt;br /&gt;
Disk /dev/mmcblk0: 31.4 GB, 31439454208 bytes, 61405184 sectors&lt;br /&gt;
Units = sectors of 1 * 512 = 512 bytes&lt;br /&gt;
Sector size (logical/physical): 512 bytes / 512 bytes&lt;br /&gt;
I/O size (minimum/optimal): 512 bytes / 512 bytes&lt;br /&gt;
Disk label type: dos&lt;br /&gt;
Disk identifier: 0x5a7089a1&lt;br /&gt;
&lt;br /&gt;
        Device Boot      Start         End      Blocks   Id  System&lt;br /&gt;
/dev/mmcblk0p1            8192      137215       64512    c  W95 FAT32 (LBA)&lt;br /&gt;
/dev/mmcblk0p2          137216     2713599     1288192   83  Linux&lt;br /&gt;
[root@armdaq05 ~]# &lt;br /&gt;
[root@armdaq05 ~]# df -kl&lt;br /&gt;
Filesystem     1K-blocks    Used Available Use% Mounted on&lt;br /&gt;
/dev/root        1235136 1029272    125072  90% /&lt;br /&gt;
devtmpfs          469536       0    469536   0% /dev&lt;br /&gt;
tmpfs             473868       0    473868   0% /dev/shm&lt;br /&gt;
tmpfs             473868   29964    443904   7% /run&lt;br /&gt;
tmpfs             473868       0    473868   0% /sys/fs/cgroup&lt;br /&gt;
tmpfs              94776       0     94776   0% /run/user/0&lt;br /&gt;
/dev/mmcblk0p1     64456   21192     43264  33% /mnt/tmp&lt;br /&gt;
[root@armdaq05 ~]# &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Install Boot files ==&lt;br /&gt;
&lt;br /&gt;
Original boot files are in /daq/daqshare/olchansk/RPI3/bootfs&lt;br /&gt;
&lt;br /&gt;
* use 32GB micro-SD flash&lt;br /&gt;
* connect to USB-to-SD flash adapter, plug into linux computer&lt;br /&gt;
* login as root&lt;br /&gt;
* identify the /dev/sdXXX device corresponding to target media: use &amp;quot;fdisk -l&amp;quot;, look for a 32GB disk with a single MS-DOS partition&lt;br /&gt;
* ensure the partitions of /dev/sdXXX are not mounted, use &amp;quot;df -kl&amp;quot; and umount /dev/sdXXX1, etc.&lt;br /&gt;
* run &amp;quot;fdisk /dev/sdXXX&amp;quot;&lt;br /&gt;
* create MSDOS partition table: command &amp;quot;o&amp;quot;&lt;br /&gt;
* create first partition 64Mbytes: command &amp;quot;n&amp;quot;, primary &amp;quot;p&amp;quot;, first sector &amp;quot;&amp;lt;enter&amp;gt;&amp;quot;, last sector: &amp;quot;+64M&amp;quot;&lt;br /&gt;
* set partition type &amp;quot;C&amp;quot;: command &amp;quot;t&amp;quot;, partition 1 is selected automatically, hex code &amp;quot;c&amp;quot;&lt;br /&gt;
* mark bootable: command &amp;quot;a&amp;quot;, partition 1 is selected automatically&lt;br /&gt;
* confirm correct layout: command &amp;quot;p&amp;quot;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Disk /dev/sde: 31.1 GB, 31104958464 bytes, 60751872 sectors&lt;br /&gt;
   Device Boot      Start         End      Blocks   Id  System&lt;br /&gt;
/dev/sde1   *        2048      133119       65536    c  W95 FAT32 (LBA)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* save new partition table: command &amp;quot;w&amp;quot;, there should be no messages other than &amp;quot;syncing disks&amp;quot;&lt;br /&gt;
* mkfs.msdos /dev/sdXXX1&lt;br /&gt;
* mkdir -p /mnt/tmp&lt;br /&gt;
* mount /dev/sdXXX1 /mnt/tmp, cd /mnt/tmp&lt;br /&gt;
* rsync -av /daq/daqshare/olchansk/RPI3/bootfs/ .&lt;br /&gt;
* sync&lt;br /&gt;
* select boot method:&lt;br /&gt;
** cp cmdline-mmcblk.txt cmdline.txt ### to boot from SD flash&lt;br /&gt;
** cp cmdline-nfsroot.txt cmdline.txt ### to boot from network (dhcp and nfsroot)&lt;br /&gt;
* sync&lt;br /&gt;
* cd /; umount /mnt/tmp&lt;br /&gt;
* eject /dev/sdXXX&lt;br /&gt;
* try to boot from the SD flash - on HDMI video, should see Linux kernel boot all the way to a panic on failure to mount rootfs.&lt;br /&gt;
&lt;br /&gt;
== Install CentOS7 rootfs image ==&lt;br /&gt;
&lt;br /&gt;
* use bootable 32GB micro-SD flash&lt;br /&gt;
* connect and identify /dev/sdXXX same as above&lt;br /&gt;
* ensure all partitions are unmounted, same as above&lt;br /&gt;
* create second partion of maximum size:&lt;br /&gt;
* fdisk /dev/sdXXX&lt;br /&gt;
* command &amp;quot;n&amp;quot;, &amp;quot;p&amp;quot;, enter, enter&lt;br /&gt;
* command &amp;quot;p&amp;quot; to see the layout:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Disk /dev/sde: 31.1 GB, 31104958464 bytes, 60751872 sectors&lt;br /&gt;
   Device Boot      Start         End      Blocks   Id  System&lt;br /&gt;
/dev/sde1   *        2048      133119       65536    c  W95 FAT32 (LBA)&lt;br /&gt;
/dev/sde2          133120    60751871    30309376   83  Linux&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* command &amp;quot;w&amp;quot; to save the changes&lt;br /&gt;
* if it complains about &amp;quot;Device or resource busy&amp;quot;:&lt;br /&gt;
** eject /dev/sdXXX&lt;br /&gt;
** remove it from usb adapter&lt;br /&gt;
** connect to usb adapter and identify device again, same as above&lt;br /&gt;
* ls -l /dev/sdXXX* to see there are two partitions &amp;quot;1&amp;quot; and &amp;quot;2&amp;quot;&lt;br /&gt;
* mkfs.ext4 /dev/sdXXX2&lt;br /&gt;
* mkdir -p /mnt/tmp&lt;br /&gt;
* mount /dev/sdXXX2 /mnt/tmp, cd /mnt/tmp&lt;br /&gt;
* rsync -av /ladd/data0/backup.os/armdaq06/ .&lt;br /&gt;
* e2label /dev/sdXXX2 el7&lt;br /&gt;
* sync&lt;br /&gt;
* cd /; umount /mnt/tmp&lt;br /&gt;
* eject /dev/sdXXX&lt;br /&gt;
* try to boot, should boot all the way to the login prompt.&lt;br /&gt;
&lt;br /&gt;
== Setup Python i2c tools ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
su - root&lt;br /&gt;
yum install python-setuptools.noarch&lt;br /&gt;
yum install python-cffi&lt;br /&gt;
yum install python-devel&lt;br /&gt;
cd git&lt;br /&gt;
git clone https://github.com/bivab/smbus-cffi.git&lt;br /&gt;
cd smbus-cffi&lt;br /&gt;
python setup.py install&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Enable i2c drivers ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
(already done) edit boot config.txt, uncomment &amp;quot;dtparam=i2c_arm=on&amp;quot; and &amp;quot;dtparam=i2c1=on&amp;quot;, reboot&lt;br /&gt;
echo modprobe i2c-dev &amp;gt;&amp;gt; /etc/rc.local&lt;br /&gt;
echo modprobe i2c_bcm2708 &amp;gt;&amp;gt; /etc/rc.local&lt;br /&gt;
ls -l /dev/i2c*&lt;br /&gt;
i2cdetect -l&lt;br /&gt;
i2cdetect 1&lt;br /&gt;
echo chmod a+wr /dev/i2c* &amp;gt;&amp;gt; /etc/rc.local&lt;br /&gt;
reboot, run i2cdetect again.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Script for creating boot files ==&lt;br /&gt;
&lt;br /&gt;
~olchansk/git/scripts/clone/boot_rpi3.perl&lt;br /&gt;
&lt;br /&gt;
= Raspbian OS =&lt;br /&gt;
&lt;br /&gt;
Recommended RaspberryPi OS is &amp;quot;Raspbian&amp;quot;. Current version is:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Raspbian Buster Lite&lt;br /&gt;
Version:February 2020&lt;br /&gt;
Release date:2020-02-13&lt;br /&gt;
Kernel version:4.19&lt;br /&gt;
Size:434 MB&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Identification and important packages:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@raspberrypi:~# uname -a&lt;br /&gt;
Linux raspberrypi 4.19.97-v7+ #1294 SMP Thu Jan 30 13:15:58 GMT 2020 armv7l GNU/Linux&lt;br /&gt;
root@raspberrypi:~# gcc -v&lt;br /&gt;
gcc version 8.3.0 (Raspbian 8.3.0-6+rpi1) &lt;br /&gt;
root@raspberrypi:~# python --version&lt;br /&gt;
Python 2.7.16&lt;br /&gt;
root@raspberrypi:~# python3 --version&lt;br /&gt;
Python 3.7.3&lt;br /&gt;
root@raspberrypi:~# cmake --version&lt;br /&gt;
cmake version 3.13.4&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* download here https://www.raspberrypi.org/downloads/raspbian/&lt;br /&gt;
* unzip, dd to a 32GB SDflash card&lt;br /&gt;
* insert card into RPi3, power up, it will boot into login prompt&lt;br /&gt;
* default user: pi, password: raspbian, login change default password, install ssh keys for user pi and user root.&lt;br /&gt;
* change default keyboard layout from UK (with the pound key): vi /etc/default/keyboard, set XKBLAYOUT=&amp;quot;us&amp;quot;&lt;br /&gt;
* change default locale from UK to &amp;quot;C&amp;quot; (en_US.UTF8 does not seem to be available): vi /etc/default/locale, set LANG=C.UTF-8&lt;br /&gt;
* enable ssh server: apt-get install openssh-server, systemctl enable sshd.service, systemctl start sshd.service&lt;br /&gt;
* reboot: shutdown -r now&lt;br /&gt;
* RJ45 ethernet network will autoconfigure by DHCP, ssh pi@... and root@... should work&lt;br /&gt;
* login as root, install missing packages:&lt;br /&gt;
** apt-get update&lt;br /&gt;
** apt-get install git emacs xemacs21 cmake&lt;br /&gt;
&lt;br /&gt;
== Create custom images ==&lt;br /&gt;
The official tool used raspberrypi.org is available here: https://github.com/RPi-Distro/pi-gen&lt;br /&gt;
&lt;br /&gt;
It is working out of the box with Debian bullseye. The tool is built around [https://wiki.debian.org/Debootstrap debootstrap], all packages are pulled from http://archive.raspbian.org/ (not the official debian repos!).&lt;br /&gt;
&lt;br /&gt;
The user has to provide a config file named &amp;quot;config&amp;quot; in the root directory. A example is provided below:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
IMG_NAME=MVM_GUI_TRIUMF &lt;br /&gt;
RELEASE=buster&lt;br /&gt;
DEPLOY_ZIP=0&lt;br /&gt;
USE_QEMU=0&lt;br /&gt;
LOCALE_DEFAULT=en_CA.UTF-8&lt;br /&gt;
TARGET_HOSTNAME=mvm_gui&lt;br /&gt;
KEYBOARD_KEYMAP=ca&lt;br /&gt;
KEYBOARD_LAYOUT=&amp;quot;English (US)&amp;quot;&lt;br /&gt;
TIMEZONE_DEFAULT=&amp;quot;America/Vancouver&amp;quot;&lt;br /&gt;
FIRST_USER_NAME=&amp;quot;mvm&amp;quot; &lt;br /&gt;
FIRST_USER_PASS=&amp;quot;gui&amp;quot;&lt;br /&gt;
ENABLE_SSH=0&lt;br /&gt;
STAGE_LIST=&amp;quot;stage1 stage2 stage3 stage4&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To build the image, simply run ./build.sh and wait.&lt;br /&gt;
&lt;br /&gt;
= GPIO =&lt;br /&gt;
&lt;br /&gt;
* apt-get install wiringpi&lt;br /&gt;
* gpio readall&lt;br /&gt;
* gpio mode 24 output&lt;br /&gt;
* gpio write 24 1&lt;br /&gt;
* gpio write 24 0&lt;br /&gt;
&lt;br /&gt;
= SPI =&lt;br /&gt;
&lt;br /&gt;
* if there is no /dev/spidev0.0 and /dev/spidev0.1, edit /boot/config.txt, uncomment dtparam=spi=on, reboot&lt;br /&gt;
* CS pins are:&lt;br /&gt;
** CE0 is J8 pin 24 (GPIO8) is /dev/spidev0,0&lt;br /&gt;
** CE1 is J8 pin 26 (GPIO7) is /dev/spidev0,1&lt;br /&gt;
&lt;br /&gt;
= I2C =&lt;br /&gt;
&lt;br /&gt;
* if there is no /dev/i2c*, edit /boot/config.txt, uncomment &amp;quot;dtparam=i2c_arm=on&amp;quot;, reboot&lt;br /&gt;
* apt-get install python-smbus i2c-tools&lt;br /&gt;
* i2cdetect -y 1 ### found device at address 0x70:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
     0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f&lt;br /&gt;
00:          -- -- -- -- -- -- -- -- -- -- -- -- -- &lt;br /&gt;
10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- &lt;br /&gt;
20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- &lt;br /&gt;
30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- &lt;br /&gt;
40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- &lt;br /&gt;
50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- &lt;br /&gt;
60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- &lt;br /&gt;
70: 70 -- -- -- -- -- -- --                         &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= WiFi and Bluetooth =&lt;br /&gt;
The WiFi and Bluetooth interfaces can be disabled in the boot/config.txt. As a side effect, the [http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.ddi0183g/index.html PL011] UART is re-routed to the GPIOs 14 and 15. By default, the UART is used by the BT modem.&lt;br /&gt;
&lt;br /&gt;
Note: there is a second &amp;quot;MiniUART&amp;quot; aviabale on the Rpi, but its fonctionally are very limited. See https://www.raspberrypi.org/documentation/configuration/uart.md   &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# Disables the Bluetooth device (also restores UART0/ttyAMA0 to GPIOs 14 and 15).&lt;br /&gt;
dtoverlay=disable-bt&lt;br /&gt;
dtoverlay=disable-wifi&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= End =&lt;/div&gt;</summary>
		<author><name>Bvelghe</name></author>
	</entry>
	<entry>
		<id>https://daq00.triumf.ca/DaqWiki/index.php?title=RPI&amp;diff=2729</id>
		<title>RPI</title>
		<link rel="alternate" type="text/html" href="https://daq00.triumf.ca/DaqWiki/index.php?title=RPI&amp;diff=2729"/>
		<updated>2020-04-20T18:56:00Z</updated>

		<summary type="html">&lt;p&gt;Bvelghe: First iteration of a short pi-gen manual&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Raspberry Pi3 =&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
&lt;br /&gt;
* AAA&lt;br /&gt;
&lt;br /&gt;
== On-board hardware ==&lt;br /&gt;
&lt;br /&gt;
* AAA&lt;br /&gt;
&lt;br /&gt;
== Serial console ==&lt;br /&gt;
&lt;br /&gt;
there is no useful serial console&lt;br /&gt;
&lt;br /&gt;
== Benchmarks ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[root@armdaq05 ~]# uname -a&lt;br /&gt;
Linux armdaq05.triumf.ca 4.4.21-v7+ #911 SMP Thu Sep 15 14:22:38 BST 2016 armv7l armv7l armv7l GNU/Linux&lt;br /&gt;
[root@armdaq05 ~]# cat /proc/cpuinfo &lt;br /&gt;
processor	: 0&lt;br /&gt;
model name	: ARMv7 Processor rev 4 (v7l)&lt;br /&gt;
BogoMIPS	: 38.40&lt;br /&gt;
Features	: half thumb fastmult vfp edsp neon vfpv3 tls vfpv4 idiva idivt vfpd32 lpae evtstrm crc32 &lt;br /&gt;
CPU implementer	: 0x41&lt;br /&gt;
CPU architecture: 7&lt;br /&gt;
CPU variant	: 0x0&lt;br /&gt;
CPU part	: 0xd03&lt;br /&gt;
CPU revision	: 4&lt;br /&gt;
&lt;br /&gt;
processor	: 1&lt;br /&gt;
model name	: ARMv7 Processor rev 4 (v7l)&lt;br /&gt;
BogoMIPS	: 38.40&lt;br /&gt;
Features	: half thumb fastmult vfp edsp neon vfpv3 tls vfpv4 idiva idivt vfpd32 lpae evtstrm crc32 &lt;br /&gt;
CPU implementer	: 0x41&lt;br /&gt;
CPU architecture: 7&lt;br /&gt;
CPU variant	: 0x0&lt;br /&gt;
CPU part	: 0xd03&lt;br /&gt;
CPU revision	: 4&lt;br /&gt;
&lt;br /&gt;
processor	: 2&lt;br /&gt;
model name	: ARMv7 Processor rev 4 (v7l)&lt;br /&gt;
BogoMIPS	: 38.40&lt;br /&gt;
Features	: half thumb fastmult vfp edsp neon vfpv3 tls vfpv4 idiva idivt vfpd32 lpae evtstrm crc32 &lt;br /&gt;
CPU implementer	: 0x41&lt;br /&gt;
CPU architecture: 7&lt;br /&gt;
CPU variant	: 0x0&lt;br /&gt;
CPU part	: 0xd03&lt;br /&gt;
CPU revision	: 4&lt;br /&gt;
&lt;br /&gt;
processor	: 3&lt;br /&gt;
model name	: ARMv7 Processor rev 4 (v7l)&lt;br /&gt;
BogoMIPS	: 38.40&lt;br /&gt;
Features	: half thumb fastmult vfp edsp neon vfpv3 tls vfpv4 idiva idivt vfpd32 lpae evtstrm crc32 &lt;br /&gt;
CPU implementer	: 0x41&lt;br /&gt;
CPU architecture: 7&lt;br /&gt;
CPU variant	: 0x0&lt;br /&gt;
CPU part	: 0xd03&lt;br /&gt;
CPU revision	: 4&lt;br /&gt;
&lt;br /&gt;
Hardware	: BCM2709&lt;br /&gt;
Revision	: a22082&lt;br /&gt;
Serial		: 00000000852ec765&lt;br /&gt;
[root@armdaq05 ~]# &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[root@armdaq05 ~]# ./memcpy_arm &lt;br /&gt;
memcpy       1 KiBytes:    710 MB/sec&lt;br /&gt;
memcpy       2 KiBytes:   1037 MB/sec&lt;br /&gt;
memcpy       4 KiBytes:   1340 MB/sec&lt;br /&gt;
memcpy       8 KiBytes:   1572 MB/sec&lt;br /&gt;
memcpy      16 KiBytes:   1703 MB/sec&lt;br /&gt;
memcpy      32 KiBytes:   2010 MB/sec&lt;br /&gt;
memcpy      64 KiBytes:   1780 MB/sec&lt;br /&gt;
memcpy     128 KiBytes:   1808 MB/sec&lt;br /&gt;
memcpy     256 KiBytes:   1421 MB/sec&lt;br /&gt;
memcpy     512 KiBytes:    971 MB/sec&lt;br /&gt;
memcpy    1024 KiBytes:    862 MB/sec&lt;br /&gt;
memcpy    2048 KiBytes:    824 MB/sec&lt;br /&gt;
memcpy    4096 KiBytes:    862 MB/sec&lt;br /&gt;
memcpy    8192 KiBytes:    817 MB/sec&lt;br /&gt;
memcpy   16384 KiBytes:    797 MB/sec&lt;br /&gt;
memcpy   32768 KiBytes:    767 MB/sec&lt;br /&gt;
memcpy   65536 KiBytes:    765 MB/sec&lt;br /&gt;
memcpy  131072 KiBytes:    766 MB/sec&lt;br /&gt;
[root@armdaq05 ~]# &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Original boot files with the CentOS 7.1 userland ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[root@armdaq05 ~]# blkid&lt;br /&gt;
/dev/mmcblk0p1: SEC_TYPE=&amp;quot;msdos&amp;quot; LABEL=&amp;quot;boot&amp;quot; UUID=&amp;quot;70F7-FA1D&amp;quot; TYPE=&amp;quot;vfat&amp;quot; &lt;br /&gt;
/dev/mmcblk0p2: LABEL=&amp;quot;el7&amp;quot; UUID=&amp;quot;0ca625c5-8db1-4f78-a9fd-e6cce04f399e&amp;quot; TYPE=&amp;quot;ext4&amp;quot; &lt;br /&gt;
/dev/mmcblk0: PTTYPE=&amp;quot;dos&amp;quot; &lt;br /&gt;
[root@armdaq05 ~]# &lt;br /&gt;
[root@armdaq05 ~]# fdisk -l&lt;br /&gt;
&lt;br /&gt;
Disk /dev/mmcblk0: 31.4 GB, 31439454208 bytes, 61405184 sectors&lt;br /&gt;
Units = sectors of 1 * 512 = 512 bytes&lt;br /&gt;
Sector size (logical/physical): 512 bytes / 512 bytes&lt;br /&gt;
I/O size (minimum/optimal): 512 bytes / 512 bytes&lt;br /&gt;
Disk label type: dos&lt;br /&gt;
Disk identifier: 0x5a7089a1&lt;br /&gt;
&lt;br /&gt;
        Device Boot      Start         End      Blocks   Id  System&lt;br /&gt;
/dev/mmcblk0p1            8192      137215       64512    c  W95 FAT32 (LBA)&lt;br /&gt;
/dev/mmcblk0p2          137216     2713599     1288192   83  Linux&lt;br /&gt;
[root@armdaq05 ~]# &lt;br /&gt;
[root@armdaq05 ~]# df -kl&lt;br /&gt;
Filesystem     1K-blocks    Used Available Use% Mounted on&lt;br /&gt;
/dev/root        1235136 1029272    125072  90% /&lt;br /&gt;
devtmpfs          469536       0    469536   0% /dev&lt;br /&gt;
tmpfs             473868       0    473868   0% /dev/shm&lt;br /&gt;
tmpfs             473868   29964    443904   7% /run&lt;br /&gt;
tmpfs             473868       0    473868   0% /sys/fs/cgroup&lt;br /&gt;
tmpfs              94776       0     94776   0% /run/user/0&lt;br /&gt;
/dev/mmcblk0p1     64456   21192     43264  33% /mnt/tmp&lt;br /&gt;
[root@armdaq05 ~]# &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Install Boot files ==&lt;br /&gt;
&lt;br /&gt;
Original boot files are in /daq/daqshare/olchansk/RPI3/bootfs&lt;br /&gt;
&lt;br /&gt;
* use 32GB micro-SD flash&lt;br /&gt;
* connect to USB-to-SD flash adapter, plug into linux computer&lt;br /&gt;
* login as root&lt;br /&gt;
* identify the /dev/sdXXX device corresponding to target media: use &amp;quot;fdisk -l&amp;quot;, look for a 32GB disk with a single MS-DOS partition&lt;br /&gt;
* ensure the partitions of /dev/sdXXX are not mounted, use &amp;quot;df -kl&amp;quot; and umount /dev/sdXXX1, etc.&lt;br /&gt;
* run &amp;quot;fdisk /dev/sdXXX&amp;quot;&lt;br /&gt;
* create MSDOS partition table: command &amp;quot;o&amp;quot;&lt;br /&gt;
* create first partition 64Mbytes: command &amp;quot;n&amp;quot;, primary &amp;quot;p&amp;quot;, first sector &amp;quot;&amp;lt;enter&amp;gt;&amp;quot;, last sector: &amp;quot;+64M&amp;quot;&lt;br /&gt;
* set partition type &amp;quot;C&amp;quot;: command &amp;quot;t&amp;quot;, partition 1 is selected automatically, hex code &amp;quot;c&amp;quot;&lt;br /&gt;
* mark bootable: command &amp;quot;a&amp;quot;, partition 1 is selected automatically&lt;br /&gt;
* confirm correct layout: command &amp;quot;p&amp;quot;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Disk /dev/sde: 31.1 GB, 31104958464 bytes, 60751872 sectors&lt;br /&gt;
   Device Boot      Start         End      Blocks   Id  System&lt;br /&gt;
/dev/sde1   *        2048      133119       65536    c  W95 FAT32 (LBA)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* save new partition table: command &amp;quot;w&amp;quot;, there should be no messages other than &amp;quot;syncing disks&amp;quot;&lt;br /&gt;
* mkfs.msdos /dev/sdXXX1&lt;br /&gt;
* mkdir -p /mnt/tmp&lt;br /&gt;
* mount /dev/sdXXX1 /mnt/tmp, cd /mnt/tmp&lt;br /&gt;
* rsync -av /daq/daqshare/olchansk/RPI3/bootfs/ .&lt;br /&gt;
* sync&lt;br /&gt;
* select boot method:&lt;br /&gt;
** cp cmdline-mmcblk.txt cmdline.txt ### to boot from SD flash&lt;br /&gt;
** cp cmdline-nfsroot.txt cmdline.txt ### to boot from network (dhcp and nfsroot)&lt;br /&gt;
* sync&lt;br /&gt;
* cd /; umount /mnt/tmp&lt;br /&gt;
* eject /dev/sdXXX&lt;br /&gt;
* try to boot from the SD flash - on HDMI video, should see Linux kernel boot all the way to a panic on failure to mount rootfs.&lt;br /&gt;
&lt;br /&gt;
== Install CentOS7 rootfs image ==&lt;br /&gt;
&lt;br /&gt;
* use bootable 32GB micro-SD flash&lt;br /&gt;
* connect and identify /dev/sdXXX same as above&lt;br /&gt;
* ensure all partitions are unmounted, same as above&lt;br /&gt;
* create second partion of maximum size:&lt;br /&gt;
* fdisk /dev/sdXXX&lt;br /&gt;
* command &amp;quot;n&amp;quot;, &amp;quot;p&amp;quot;, enter, enter&lt;br /&gt;
* command &amp;quot;p&amp;quot; to see the layout:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Disk /dev/sde: 31.1 GB, 31104958464 bytes, 60751872 sectors&lt;br /&gt;
   Device Boot      Start         End      Blocks   Id  System&lt;br /&gt;
/dev/sde1   *        2048      133119       65536    c  W95 FAT32 (LBA)&lt;br /&gt;
/dev/sde2          133120    60751871    30309376   83  Linux&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* command &amp;quot;w&amp;quot; to save the changes&lt;br /&gt;
* if it complains about &amp;quot;Device or resource busy&amp;quot;:&lt;br /&gt;
** eject /dev/sdXXX&lt;br /&gt;
** remove it from usb adapter&lt;br /&gt;
** connect to usb adapter and identify device again, same as above&lt;br /&gt;
* ls -l /dev/sdXXX* to see there are two partitions &amp;quot;1&amp;quot; and &amp;quot;2&amp;quot;&lt;br /&gt;
* mkfs.ext4 /dev/sdXXX2&lt;br /&gt;
* mkdir -p /mnt/tmp&lt;br /&gt;
* mount /dev/sdXXX2 /mnt/tmp, cd /mnt/tmp&lt;br /&gt;
* rsync -av /ladd/data0/backup.os/armdaq06/ .&lt;br /&gt;
* e2label /dev/sdXXX2 el7&lt;br /&gt;
* sync&lt;br /&gt;
* cd /; umount /mnt/tmp&lt;br /&gt;
* eject /dev/sdXXX&lt;br /&gt;
* try to boot, should boot all the way to the login prompt.&lt;br /&gt;
&lt;br /&gt;
== Setup Python i2c tools ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
su - root&lt;br /&gt;
yum install python-setuptools.noarch&lt;br /&gt;
yum install python-cffi&lt;br /&gt;
yum install python-devel&lt;br /&gt;
cd git&lt;br /&gt;
git clone https://github.com/bivab/smbus-cffi.git&lt;br /&gt;
cd smbus-cffi&lt;br /&gt;
python setup.py install&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Enable i2c drivers ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
(already done) edit boot config.txt, uncomment &amp;quot;dtparam=i2c_arm=on&amp;quot; and &amp;quot;dtparam=i2c1=on&amp;quot;, reboot&lt;br /&gt;
echo modprobe i2c-dev &amp;gt;&amp;gt; /etc/rc.local&lt;br /&gt;
echo modprobe i2c_bcm2708 &amp;gt;&amp;gt; /etc/rc.local&lt;br /&gt;
ls -l /dev/i2c*&lt;br /&gt;
i2cdetect -l&lt;br /&gt;
i2cdetect 1&lt;br /&gt;
echo chmod a+wr /dev/i2c* &amp;gt;&amp;gt; /etc/rc.local&lt;br /&gt;
reboot, run i2cdetect again.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Script for creating boot files ==&lt;br /&gt;
&lt;br /&gt;
~olchansk/git/scripts/clone/boot_rpi3.perl&lt;br /&gt;
&lt;br /&gt;
= Raspbian OS =&lt;br /&gt;
&lt;br /&gt;
Recommended RaspberryPi OS is &amp;quot;Raspbian&amp;quot;. Current version is:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Raspbian Buster Lite&lt;br /&gt;
Version:February 2020&lt;br /&gt;
Release date:2020-02-13&lt;br /&gt;
Kernel version:4.19&lt;br /&gt;
Size:434 MB&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Identification and important packages:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@raspberrypi:~# uname -a&lt;br /&gt;
Linux raspberrypi 4.19.97-v7+ #1294 SMP Thu Jan 30 13:15:58 GMT 2020 armv7l GNU/Linux&lt;br /&gt;
root@raspberrypi:~# gcc -v&lt;br /&gt;
gcc version 8.3.0 (Raspbian 8.3.0-6+rpi1) &lt;br /&gt;
root@raspberrypi:~# python --version&lt;br /&gt;
Python 2.7.16&lt;br /&gt;
root@raspberrypi:~# python3 --version&lt;br /&gt;
Python 3.7.3&lt;br /&gt;
root@raspberrypi:~# cmake --version&lt;br /&gt;
cmake version 3.13.4&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* download here https://www.raspberrypi.org/downloads/raspbian/&lt;br /&gt;
* unzip, dd to a 32GB SDflash card&lt;br /&gt;
* insert card into RPi3, power up, it will boot into login prompt&lt;br /&gt;
* default user: pi, password: raspbian, login change default password, install ssh keys for user pi and user root.&lt;br /&gt;
* change default keyboard layout from UK (with the pound key): vi /etc/default/keyboard, set XKBLAYOUT=&amp;quot;us&amp;quot;&lt;br /&gt;
* change default locale from UK to &amp;quot;C&amp;quot; (en_US.UTF8 does not seem to be available): vi /etc/default/locale, set LANG=C.UTF-8&lt;br /&gt;
* enable ssh server: apt-get install openssh-server, systemctl enable sshd.service, systemctl start sshd.service&lt;br /&gt;
* reboot: shutdown -r now&lt;br /&gt;
* RJ45 ethernet network will autoconfigure by DHCP, ssh pi@... and root@... should work&lt;br /&gt;
* login as root, install missing packages:&lt;br /&gt;
** apt-get update&lt;br /&gt;
** apt-get install git emacs xemacs21 cmake&lt;br /&gt;
&lt;br /&gt;
== Create custom images ==&lt;br /&gt;
The official tool used raspberrypi.org is available here: https://github.com/RPi-Distro/pi-gen&lt;br /&gt;
&lt;br /&gt;
It is working out of the box with Debian bullseye. The tool is built around [https://wiki.debian.org/Debootstrap debootstrap], all packages are pulled from http://archive.raspbian.org/ (not the official debian repos!).&lt;br /&gt;
&lt;br /&gt;
The user has to provide a config file named &amp;quot;config&amp;quot; in the root directory. A example is provided below:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
IMG_NAME=MVM_GUI_TRIUMF &lt;br /&gt;
RELEASE=buster&lt;br /&gt;
DEPLOY_ZIP=0&lt;br /&gt;
USE_QEMU=0&lt;br /&gt;
LOCALE_DEFAULT=en_CA.UTF-8&lt;br /&gt;
TARGET_HOSTNAME=mvm_gui&lt;br /&gt;
KEYBOARD_KEYMAP=ca&lt;br /&gt;
KEYBOARD_LAYOUT=&amp;quot;English (US)&amp;quot;&lt;br /&gt;
TIMEZONE_DEFAULT=&amp;quot;America/Vancouver&amp;quot;&lt;br /&gt;
FIRST_USER_NAME=&amp;quot;mvm&amp;quot; &lt;br /&gt;
FIRST_USER_PASS=&amp;quot;gui&amp;quot;&lt;br /&gt;
ENABLE_SSH=0&lt;br /&gt;
STAGE_LIST=&amp;quot;stage1 stage2 stage3 stage4&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To build the image, simply run ./build.sh and wait.&lt;br /&gt;
&lt;br /&gt;
= GPIO =&lt;br /&gt;
&lt;br /&gt;
* apt-get install wiringpi&lt;br /&gt;
* gpio readall&lt;br /&gt;
* gpio mode 24 output&lt;br /&gt;
* gpio write 24 1&lt;br /&gt;
* gpio write 24 0&lt;br /&gt;
&lt;br /&gt;
= SPI =&lt;br /&gt;
&lt;br /&gt;
* if there is no /dev/spidev0.0 and /dev/spidev0.1, edit /boot/config.txt, uncomment dtparam=spi=on, reboot&lt;br /&gt;
* CS pins are:&lt;br /&gt;
** CE0 is J8 pin 24 (GPIO8) is /dev/spidev0,0&lt;br /&gt;
** CE1 is J8 pin 26 (GPIO7) is /dev/spidev0,1&lt;br /&gt;
&lt;br /&gt;
= I2C =&lt;br /&gt;
&lt;br /&gt;
* if there is no /dev/i2c*, edit /boot/config.txt, uncomment &amp;quot;dtparam=i2c_arm=on&amp;quot;, reboot&lt;br /&gt;
* apt-get install python-smbus i2c-tools&lt;br /&gt;
* i2cdetect -y 1 ### found device at address 0x70:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
     0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f&lt;br /&gt;
00:          -- -- -- -- -- -- -- -- -- -- -- -- -- &lt;br /&gt;
10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- &lt;br /&gt;
20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- &lt;br /&gt;
30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- &lt;br /&gt;
40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- &lt;br /&gt;
50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- &lt;br /&gt;
60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- &lt;br /&gt;
70: 70 -- -- -- -- -- -- --                         &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= End =&lt;/div&gt;</summary>
		<author><name>Bvelghe</name></author>
	</entry>
</feed>