wip
authoroharboe <oharboe@b42882b7-edfa-0310-969c-e2dbd0fdcd60>
Wed, 26 Nov 2008 13:31:26 +0000 (13:31 +0000)
committeroharboe <oharboe@b42882b7-edfa-0310-969c-e2dbd0fdcd60>
Wed, 26 Nov 2008 13:31:26 +0000 (13:31 +0000)
git-svn-id: svn://svn.berlios.de/openocd/trunk@1184 b42882b7-edfa-0310-969c-e2dbd0fdcd60

src/ecosboard.c
src/jtag/zy1000.c

index ed7492c667c7bd2c6e8a98ac8af2445ac27bb278..8195943e0267de06172cacad8f58d9459ad8b106 100644 (file)
@@ -543,10 +543,10 @@ static void setPower(bool power)
        savePower = power;
        if (power)
        {
-               HAL_WRITE_UINT32(0x08000014, 0x8);
+               HAL_WRITE_UINT32(ZY1000_JTAG_BASE+0x14, 0x8);
        } else
        {
-               HAL_WRITE_UINT32(0x08000010, 0x8);
+               HAL_WRITE_UINT32(ZY1000_JTAG_BASE+0x10, 0x8);
        }
 }
 
@@ -1413,7 +1413,6 @@ static char uart_stack[4096];
 static char forwardBuffer[1024]; // NB! must be smaller than a TCP/IP packet!!!!!
 static char backwardBuffer[1024];
 
-static cyg_io_handle_t serial_handle;
 
 void setNoDelay(int session, int flag)
 {
@@ -1686,6 +1685,16 @@ int handle_uart_command(struct command_context_s *cmd_ctx, char *cmd, char **arg
        //get existing serial configuration
        len = sizeof(cyg_serial_info_t);
        int err;
+       cyg_io_handle_t serial_handle;
+
+       err = cyg_io_lookup("/dev/ser0", &serial_handle);
+       if (err != ENOERR)
+       {
+               LOG_ERROR("/dev/ser0 not found\n");
+               return ERROR_FAIL;
+       }
+
+
        err = cyg_io_get_config(serial_handle, CYG_IO_GET_CONFIG_SERIAL_OUTPUT_DRAIN, &buf, &len);
        err = cyg_io_get_config(serial_handle, CYG_IO_GET_CONFIG_SERIAL_INFO, &buf, &len);
        if (err != ENOERR)
@@ -1748,6 +1757,8 @@ int main(int argc, char *argv[])
        ramblockdevice=(cyg_uint8 *)malloc(ramblockdevice_size);
        memset(ramblockdevice, 0xff, ramblockdevice_size);
 
+
+
 #ifdef CYGNUM_HAL_VECTOR_UNDEF_INSTRUCTION
        setHandler(CYGNUM_HAL_VECTOR_UNDEF_INSTRUCTION);
        setHandler(CYGNUM_HAL_VECTOR_ABORT_PREFETCH);
@@ -1755,12 +1766,6 @@ int main(int argc, char *argv[])
 #endif
 
        int err;
-       err = cyg_io_lookup("/dev/ser0", &serial_handle);
-       if (err != ENOERR)
-       {
-               diag_printf("/dev/ser0 not found\n");
-               reboot();
-       }
 
        setPower(true); // on by default
 
@@ -1811,48 +1816,54 @@ int main(int argc, char *argv[])
        err = mount("/dev/flash1", "/config", "jffs2");
        if (err < 0)
        {
-               diag_printf("unable to mount jffs\n");
-               reboot();
-       }
-
-       /* are we using a ram disk instead of a flash disk? This is used
-        * for ZY1000 live demo...
-        *
-        * copy over flash disk to ram block device
-        */
-       if (boolParam("ramdisk"))
-       {
-               diag_printf("Unmounting /config from flash and using ram instead\n");
-               err=umount("/config");
-               if (err < 0)
+               diag_printf("unable to mount jffs2, falling back to ram disk..\n");
+               err = mount("", "/config", "ramfs");
+               if (err<0)
                {
-                       diag_printf("unable to unmount jffs\n");
+                       diag_printf("unable to mount /config as ramdisk.\n");
                        reboot();
                }
-
-               err = mount("/dev/flash1", "/config2", "jffs2");
-               if (err < 0)
+       } else
+       {
+               /* are we using a ram disk instead of a flash disk? This is used
+                * for ZY1000 live demo...
+                *
+                * copy over flash disk to ram block device
+                */
+               if (boolParam("ramdisk"))
                {
-                       diag_printf("unable to mount jffs\n");
-                       reboot();
-               }
+                       diag_printf("Unmounting /config from flash and using ram instead\n");
+                       err=umount("/config");
+                       if (err < 0)
+                       {
+                               diag_printf("unable to unmount jffs\n");
+                               reboot();
+                       }
 
-               err = mount("/dev/ram", "/config", "jffs2");
-               if (err < 0)
-               {
-                       diag_printf("unable to mount ram block device\n");
-                       reboot();
-               }
+                       err = mount("/dev/flash1", "/config2", "jffs2");
+                       if (err < 0)
+                       {
+                               diag_printf("unable to mount jffs\n");
+                               reboot();
+                       }
 
-//             copydir("/config2", "/config");
-               copyfile("/config2/ip", "/config/ip");
-               copydir("/config2/settings", "/config/settings");
+                       err = mount("/dev/ram", "/config", "jffs2");
+                       if (err < 0)
+                       {
+                               diag_printf("unable to mount ram block device\n");
+                               reboot();
+                       }
 
-               umount("/config2");
-       } else
-       {
-               /* we're not going to use a ram block disk */
-               free(ramblockdevice);
+       //              copydir("/config2", "/config");
+                       copyfile("/config2/ip", "/config/ip");
+                       copydir("/config2/settings", "/config/settings");
+
+                       umount("/config2");
+               } else
+               {
+                       /* we're not going to use a ram block disk */
+                       free(ramblockdevice);
+               }
        }
 
 
index 5ec1d8adbd197d957eb520f38f2ed897db685bc0..423822b2157a0716391623c9a6df80993efa7141 100644 (file)
@@ -81,8 +81,8 @@ static bool readPowerDropout()
 {
        cyg_uint32 state;
        // sample and clear power dropout
-       HAL_WRITE_UINT32(0x08000010, 0x80);
-       HAL_READ_UINT32(0x08000010, state);
+       HAL_WRITE_UINT32(ZY1000_JTAG_BASE+0x10, 0x80);
+       HAL_READ_UINT32(ZY1000_JTAG_BASE+0x10, state);
        bool powerDropout;
        powerDropout = (state & 0x80) != 0;
        return powerDropout;
@@ -93,8 +93,8 @@ static bool readSRST()
 {
        cyg_uint32 state;
        // sample and clear SRST sensing
-       HAL_WRITE_UINT32(0x08000010, 0x00000040);
-       HAL_READ_UINT32(0x08000010, state);
+       HAL_WRITE_UINT32(ZY1000_JTAG_BASE+0x10, 0x00000040);
+       HAL_READ_UINT32(ZY1000_JTAG_BASE+0x10, state);
        bool srstAsserted;
        srstAsserted = (state & 0x40) != 0;
        return srstAsserted;
@@ -153,35 +153,35 @@ void zy1000_reset(int trst, int srst)
        LOG_DEBUG("zy1000 trst=%d, srst=%d", trst, srst);
        if(!srst)
        {
-               ZY1000_POKE(0x08000014, 0x00000001);
+               ZY1000_POKE(ZY1000_JTAG_BASE+0x14, 0x00000001);
        }
        else
        {
                /* Danger!!! if clk!=0 when in
                 * idle in TAP_RTI, reset halt on str912 will fail.
                 */
-               ZY1000_POKE(0x08000010, 0x00000001);
+               ZY1000_POKE(ZY1000_JTAG_BASE+0x10, 0x00000001);
        }
 
        if(!trst)
        {
-               ZY1000_POKE(0x08000014, 0x00000002);
+               ZY1000_POKE(ZY1000_JTAG_BASE+0x14, 0x00000002);
        }
        else
        {
                /* assert reset */
-               ZY1000_POKE(0x08000010, 0x00000002);
+               ZY1000_POKE(ZY1000_JTAG_BASE+0x10, 0x00000002);
        }
 
        if (trst||(srst&&(jtag_reset_config & RESET_SRST_PULLS_TRST)))
        {
                waitIdle();
                /* we're now in the TLR state until trst is deasserted */
-               ZY1000_POKE(0x08000020, TAP_TLR);
+               ZY1000_POKE(ZY1000_JTAG_BASE+0x20, TAP_TLR);
        } else
        {
                /* We'll get RCLK failure when we assert TRST, so clear any false positives here */
-               ZY1000_POKE(0x08000014, 0x400);
+               ZY1000_POKE(ZY1000_JTAG_BASE+0x14, 0x400);
        }
 
        /* wait for srst to float back up */
@@ -216,7 +216,7 @@ int zy1000_speed(int speed)
        {
                /*0 means RCLK*/
                speed = 0;
-               ZY1000_POKE(0x08000010, 0x100);
+               ZY1000_POKE(ZY1000_JTAG_BASE+0x10, 0x100);
                LOG_DEBUG("jtag_speed using RCLK");
        }
        else
@@ -228,8 +228,8 @@ int zy1000_speed(int speed)
                }
 
                LOG_USER("jtag_speed %d => JTAG clk=%f", speed, 64.0/(float)speed);
-               ZY1000_POKE(0x08000014, 0x100);
-               ZY1000_POKE(0x0800001c, speed&~1);
+               ZY1000_POKE(ZY1000_JTAG_BASE+0x14, 0x100);
+               ZY1000_POKE(ZY1000_JTAG_BASE+0x1c, speed&~1);
        }
        return ERROR_OK;
 }
@@ -242,7 +242,7 @@ int zy1000_register_commands(struct command_context_s *cmd_ctx)
 
 int zy1000_init(void)
 {
-       ZY1000_POKE(0x08000010, 0x30); // Turn on LED1 & LED2
+       ZY1000_POKE(ZY1000_JTAG_BASE+0x10, 0x30); // Turn on LED1 & LED2
 
         /* deassert resets. Important to avoid infinite loop waiting for SRST to deassert */
        zy1000_reset(0, 0);
@@ -324,9 +324,9 @@ int interface_jtag_execute_queue(void)
        cyg_uint32 empty;
 
        waitIdle();
-       ZY1000_PEEK(0x08000010, empty);
+       ZY1000_PEEK(ZY1000_JTAG_BASE+0x10, empty);
        /* clear JTAG error register */
-       ZY1000_POKE(0x08000014, 0x400);
+       ZY1000_POKE(ZY1000_JTAG_BASE+0x14, 0x400);
 
        if ((empty&0x400)!=0)
        {
@@ -347,7 +347,7 @@ static cyg_uint32 getShiftValue()
 {
        cyg_uint32 value;
        waitIdle();
-       ZY1000_PEEK(0x0800000c, value);
+       ZY1000_PEEK(ZY1000_JTAG_BASE+0xc, value);
        VERBOSE(LOG_INFO("getShiftValue %08x", value));
        return value;
 }
@@ -356,7 +356,7 @@ static cyg_uint32 getShiftValueFlip()
 {
        cyg_uint32 value;
        waitIdle();
-       ZY1000_PEEK(0x08000018, value);
+       ZY1000_PEEK(ZY1000_JTAG_BASE+0x18, value);
        VERBOSE(LOG_INFO("getShiftValue %08x (flipped)", value));
        return value;
 }
@@ -369,8 +369,8 @@ static void shiftValueInnerFlip(const enum tap_state state, const enum tap_state
        cyg_uint32 a,b;
        a=state;
        b=endState;
-       ZY1000_POKE(0x0800000c, value);
-       ZY1000_POKE(0x08000008, (1<<15)|(repeat<<8)|(a<<4)|b);
+       ZY1000_POKE(ZY1000_JTAG_BASE+0xc, value);
+       ZY1000_POKE(ZY1000_JTAG_BASE+0x8, (1<<15)|(repeat<<8)|(a<<4)|b);
        VERBOSE(getShiftValueFlip());
 }
 #endif
@@ -680,10 +680,10 @@ int interface_jtag_add_runtest(int num_cycles, enum tap_state state)
        {
                tms = (tms_scan >> i) & 1;
                waitIdle();
-               ZY1000_POKE(0x08000028,  tms);
+               ZY1000_POKE(ZY1000_JTAG_BASE+0x28,  tms);
        }
        waitIdle();
-       ZY1000_POKE(0x08000020, state);
+       ZY1000_POKE(ZY1000_JTAG_BASE+0x20, state);
 #endif
 
 
@@ -725,7 +725,7 @@ int interface_jtag_add_pathmove(int num_states, enum tap_state *path)
                }
 
                waitIdle();
-               ZY1000_POKE(0x08000028,  tms);
+               ZY1000_POKE(ZY1000_JTAG_BASE+0x28,  tms);
 
                cur_state = path[state_count];
                state_count++;
@@ -733,7 +733,7 @@ int interface_jtag_add_pathmove(int num_states, enum tap_state *path)
        }
 
        waitIdle();
-       ZY1000_POKE(0x08000020,  cur_state);
+       ZY1000_POKE(ZY1000_JTAG_BASE+0x20,  cur_state);
        return ERROR_OK;
 }