Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.


Info

If you want to make changes to a RPI which is already set up, you have to remount the read-only filesystem.

  • Install Raspbian Lite. We currently use Debian 10 (Buster).
  • Change password by using

    :

    Code Block
    languagebash
    passwd pi


  • Activate SSH

    sudo systemctl enable ssh  and  sudo systemctl start

    Code Block
    languagebash
    sudo systemctl enable ssh
    sudo systemctl start ssh


  • Install and configure NTP
  • Install tmux

    : sudo apt install

    Code Block
    languagebash
     sudo apt install tmux


  • "Install" the RTI Connext libraries under /usr/local/lib/ by copying the arm-folder from the Main PC under opt/rti_connext_dds-6.0.0/lib/armv6vfphLinux3.xgcc4.7.2/. This can of course only be done after the ARM libraries have been installed on the Main Computer

It should look like this afterward:

Code Block
languagebash
pi@raspberrypi-06:~ $ find /usr/local/lib/rti_connext_dds-6.0.0/armv6vfphLinux3.xgcc4.7.2/

...


/usr/local/lib/rti_connext_dds-6.0.0/armv6vfphLinux3.xgcc4.7.2/

...


/usr/local/lib/rti_connext_dds-6.0.0/armv6vfphLinux3.xgcc4.7.2/libnddscppd.so

...


/usr/local/lib/rti_connext_dds-6.0.0/armv6vfphLinux3.xgcc4.7.2/libnddscd.so

...


/usr/local/lib/rti_connext_dds-6.0.0/armv6vfphLinux3.xgcc4.7.2/libnddstransporttcpzd.a

...


/usr/local/lib/rti_connext_dds-6.0.0/armv6vfphLinux3.xgcc4.7.2/libnddscpp2z.a

...


/usr/local/lib/rti_connext_dds-6.0.0/armv6vfphLinux3.xgcc4.7.2/librtidlcppz.a

...


/usr/local/lib/rti_connext_dds-6.0.0/armv6vfphLinux3.xgcc4.7.2/librtimonitoringd.so

...


/usr/local/lib/rti_connext_dds-6.0.0/armv6vfphLinux3.xgcc4.7.2/libnddstransporttcp.so

...


/usr/local/lib/rti_connext_dds-6.0.0/armv6vfphLinux3.xgcc4.7.2/libnddscpp2.so

...


/usr/local/lib/rti_connext_dds-6.0.0/armv6vfphLinux3.xgcc4.7.2/libnddscpp2d.so

...


/usr/local/lib/rti_connext_dds-6.0.0/armv6vfphLinux3.xgcc4.7.2/librtimonitoringz.a

...


/usr/local/lib/rti_connext_dds-6.0.0/armv6vfphLinux3.xgcc4.7.2/libnddstransporttcpd.so

...


/usr/local/lib/rti_connext_dds-6.0.0/armv6vfphLinux3.xgcc4.7.2/libnddscz.a

...


/usr/local/lib/rti_connext_dds-6.0.0/armv6vfphLinux3.xgcc4.7.2/libnddscppzd.a

...


/usr/local/lib/rti_connext_dds-6.0.0/armv6vfphLinux3.xgcc4.7.2/libnddsc.so

...


/usr/local/lib/rti_connext_dds-6.0.0/armv6vfphLinux3.xgcc4.7.2/libnddstransporttcpz.a

...


/usr/local/lib/rti_connext_dds-6.0.0/armv6vfphLinux3.xgcc4.7.2/librtidlcpp.so

...


/usr/local/lib/rti_connext_dds-6.0.0/armv6vfphLinux3.xgcc4.7.2/libnddscpp.so

...


/usr/local/lib/rti_connext_dds-6.0.0/armv6vfphLinux3.xgcc4.7.2/libnddscore.so

...


/usr/local/lib/rti_connext_dds-6.0.0/armv6vfphLinux3.xgcc4.7.2/librtimonitoringzd.a

...


/usr/local/lib/rti_connext_dds-6.0.0/armv6vfphLinux3.xgcc4.7.2/libnddscorez.a

...


/usr/local/lib/rti_connext_dds-6.0.0/armv6vfphLinux3.xgcc4.7.2/libnddscppz.a

...


/usr/local/lib/rti_connext_dds-6.0.0/armv6vfphLinux3.xgcc4.7.2/libnddscored.so

...


/usr/local/lib/rti_connext_dds-6.0.0/armv6vfphLinux3.xgcc4.7.2/librtidlcppd.so

...


/usr/local/lib/rti_connext_dds-6.0.0/armv6vfphLinux3.xgcc4.7.2/libnddsjava.so

...


/usr/local/lib/rti_connext_dds-6.0.0/armv6vfphLinux3.xgcc4.7.2/libnddscpp2zd.a

...


/usr/local/lib/rti_connext_dds-6.0.0/armv6vfphLinux3.xgcc4.7.2/libnddsczd.a

...


/usr/local/lib/rti_connext_dds-6.0.0/armv6vfphLinux3.xgcc4.7.2/libnddscorezd.a

...


/usr/local/lib/rti_connext_dds-6.0.0/armv6vfphLinux3.xgcc4.7.2/libnddsjavad.so

...


/usr/local/lib/rti_connext_dds-6.0.0/armv6vfphLinux3.xgcc4.7.2/librtimonitoring.so

...


/usr/local/lib/rti_connext_dds-6.0.0/armv6vfphLinux3.xgcc4.7.2/librtidlcz.a

...


/usr/local/lib/rti_connext_dds-6.0.0/armv6vfphLinux3.xgcc4.7.2/librtidlcppzd.a

...


/usr/local/lib/rti_connext_dds-6.0.0/armv6vfphLinux3.xgcc4.7.2/librtidlc.so

...


/usr/local/lib/rti_connext_dds-6.0.0/armv6vfphLinux3.xgcc4.7.2/librtidlcd.so

...


/usr/local/lib/rti_connext_dds-6.0.0/armv6vfphLinux3.xgcc4.7.2/librtidlczd.a

'Register' the Libraries

Make the libraries available. Insert /usr/local/lib/rti_connext_dds-6.0.0/armv6vfphLinux3.xgcc4.7.2 into /etc/ld.so.conf. Then run


Code Block
languagebash
sudo ldconfig

...

Configure Bootup Behaviour

...

Enable autostart, using sudo nano /etc/rc.local and insert

tmux

...

new-session

...

-d

...

-s

...

"bootloader_raspberry"

...

"bash

...

/root/bootloader_raspberry.bash"

NTP configuration
Anchor
RaspberryNTPConfig
RaspberryNTPConfig

See the NUC NTP-Configuration.

ID-Related Settings
Anchor
ID
ID

...

In order to make NTP working properly with a read-only filesystem, it is also necessary to copy the following file

Code Block
languagebash
cp /lib/systemd/system/ntp.service /etc/systemd/system/ntp.service

and to comment out PrivateTmp=true in

/etc/systemd/system/ntp.service


Info

If you need writing access to the file system, you can use (dependent on the folder you need access to)

Code Block
languagebash
sudo mount -o remount,rw /

...


sudo mount -o remount,rw /boot

to remount the system.

Applying RT-Patch

Because the vehicle needs to be real-time capable, a real-time patch (RT-Patch) should be applied to the underlying Linux Kernel.

...

It might happen that the system clock is not automatically synchronizing via NTP if it differs too much from the real-time. Firstly, take care that your timezone is set correctly:

Code Block
languagebash
sudo raspi-config

In the opening UI go to: 4 Localisation Options → I2 Change Time Zone → None of the above → UTC

Furthermore, you can force NTP to set the time once. Therefore, stop the service, force it, and restart it again :

Code Block
languagebash
sudo /etc/init.d/ntp stop

...


sudo ntpd -qg

...


sudo /etc/init.d/ntp start

Afterwards, NTP should synchronize automatically.

...

The vehicle Raspberry software is cross-compiled from the master PC. The build script git:software/vehicle_raspberry_firmware/build.bash creates an archive of the compiled software and other required files and publishes it via Apache. The bootloader_raspberry.bash autostart script on the Raspberry downloads and runs this software.

ARP Table Generation

Because unsuccessful ARP requests sometimes block communication a static ARP table is sometimes useful. To generate one one needs to switch on all participants, ping each one from the main PC and then output the arp table on the main pc with e.g. https://man7.org/linux/man-pages/man8/ip-neighbour.8.html (newer) or arp -a (old).
The info can then be used to feed a script that sets up the arp entries statically for the participants. Currently this is done in https://git.rwth-aachen.de/CPM/Project/Lab/software/-/blob/feature/fastdds/mid_level_controller/package/start.bash and the static arp table is part of the package.