From e5be0be35f724507d7efff48339a297df73d2641 Mon Sep 17 00:00:00 2001 From: Robert Garbee Date: Sat, 16 Jan 2016 10:19:47 -0700 Subject: fix argument to ao-cal-freq so devices other than /dev/ttyACM0 work --- ao-bringup/cal-freq | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'ao-bringup') diff --git a/ao-bringup/cal-freq b/ao-bringup/cal-freq index d3d9dc95..40c25ce8 100755 --- a/ao-bringup/cal-freq +++ b/ao-bringup/cal-freq @@ -10,7 +10,7 @@ case $# in ;; esac -../ao-tools/ao-cal-freq/ao-cal-freq --dev=$dev +../ao-tools/ao-cal-freq/ao-cal-freq --tty=$dev case $? in 0) calline=`./get-radio-cal $dev` -- cgit v1.2.3 From f2d3202de9a5847923f72afe2969eb7ccd7342c7 Mon Sep 17 00:00:00 2001 From: Keith Packard Date: Thu, 28 Jan 2016 00:14:36 -0800 Subject: altos/chaoskey: Add support for flipping between raw and cooked bits Plug the 'force bootloader' thing onto the board while it's running and it will generate raw bits instead of running them through the CRC to whiten. Useful for validating the raw hardware. Signed-off-by: Keith Packard --- ao-bringup/turnon_chaoskey | 50 +++++++++++++++++++++++++++++++++++++++++ src/chaoskey-v0.1/ao_pins.h | 7 +++++- src/drivers/ao_trng_send.c | 55 ++++++++++++++++++++++++++++++++++++--------- 3 files changed, 100 insertions(+), 12 deletions(-) create mode 100755 ao-bringup/turnon_chaoskey (limited to 'ao-bringup') diff --git a/ao-bringup/turnon_chaoskey b/ao-bringup/turnon_chaoskey new file mode 100755 index 00000000..8c8a6758 --- /dev/null +++ b/ao-bringup/turnon_chaoskey @@ -0,0 +1,50 @@ +#!/bin/sh + +if [ -x /usr/bin/ao-flash-stm32f0x ]; then + FLASH_STM=/usr/bin/ao-flash-stm32f0x +else + echo "Can't find ao-flash-stm32f0x! Aborting." + exit 1 +fi + +if [ -x /usr/bin/ao-usbload ]; then + USBLOAD=/usr/bin/ao-usbload +else + echo "Can't find ao-usbload! Aborting." + exit 1 +fi + +VERSION=0.1 +PRODUCT=ChaosKey + +echo "ChaosKey v$VERSION Turn-On and Calibration Program" +echo "Copyright 2015 by Keith Packard. Released under GPL v2" +echo +echo "Expectations:" +echo "\tChaosKey v$VERSION powered from USB" +echo "\t\twith ST-Link-V2 cabled to debug header" +echo + + +case $# in + 1) + SERIAL="$1" + echo "$PRODUCT-$VERSION serial number: $SERIAL" + ;; + 0) + echo -n "$PRODUCT-$VERSION serial number: " + read SERIAL + ;; + *) + echo "Usage: $0 " 1>&2 + exit 1; + ;; +esac + +$FLASH_STM ../src/chaoskey-v$VERSION/flash-loader/chaoskey-v$VERSION-*.elf || exit 1 + +sleep 2 + +$USBLOAD --serial=$SERIAL ../src/chaoskey-v$VERSION/chaoskey-v$VERSION*.ihx || exit 1 + +exit $? diff --git a/src/chaoskey-v0.1/ao_pins.h b/src/chaoskey-v0.1/ao_pins.h index 8f3eb7b1..95d9a576 100644 --- a/src/chaoskey-v0.1/ao_pins.h +++ b/src/chaoskey-v0.1/ao_pins.h @@ -67,6 +67,11 @@ #define AO_CRC_INIT 0xffffffff /* TRNG */ -#define AO_LED_TRNG_ACTIVE AO_LED_GREEN +#define AO_LED_TRNG_COOKED AO_LED_GREEN +#define AO_LED_TRNG_RAW AO_LED_RED + +/* Mode pin */ +#define AO_RAW_PORT (&stm_gpioa) +#define AO_RAW_BIT 15 #endif /* _AO_PINS_H_ */ diff --git a/src/drivers/ao_trng_send.c b/src/drivers/ao_trng_send.c index bac6035c..64c016b2 100644 --- a/src/drivers/ao_trng_send.c +++ b/src/drivers/ao_trng_send.c @@ -19,17 +19,48 @@ #include #include #include +#include static void -ao_trng_send(void) +ao_trng_send_raw(uint16_t *buf) +{ + uint16_t i; + uint16_t t; + uint16_t *rnd = (uint16_t *) ao_adc_ring; + + t = ao_adc_get(AO_USB_IN_SIZE>>1); /* one 16-bit value per two output bytes */ + for (i = 0; i < AO_USB_IN_SIZE / sizeof (uint16_t); i++) { + *buf++ = rnd[t]; + t = (t + 1) & (AO_ADC_RING_SIZE - 1); + } +} + +static void +ao_trng_send_cooked(uint16_t *buf) { - static uint16_t *buffer[2]; - int usb_buf_id; uint16_t i; - uint16_t *buf; uint16_t t; uint32_t *rnd = (uint32_t *) ao_adc_ring; + t = ao_adc_get(AO_USB_IN_SIZE) >> 1; /* one 16-bit value per output byte */ + for (i = 0; i < AO_USB_IN_SIZE / sizeof (uint16_t); i++) { + *buf++ = ao_crc_in_32_out_16(rnd[t]); + t = (t + 1) & ((AO_ADC_RING_SIZE>>1) - 1); + } +} + +static inline int +ao_send_raw(void) +{ + return !ao_gpio_get(AO_RAW_PORT, AO_RAW_BIT, AO_RAW_PIN); +} + +static void +ao_trng_send(void) +{ + static uint16_t *buffer[2]; + int usb_buf_id; + if (!buffer[0]) { buffer[0] = ao_usb_alloc(); buffer[1] = ao_usb_alloc(); @@ -42,15 +73,16 @@ ao_trng_send(void) ao_crc_reset(); for (;;) { - ao_led_on(AO_LED_TRNG_ACTIVE); - t = ao_adc_get(AO_USB_IN_SIZE) >> 1; /* one 16-bit value per output byte */ - buf = buffer[usb_buf_id]; - for (i = 0; i < AO_USB_IN_SIZE / sizeof (uint16_t); i++) { - *buf++ = ao_crc_in_32_out_16(rnd[t]); - t = (t + 1) & ((AO_ADC_RING_SIZE>>1) - 1); + if (ao_send_raw()) { + ao_led_on(AO_LED_TRNG_RAW); + ao_trng_send_raw(buffer[usb_buf_id]); + ao_led_off(AO_LED_TRNG_RAW); + } else { + ao_led_on(AO_LED_TRNG_COOKED); + ao_trng_send_cooked(buffer[usb_buf_id]); + ao_led_off(AO_LED_TRNG_COOKED); } ao_adc_ack(AO_USB_IN_SIZE); - ao_led_off(AO_LED_TRNG_ACTIVE); ao_usb_write(buffer[usb_buf_id], AO_USB_IN_SIZE); usb_buf_id = 1-usb_buf_id; } @@ -61,5 +93,6 @@ static struct ao_task ao_trng_send_task; void ao_trng_send_init(void) { + ao_enable_input(AO_RAW_PORT, AO_RAW_BIT, AO_EXTI_MODE_PULL_UP); ao_add_task(&ao_trng_send_task, ao_trng_send, "trng_send"); } -- cgit v1.2.3 From 88ee4ac0c91e12a02cc1954ffad0fd8603e24e55 Mon Sep 17 00:00:00 2001 From: Keith Packard Date: Wed, 2 Mar 2016 14:01:00 -0800 Subject: ao-bringup: Switch to v1.0 for chaoskey Not going to build any more v0.1 boards. Also, chaoskey now uses the unique ID for a serial, so we don't need to provide a serial number. Signed-off-by: Keith Packard --- ao-bringup/turnon_chaoskey | 20 ++------------------ 1 file changed, 2 insertions(+), 18 deletions(-) (limited to 'ao-bringup') diff --git a/ao-bringup/turnon_chaoskey b/ao-bringup/turnon_chaoskey index 8c8a6758..3617e777 100755 --- a/ao-bringup/turnon_chaoskey +++ b/ao-bringup/turnon_chaoskey @@ -14,7 +14,7 @@ else exit 1 fi -VERSION=0.1 +VERSION=1.0 PRODUCT=ChaosKey echo "ChaosKey v$VERSION Turn-On and Calibration Program" @@ -25,26 +25,10 @@ echo "\tChaosKey v$VERSION powered from USB" echo "\t\twith ST-Link-V2 cabled to debug header" echo - -case $# in - 1) - SERIAL="$1" - echo "$PRODUCT-$VERSION serial number: $SERIAL" - ;; - 0) - echo -n "$PRODUCT-$VERSION serial number: " - read SERIAL - ;; - *) - echo "Usage: $0 " 1>&2 - exit 1; - ;; -esac - $FLASH_STM ../src/chaoskey-v$VERSION/flash-loader/chaoskey-v$VERSION-*.elf || exit 1 sleep 2 -$USBLOAD --serial=$SERIAL ../src/chaoskey-v$VERSION/chaoskey-v$VERSION*.ihx || exit 1 +$USBLOAD --serial=1 ../src/chaoskey-v$VERSION/chaoskey-v$VERSION*.ihx || exit 1 exit $? -- cgit v1.2.3 From afba05c41f30c9273668d5ed71e0dc8c1ca53141 Mon Sep 17 00:00:00 2001 From: Keith Packard Date: Fri, 18 Mar 2016 11:17:46 -0700 Subject: ao-bringup: Use dfu-util to install flash loader on chaoskey Signed-off-by: Keith Packard --- ao-bringup/turnon_chaoskey | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) (limited to 'ao-bringup') diff --git a/ao-bringup/turnon_chaoskey b/ao-bringup/turnon_chaoskey index 3617e777..8c20ebaa 100755 --- a/ao-bringup/turnon_chaoskey +++ b/ao-bringup/turnon_chaoskey @@ -1,10 +1,10 @@ #!/bin/sh -if [ -x /usr/bin/ao-flash-stm32f0x ]; then - FLASH_STM=/usr/bin/ao-flash-stm32f0x +if [ -x /usr/bin/dfu-util ]; then + DFU_UTIL=/usr/bin/dfu-util else - echo "Can't find ao-flash-stm32f0x! Aborting." - exit 1 + echo "Can't find dfu-util! Aborting." + exit 1 fi if [ -x /usr/bin/ao-usbload ]; then @@ -22,10 +22,9 @@ echo "Copyright 2015 by Keith Packard. Released under GPL v2" echo echo "Expectations:" echo "\tChaosKey v$VERSION powered from USB" -echo "\t\twith ST-Link-V2 cabled to debug header" echo -$FLASH_STM ../src/chaoskey-v$VERSION/flash-loader/chaoskey-v$VERSION-*.elf || exit 1 +$DFU_UTIL -a 0 -s 0x08000000:leave -D ../src/chaoskey-v$VERSION/flash-loader/chaoskey-v$VERSION*.bin || exit 1 sleep 2 -- cgit v1.2.3 From aa9630c30ee09bf358e77bf47ed0815a19237fca Mon Sep 17 00:00:00 2001 From: Bdale Garbee Date: Fri, 6 May 2016 17:49:09 -0600 Subject: add beep to TeleMega turnon script --- ao-bringup/test-telemega | 1 + 1 file changed, 1 insertion(+) (limited to 'ao-bringup') diff --git a/ao-bringup/test-telemega b/ao-bringup/test-telemega index b801b20c..0ac475a3 100755 --- a/ao-bringup/test-telemega +++ b/ao-bringup/test-telemega @@ -60,6 +60,7 @@ ao-list | while read product serial dev; do echo"" echo "$PRODUCT-v$VERSION" serial "$serial" is ready to ship + echo "\007" ret=0 ;; esac -- cgit v1.2.3