summaryrefslogtreecommitdiff
path: root/src/fmc-test/src/main.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/fmc-test/src/main.c')
-rw-r--r--src/fmc-test/src/main.c220
1 files changed, 110 insertions, 110 deletions
diff --git a/src/fmc-test/src/main.c b/src/fmc-test/src/main.c
index ce04bee..38165b8 100644
--- a/src/fmc-test/src/main.c
+++ b/src/fmc-test/src/main.c
@@ -61,67 +61,67 @@ int main(void)
//------------------------------------------------------------------------------
{
int i;
- // initialize hal
+ // initialize hal
HAL_Init();
- // configure system clock
+ // configure system clock
SystemClock_Config();
- // initialize gpio
- MX_GPIO_Init();
+ // initialize gpio
+ MX_GPIO_Init();
- // Blink blue LED for six seconds to not upset the Novena at boot.
- led_on(GPIO_PIN_LED_BLUE);
- for (i = 0; i < 12; i++) {
- HAL_Delay(500);
- led_toggle(GPIO_PIN_LED_BLUE);
- }
+ // Blink blue LED for six seconds to not upset the Novena at boot.
+ led_on(GPIO_PIN_LED_BLUE);
+ for (i = 0; i < 12; i++) {
+ HAL_Delay(500);
+ led_toggle(GPIO_PIN_LED_BLUE);
+ }
- // initialize rng
- MX_RNG_Init();
+ // initialize rng
+ MX_RNG_Init();
- // prepare fmc interface
- fmc_init();
+ // prepare fmc interface
+ fmc_init();
- // turn on green led, turn off other leds
- led_on(GPIO_PIN_LED_GREEN);
- led_off(GPIO_PIN_LED_YELLOW);
- led_off(GPIO_PIN_LED_RED);
- led_off(GPIO_PIN_LED_BLUE);
+ // turn on green led, turn off other leds
+ led_on(GPIO_PIN_LED_GREEN);
+ led_off(GPIO_PIN_LED_YELLOW);
+ led_off(GPIO_PIN_LED_RED);
+ led_off(GPIO_PIN_LED_BLUE);
- // vars
- volatile int data_test_ok = 0, addr_test_ok = 0, successful_runs = 0;
+ // vars
+ volatile int data_test_ok = 0, addr_test_ok = 0, successful_runs = 0;
- // main loop (test, until an error is detected)
+ // main loop (test, until an error is detected)
while (1)
- {
- // test data bus
- data_test_ok = test_fpga_data_bus();
- // test address bus
- addr_test_ok = test_fpga_address_bus();
+ {
+ // test data bus
+ data_test_ok = test_fpga_data_bus();
+ // test address bus
+ addr_test_ok = test_fpga_address_bus();
- // check for errors (abort testing in case of error)
- if (data_test_ok < TEST_NUM_ROUNDS) break;
+ // check for errors (abort testing in case of error)
+ if (data_test_ok < TEST_NUM_ROUNDS) break;
- // check for errors (abort testing in case of error)
- if (addr_test_ok < TEST_NUM_ROUNDS) break;
+ // check for errors (abort testing in case of error)
+ if (addr_test_ok < TEST_NUM_ROUNDS) break;
- // toggle yellow led to indicate, that we are alive
- led_toggle(GPIO_PIN_LED_YELLOW);
- successful_runs++;
- }
-
- // error handler
- while (1)
- {
- // turn on red led, turn off other leds
- led_on(GPIO_PIN_LED_RED);
- led_off(GPIO_PIN_LED_GREEN);
- led_off(GPIO_PIN_LED_YELLOW);
- led_off(GPIO_PIN_LED_BLUE);
- }
+ // toggle yellow led to indicate, that we are alive
+ led_toggle(GPIO_PIN_LED_YELLOW);
+ successful_runs++;
+ }
- // should never reach this line
+ // error handler
+ while (1)
+ {
+ // turn on red led, turn off other leds
+ led_on(GPIO_PIN_LED_RED);
+ led_off(GPIO_PIN_LED_GREEN);
+ led_off(GPIO_PIN_LED_YELLOW);
+ led_off(GPIO_PIN_LED_BLUE);
+ }
+
+ // should never reach this line
}
@@ -129,37 +129,37 @@ int main(void)
int test_fpga_data_bus(void)
//------------------------------------------------------------------------------
{
- int c, ok;
- uint32_t rnd, buf;
- HAL_StatusTypeDef hal_result;
+ int c, ok;
+ uint32_t rnd, buf;
+ HAL_StatusTypeDef hal_result;
- // run some rounds of data bus test
- for (c=0; c<TEST_NUM_ROUNDS; c++)
+ // run some rounds of data bus test
+ for (c=0; c<TEST_NUM_ROUNDS; c++)
+ {
+ data_diff = 0;
+ // try to generate "random" number
+ hal_result = HAL_RNG_GenerateRandomNumber(&rng_inst, &rnd);
+ if (hal_result != HAL_OK) break;
+
+ // write value to fpga at address 0
+ ok = fmc_write_32(0, &rnd);
+ if (ok != 0) break;
+
+ // read value from fpga
+ ok = fmc_read_32(0, &buf);
+ if (ok != 0) break;
+
+ // compare (abort testing in case of error)
+ if (buf != rnd)
{
- data_diff = 0;
- // try to generate "random" number
- hal_result = HAL_RNG_GenerateRandomNumber(&rng_inst, &rnd);
- if (hal_result != HAL_OK) break;
-
- // write value to fpga at address 0
- ok = fmc_write_32(0, &rnd);
- if (ok != 0) break;
-
- // read value from fpga
- ok = fmc_read_32(0, &buf);
- if (ok != 0) break;
-
- // compare (abort testing in case of error)
- if (buf != rnd)
- {
- data_diff = buf;
- data_diff ^= rnd;
- break;
- }
+ data_diff = buf;
+ data_diff ^= rnd;
+ break;
}
+ }
- // return number of successful tests
- return c;
+ // return number of successful tests
+ return c;
}
@@ -167,44 +167,44 @@ int test_fpga_data_bus(void)
int test_fpga_address_bus(void)
//------------------------------------------------------------------------------
{
- int c, ok;
+ int c, ok;
uint32_t rnd, buf;
HAL_StatusTypeDef hal_result;
- // run some rounds of address bus test
+ // run some rounds of address bus test
for (c=0; c<TEST_NUM_ROUNDS; c++)
- {
- addr_diff = 0;
- // try to generate "random" number
- hal_result = HAL_RNG_GenerateRandomNumber(&rng_inst, &rnd);
- if (hal_result != HAL_OK) break;
-
- // we only have 2^22 32-bit words
- rnd &= 0x00FFFFFC;
-
- // don't test zero addresses (fpga will store data, not address)
- if (rnd == 0) continue;
-
- // write dummy value to fpga at some non-zero address
- ok = fmc_write_32(rnd, &buf);
- if (ok != 0) break;
-
- // read value from fpga
- ok = fmc_read_32(0, &buf);
- if (ok != 0) break;
-
- // fpga receives address of 32-bit word, while we need
- // byte address here to compare
- buf <<= 2;
-
- // compare (abort testing in case of error)
- if (buf != rnd)
- {
- addr_diff = buf;
- addr_diff ^= rnd;
- break;
- }
- }
+ {
+ addr_diff = 0;
+ // try to generate "random" number
+ hal_result = HAL_RNG_GenerateRandomNumber(&rng_inst, &rnd);
+ if (hal_result != HAL_OK) break;
+
+ // we only have 2^22 32-bit words
+ rnd &= 0x00FFFFFC;
+
+ // don't test zero addresses (fpga will store data, not address)
+ if (rnd == 0) continue;
+
+ // write dummy value to fpga at some non-zero address
+ ok = fmc_write_32(rnd, &buf);
+ if (ok != 0) break;
+
+ // read value from fpga
+ ok = fmc_read_32(0, &buf);
+ if (ok != 0) break;
+
+ // fpga receives address of 32-bit word, while we need
+ // byte address here to compare
+ buf <<= 2;
+
+ // compare (abort testing in case of error)
+ if (buf != rnd)
+ {
+ addr_diff = buf;
+ addr_diff ^= rnd;
+ break;
+ }
+ }
return c;
}
@@ -236,7 +236,7 @@ void SystemClock_Config(void)
HAL_PWREx_ActivateOverDrive();
RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_SYSCLK|RCC_CLOCKTYPE_PCLK1
- |RCC_CLOCKTYPE_PCLK2;
+ |RCC_CLOCKTYPE_PCLK2;
RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_PLLCLK;
RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1;
RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV4;
@@ -263,14 +263,14 @@ void MX_RNG_Init(void)
void MX_GPIO_Init(void)
//------------------------------------------------------------------------------
{
- GPIO_InitTypeDef GPIO_InitStruct;
+ GPIO_InitTypeDef GPIO_InitStruct;
__GPIOJ_CLK_ENABLE();
GPIO_InitStruct.Pin = GPIO_PIN_1 | GPIO_PIN_2 | GPIO_PIN_3 | GPIO_PIN_4;
GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
GPIO_InitStruct.Pull = GPIO_NOPULL;
- GPIO_InitStruct.Speed = GPIO_SPEED_LOW;
+ GPIO_InitStruct.Speed = GPIO_SPEED_LOW;
HAL_GPIO_Init(GPIOJ, &GPIO_InitStruct);
}