Skip to content
Snippets Groups Projects
Commit 5be1adca authored by Jake Read's avatar Jake Read
Browse files

new hardware

parent feccfc8d
No related branches found
No related tags found
No related merge requests found
Showing
with 10336 additions and 5297 deletions
...@@ -6,6 +6,10 @@ Is a protocol for dynamic realtime networking in embedded systems. A fully meshe ...@@ -6,6 +6,10 @@ Is a protocol for dynamic realtime networking in embedded systems. A fully meshe
### What is our Objective Cost Function ### What is our Objective Cost Function
##### Fairness, Convergence and Optimal Routing (load balancing)
for Minimum Message Time
##### Packet Delivery Times in the face of Increasing Network Traffic ##### Packet Delivery Times in the face of Increasing Network Traffic
Packet Delivery Time is the critical metric in Networked Control Systems - small amounts of information (sensor, motor data) needs to be delivered quickly. Packet Delivery Time is the critical metric in Networked Control Systems - small amounts of information (sensor, motor data) needs to be delivered quickly.
...@@ -35,6 +39,8 @@ System should be arbitrarily implemented on microcontrollers, in software, with ...@@ -35,6 +39,8 @@ System should be arbitrarily implemented on microcontrollers, in software, with
Network Switching should take place in the same processor as computation for the application - I.E. chips that do motor control should also do network switching. This allows network implementation to shrink into micro-robotics, where singular processors are available at each joint / DOF, and these processors perform network tasks as well as application (control) computation. Network Switching should take place in the same processor as computation for the application - I.E. chips that do motor control should also do network switching. This allows network implementation to shrink into micro-robotics, where singular processors are available at each joint / DOF, and these processors perform network tasks as well as application (control) computation.
Network nodes should not have to know the whole network graph - memory and computaton is limited in the routers.
### Key Contribution ### Key Contribution
A real-time cost function, using next-hop buffer size (i.e. business metric) as well as historical hop-count for per-packet dynamic re-routing, that increases packet delivery-time determinism. A real-time cost function, using next-hop buffer size (i.e. business metric) as well as historical hop-count for per-packet dynamic re-routing, that increases packet delivery-time determinism.
......
...@@ -4,7 +4,7 @@ ...@@ -4,7 +4,7 @@
This board is for switching UART signals in tinynet. I wanted to keep some track of what I was doing, while I was doing it. So here it is. This board is for switching UART signals in tinynet. I wanted to keep some track of what I was doing, while I was doing it. So here it is.
Originally, I had developed a switch on the XMEGA platform. I wanted to get into something a bit heavier duty, as I thought a really neat trick would be to out-perform switched ethernet, outright. I think that in ARM chips there was enough speed to do this. As max. UART bitrate is a function, I went straight to the 300MHz ATSAMx70 chips (M7 cores). Now, being more prudent I would do some tests with these chips first, but I'm not going to. This is foolish, I know that. Originally, I had developed a switch on the XMEGA platform. I wanted to get into something a bit heavier duty, as I thought a really neat trick would be to out-perform switched ethernet, outright (for embedded systems, not for datacenters). I think that in ARM chips there was enough speed to do this. As max. UART bitrate is a function, I went straight to the 300MHz ATSAMx70 chips (M7 cores). Now, being more prudent I would do some tests with these chips first, but I'm not going to. This is foolish, I know that. Max UART on the ATSAMS70 is clk/16, so 18.75Mbps. It's not huge, but it's fast enough for realtime small messages on small systems. In any case, I think the question is about system architecture more than it is about outright performance at this point.
I also think that, for pure switching, an FPGA or PSOC would be a better answer. It probably is. I also want my network switches to double-duty as motor controllers, sensor interfaces, etc - do general embedded-stuff. In another world, where infinite time exists, I would put FPGAs on board with a processor. With the FPGA comes a chance to invent a whole new PHY - w/ 'co-clocking' and auto-maxing bitrates, which is something I am still really interested in implementing, but there are also machines to build. I leave that experiment for another bench. I also think that, for pure switching, an FPGA or PSOC would be a better answer. It probably is. I also want my network switches to double-duty as motor controllers, sensor interfaces, etc - do general embedded-stuff. In another world, where infinite time exists, I would put FPGAs on board with a processor. With the FPGA comes a chance to invent a whole new PHY - w/ 'co-clocking' and auto-maxing bitrates, which is something I am still really interested in implementing, but there are also machines to build. I leave that experiment for another bench.
...@@ -56,6 +56,8 @@ Here are my notes from selecting a chip for the getting-down: ...@@ -56,6 +56,8 @@ Here are my notes from selecting a chip for the getting-down:
- p. 964 - 968 brief usart - p. 964 - 968 brief usart
- print p. 1178 -> 1186 -> 1282 pwm - print p. 1178 -> 1186 -> 1282 pwm
- p. 1283 -> 1288 afec (adc) brief - p. 1283 -> 1288 afec (adc) brief
- p. 158 -> 164 Power
- p. 1554 -> 1574 Schematics
- UART max clock is the Peripheral Clock or the PMC PCK - divided by 16. PMC PCK is an external clock, so UART clock can remain independent of processor clock. - UART max clock is the Peripheral Clock or the PMC PCK - divided by 16. PMC PCK is an external clock, so UART clock can remain independent of processor clock.
- -
...@@ -109,37 +111,11 @@ I think there's probably a better in-between - and besides, the point is a littl ...@@ -109,37 +111,11 @@ I think there's probably a better in-between - and besides, the point is a littl
# THE GITDOWN # THE GITDOWN
## Need to Spec / Footprint ## Need to Spec / Footprint
- 2x20 2.54 Pitch Interconnects
- 2x4 ** Ports, Shrouded Sockets
- Timer Circuit
- Flash Memory
- Port Status LEDS: use Fab Part?
## Revs on Board ## Revs on Board
- New Chip who dis
- QSPI Flash on Chip for Address Table Storage? # Programming
- On Board for now but don't bother w/ implement yet... get parts...
- LED Status on TX / RX lines -> do RGB LED I was at a loss when I realized I was missing the 10-pin Tag-Connect header I needed to program this. Turns out the chip automatically enumerates as a SAM-BA USB device, and I can use [this](http://www.shumatech.com/web/products/bossa) *I think* to program it. I'll give that a go.
- Power LED
- Overall Status LED (also RGB ?) update - not easy, or, didn't work immediately. going to bed.
- TX / RX / GND Probe Pickups pls \ No newline at end of file
- Reset Button
- 'UI' Buttons
- USB input (also just easy power) - 0.5A from USB 2.0 -> 1.5A available on USB 3.0 Charging Port
- Otherwise, inject power 3v3 from net, big decouplers on each port,
- More Robuts Power Input? For Power Electronics we want converter...
- would put converter on Lower Mez. board? -> 3v3
- on top layer ... usb power will be coming in ... or do 5v input on interconnect, bc will have drv8x- that has 5v buck! 5v -> install 3v3 reg (1A from fab inventory)
## DigiKey BOM
ATSAM | ATSAMS70N20A-AN-ND
Diff Flipper | ISL3177EIUZ-ND
Tag-Connect JTAG | TC2050-IDC-NL-ND & 1175-1629-ND or 1175-1627-ND
IDC Shrouded 8 PIN | 609-5123-ND & 609-3568-ND
2x20 Board Intercon | 609-3013-ND or 609-1779-ND & S9200-ND
0.05" option
IDC Shrouded 10 PIN | 1175-1442-ND & 1175-1629-ND or 1175-1627-ND
10 Line Ribbon | CN217GR-100-ND
IDC Compat 2x20 | 1175-1750-ND or 1175-1748-ND & 609-3779-ND
\ No newline at end of file
File added
Source diff could not be displayed: it is too large. Options to address this: view the blob.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
...@@ -348,14 +348,109 @@ UsedLibraryUrn="urn:adsk.eagle:library:175" ...@@ -348,14 +348,109 @@ UsedLibraryUrn="urn:adsk.eagle:library:175"
UsedLibraryUrn="urn:adsk.eagle:library:176" UsedLibraryUrn="urn:adsk.eagle:library:176"
UsedLibraryUrn="urn:adsk.eagle:library:177" UsedLibraryUrn="urn:adsk.eagle:library:177"
UsedLibrary="D:/Dropbox (Personal)/CBA/doc/libraries/eagle/fab.lbr" UsedLibrary="D:/Dropbox (Personal)/CBA/doc/libraries/eagle/fab.lbr"
UsedLibrary="D:/Dropbox (Personal)/CBA/doc/libraries_jake/eagle/jake/tag-connect.lbr"
[Win_1] [Win_1]
Type="Board Editor"
Loc="-11 -45 1188 594"
State=2
Number=1
File="xmega-128a4u-switch.brd"
View="-10.3791 -1.6 102.164 81.6"
WireWidths=" 0.0762 0.1016 0.127 0.15 0.2 0.2032 0.254 0.3048 0.4064 0.508 0.6096 0.8128 1.016 1.27 2.54 0.1524"
PadDiameters=" 0.254 0.3048 0.4064 0.6096 0.8128 1.016 1.27 1.4224 1.6764 1.778 1.9304 2.1844 2.54 3.81 6.4516 0"
PadDrills=" 0.2 0.25 0.3 0.35 0.4 0.45 0.5 0.55 0.65 0.7 0.75 0.8 0.85 0.9 1 0.6"
ViaDiameters=" 0.55 0.6 0.65 0.7 0.75 0.8 0.85 0.9 0.95 1 1.05 1.1 1.15 1.2 1.3 0"
ViaDrills=" 0.2 0.25 0.3 0.4 0.45 0.5 0.55 0.6 0.65 0.7 0.75 0.8 0.85 0.9 1 0.35"
HoleDrills=" 0.2 0.25 0.3 0.4 0.45 0.5 0.55 0.6 0.65 0.7 0.75 0.8 0.85 0.9 1 0.35"
TextSizes=" 0.254 0.3048 0.4064 0.6096 0.8128 1.016 1.27 1.4224 1.6764 1.9304 2.1844 2.54 3.81 5.08 6.4516 1.778"
PolygonSpacings=" 0.254 0.3048 0.4064 0.6096 0.8128 1.016 1.4224 1.6764 1.778 1.9304 2.1844 2.54 3.81 5.08 6.4516 1.27"
PolygonIsolates=" 0.254 0.3048 0.4064 0.6096 0.8128 1.016 1.27 1.4224 1.6764 1.778 1.9304 2.1844 2.54 3.81 6.4516 0"
MiterRadiuss=" 0.254 0.3175 0.635 1.27 2.54 1 2 2.5 5 7.5 10 0"
DimensionWidths=" 0 0.127 0.254 0.1 0.26 0.13"
DimensionExtWidths=" 0.127 0.254 0.1 0.13 0.26 0"
DimensionExtLengths=" 1.27 2.54 1 2 3 0"
DimensionExtOffsets=" 1.27 2.54 1 2 3 0"
SmdSizes=" 0.3048 0.1524 0.4064 0.2032 0.6096 0.3048 0.8128 0.4064 1.016 0.508 1.27 0.6604 1.4224 0.7112 1.6764 0.8128 1.778 0.9144 1.9304 0.9652 2.1844 1.0668 2.54 1.27 3.81 1.9304 5.08 2.54 6.4516 3.2512 1.27 0.635"
WireBend=1
WireBendSet=0
WireCap=1
MiterStyle=0
PadShape=0
ViaShape=1
PolygonPour=0
PolygonRank=1
PolygonThermals=1
PolygonOrphans=0
TextRatio=8
DimensionUnit=1
DimensionPrecision=2
DimensionShowUnit=0
PinDirection=3
PinFunction=0
PinLength=2
PinVisible=3
SwapLevel=0
ArcDirection=0
AddLevel=2
PadsSameType=0
Layer=1
[Win_2]
Type="Schematic Editor"
Loc="-11 -11 3828 2054"
State=1
Number=2
File="xmega-128a4u-switch.sch"
View="-29.2971 -57.805 183.335 132.795"
WireWidths=" 0.0762 0.1016 0.127 0.15 0.2 0.2032 0.254 0.3048 0.4064 0.508 0.6096 0.8128 1.016 1.27 2.54 0.1524"
PadDiameters=" 0.254 0.3048 0.4064 0.6096 0.8128 1.016 1.27 1.4224 1.6764 1.778 1.9304 2.1844 2.54 3.81 6.4516 0"
PadDrills=" 0.2 0.25 0.3 0.35 0.4 0.45 0.5 0.55 0.65 0.7 0.75 0.8 0.85 0.9 1 0.6"
ViaDiameters=" 0.55 0.6 0.65 0.7 0.75 0.8 0.85 0.9 0.95 1 1.05 1.1 1.15 1.2 1.3 0"
ViaDrills=" 0.2 0.25 0.3 0.4 0.45 0.5 0.55 0.6 0.65 0.7 0.75 0.8 0.85 0.9 1 0.35"
HoleDrills=" 0.2 0.25 0.3 0.4 0.45 0.5 0.55 0.6 0.65 0.7 0.75 0.8 0.85 0.9 1 0.35"
TextSizes=" 0.254 0.3048 0.4064 0.6096 0.8128 1.016 1.27 1.4224 1.6764 1.9304 2.1844 2.54 3.81 5.08 6.4516 1.778"
PolygonSpacings=" 0.254 0.3048 0.4064 0.6096 0.8128 1.016 1.4224 1.6764 1.778 1.9304 2.1844 2.54 3.81 5.08 6.4516 1.27"
PolygonIsolates=" 0.254 0.3048 0.4064 0.6096 0.8128 1.016 1.27 1.4224 1.6764 1.778 1.9304 2.1844 2.54 3.81 6.4516 0"
MiterRadiuss=" 0.254 0.3175 0.635 1.27 2.54 1 2 2.5 5 7.5 10 0"
DimensionWidths=" 0 0.127 0.254 0.1 0.26 0.13"
DimensionExtWidths=" 0.127 0.254 0.1 0.13 0.26 0"
DimensionExtLengths=" 1.27 2.54 1 2 3 0"
DimensionExtOffsets=" 1.27 2.54 1 2 3 0"
SmdSizes=" 0.3048 0.1524 0.4064 0.2032 0.6096 0.3048 0.8128 0.4064 1.016 0.508 1.27 0.6604 1.4224 0.7112 1.6764 0.8128 1.778 0.9144 1.9304 0.9652 2.1844 1.0668 2.54 1.27 3.81 1.9304 5.08 2.54 6.4516 3.2512 1.27 0.635"
WireBend=0
WireBendSet=31
WireCap=1
MiterStyle=0
PadShape=0
ViaShape=1
PolygonPour=0
PolygonRank=0
PolygonThermals=1
PolygonOrphans=0
TextRatio=8
DimensionUnit=1
DimensionPrecision=2
DimensionShowUnit=0
PinDirection=3
PinFunction=0
PinLength=2
PinVisible=3
SwapLevel=0
ArcDirection=0
AddLevel=2
PadsSameType=0
Layer=91
Views=" 1: -29.2971 -57.805 183.335 132.795"
Sheet="1"
[Win_3]
Type="Control Panel" Type="Control Panel"
Loc="0 0 1919 1016" Loc="-11 -11 3828 2054"
State=1 State=1
Number=0 Number=0
[Desktop] [Desktop]
Screen="1920 1080" Screen="3840 2160"
Window="Win_1" Window="Win_1"
Window="Win_2"
Window="Win_3"
File added

Microsoft Visual Studio Solution File, Format Version 12.00
# Atmel Studio Solution File, Format Version 11.00
VisualStudioVersion = 14.0.23107.0
MinimumVisualStudioVersion = 10.0.40219.1
Project("{54F91283-7BC4-4236-8FF9-10F437C3AD48}") = "atsam-s70-wakeup", "atsam-s70-wakeup\atsam-s70-wakeup.cproj", "{DCE6C7E3-EE26-4D79-826B-08594B9AD897}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|ARM = Debug|ARM
Release|ARM = Release|ARM
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{DCE6C7E3-EE26-4D79-826B-08594B9AD897}.Debug|ARM.ActiveCfg = Debug|ARM
{DCE6C7E3-EE26-4D79-826B-08594B9AD897}.Debug|ARM.Build.0 = Debug|ARM
{DCE6C7E3-EE26-4D79-826B-08594B9AD897}.Release|ARM.ActiveCfg = Release|ARM
{DCE6C7E3-EE26-4D79-826B-08594B9AD897}.Release|ARM.Build.0 = Release|ARM
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
EndGlobalSection
EndGlobal
################################################################################
# Automatically-generated file. Do not edit!
################################################################################
SHELL := cmd.exe
RM := rm -rf
USER_OBJS :=
LIBS :=
PROJ :=
O_SRCS :=
C_SRCS :=
S_SRCS :=
S_UPPER_SRCS :=
OBJ_SRCS :=
ASM_SRCS :=
PREPROCESSING_SRCS :=
OBJS :=
OBJS_AS_ARGS :=
C_DEPS :=
C_DEPS_AS_ARGS :=
EXECUTABLES :=
OUTPUT_FILE_PATH :=
OUTPUT_FILE_PATH_AS_ARGS :=
AVR_APP_PATH :=$$$AVR_APP_PATH$$$
QUOTE := "
ADDITIONAL_DEPENDENCIES:=
OUTPUT_FILE_DEP:=
LIB_DEP:=
LINKER_SCRIPT_DEP:=
# Every subdirectory with source files must be described here
SUBDIRS := \
../Device_Startup/
# Add inputs and outputs from these tool invocations to the build variables
C_SRCS += \
../Device_Startup/startup_samv70n20.c \
../Device_Startup/system_samv70n20.c \
../main.c
PREPROCESSING_SRCS +=
ASM_SRCS +=
OBJS += \
Device_Startup/startup_samv70n20.o \
Device_Startup/system_samv70n20.o \
main.o
OBJS_AS_ARGS += \
Device_Startup/startup_samv70n20.o \
Device_Startup/system_samv70n20.o \
main.o
C_DEPS += \
Device_Startup/startup_samv70n20.d \
Device_Startup/system_samv70n20.d \
main.d
C_DEPS_AS_ARGS += \
Device_Startup/startup_samv70n20.d \
Device_Startup/system_samv70n20.d \
main.d
OUTPUT_FILE_PATH +=atsam-s70-wakeup.elf
OUTPUT_FILE_PATH_AS_ARGS +=atsam-s70-wakeup.elf
ADDITIONAL_DEPENDENCIES:=
OUTPUT_FILE_DEP:= ./makedep.mk
LIB_DEP+=
LINKER_SCRIPT_DEP+= \
../Device_Startup/samv70n20_flash.ld \
../Device_Startup/samv70n20_sram.ld
# AVR32/GNU C Compiler
Device_Startup/%.o: ../Device_Startup/%.c
@echo Building file: $<
@echo Invoking: ARM/GNU C Compiler : 6.3.1
$(QUOTE)C:\Program Files (x86)\Atmel\Studio\7.0\toolchain\arm\arm-gnu-toolchain\bin\arm-none-eabi-gcc.exe$(QUOTE) -x c -mthumb -D__SAMV70N20__ -DDEBUG -I"C:\Program Files (x86)\Atmel\Studio\7.0\Packs\arm\cmsis\5.0.1\CMSIS\Include" -I"C:\Program Files (x86)\Atmel\Studio\7.0\Packs\atmel\SAMV70_DFP\2.2.82\samv70\include" -O1 -ffunction-sections -mlong-calls -g3 -Wall -mcpu=cortex-m7 -c -std=gnu99 -MD -MP -MF "$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -MT"$(@:%.o=%.o)" -o "$@" "$<"
@echo Finished building: $<
./%.o: .././%.c
@echo Building file: $<
@echo Invoking: ARM/GNU C Compiler : 6.3.1
$(QUOTE)C:\Program Files (x86)\Atmel\Studio\7.0\toolchain\arm\arm-gnu-toolchain\bin\arm-none-eabi-gcc.exe$(QUOTE) -x c -mthumb -D__SAMV70N20__ -DDEBUG -I"C:\Program Files (x86)\Atmel\Studio\7.0\Packs\arm\cmsis\5.0.1\CMSIS\Include" -I"C:\Program Files (x86)\Atmel\Studio\7.0\Packs\atmel\SAMV70_DFP\2.2.82\samv70\include" -O1 -ffunction-sections -mlong-calls -g3 -Wall -mcpu=cortex-m7 -c -std=gnu99 -MD -MP -MF "$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -MT"$(@:%.o=%.o)" -o "$@" "$<"
@echo Finished building: $<
# AVR32/GNU Preprocessing Assembler
# AVR32/GNU Assembler
ifneq ($(MAKECMDGOALS),clean)
ifneq ($(strip $(C_DEPS)),)
-include $(C_DEPS)
endif
endif
# Add inputs and outputs from these tool invocations to the build variables
# All Target
all: $(OUTPUT_FILE_PATH) $(ADDITIONAL_DEPENDENCIES)
$(OUTPUT_FILE_PATH): $(OBJS) $(USER_OBJS) $(OUTPUT_FILE_DEP) $(LIB_DEP) $(LINKER_SCRIPT_DEP)
@echo Building target: $@
@echo Invoking: ARM/GNU Linker : 6.3.1
$(QUOTE)C:\Program Files (x86)\Atmel\Studio\7.0\toolchain\arm\arm-gnu-toolchain\bin\arm-none-eabi-gcc.exe$(QUOTE) -o$(OUTPUT_FILE_PATH_AS_ARGS) $(OBJS_AS_ARGS) $(USER_OBJS) $(LIBS) -mthumb -Wl,-Map="atsam-s70-wakeup.map" -Wl,--start-group -lm -Wl,--end-group -L"..\\Device_Startup" -Wl,--gc-sections -mcpu=cortex-m7 -Tsamv70n20_flash.ld
@echo Finished building target: $@
"C:\Program Files (x86)\Atmel\Studio\7.0\toolchain\arm\arm-gnu-toolchain\bin\arm-none-eabi-objcopy.exe" -O binary "atsam-s70-wakeup.elf" "atsam-s70-wakeup.bin"
"C:\Program Files (x86)\Atmel\Studio\7.0\toolchain\arm\arm-gnu-toolchain\bin\arm-none-eabi-objcopy.exe" -O ihex -R .eeprom -R .fuse -R .lock -R .signature "atsam-s70-wakeup.elf" "atsam-s70-wakeup.hex"
"C:\Program Files (x86)\Atmel\Studio\7.0\toolchain\arm\arm-gnu-toolchain\bin\arm-none-eabi-objcopy.exe" -j .eeprom --set-section-flags=.eeprom=alloc,load --change-section-lma .eeprom=0 --no-change-warnings -O binary "atsam-s70-wakeup.elf" "atsam-s70-wakeup.eep" || exit 0
"C:\Program Files (x86)\Atmel\Studio\7.0\toolchain\arm\arm-gnu-toolchain\bin\arm-none-eabi-objdump.exe" -h -S "atsam-s70-wakeup.elf" > "atsam-s70-wakeup.lss"
"C:\Program Files (x86)\Atmel\Studio\7.0\toolchain\arm\arm-gnu-toolchain\bin\arm-none-eabi-objcopy.exe" -O srec -R .eeprom -R .fuse -R .lock -R .signature "atsam-s70-wakeup.elf" "atsam-s70-wakeup.srec"
"C:\Program Files (x86)\Atmel\Studio\7.0\toolchain\arm\arm-gnu-toolchain\bin\arm-none-eabi-size.exe" "atsam-s70-wakeup.elf"
# Other Targets
clean:
-$(RM) $(OBJS_AS_ARGS) $(EXECUTABLES)
-$(RM) $(C_DEPS_AS_ARGS)
rm -rf "atsam-s70-wakeup.elf" "atsam-s70-wakeup.a" "atsam-s70-wakeup.hex" "atsam-s70-wakeup.bin" "atsam-s70-wakeup.lss" "atsam-s70-wakeup.eep" "atsam-s70-wakeup.map" "atsam-s70-wakeup.srec"
\ No newline at end of file
File added
This diff is collapsed.
File added
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment