summaryrefslogtreecommitdiffstats
path: root/c
diff options
context:
space:
mode:
authorSebastian Huber <sebastian.huber@embedded-brains.de>2010-08-23 07:38:50 +0000
committerSebastian Huber <sebastian.huber@embedded-brains.de>2010-08-23 07:38:50 +0000
commit612ff40e8d98a7f3f94feb4a44f1b3247ffb7aa1 (patch)
tree0e4653ccc10b6d47ba0a670a884f013fd55dedf7 /c
parent2010-08-23 Sebastian Huber <sebastian.huber@embedded-brains.de> (diff)
downloadrtems-612ff40e8d98a7f3f94feb4a44f1b3247ffb7aa1.tar.bz2
2010-08-23 Sebastian Huber <sebastian.huber@embedded-brains.de>
* test/tests.c: Removed file. * startup/bspstart.c: Fixed warnings.
Diffstat (limited to 'c')
-rw-r--r--c/src/lib/libbsp/powerpc/mpc55xxevb/ChangeLog5
-rw-r--r--c/src/lib/libbsp/powerpc/mpc55xxevb/Makefile.am4
-rw-r--r--c/src/lib/libbsp/powerpc/mpc55xxevb/startup/bspstart.c2
-rw-r--r--c/src/lib/libbsp/powerpc/mpc55xxevb/tests/tests.c704
4 files changed, 8 insertions, 707 deletions
diff --git a/c/src/lib/libbsp/powerpc/mpc55xxevb/ChangeLog b/c/src/lib/libbsp/powerpc/mpc55xxevb/ChangeLog
index c25f3ad4bf..3c585a2e2f 100644
--- a/c/src/lib/libbsp/powerpc/mpc55xxevb/ChangeLog
+++ b/c/src/lib/libbsp/powerpc/mpc55xxevb/ChangeLog
@@ -1,3 +1,8 @@
+2010-08-23 Sebastian Huber <sebastian.huber@embedded-brains.de>
+
+ * test/tests.c: Removed file.
+ * startup/bspstart.c: Fixed warnings.
+
2010-06-29 Joel Sherrill <joel.sherrill@oarcorp.com>
* configure.ac: Remove AC_CHECK_SIZEOF([void *]).
diff --git a/c/src/lib/libbsp/powerpc/mpc55xxevb/Makefile.am b/c/src/lib/libbsp/powerpc/mpc55xxevb/Makefile.am
index fdf58795c5..373c98648f 100644
--- a/c/src/lib/libbsp/powerpc/mpc55xxevb/Makefile.am
+++ b/c/src/lib/libbsp/powerpc/mpc55xxevb/Makefile.am
@@ -57,8 +57,8 @@ libbsp_a_SOURCES += ../../shared/src/irq-generic.c \
../../shared/src/irq-info.c \
../../shared/src/irq-shell.c
-# tests
-libbsp_a_SOURCES += tests/tests.c startup/sd-card-init.c
+# Misc
+libbsp_a_SOURCES += startup/sd-card-init.c
# bsp_i2c
libbsp_a_SOURCES += i2c/i2c_init.c
diff --git a/c/src/lib/libbsp/powerpc/mpc55xxevb/startup/bspstart.c b/c/src/lib/libbsp/powerpc/mpc55xxevb/startup/bspstart.c
index c2fb8c501e..7ed5d92951 100644
--- a/c/src/lib/libbsp/powerpc/mpc55xxevb/startup/bspstart.c
+++ b/c/src/lib/libbsp/powerpc/mpc55xxevb/startup/bspstart.c
@@ -393,7 +393,7 @@ void bsp_start(void)
memset(bsp_section_sbss_start,0,
bsp_section_sbss_end-bsp_section_sbss_start);
- ppc_exc_vector_base = bsp_section_vector_start;
+ ppc_exc_vector_base = (uint32_t) bsp_section_vector_start;
RTEMS_DEBUG_PRINT( "BSP start ...\n");
diff --git a/c/src/lib/libbsp/powerpc/mpc55xxevb/tests/tests.c b/c/src/lib/libbsp/powerpc/mpc55xxevb/tests/tests.c
deleted file mode 100644
index 9ad148799e..0000000000
--- a/c/src/lib/libbsp/powerpc/mpc55xxevb/tests/tests.c
+++ /dev/null
@@ -1,704 +0,0 @@
-/**
- * @file
- *
- * @ingroup mpc55xx
- *
- * @brief Some tests.
- */
-
-/*
- * Copyright (c) 2008
- * Embedded Brains GmbH
- * Obere Lagerstr. 30
- * D-82178 Puchheim
- * Germany
- * rtems@embedded-brains.de
- *
- * The license and distribution terms for this file may be found in the file
- * LICENSE in this distribution or at http://www.rtems.com/license/LICENSE.
- */
-
-#include <stdio.h>
-
-#include <rtems/irq.h>
-#include <mpc55xx/regs.h>
-#include <mpc55xx/mpc55xx.h>
-#include <mpc55xx/dspi.h>
-#include <mpc55xx/edma.h>
-
-#include <bsp/irq-generic.h>
-
-#include <libchip/spi-sd-card.h>
-
-#include <bsp.h>
-#include <bsp/irq.h>
-
-#include <rtems/irq-extension.h>
-
-#include <libcpu/powerpc-utility.h>
-
-#include <rtems/status-checks.h>
-
-#undef USE_DSPI_READER_WRITER
-
-#if defined(USE_DSPI_READER_WRITER)
-static rtems_driver_address_table test_mpc55xx_drv_ops = {
- initialization_entry : NULL,
- open_entry : NULL,
- close_entry : NULL,
- read_entry : NULL,
- write_entry : NULL,
- control_entry : NULL
-};
-
-static rtems_libi2c_drv_t test_mpc55xx_dspi_drv = {
- ops : &test_mpc55xx_drv_ops,
- size : sizeof( rtems_libi2c_drv_t)
-};
-#endif /* defined(USE_DSPI_READER_WRITER) */
-
-#define MPC55XX_TEST_DSPI_ADDRESS 0
-
-/* #define MPC55XX_TEST_DSPI_BUFSIZE (16 * 32) */
-#define MPC55XX_TEST_DSPI_BUFSIZE 8
-
-/* #define MPC55XX_TEST_DSPI_BUFSIZE_CACHE_PROOF MPC55XX_TEST_DSPI_BUFSIZE */
-#define MPC55XX_TEST_DSPI_BUFSIZE_CACHE_PROOF 32
-
-rtems_device_minor_number test_mpc55xx_dspi_bus [MPC55XX_DSPI_NUMBER];
-
-static rtems_libi2c_tfr_mode_t test_mpc55xx_dspi_transfer_mode = { baudrate : 550000, bits_per_char : 8, lsb_first : FALSE, clock_inv : FALSE, clock_phs : FALSE };
-
-static rtems_id test_mpc55xx_dspi_ping;
-
-static rtems_id test_mpc55xx_dspi_pong;
-
-#if defined(USE_DSPI_READER_WRITER)
-static unsigned char test_mpc55xx_dspi_writer_outbuf [2] [MPC55XX_TEST_DSPI_BUFSIZE_CACHE_PROOF] __attribute__ ((aligned (32)));
-
-static unsigned char test_mpc55xx_dspi_writer_inbuf [MPC55XX_TEST_DSPI_BUFSIZE_CACHE_PROOF] __attribute__ ((aligned (32)));
-
-static unsigned char test_mpc55xx_dspi_reader_inbuf [MPC55XX_TEST_DSPI_BUFSIZE_CACHE_PROOF] __attribute__ ((aligned (32)));
-
-static rtems_task test_mpc55xx_dspi_writer( rtems_task_argument arg)
-{
- rtems_status_code sc = RTEMS_SUCCESSFUL;
- int rv = 0;
- rtems_device_minor_number device;
- rtems_libi2c_read_write_t read_and_write = { rd_buf : NULL, wr_buf : NULL, byte_cnt : 0 };
- int i = 0;
-
- RTEMS_DEBUG_PRINT( "Task started\n");
-
- device = rtems_libi2c_register_drv( NULL, &test_mpc55xx_dspi_drv, test_mpc55xx_dspi_bus [2], 0);
- RTEMS_CHECK_RV_TASK( device, "rtems_libi2c_register_drv");
-
- sc = rtems_libi2c_send_start( device);
- RTEMS_CHECK_SC_TASK( sc, "rtems_libi2c_send_start");
-
- rv = rtems_libi2c_ioctl( device, RTEMS_LIBI2C_IOCTL_SET_TFRMODE, &test_mpc55xx_dspi_transfer_mode);
- RTEMS_CHECK_RV_TASK( rv, "rtems_libi2c_ioctl");
-
- sc = rtems_libi2c_send_addr( device, MPC55XX_TEST_DSPI_ADDRESS);
- RTEMS_CHECK_SC_TASK( sc, "rtems_libi2c_send_addr");
-
- for (i = 0; i < MPC55XX_TEST_DSPI_BUFSIZE; ++i) {
- test_mpc55xx_dspi_writer_outbuf [0] [i] = 0xa5;
- test_mpc55xx_dspi_writer_outbuf [1] [i] = 0xa5;
- /* test_mpc55xx_dspi_writer_outbuf [0] [i] = i + 1; */
- /* test_mpc55xx_dspi_writer_outbuf [1] [i] = -(i + 1); */
- }
-
- int toggle = 0;
- read_and_write.byte_cnt = MPC55XX_TEST_DSPI_BUFSIZE;
- read_and_write.rd_buf = test_mpc55xx_dspi_writer_inbuf;
- read_and_write.wr_buf = test_mpc55xx_dspi_writer_outbuf [toggle];
- while (1) {
- tic();
-
- /* sc = rtems_semaphore_obtain( test_mpc55xx_dspi_pong, RTEMS_WAIT, RTEMS_NO_TIMEOUT); */
- /* RTEMS_CHECK_SC_TASK( sc, "rtems_semaphore_obtain"); */
-
- RTEMS_DEBUG_PRINT( "Ping\n");
-
- /* sc = rtems_libi2c_send_start( device); */
- /* RTEMS_CHECK_SC_TASK( sc, "rtems_libi2c_send_start"); */
-
- /* sc = rtems_libi2c_send_addr( device, MPC55XX_TEST_DSPI_ADDRESS); */
- /* RTEMS_CHECK_SC_TASK( sc, "rtems_libi2c_send_addr"); */
-
- rv = rtems_libi2c_ioctl( device, RTEMS_LIBI2C_IOCTL_READ_WRITE, &read_and_write);
- RTEMS_CHECK_RV_TASK( rv, "rtems_libi2c_ioctl: RTEMS_LIBI2C_IOCTL_READ_WRITE");
-
- /* rv = rtems_libi2c_write_bytes( device, test_mpc55xx_dspi_writer_outbuf [0], MPC55XX_TEST_DSPI_BUFSIZE); */
- /* RTEMS_CHECK_RV_TASK( rv, "rtems_libi2c_write_bytes"); */
-
- /* sc = rtems_libi2c_send_stop( device); */
- /* RTEMS_CHECK_SC_TASK( sc, "rtems_libi2c_send_stop"); */
-
- toggle = toggle ? 0 : 1;
- read_and_write.wr_buf = test_mpc55xx_dspi_writer_outbuf [toggle];
-
- /* sc = rtems_semaphore_release( test_mpc55xx_dspi_ping); */
- /* RTEMS_CHECK_SC_TASK( sc, "rtems_semaphore_release"); */
- }
-
- sc = rtems_libi2c_send_stop( device);
- RTEMS_CHECK_SC_TASK( sc, "rtems_libi2c_send_stop");
-
- sc = rtems_task_delete( RTEMS_SELF);
- RTEMS_CHECK_SC_TASK( sc, "rtems_task_delete");
-}
-
-static rtems_task test_mpc55xx_dspi_reader( rtems_task_argument arg)
-{
- rtems_status_code sc = RTEMS_SUCCESSFUL;
- int rv = 0;
- rtems_device_minor_number device;
- int i = 0;
-
- RTEMS_DEBUG_PRINT( "Task started\n");
-
- device = rtems_libi2c_register_drv( NULL, &test_mpc55xx_dspi_drv, test_mpc55xx_dspi_bus [3], 0);
- RTEMS_CHECK_RV_TASK( device, "rtems_libi2c_register_drv");
-
- sc = rtems_libi2c_send_start( device);
- RTEMS_CHECK_SC_TASK( sc, "rtems_libi2c_send_start");
-
- rv = rtems_libi2c_ioctl( device, RTEMS_LIBI2C_IOCTL_SET_TFRMODE, &test_mpc55xx_dspi_transfer_mode);
- RTEMS_CHECK_RV_TASK( rv, "rtems_libi2c_ioctl");
-
- sc = rtems_libi2c_send_addr( device, MPC55XX_TEST_DSPI_ADDRESS);
- RTEMS_CHECK_SC_TASK( sc, "rtems_libi2c_send_addr");
-
- for (i = 0; i < MPC55XX_TEST_DSPI_BUFSIZE; ++i) {
- test_mpc55xx_dspi_reader_inbuf [i] = -1;
- }
-
- sc = rtems_semaphore_obtain( test_mpc55xx_dspi_ping, RTEMS_WAIT, RTEMS_NO_TIMEOUT);
- RTEMS_CHECK_SC_TASK( sc, "rtems_semaphore_obtain");
-
- RTEMS_DEBUG_PRINT( "Pong\n");
-
- sc = rtems_semaphore_release( test_mpc55xx_dspi_pong);
- RTEMS_CHECK_SC_TASK( sc, "rtems_semaphore_release");
-
- while (1) {
- sc = rtems_semaphore_obtain( test_mpc55xx_dspi_ping, RTEMS_WAIT, RTEMS_NO_TIMEOUT);
- RTEMS_CHECK_SC_TASK( sc, "rtems_semaphore_obtain");
-
- RTEMS_DEBUG_PRINT( "Pong\n");
-
- rv = rtems_libi2c_read_bytes( device, test_mpc55xx_dspi_reader_inbuf, MPC55XX_TEST_DSPI_BUFSIZE);
- RTEMS_CHECK_RV_TASK( rv, "rtems_libi2c_read_bytes");
-
- sc = rtems_semaphore_release( test_mpc55xx_dspi_pong);
- RTEMS_CHECK_SC_TASK( sc, "rtems_semaphore_release");
-
- printk( "Time: %i, Value: 0x%02x%02x%02x%02x\n", tac(),
- test_mpc55xx_dspi_reader_inbuf [0], test_mpc55xx_dspi_reader_inbuf [1],
- test_mpc55xx_dspi_reader_inbuf [2], test_mpc55xx_dspi_reader_inbuf [3]);
- }
-
- sc = rtems_libi2c_send_stop( device);
- RTEMS_CHECK_SC_TASK( sc, "rtems_libi2c_send_stop");
-
- sc = rtems_task_delete( RTEMS_SELF);
- RTEMS_CHECK_SC_TASK( sc, "rtems_task_delete");
-}
-#endif /* defined(USE_DSPI_READER_WRITER) */
-
-rtems_task test_sd_card( rtems_task_argument arg);
-
-static rtems_task test_mpc55xx_intc( rtems_task_argument arg);
-
-rtems_status_code mpc55xx_dspi_register(void)
-{
- rtems_status_code sc = RTEMS_SUCCESSFUL;
- int rv = 0;
- int i = 0;
- char device_name [] = "/dev/spi0";
- union SIU_PCR_tag pcr = MPC55XX_ZERO_FLAGS;
-
- printk( "Boot time: %u\n", ppc_time_base());
-
- /*
- test_mpc55xx_intc( 0);
- */
-
- rv = rtems_libi2c_initialize();
- RTEMS_CHECK_RV_SC( rv, "rtems_libi2c_initialize");
-
- /* DSPI D inputs are taken from DSPI C */
- SIU.DISR.R = 0x000000FC;
-
- /* DSPI A signals */
- pcr.B.PA = 1;
- pcr.B.ODE = 0;
- pcr.B.HYS = 0;
- pcr.B.SRC = 3;
- pcr.B.WPE = 1;
- pcr.B.WPS = 1;
-
- /* SCK */
- pcr.B.OBE = 1;
- pcr.B.IBE = 0;
- SIU.PCR [93].R = pcr.R;
-
- /* SIN */
- pcr.B.OBE = 0;
- pcr.B.IBE = 1;
- SIU.PCR [94].R = pcr.R;
-
- /* SOUT */
- pcr.B.OBE = 1;
- pcr.B.IBE = 0;
- SIU.PCR [95].R = pcr.R;
-
- /* PCSx */
- pcr.B.OBE = 1;
- pcr.B.IBE = 0;
- SIU.PCR [96].R = pcr.R;
- SIU.PCR [97].R = pcr.R;
- SIU.PCR [98].R = pcr.R;
- SIU.PCR [99].R = pcr.R;
- SIU.PCR [100].R = pcr.R;
- SIU.PCR [101].R = pcr.R;
-
- mpc55xx_dspi_bus_table [3].master = 0;
- for (i = 0; i < MPC55XX_DSPI_NUMBER; ++i) {
- device_name [8] = '0' + i;
- rv = rtems_libi2c_register_bus( device_name, (rtems_libi2c_bus_t *) &mpc55xx_dspi_bus_table [i]);
- RTEMS_CHECK_RV_SC( rv, device_name);
- test_mpc55xx_dspi_bus [i] = rv;
- }
-
- sc = rtems_semaphore_create (
- rtems_build_name ( 'P', 'I', 'N', 'G'),
- 1,
- RTEMS_SIMPLE_BINARY_SEMAPHORE | RTEMS_PRIORITY,
- RTEMS_NO_PRIORITY,
- &test_mpc55xx_dspi_ping
- );
- RTEMS_CHECK_SC( sc, "rtems_semaphore_create");
-
- sc = rtems_semaphore_create (
- rtems_build_name ( 'P', 'O', 'N', 'G'),
- 0,
- RTEMS_SIMPLE_BINARY_SEMAPHORE | RTEMS_PRIORITY,
- RTEMS_NO_PRIORITY,
- &test_mpc55xx_dspi_pong
- );
- RTEMS_CHECK_SC( sc, "rtems_semaphore_create");
-
-#if defined(USE_DSPI_READER_WRITER)
- rtems_id writer_task_id;
- rtems_id reader_task_id;
-
- sc = rtems_task_create(
- rtems_build_name( 'T', 'W', 'R', 'T'),
- 2,
- RTEMS_MINIMUM_STACK_SIZE,
- RTEMS_DEFAULT_MODES,
- RTEMS_DEFAULT_ATTRIBUTES,
- &writer_task_id
- );
- RTEMS_CHECK_SC( sc, "rtems_task_create");
- sc = rtems_task_create(
- rtems_build_name( 'T', 'R', 'D', 'R'),
- 1,
- RTEMS_MINIMUM_STACK_SIZE,
- RTEMS_DEFAULT_MODES,
- RTEMS_DEFAULT_ATTRIBUTES,
- &reader_task_id
- );
- RTEMS_CHECK_SC( sc, "rtems_task_create");
-
- sc = rtems_task_start( writer_task_id, test_mpc55xx_dspi_writer, 0);
- RTEMS_CHECK_SC( sc, "rtems_task_start");
- sc = rtems_task_start( reader_task_id, test_mpc55xx_dspi_reader, 0);
- RTEMS_CHECK_SC( sc, "rtems_task_start");
-#endif
-
- rtems_id sd_card_task_id;
- sc = rtems_task_create(
- rtems_build_name( 'T', 'S', 'D', 'C'),
- 1,
- RTEMS_MINIMUM_STACK_SIZE,
- RTEMS_DEFAULT_MODES,
- RTEMS_DEFAULT_ATTRIBUTES,
- &sd_card_task_id
- );
- RTEMS_CHECK_SC( sc, "rtems_task_create");
- sc = rtems_task_start( sd_card_task_id, test_sd_card, 0);
- RTEMS_CHECK_SC( sc, "rtems_task_start");
-
- return RTEMS_SUCCESSFUL;
-
- rtems_id intc_id;
- sc = rtems_task_create(
- rtems_build_name( 'I', 'N', 'T', 'C'),
- 2,
- RTEMS_MINIMUM_STACK_SIZE,
- RTEMS_DEFAULT_MODES,
- RTEMS_DEFAULT_ATTRIBUTES,
- &intc_id
- );
- RTEMS_CHECK_SC( sc, "rtems_task_create");
- sc = rtems_task_start( intc_id, test_mpc55xx_intc, 0);
- RTEMS_CHECK_SC( sc, "rtems_task_start");
-
- return RTEMS_SUCCESSFUL;
-}
-
-#if 0
-
-#include <sys/types.h>
-#include <sys/stat.h>
-#include <unistd.h>
-#include <fcntl.h>
-#include <dirent.h>
-#include <stdio.h>
-#include <rtems/fsmount.h>
-#include <rtems/dosfs.h>
-#include <rtems/ide_part_table.h>
-
-#define TEST_SD_CARD_BUF_SIZE 512
-#define TEST_SD_CARD_BIGBUF_SIZE (256 * 1024)
-
-#define TEST_SD_CARD_DEVICE_FILE "/dev/sd-card-a"
-#define TEST_SD_CARD_PARTITION "/dev/sd-card-a1"
-#define TEST_SD_CARD_MOUNT_POINT "/mnt"
-#define TEST_SD_CARD_DIRECTORY "/mnt/testdir"
-
-static fstab_t test_sd_card_fs_table [] = { {
- TEST_SD_CARD_PARTITION, TEST_SD_CARD_MOUNT_POINT,
- &msdos_ops, RTEMS_FILESYSTEM_READ_WRITE,
- FSMOUNT_MNT_OK | FSMOUNT_MNTPNT_CRTERR | FSMOUNT_MNT_FAILED,
- FSMOUNT_MNT_OK
- }, {
- TEST_SD_CARD_DEVICE_FILE, TEST_SD_CARD_MOUNT_POINT,
- &msdos_ops, RTEMS_FILESYSTEM_READ_WRITE,
- FSMOUNT_MNT_OK | FSMOUNT_MNTPNT_CRTERR | FSMOUNT_MNT_FAILED,
- 0
- }
-};
-
-static uint8_t test_sd_card_buf [TEST_SD_CARD_BUF_SIZE] __attribute__ ((aligned (32)));
-
-static int test_sd_card_print_dir( const char* dirname, unsigned level)
-{
- int rv = 0;
- DIR *dir = NULL;
- struct dirent *ent;
- struct stat s;
- int i = 0;
-
- /* Open */
- dir = opendir( dirname);
- rv = dir == NULL ? -1 : 0;
- RTEMS_CHECK_RV( rv, "Open directory");
-
- /* Change CWD */
- rv = chdir( dirname);
- RTEMS_CHECK_RV( rv, "Change directory");
-
- /* Read */
- ent = readdir( dir);
- while (ent != NULL) {
- if (stat( ent->d_name, &s) == 0 && strcmp( ".", ent->d_name) != 0 && strcmp( "..", ent->d_name)) {
- for (i = 0; i < level; ++i) {
- printk( "\t");
- }
- printk( "<%s>\n", ent->d_name);
- if (S_ISDIR( s.st_mode)) {
- rv = test_sd_card_print_dir( ent->d_name, level + 1);
- RTEMS_CHECK_RV( rv, "Next directory");
- }
- }
- ent = readdir( dir);
- }
-
- /* Change CWD */
- rv = chdir( "..");
- RTEMS_CHECK_RV( rv, "Change directory");
-
- /* Close */
- rv = closedir( dir);
- RTEMS_CHECK_RV( rv, "Close directory");
-
- return 0;
-}
-
-rtems_task test_sd_card( rtems_task_argument arg)
-{
- rtems_status_code sc = RTEMS_SUCCESSFUL;
- int rv = 0;
- rtems_device_minor_number minor;
- sd_card_driver_entry *e = &sd_card_driver_table [0];
- int fd = 0;
- unsigned i = 0;
- unsigned avg = 0;
- unsigned t = 0;
- char file_name [] = "00000000.TXT";
- uint8_t *buf = NULL;
-
- RTEMS_DEBUG_PRINT( "Task started\n");
-
- minor = rtems_libi2c_register_drv( e->device_name, (rtems_libi2c_drv_t *) e, test_mpc55xx_dspi_bus [0], 0);
- RTEMS_CHECK_RV_TASK( (int) minor, "rtems_libi2c_register_drv");
-
- buf = malloc( TEST_SD_CARD_BIGBUF_SIZE);
- for (i = 0; i < TEST_SD_CARD_BIGBUF_SIZE; ++i) {
- if (i % 27 == 26) {
- buf [i] = '\n';
- } else {
- buf [i] = 'A' + i % 27;
- }
- }
- buf [i - 1] = '\n';
-
- rv = test_sd_card_print_dir( "/dev", 0);
- RTEMS_CHECK_RV_TASK( rv, "Print directory");
-
- sc = rtems_ide_part_table_initialize( TEST_SD_CARD_DEVICE_FILE);
- RTEMS_CHECK_SC_TASK( sc, "Initialize IDE partition table");
-
- rv = mkdir( TEST_SD_CARD_MOUNT_POINT, S_IRWXU);
- RTEMS_CHECK_RV_TASK( rv, "Create mount point");
-
- rv = rtems_fsmount( test_sd_card_fs_table, sizeof( test_sd_card_fs_table) / sizeof( test_sd_card_fs_table [0]), NULL);
- RTEMS_CHECK_RV_TASK( rv, "Mount file systems");
-
- rv = test_sd_card_print_dir( "/dev", 0);
- RTEMS_CHECK_RV_TASK( rv, "Print directory");
-
- rv = test_sd_card_print_dir( TEST_SD_CARD_MOUNT_POINT, 0);
- RTEMS_CHECK_RV_TASK( rv, "Print directory");
-
- (void) rtems_task_delete( RTEMS_SELF);
-
- rv = mkdir( TEST_SD_CARD_DIRECTORY, S_IRWXU);
-
- rv = chdir( TEST_SD_CARD_DIRECTORY);
- RTEMS_CHECK_RV_TASK( rv, "Change directory");
-
- i = 0;
- while (1) {
- snprintf( file_name, 13, "%08i.TXT", i);
- tic();
- fd = creat( file_name, S_IREAD | S_IWRITE);
- RTEMS_CHECK_RV_TASK( fd, "Create file");
- rv = write( fd, buf, TEST_SD_CARD_BIGBUF_SIZE);
- RTEMS_CHECK_RV_TASK( rv, "Write file");
- rv = close( fd);
- RTEMS_CHECK_RV_TASK( rv, "Close file");
- t = tac();
- avg = ((uint64_t) avg * ((uint64_t) i) + (uint64_t) t) / ((uint64_t) i + 1);
- printk( "%s: %u (%u)\n", file_name, tac(), avg);
- ++i;
- }
-
- rv = chdir( "..");
- RTEMS_CHECK_RV_TASK( rv, "Change directory");
-
- rv = test_sd_card_print_dir( TEST_SD_CARD_DIRECTORY, 0);
- RTEMS_CHECK_RV_TASK( rv, "Print directory");
-
- (void) rtems_task_delete( RTEMS_SELF);
-
-
- #if 0
- /* Write */
- int b = 0;
- const char device_name [] = "/dev/spi0.sd-card-0";
- fd = open( device_name, O_RDWR);
-
- RTEMS_CHECK_RV_TASK( fd, "open");
- while (1) {
- for (i = 0; i < TEST_SD_CARD_BUF_SIZE; ++i) {
- test_sd_card_buf [i] = b;
- }
- ++b;
- rv = write( fd, test_sd_card_buf, TEST_SD_CARD_BUF_SIZE);
- if (rv < 0) {
- break;
- }
- }
- rv = close( fd);
- RTEMS_CHECK_RV_TASK( rv, "close");
-
- /* Read */
- fd = open( device_name, O_RDWR);
- RTEMS_CHECK_RV_TASK( fd, "open");
- while (1) {
- rv = read( fd, test_sd_card_buf, TEST_SD_CARD_BUF_SIZE);
- if (rv < 0) {
- break;
- }
- printk( "%02x", test_sd_card_buf [rv - 1]);
- if (i++ % 64 == 0) {
- printk( "\n");
- }
- }
- rv = close( fd);
- RTEMS_CHECK_RV_TASK( rv, "close");
- #endif
-
- (void) rtems_task_delete( RTEMS_SELF);
-}
-
-#endif
-
-#define ITER 4
-#define BUFSIZE (128 * ITER)
-
-static char inbuf [BUFSIZE];
-static char outbuf [BUFSIZE];
-
-#if 0
-static void test_mpc55xx_edma_done( mpc55xx_edma_channel_entry *e, uint32_t error_status)
-{
- rtems_semaphore_release( e->id);
-
- if (error_status != 0) {
- printk( "%s: Error status: 0x%08x\n", __func__, error_status);
- }
-}
-
-static rtems_status_code test_mpc55xx_edma(void)
-{
- rtems_status_code sc = RTEMS_SUCCESSFUL;
- mpc55xx_edma_channel_entry e = {
- .channel = 0,
- .done = test_mpc55xx_edma_done,
- .id = RTEMS_ID_NONE
- };
-
- sc = rtems_semaphore_create (
- rtems_build_name ( 'T', 'S', 'T', 'C'),
- 0,
- RTEMS_SIMPLE_BINARY_SEMAPHORE | RTEMS_PRIORITY,
- RTEMS_NO_PRIORITY,
- &e.id
- );
- RTEMS_CHECK_SC( sc, "rtems_semaphore_create");
-
- sc = mpc55xx_edma_obtain_channel( &e);
- RTEMS_CHECK_RV( sc, "mpc55xx_edma_obtain_channel");
-
- int i = 0;
- for (i = 0; i < BUFSIZE; ++i) {
- inbuf [i] = i;
- outbuf [i] = -1;
- }
- rtems_cache_flush_multiple_data_lines( inbuf, BUFSIZE);
- rtems_cache_flush_multiple_data_lines( outbuf, BUFSIZE);
-
- struct tcd_t tcd = EDMA_TCD_DEFAULT;
- tcd.SADDR = (uint32_t) &inbuf;
- tcd.DADDR = (uint32_t) &outbuf;
- tcd.NBYTES = BUFSIZE / ITER;
- tcd.SLAST = -BUFSIZE;
- tcd.CDF.B.CITER = ITER;
- tcd.BMF.B.BITER = ITER;
- tcd.BMF.B.INT_HALF = 1;
-
- EDMA.TCD [e.channel] = tcd;
-
- while (1) {
- while (1) {
- if (EDMA.TCD [e.channel].BMF.B.DONE == 1) {
- EDMA.TCD [e.channel].BMF.B.DONE = 0;
- printk( "%s: Done\n", __func__);
- break;
- } else if (EDMA.TCD [e.channel].BMF.B.ACTIVE == 0) {
- EDMA.SSBR.R = e.channel;
- printk( "%s: Start: %i (%i)\n", __func__, EDMA.TCD [e.channel].CDF.B.CITER, EDMA.TCD [e.channel].BMF.B.BITER);
- }
- sc = rtems_semaphore_obtain( e.id, RTEMS_WAIT, 10);
- if (sc == RTEMS_TIMEOUT) {
- continue;
- }
- RTEMS_CHECK_SC( sc, "rtems_semaphore_obtain");
- }
- }
-
- return RTEMS_SUCCESSFUL;
-}
-#endif /* 0 */
-
-#include <stdlib.h>
-
-static unsigned test_mpc55xx_intc_counter = 0;
-
-static inline void test_mpc55xx_intc_worker( void *data)
-{
- int s = 0;
- int i = *(int *) data;
- printk( "(%i): Start: %u\n", i, tac());
- s = mpc55xx_intc_clear_software_irq( i);
- if (i < MPC55XX_IRQ_SOFTWARE_NUMBER) {
- tic();
- s = mpc55xx_intc_raise_software_irq( i + 1);
- }
- ++test_mpc55xx_intc_counter;
- printk( "(%i): Done\n", i);
-}
-
-static void test_mpc55xx_intc_handler( void *data)
-{
- test_mpc55xx_intc_worker( data);
-}
-
-static void test_mpc55xx_intc_handler_2( void *data)
-{
- test_mpc55xx_intc_worker( data);
-}
-
-static void test_mpc55xx_intc_handler_3( void *data)
-{
- test_mpc55xx_intc_worker( data);
-}
-
-static int test_mpc55xx_intc_handler_data [MPC55XX_IRQ_SOFTWARE_NUMBER];
-
-static rtems_task test_mpc55xx_intc( rtems_task_argument arg)
-{
- rtems_status_code sc = RTEMS_SUCCESSFUL;
- rtems_irq_connect_data e = {
- .on = NULL,
- .off = NULL,
- .isOn = NULL
- };
- volatile int i = 0;
- int p = 0;
- unsigned s = 0;
-
- for (i = MPC55XX_IRQ_SOFTWARE_MIN, p = MPC55XX_INTC_MIN_PRIORITY; i <= MPC55XX_IRQ_SOFTWARE_MAX; ++i, ++p) {
- test_mpc55xx_intc_handler_data [i] = i;
- e.name = i;
- e.handle = &test_mpc55xx_intc_handler_data [i];
-
- sc = rtems_interrupt_handler_install( i, "test_mpc55xx_intc_handler", RTEMS_INTERRUPT_SHARED, test_mpc55xx_intc_handler, e.handle);
- if (sc != RTEMS_SUCCESSFUL) {
- BSP_panic( "Handler install failed");
- }
-
- e.hdl = test_mpc55xx_intc_handler_2;
- if (BSP_install_rtems_shared_irq_handler( &e) != 1) {
- BSP_panic( "Handler install 2 failed");
- }
-
- e.hdl = test_mpc55xx_intc_handler_3;
- if (BSP_install_rtems_shared_irq_handler( &e) != 1) {
- BSP_panic( "Handler install 3 failed");
- }
- }
-
- while (1) {
- i = (int) (7.0 * (rand_r( &s) / (RAND_MAX + 1.0)));
- tic();
- mpc55xx_intc_raise_software_irq( i);
- }
-}