[U-Boot-Users] [PATCH 3/4] microblaze changes

Michal Simek monstr at seznam.cz
Sun Aug 5 20:56:30 CEST 2007


Signed-off-by: Michal Simek <monstr at monstr.eu>

Minor microblaze changes. Change setting for XUPV2P.
Resolve problem with Barrel shifter
Repair cmd_mfsl code.

diff --git a/board/xilinx/xupv2p/Makefile b/board/xilinx/xupv2p/Makefile
index 9ab5633..99e7047 100644
--- a/board/xilinx/xupv2p/Makefile
+++ b/board/xilinx/xupv2p/Makefile
@@ -22,32 +22,17 @@
 #

 include $(TOPDIR)/config.mk
-ifneq ($(OBJTREE),$(SRCTREE))
-$(shell mkdir -p $(obj)../common)
-$(shell mkdir -p $(obj)../xilinx_enet)
-endif
-
-INCS  := -I../common -I../xilinx_enet
-CFLAGS  += $(INCS)
-HOST_CFLAGS += $(INCS)

 LIB = $(obj)lib$(BOARD).a

-COBJS = $(BOARD).o \
-   ../xilinx_enet/emac_adapter.o  ../xilinx_enet/xemac.o \
-   ../xilinx_enet/xemac_options.o ../xilinx_enet/xemac_polled.o \
-   ../xilinx_enet/xemac_intr.o ../xilinx_enet/xemac_g.o \
-   ../xilinx_enet/xemac_intr_dma.o ../common/xipif_v1_23_b.o \
-   ../common/xbasic_types.o ../common/xdma_channel.o \
-   ../common/xdma_channel_sg.o ../common/xpacket_fifo_v1_00_b.o \
-   ../common/xversion.o \
+COBJS = $(BOARD).o

 SRCS := $(SOBJS:.o=.S) $(COBJS:.o=.c)
 OBJS := $(addprefix $(obj),$(COBJS))
 SOBJS := $(addprefix $(obj),$(SOBJS))

-$(LIB): $(OBJS) $(SOBJS)
- $(AR) $(ARFLAGS) $@ $^
+$(LIB): $(obj).depend $(OBJS)
+ $(AR) $(ARFLAGS) $@ $(OBJS)

 clean:
  rm -f $(SOBJS) $(OBJS)
diff --git a/board/xilinx/xupv2p/config.mk b/board/xilinx/xupv2p/config.mk
index c07b0b3..eedfb24 100644
--- a/board/xilinx/xupv2p/config.mk
+++ b/board/xilinx/xupv2p/config.mk
@@ -25,8 +25,8 @@
 # Version: Xilinx EDK 8.2.02 EDK_Im_Sp2.4
 #

-TEXT_BASE = 0x38000000
+TEXT_BASE = 0x30000000

+PLATFORM_CPPFLAGS += -mxl-pattern-compare
 PLATFORM_CPPFLAGS += -mno-xl-soft-mul
-PLATFORM_CPPFLAGS += -mno-xl-soft-div
-PLATFORM_CPPFLAGS += -mxl-barrel-shift
+PLATFORM_CPPFLAGS += -mcpu=v5.00.c
diff --git a/board/xilinx/xupv2p/xparameters.h 
b/board/xilinx/xupv2p/xparameters.h
index a96c693..0bb7a80 100644
--- a/board/xilinx/xupv2p/xparameters.h
+++ b/board/xilinx/xupv2p/xparameters.h
@@ -28,17 +28,24 @@
 /* System Clock Frequency */
 #define XILINX_CLOCK_FREQ 100000000

+/* Microblaze is microblaze_0 */
+#define XILINX_USE_MSR_INSTR 1
+#define XILINX_PVR 0
+#define XILINX_FSL_NUMBER 0
+
 /* Interrupt controller is opb_intc_0 */
 #define XILINX_INTC_BASEADDR 0x41200000
-#define XILINX_INTC_NUM_INTR_INPUTS 11
+#define XILINX_INTC_NUM_INTR_INPUTS 7

 /* Timer pheriphery is opb_timer_1 */
 #define XILINX_TIMER_BASEADDR 0x41c00000
-#define XILINX_TIMER_IRQ 1
+#define XILINX_TIMER_IRQ 0

 /* Uart pheriphery is RS232_Uart_1 */
-#define XILINX_UART_BASEADDR 0x40600000
-#define XILINX_UART_BAUDRATE 115200
+#define XILINX_UARTLITE_BASEADDR 0x40600000
+#define XILINX_UARTLITE_BAUDRATE 115200
+
+/* IIC doesn't exist */

 /* GPIO is LEDs_4Bit*/
 #define XILINX_GPIO_BASEADDR 0x40000000
@@ -51,14 +58,10 @@

 /* Sysace Controller is SysACE_CompactFlash */
 #define XILINX_SYSACE_BASEADDR 0x41800000
-#define XILINX_SYSACE_HIGHADDR 0x4180ffff
 #define XILINX_SYSACE_MEM_WIDTH 16

 /* Ethernet controller is Ethernet_MAC */
-#define XPAR_XEMAC_NUM_INSTANCES 1
-#define XPAR_OPB_ETHERNET_0_DEVICE_ID 0
-#define XPAR_OPB_ETHERNET_0_BASEADDR 0x40c00000
-#define XPAR_OPB_ETHERNET_0_HIGHADDR 0x40c0ffff
-#define XPAR_OPB_ETHERNET_0_DMA_PRESENT 1
-#define XPAR_OPB_ETHERNET_0_ERR_COUNT_EXIST 1
-#define XPAR_OPB_ETHERNET_0_MII_EXIST 1
+#define XILINX_EMAC_BASEADDR 0x40c00000
+#define XILINX_EMAC_DMA_PRESENT 3
+#define XILINX_EMAC_HALF_DUPLEX_EXIST 1
+#define XILINX_EMAC_MII_EXIST 1
diff --git a/common/cmd_mfsl.c b/common/cmd_mfsl.c
index ffa2666..337dfbb 100644
--- a/common/cmd_mfsl.c
+++ b/common/cmd_mfsl.c
@@ -357,7 +357,7 @@ int do_rspr (cmd_tbl_t * cmdtp, int flag, int argc, char 
*argv[])

  reg = (unsigned int)simple_strtoul (argv[1], NULL, 16);
  val = (unsigned int)simple_strtoul (argv[2], NULL, 16);
- if (argc < 1) {
+ if (argc < 2) {
   printf ("Usage:\n%s\n", cmdtp->usage);
   return 1;
  }
@@ -382,6 +382,7 @@ int do_rspr (cmd_tbl_t * cmdtp, int flag, int argc, char 
*argv[])
   puts ("ESR");
   break;
  default:
+  puts ("Unsupported register\n");
   return 1;
  }
  printf (": 0x%08lx\n", val);
@@ -408,10 +409,10 @@ U_BOOT_CMD (fwr, 4, 1, do_fwr,
   " 3 - blocking control write\n");

 U_BOOT_CMD (rspr, 3, 1, do_rspr,
-  "rmsr    - read/write special purpose register\n",
+  "rspr    - read/write special purpose register\n",
   "- reg_num [write value] read/write special purpose register\n"
-  " 0 - MSR - Machine status register\n"
-  " 1 - EAR - Exception address register\n"
-  " 2 - ESR - Exception status register\n");
+  " 1 - MSR - Machine status register\n"
+  " 3 - EAR - Exception address register\n"
+  " 5 - ESR - Exception status register\n");

 #endif    /* CONFIG_MICROBLAZE & CFG_CMD_MFSL */
diff --git a/cpu/microblaze/start.S b/cpu/microblaze/start.S
index 3c027ff..8740284 100644
--- a/cpu/microblaze/start.S
+++ b/cpu/microblaze/start.S
@@ -33,15 +33,13 @@ _start:
  addi r1, r0, CFG_INIT_SP_OFFSET
  addi r1, r1, -4 /* Decrement SP to top of memory */
  /* add opcode instruction for 32bit jump - 2 instruction imm & brai*/
- addi r6, r0, 0xb000 /* hex b000 opcode imm */
- bslli r6, r6, 16 /* shift */
+ addi r6, r0, 0xb0000000 /* hex b000 opcode imm */
  swi r6, r0, 0x0 /* reset address */
  swi r6, r0, 0x8 /* user vector exception */
  swi r6, r0, 0x10 /* interrupt */
  swi r6, r0, 0x20 /* hardware exception */

- addi r6, r0, 0xb808 /* hew b808 opcode brai*/
- bslli r6, r6, 16
+ addi r6, r0, 0xb8080000 /* hew b808 opcode brai*/
  swi r6, r0, 0x4 /* reset address */
  swi r6, r0, 0xC /* user vector exception */
  swi r6, r0, 0x14 /* interrupt */
diff --git a/cpu/microblaze/timer.c b/cpu/microblaze/timer.c
index ab1cb12..b350453 100644
--- a/cpu/microblaze/timer.c
+++ b/cpu/microblaze/timer.c
@@ -33,10 +33,17 @@ void reset_timer (void)
  timestamp = 0;
 }

+#ifdef CFG_TIMER_0
 ulong get_timer (ulong base)
 {
  return (timestamp - base);
 }
+#else
+ulong get_timer (ulong base)
+{
+ return (timestamp++ - base);
+}
+#endif

 void set_timer (ulong t)
 {
diff --git a/include/configs/ml401.h b/include/configs/ml401.h
index 3db2877..8b74b7c 100644
--- a/include/configs/ml401.h
+++ b/include/configs/ml401.h
@@ -32,6 +32,7 @@
 #define CONFIG_ML401  1 /* ML401 Board */

 /* uart */
+#define XILINX_UARTLITE
 #define CONFIG_SERIAL_BASE XILINX_UART_BASEADDR
 #define CONFIG_BAUDRATE  XILINX_UART_BAUDRATE
 #define CFG_BAUDRATE_TABLE { CONFIG_BAUDRATE }
@@ -86,7 +87,7 @@
  * 0x11FB_F000 CFG_MONITOR_BASE
  *     MONITOR_CODE 256kB Env
  * 0x13FF_F000 CFG_GBL_DATA_OFFSET
- *      GLOBAL_DATA 4kB bd, gd
+ *     GLOBAL_DATA 4kB bd, gd
  * 0x1400_0000 CFG_SDRAM_BASE + CFG_SDRAM_SIZE
  */

@@ -99,7 +100,7 @@
 /* global pointer */
 #define CFG_GBL_DATA_SIZE 0x1000 /* size of global data */
 /* start of global data */
-#define CFG_GBL_DATA_OFFSET     (CFG_SDRAM_BASE + CFG_SDRAM_SIZE - 
CFG_GBL_DATA_SIZE)
+#define CFG_GBL_DATA_OFFSET (CFG_SDRAM_BASE + CFG_SDRAM_SIZE - 
CFG_GBL_DATA_SIZE)

 /* monitor code */
 #define SIZE   0x40000
@@ -242,10 +243,10 @@
 #define CONFIG_BOOTDELAY 30
 #define CONFIG_BOOTARGS  "root=romfs"
 #define CONFIG_HOSTNAME  "ml401"
-#define CONFIG_BOOTCOMMAND  "base 0;tftp 11000000 image.img;bootm"
+#define CONFIG_BOOTCOMMAND "base 0;tftp 11000000 image.img;bootm"
 #define CONFIG_IPADDR  192.168.0.3
-#define CONFIG_SERVERIP  192.168.0.5
-#define CONFIG_GATEWAYIP  192.168.0.1
+#define CONFIG_SERVERIP  192.168.0.5
+#define CONFIG_GATEWAYIP 192.168.0.1
 #define CONFIG_ETHADDR  00:E0:0C:00:00:FD

 /* architecture dependent code */
diff --git a/include/configs/suzaku.h b/include/configs/suzaku.h
index 8224555..9661726 100644
--- a/include/configs/suzaku.h
+++ b/include/configs/suzaku.h
@@ -48,6 +48,7 @@
 #define CFG_MALLOC_LEN  (256 << 10) /* Reserve 256 kB for malloc */
 #define CFG_MALLOC_BASE  (CFG_MONITOR_BASE - (1024 * 1024))

+#define XILINX_UARTLITE
 #define CONFIG_BAUDRATE  115200
 #define CFG_BAUDRATE_TABLE { 115200 }

@@ -97,4 +98,6 @@
 #define CFG_GBL_DATA_OFFSET    (CFG_INIT_RAM_END - CFG_GBL_DATA_SIZE)
 #define CFG_INIT_SP_OFFSET CFG_GBL_DATA_OFFSET

+#define XILINX_CLOCK_FREQ 50000000
+
 #endif /* __CONFIG_H */
diff --git a/include/configs/xupv2p.h b/include/configs/xupv2p.h
index b4c720d..bac31f4 100644
--- a/include/configs/xupv2p.h
+++ b/include/configs/xupv2p.h
@@ -31,13 +31,34 @@
 #define CONFIG_XUPV2P  1

 /* uart */
-#define CONFIG_SERIAL_BASE XILINX_UART_BASEADDR
-#define CONFIG_BAUDRATE  XILINX_UART_BAUDRATE
+#ifdef XILINX_UARTLITE_BASEADDR
+#define XILINX_UARTLITE
+#define CONFIG_SERIAL_BASE XILINX_UARTLITE_BASEADDR
+#define CONFIG_BAUDRATE  XILINX_UARTLITE_BAUDRATE
 #define CFG_BAUDRATE_TABLE { CONFIG_BAUDRATE }
+#else
+#ifdef XILINX_UART16550_BASEADDR
+#define CFG_NS16550
+#define CFG_NS16550_SERIAL
+#define CFG_NS16550_REG_SIZE 4
+#define CONFIG_CONS_INDEX 1
+#define CFG_NS16550_COM1 XILINX_UART16550_BASEADDR
+#define CFG_NS16550_CLK  XILINX_UART16550_CLOCK_HZ
+
+#define CONFIG_BAUDRATE  115200
+#define CFG_BAUDRATE_TABLE { 9600, 115200 }
+#endif
+#endif

 /* ethernet */
-#define CONFIG_EMAC 1
-#define XPAR_EMAC_0_DEVICE_ID XPAR_XEMAC_NUM_INSTANCES
+#ifdef XILINX_EMAC_BASEADDR
+#define XILINX_EMAC 1
+#else
+#ifdef XILINX_EMACLITE_BASEADDR
+#define XILINX_EMACLITE 1
+#endif
+#endif
+#undef ET_DEBUG

 /*
  * setting reset address
@@ -48,11 +69,13 @@
  * U-BOOT auto-relocate to TEXT_BASE. After RESET command Microblaze
  * jump to CFG_RESET_ADDRESS where is the original U-BOOT code.
  */
-#define CFG_RESET_ADDRESS 0x36000000
+/* #define CFG_RESET_ADDRESS 0x36000000 */

 /* gpio */
+#ifdef XILINX_GPIO_BASEADDR
 #define CFG_GPIO_0  1
 #define CFG_GPIO_0_ADDR  XILINX_GPIO_BASEADDR
+#endif

 /* interrupt controller */
 #define CFG_INTC_0  1
@@ -118,6 +141,25 @@
 #define CFG_ENV_IS_NOWHERE 1
 #define CFG_ENV_SIZE  0x1000
 #define CFG_ENV_ADDR  (CFG_MONITOR_BASE - CFG_ENV_SIZE)
+#ifndef XILINX_SYSACE_BASEADDR
+#define CONFIG_COMMANDS (CONFIG__CMD_DFL |\
+   CFG_CMD_MEMORY |\
+   CFG_CMD_IRQ |\
+   CFG_CMD_BDI |\
+   CFG_CMD_NET |\
+   CFG_CMD_IMI |\
+   CFG_CMD_ECHO |\
+   CFG_CMD_CACHE |\
+   CFG_CMD_RUN |\
+   CFG_CMD_AUTOSCRIPT |\
+   CFG_CMD_ASKENV |\
+   CFG_CMD_LOADS |\
+   CFG_CMD_LOADB |\
+   CFG_CMD_MISC |\
+   CFG_CMD_MFSL |\
+   CFG_CMD_PING \
+   )
+#else
 #define CONFIG_COMMANDS (CONFIG__CMD_DFL |\
    CFG_CMD_MEMORY |\
    CFG_CMD_IRQ |\
@@ -134,8 +176,10 @@
    CFG_CMD_MISC |\
    CFG_CMD_FAT |\
    CFG_CMD_EXT2 |\
+   CFG_CMD_MFSL |\
    CFG_CMD_PING \
    )
+#endif

 /* this must be included AFTER the definition of CONFIG_COMMANDS (if any) 
*/
 #include <cmd_confdefs.h>
@@ -150,7 +194,7 @@

 #define CONFIG_BOOTDELAY  30
 #define CONFIG_BOOTARGS  "root=romfs"
-#define CONFIG_HOSTNAME  "ml401"
+#define CONFIG_HOSTNAME  "xupv2p"
 #define CONFIG_BOOTCOMMAND  "base 0;tftp 11000000 image.img;bootm"
 #define CONFIG_IPADDR  192.168.0.3
 #define CONFIG_SERVERIP  192.168.0.5
@@ -166,11 +210,13 @@
  "echo"

 /* system ace */
+#ifdef XILINX_SYSACE_BASEADDR
 #define CONFIG_SYSTEMACE
 /* #define DEBUG_SYSTEMACE */
 #define SYSTEMACE_CONFIG_FPGA
 #define CFG_SYSTEMACE_BASE XILINX_SYSACE_BASEADDR
 #define CFG_SYSTEMACE_WIDTH XILINX_SYSACE_MEM_WIDTH
 #define CONFIG_DOS_PARTITION
+#endif

 #endif /* __CONFIG_H */





More information about the U-Boot mailing list