The document summarizes Joseph Zuckerman's summer internship tasks, which included:
1. Configuring a Raspberry Pi with Network Time Protocol (NTP) using a GPS as the timing source and testing NTP client/server functionality on the local network.
2. Testing functionality and limits of C++11 and threading on a Zynq FPGA board.
3. Researching other topics like Precision Time Protocol (PTP) and USB filesystem compatibility.
4. Testing a pod controller and fixing Xterm display issues when connecting over SSH.
2. Tasks
I.Network Time Protocol with GPS
A.NTP Installation
B.GPSD Usage
C.GPS Configuration
D.Server/Client Network
II. Zynq Board Functionality Testing
A.C++11
B.Limits
C.Connecting to Network
D.Threading
E.Boost
III. Other Research Topics
A. PTP
B. USB Filesystems
IV. Pod Controller Testing
A. Testing MDF
B. Fixing Xterm Display
C. USB Investigation
V. Internship Experience
6. GPS Configuration
• Issues:
• GPS time-out after 5-10 minutes of running
• GPSD doesn’t reconnect with NTP after a time-out
• Find a more stable configuration for the GPS using GUI
• GPS has sensors and other options that are capable of
being turned on and off
• Also 3 different kinds of NMEA messages each with
options for sensors and other data for time and position
7. GPS Configuration - Settings
• Most of these options and messages were turned on
• Theory – too much data was being sent, overloading the
GPS, and causing it to time out
• Turned off all settings except those related to raw position
and time
8. GPS Configuration – NMEA Messages
• 3 kinds of NMEA messages
• GGA – latitude, longitude, altitude, time, and fix status
• RMC – latitude, longitude, date, time, speed, course, fix status
• ZDA – date and time
• To account for the settings update turned off everything except time and
position with GGA and RMC and time with ZDA
• Testing this configuration revealed an error regarding GGA, so those were
discarded, too
• Below configuration was decided on and various baud rates were tested to
find the most stable
• 19200 gave the most stable configuration, GPS could run for over an hour
without a time-out
9. GPS Configuration – PPS
• 4 options for a PPS signal
• Main Loop Start – 100 PPS
• Time Pulse Copy – 4PPS
• Visual Odometer – Pulse everytime GPS travels set distance
• Main Loop Divider – Can change number of pulses per second with a divider
• 100 = divider * Hz
• For 1 Hz, set divider = 100
10. NTP Server/Client Setup
• Setup an NTP server/client system across the GTRI network
• Used my computer as server and Will’s as the client
• GPS timing source for broadcast
• Setup required editing the ntp.conf file
• For Server:
broadcast 10.104.21.230 minpoll 4
• For client:
broadcastclient
server 10.104.21.230 minpoll 4 maxpoll 4 iburst
12. Zynq Board
• Getting Started
• SD
• SSH
• NFS
• C++
• Used Xilinx SDK to
cross compile code for
ARM
• SDK has Linux terminal
to communicate with
board
13. Zynq Board – C++11 and Limits
• Tested some basic elements of C++11
• Range-based for loop
• Smart pointers – shared pointers
• Tuples
• Maps
• Tested the limits of sizes of variables on the board
• Same output on my desktop and on Zynq Board
Size (Bytes) Zynq Board Desktop
Char 1 1
Short 2 2
Int 4 4
Long 4 4
Long Long 8 8
Double 8 8
Float 4 4
Pointer 4 4
14. Zynq Board – Connecting to Internet
• Board has a default IP address 192.168.42.50
• Use that address to communicate with the board
• Generated a static IP for the board
• Edited /etc/network/interfaces to update address, netmask, and gateway info
• ifconfig eth0 10.104.40.26 netmask 255.255.0.0
• Created /etc/resolv.conf to add DNS servers
• Allows FQDN formatting
Contents of interfaces Contents of resolv.conf
15. Zynq Board – Threading and Boost
• Threading
• Basic Hello World! Program using threading
• Threading code that worked on desktop, would not run on Zynq
• Trying to link to library that wasn’t on the board
• Solution: link to –pthread and statically link to –libstdc++
• Boost
• Installed boost and linked to boost libraries
• Ran simple code using boost features (e.g. Lambda expressions)
16. Other Research Topics
• PTP – Precision Time Protocol
• Requires hardware timestamping
• Incompatabilities between EXT4, FAT, and NTFS on USB
• Windows cannot read EXT4
17. Pod Controller
• Tested Mission Data File
• One script launches an Xterm window
• Unable to forward xterm over SSH
• Set DISPLAY = :0.0
• Login with ssh –X, OR
• SSH settings in /etc/ssh/ssh_config
• Turn on ForwardX11
• USB Interaction
• Does not automatically mount to /media/user
• 4 Ports
• 1 goes to /dev/sdb1
• 3 go to /dev/sdc1