[Armadeus-commitlog] armadeus branch, master, updated. armadeus-4.0-2426-g20825e3
Brought to you by:
sszy
|
From: Fabien M <fa...@us...> - 2011-07-28 15:43:17
|
This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "armadeus".
The branch, master has been updated
via 20825e320da906c7d5c3fadfdb0b0e4a0234d803 (commit)
via e41009b1c5d408b1d71b6d892868985056415494 (commit)
via 615033d57c042c294a77e34fe518170f87ce7438 (commit)
from b8cc4c9250c03c6ec7a0ff7eea1c53f29fd88112 (commit)
Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.
- Log -----------------------------------------------------------------
commit 20825e320da906c7d5c3fadfdb0b0e4a0234d803
Author: Kevin JOLY <jol...@gm...>
Date: Thu Jul 28 17:13:47 2011 +0200
[FIRMWARE] Add script and design for Anybus
Signed-off-by: Kevin JOLY <jol...@gm...>
commit e41009b1c5d408b1d71b6d892868985056415494
Author: Kevin JOLY <jol...@gm...>
Date: Thu Jul 28 16:47:58 2011 +0200
[LINUX] Update anybus_interface driver : add ioctl command, compatibility with select(), and more ...
Signed-off-by: Kevin JOLY <jol...@gm...>
commit 615033d57c042c294a77e34fe518170f87ce7438
Author: Kevin JOLY <jol...@gm...>
Date: Thu Jul 28 16:47:59 2011 +0200
[BUILDROOT][DEMOS] Remove init script for automatically configure can interface
Signed-off-by: Kevin JOLY <jol...@gm...>
-----------------------------------------------------------------------
Summary of changes:
.../440-armadeus-add-hms-anybus-driver.patch | 223 +++++++++++++++----
.../apf51_anybus_interface.bin} | Bin 340604 -> 340604 bytes
firmware/pod_scripts/apf51_anybus_interface.pod | 50 +++++
target/demos/mcp25020_ctrl/Makefile | 3 -
target/demos/mcp25020_ctrl/init_can.sh | 10 -
5 files changed, 226 insertions(+), 60 deletions(-)
copy firmware/{wishbone_example/wishbone_example51/binaries/top_wishbone_example51_lx9.bin => pod_scripts/apf51_anybus_interface.bin} (82%)
create mode 100644 firmware/pod_scripts/apf51_anybus_interface.pod
delete mode 100755 target/demos/mcp25020_ctrl/init_can.sh
diff --git a/buildroot/target/device/armadeus/linux/kernel-patches/2.6.38/440-armadeus-add-hms-anybus-driver.patch b/buildroot/target/device/armadeus/linux/kernel-patches/2.6.38/440-armadeus-add-hms-anybus-driver.patch
index 1ea1107..f3b7eb0 100644
--- a/buildroot/target/device/armadeus/linux/kernel-patches/2.6.38/440-armadeus-add-hms-anybus-driver.patch
+++ b/buildroot/target/device/armadeus/linux/kernel-patches/2.6.38/440-armadeus-add-hms-anybus-driver.patch
@@ -6,7 +6,7 @@ Signed-off-by: Kevin JOLY <jol...@gm...>
Index: linux-2.6.38.1/drivers/net/Kconfig
===================================================================
--- linux-2.6.38.1.orig/drivers/net/Kconfig 2011-03-23 21:04:47.000000000 +0100
-+++ linux-2.6.38.1/drivers/net/Kconfig 2011-07-18 10:53:53.509814002 +0200
++++ linux-2.6.38.1/drivers/net/Kconfig 2011-07-27 17:57:17.822242001 +0200
@@ -3422,4 +3422,12 @@
To compile this driver as a module, choose M here: the
module will be called vmxnet3.
@@ -23,7 +23,7 @@ Index: linux-2.6.38.1/drivers/net/Kconfig
Index: linux-2.6.38.1/drivers/net/Makefile
===================================================================
--- linux-2.6.38.1.orig/drivers/net/Makefile 2011-03-23 21:04:47.000000000 +0100
-+++ linux-2.6.38.1/drivers/net/Makefile 2011-07-18 10:53:53.509814002 +0200
++++ linux-2.6.38.1/drivers/net/Makefile 2011-07-27 17:57:17.826242000 +0200
@@ -242,6 +242,7 @@
obj-$(CONFIG_R8169) += r8169.o
obj-$(CONFIG_AMD8111_ETH) += amd8111e.o
@@ -35,8 +35,8 @@ Index: linux-2.6.38.1/drivers/net/Makefile
Index: linux-2.6.38.1/drivers/net/anybus_interface.c
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.38.1/drivers/net/anybus_interface.c 2011-07-18 14:59:25.049814001 +0200
-@@ -0,0 +1,1061 @@
++++ linux-2.6.38.1/drivers/net/anybus_interface.c 2011-07-27 18:25:21.902241997 +0200
+@@ -0,0 +1,1178 @@
+/*
+ * HMS Anybus module driver
+ *
@@ -68,6 +68,8 @@ Index: linux-2.6.38.1/drivers/net/anybus_interface.c
+#include <linux/cdev.h>
+#include <linux/fs.h>
+#include <linux/string.h>
++#include <linux/poll.h>
++
+
+#include <net/anybus_interface.h>
+
@@ -88,6 +90,8 @@ Index: linux-2.6.38.1/drivers/net/anybus_interface.c
+#define INPUT_AREA_END 0x1FF
+#define OUTPUT_AREA_START 0x200
+#define OUTPUT_AREA_END 0x3FF
++#define FBCTRL_AREA_START 0x640
++#define FBCTRL_AREA_END 0x7FD
+#define MB_IN_ID 0x400
+#define MB_IN_MSG_INFO 0x402
+#define MB_IN_COM 0x404
@@ -142,9 +146,12 @@ Index: linux-2.6.38.1/drivers/net/anybus_interface.c
+#define EN_FBON 0x04
+#define EN_RST 0x08
+
++static DECLARE_WAIT_QUEUE_HEAD(anybus_read_wait_queue);
++
+unsigned short anybus_indication_reg_status;
+bool sending_mailbox_message;
+bool received_mailbox_message;
++bool module_initialized;
+bool anybus_available;
+
+struct platform_device *platform_dev;
@@ -265,7 +272,7 @@ Index: linux-2.6.38.1/drivers/net/anybus_interface.c
+ application_indication_register(anybus_priv,
+ area | access_type | ACTION_REQ);
+
-+ while (!(anybus_indication_reg_status & area))
++ while (!(anybus_indication_reg_status & area)) /* TODO : Timeout */
+ cpu_relax();
+
+ return;
@@ -352,7 +359,7 @@ Index: linux-2.6.38.1/drivers/net/anybus_interface.c
+ cpu_relax();
+ }
+
-+ skb = dev_alloc_skb(sizeof(frame));
++ skb = dev_alloc_skb(sizeof(frame) + 2);
+ if (!skb) {
+ dev_err(&platform_dev->dev, "Low memory space available.\n");
+ dev->stats.rx_dropped++;
@@ -362,7 +369,7 @@ Index: linux-2.6.38.1/drivers/net/anybus_interface.c
+
+ skb->dev = dev;
+ skb->protocol = IPPROTO_UDP;
-+
++skb->pkt_type = PACKET_BROADCAST;
+ skb->ip_summed = CHECKSUM_UNNECESSARY;
+
+ dev->stats.rx_packets++;
@@ -409,6 +416,7 @@ Index: linux-2.6.38.1/drivers/net/anybus_interface.c
+ if ((anybus_indication_reg_status ^ application_indication_reg)
+ & AB_MOUT) {
+ received_mailbox_message = 1;
++ wake_up_interruptible(&anybus_read_wait_queue);
+ }
+
+ if ((anybus_indication_reg_status ^ application_indication_reg)
@@ -488,23 +496,26 @@ Index: linux-2.6.38.1/drivers/net/anybus_interface.c
+{
+ int i;
+
++ if (message.data_size > ANYBUS_MAILBOX_DATA_LEN)
++ message.data_size = ANYBUS_MAILBOX_DATA_LEN;
++
+ sending_mailbox_message = 1;
+
-+ anybus_reg_write(anybus_priv, MB_IN_ID, message.id/256);
-+ anybus_reg_write(anybus_priv, MB_IN_ID + 1, message.id%256);
++ anybus_reg_write(anybus_priv, MB_IN_ID, message.id >> 8);
++ anybus_reg_write(anybus_priv, MB_IN_ID + 1, message.id & 0xFF);
+
+ anybus_reg_write(anybus_priv, MB_IN_MSG_INFO,
-+ message.msg_information/256);
++ message.msg_information >> 8);
+ anybus_reg_write(anybus_priv, MB_IN_MSG_INFO + 1,
-+ message.msg_information%256);
++ message.msg_information & 0xFF);
+
-+ anybus_reg_write(anybus_priv, MB_IN_COM, message.command_number/256);
++ anybus_reg_write(anybus_priv, MB_IN_COM, message.command_number >> 8);
+ anybus_reg_write(anybus_priv, MB_IN_COM + 1,
-+ message.command_number%256);
++ message.command_number & 0xFF);
+
-+ anybus_reg_write(anybus_priv, MB_IN_DATA_SIZE, message.data_size/256);
++ anybus_reg_write(anybus_priv, MB_IN_DATA_SIZE, message.data_size >> 8);
+ anybus_reg_write(anybus_priv, MB_IN_DATA_SIZE + 1,
-+ message.data_size%256);
++ message.data_size & 0xFF);
+
+ anybus_reg_write(anybus_priv, 0x0408, 0x00);
+ anybus_reg_write(anybus_priv, 0x0409, 0x01);
@@ -519,22 +530,22 @@ Index: linux-2.6.38.1/drivers/net/anybus_interface.c
+ anybus_reg_write(anybus_priv, 0x040f, 0x00);
+
+ for (i = 0 ; i < 8 ; i++) {
-+ anybus_reg_write(anybus_priv, MB_IN_EXTENDED + i,
-+ message.extended_word[i]/256);
-+ anybus_reg_write(anybus_priv, MB_IN_EXTENDED + 1 + i,
-+ message.extended_word[i]%256);
++ anybus_reg_write(anybus_priv, MB_IN_EXTENDED + i*2,
++ message.extended_word[i] >> 8);
++ anybus_reg_write(anybus_priv, MB_IN_EXTENDED + i*2 + 1,
++ message.extended_word[i] & 0xFF);
+ }
+
+ for (i = 0 ; i < message.data_size/2 ; i++) {
+ anybus_reg_write(anybus_priv, MB_IN_DATA + i*2,
-+ message.data[i]/256);
++ message.data[i] >> 8);
+ anybus_reg_write(anybus_priv, MB_IN_DATA + 1 + i*2,
-+ message.data[i]%256);
++ message.data[i] & 0xFF);
+ }
+
+ application_indication_register(anybus_priv, AP_MIN);
+
-+ while (sending_mailbox_message) {
++ while (sending_mailbox_message) { /* XXX */
+ msleep(100);
+ i++;
+ if (i > 10)
@@ -549,34 +560,34 @@ Index: linux-2.6.38.1/drivers/net/anybus_interface.c
+ int i;
+ struct mailbox_msg message;
+
-+ message.id = anybus_reg_read(anybus_priv, MB_OUT_ID) * 256;
++ message.id = anybus_reg_read(anybus_priv, MB_OUT_ID) << 8;
+ message.id = anybus_reg_read(anybus_priv, MB_OUT_ID + 1) + message.id;
+
+ message.msg_information = anybus_reg_read(anybus_priv,
-+ MB_OUT_MSG_INFO) * 256;
++ MB_OUT_MSG_INFO) << 8;
+ message.msg_information = anybus_reg_read(anybus_priv,
+ MB_OUT_MSG_INFO + 1) + message.msg_information;
+
+ message.command_number = anybus_reg_read(anybus_priv,
-+ MB_OUT_COM) * 256;
++ MB_OUT_COM) << 8;
+ message.command_number = anybus_reg_read(anybus_priv, MB_OUT_COM + 1)
+ + message.command_number;
+
+ message.data_size = anybus_reg_read(anybus_priv,
-+ MB_OUT_DATA_SIZE) * 256;
++ MB_OUT_DATA_SIZE) << 8;
+ message.data_size = anybus_reg_read(anybus_priv, MB_OUT_DATA_SIZE + 1)
+ + message.data_size;
+
+ for (i = 0 ; i < 8 ; i++) {
+ message.extended_word[i] = anybus_reg_read(anybus_priv,
-+ MB_OUT_EXTENDED + i) * 256;
++ MB_OUT_EXTENDED + i) << 8;
+ message.extended_word[i] = anybus_reg_read(anybus_priv,
+ MB_OUT_EXTENDED + 1 + i) + message.extended_word[i];
+ }
+
+ for (i = 0 ; i < message.data_size ; i++) {
+ message.data[i] = anybus_reg_read(anybus_priv,
-+ MB_OUT_DATA + i*2) * 256;
++ MB_OUT_DATA + i*2) << 8;
+ message.data[i] = anybus_reg_read(anybus_priv,
+ MB_OUT_DATA + 1 + i*2) + message.data[i];
+ }
@@ -592,6 +603,7 @@ Index: linux-2.6.38.1/drivers/net/anybus_interface.c
+
+ free_irq(dev->irq, (void *)dev);
+ gpio_set_value(anybus_priv->gpio_reset, 1);
++ module_initialized = 0;
+
+ return 0;
+}
@@ -689,6 +701,13 @@ Index: linux-2.6.38.1/drivers/net/anybus_interface.c
+ sending_mailbox_message = 0;
+ anybus_available = 0;
+ received_mailbox_message = 0;
++ module_initialized = 0;
++
++if (!netif_carrier_ok(dev))
++ netif_carrier_on(dev);
++
++if (netif_queue_stopped(dev))
++ netif_wake_queue(dev);
+
+ if (request_irq(dev->irq, anybus_interrupt, anybus_priv->irq_flags,
+ dev->name, (void *)dev) < 0) {
@@ -707,7 +726,8 @@ Index: linux-2.6.38.1/drivers/net/anybus_interface.c
+ if (i > 50) {
+ i = 0;
+ anybus_stop(dev);
-+ dev_err(&platform_dev->dev, "The module is unavailable.\n");
++ dev_err(&platform_dev->dev,
++ "The module is unavailable.\n");
+ return -ETIMEDOUT;
+ }
+ }
@@ -825,6 +845,8 @@ Index: linux-2.6.38.1/drivers/net/anybus_interface.c
+ return -EAGAIN;
+ }
+
++ module_initialized = 1;
++
+ return set_mac_address(dev);
+}
+
@@ -845,15 +867,15 @@ Index: linux-2.6.38.1/drivers/net/anybus_interface.c
+ anybus_area_allocation(anybus_priv, AB_IN, LOCK);
+
+ for (i = 0 ; i < frame->len * 2; i += 2) {
-+ if (anybus_reg_write(anybus_priv,
-+ INPUT_AREA_START + i + frame->reg * 2, frame->data[i] >> 8)) {
++ if (anybus_reg_write(anybus_priv, INPUT_AREA_START + i +
++ frame->reg * 2, frame->data[i/2] >> 8)) {
+ dev->stats.tx_errors++;
+ dev->stats.tx_dropped++;
+ return -EAGAIN;
+ }
+ dev->stats.tx_bytes++;
+ if (anybus_reg_write(anybus_priv, INPUT_AREA_START + i +
-+ frame->reg * 2 + 1, frame->data[i] & 0xFF)) {
++ frame->reg * 2 + 1, frame->data[i/2] & 0xFF)) {
+ dev->stats.tx_errors++;
+ dev->stats.tx_dropped++;
+ return -EAGAIN;
@@ -864,49 +886,142 @@ Index: linux-2.6.38.1/drivers/net/anybus_interface.c
+ anybus_area_deallocation(anybus_priv, AB_IN, UNLOCK);
+
+ dev->stats.tx_packets++;
++ dev_kfree_skb(skb);
+
+ return 0;
+}
+
-+long anybus_ioctl(struct file *filp, unsigned int cmd, unsigned long ptr_mail)
++long anybus_ioctl(struct file *filp, unsigned int cmd, unsigned long ptr_data)
+{
+ struct net_device *dev = dev_get_drvdata(&platform_dev->dev);
+ struct anybus_private *anybus_priv = netdev_priv(dev);
+ struct mailbox_msg mail;
++ struct anybus_register *anybus_reg;
++ int i, ret;
++
++ if (cmd == ANYBUS_MB_READ) {
+
-+ memcpy(&mail, (struct mailbox_msg *)ptr_mail,
++ memcpy(&mail, (struct mailbox_msg *)ptr_data,
+ sizeof(struct mailbox_msg));
+
-+ if (cmd == MB_READ) {
+ if (received_mailbox_message) {
+ mail = read_mailbox_message(anybus_priv);
-+ memcpy((struct mailbox_msg *)ptr_mail,
++ memcpy((struct mailbox_msg *)ptr_data,
+ &mail,
+ sizeof(struct mailbox_msg));
++ received_mailbox_message = 0;
+ } else
+ return -EAGAIN;
-+ } else if (cmd == MB_WRITE) {
-+ memcpy(&mail, (struct mailbox_msg *)ptr_mail,
++ } else if (cmd == ANYBUS_MB_WRITE) {
++
++ memcpy(&mail, (struct mailbox_msg *)ptr_data,
+ sizeof(struct mailbox_msg));
+
+ if (write_mailbox_message(anybus_priv, mail))
+ return -EIO;
++ } else if (cmd == ANYBUS_MAP_INPUT) {
++
++ anybus_area_allocation(anybus_priv, AB_IN, LOCK);
++
++ for (i = 0 ; i <= (INPUT_AREA_END - INPUT_AREA_START) / 2;
++ i++) {
++ ret = anybus_reg_read(anybus_priv,
++ i * 2 + INPUT_AREA_START);
++ if (ret < 0)
++ return -EAGAIN;
++
++ ((unsigned short *)(ptr_data))[i] = ret << 8;
++
++ ret = anybus_reg_read(anybus_priv,
++ i * 2 + INPUT_AREA_START + 1);
++ if (ret < 0)
++ return -EAGAIN;
++ ((unsigned short *)(ptr_data))[i] |= ret;
++ }
++
++ anybus_area_deallocation(anybus_priv, AB_IN, UNLOCK);
++
++ } else if (cmd == ANYBUS_MAP_OUTPUT) {
++
++ anybus_area_allocation(anybus_priv, AB_OUT, LOCK);
++
++ for (i = 0 ; i <= (OUTPUT_AREA_END - OUTPUT_AREA_START) / 2;
++ i++) {
++ ret = anybus_reg_read(anybus_priv,
++ i * 2 + OUTPUT_AREA_START);
++ if (ret < 0)
++ return -EAGAIN;
++
++ ((unsigned short *)(ptr_data))[i] = ret << 8;
++
++ ret = anybus_reg_read(anybus_priv,
++ i * 2 + OUTPUT_AREA_START + 1);
++
++ if (ret < 0)
++ return -EAGAIN;
++ ((unsigned short *)(ptr_data))[i] |= ret;
++
++ }
++
++ anybus_area_deallocation(anybus_priv, AB_OUT, UNLOCK);
++ } else if (cmd == ANYBUS_READ_REG) {
++ anybus_reg = (struct anybus_register *)ptr_data;
++
++ if ((anybus_reg->address <= INPUT_AREA_END) &&
++ (anybus_reg->address >= INPUT_AREA_START))
++ anybus_area_allocation(anybus_priv, AB_IN, LOCK);
++ else if ((anybus_reg->address <= OUTPUT_AREA_END) &&
++ (anybus_reg->address >= OUTPUT_AREA_START))
++ anybus_area_allocation(anybus_priv, AB_OUT, LOCK);
++ else if ((anybus_reg->address <= FBCTRL_AREA_END) &&
++ (anybus_reg->address >= FBCTRL_AREA_START))
++ anybus_area_allocation(anybus_priv, AB_FBCTRL, LOCK);
++ else if (anybus_reg->address > ANYBUS_INDICATION_REG)
++ return -EINVAL;
++
++ ret = anybus_reg_read(anybus_priv, anybus_reg->address);
++ if (ret < 0)
++ return -EAGAIN;
++
++ anybus_reg->value = ret;
++
++ if ((anybus_reg->address <= INPUT_AREA_END) &&
++ (anybus_reg->address >= INPUT_AREA_START))
++ anybus_area_deallocation(anybus_priv, AB_IN, LOCK);
++ else if ((anybus_reg->address <= OUTPUT_AREA_END) &&
++ (anybus_reg->address >= OUTPUT_AREA_START))
++ anybus_area_deallocation(anybus_priv, AB_OUT, LOCK);
++ else if ((anybus_reg->address <= FBCTRL_AREA_END) &&
++ (anybus_reg->address >= FBCTRL_AREA_START))
++ anybus_area_deallocation(anybus_priv, AB_FBCTRL, LOCK);
+ }
+
+ return 0;
+}
+
++static unsigned int anybus_poll(struct file *filp, struct poll_table_struct *p)
++{
++ poll_wait(filp, &anybus_read_wait_queue, p);
++
++ if ((received_mailbox_message) && (module_initialized))
++ return POLLIN;
++ else
++ return 0;
++}
++
+static const struct file_operations anybus_fops = {
-+ .unlocked_ioctl = anybus_ioctl
++ .unlocked_ioctl = anybus_ioctl,
++.poll = anybus_poll
+};
+
+static void anybus_setup(struct net_device *dev)
+{
-+ dev->type = ARPHRD_VOID;
++ dev->type = ARPHRD_NONE;
+ dev->mtu = sizeof(struct anybus_frame);
+ dev->hard_header_len = 0;
+ dev->addr_len = 0;
+ dev->tx_queue_len = 10;
++dev->flags = IFF_POINTOPOINT | IFF_NOARP | IFF_MULTICAST;
+
+ dev->flags = IFF_NOARP;
+ dev->features = NETIF_F_NO_CSUM;
@@ -929,6 +1044,8 @@ Index: linux-2.6.38.1/drivers/net/anybus_interface.c
+ int err = 0;
+ u16 id;
+
++ module_initialized = 0;
++
+ resource_memory = platform_get_resource(pdev, IORESOURCE_MEM, 0);
+ resource_irq = platform_get_resource(pdev, IORESOURCE_IRQ, 0);
+ resource_reset = platform_get_resource(pdev, IORESOURCE_IO, 0);
@@ -1023,7 +1140,7 @@ Index: linux-2.6.38.1/drivers/net/anybus_interface.c
+ }
+
+ strcpy(dev_mailbox_name, dev->name);
-+ strcat(dev_mailbox_name, "_mailbox");
++ strcat(dev_mailbox_name, "_device");
+ if (device_create(anybus_priv->anybus_class, NULL,
+ anybus_priv->cdev->dev, NULL, dev_mailbox_name) == NULL) {
+ dev_err(&pdev->dev, "Unable to create device\n");
@@ -1101,8 +1218,8 @@ Index: linux-2.6.38.1/drivers/net/anybus_interface.c
Index: linux-2.6.38.1/include/net/anybus_interface.h
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.38.1/include/net/anybus_interface.h 2011-07-18 15:04:17.953813999 +0200
-@@ -0,0 +1,45 @@
++++ linux-2.6.38.1/include/net/anybus_interface.h 2011-07-26 18:03:35.000000000 +0200
+@@ -0,0 +1,57 @@
+/*
+ * Definitions for the module HMS anybus
+ *
@@ -1127,24 +1244,36 @@ Index: linux-2.6.38.1/include/net/anybus_interface.h
+#ifndef LINUX_ANYBUS_INTERFACE
+#define LINUX_ANYBUS_INTERFACE
+
-+#define MB_READ 0
-+#define MB_WRITE 1
++#define ANYBUS_MB_READ 10
++#define ANYBUS_MB_WRITE 11
++#define ANYBUS_MAP_INPUT 12
++#define ANYBUS_MAP_OUTPUT 13
++#define ANYBUS_READ_REG 14
++
++
++#define ANYBUS_DATA_LEN 256
++#define ANYBUS_MAILBOX_DATA_LEN 256
+
+#define ANYBUS_INTERFACE_DRIVER_NAME "anybus_interface"
+
+struct anybus_frame {
+ int reg;
-+ unsigned short data[256];
++ unsigned short data[ANYBUS_DATA_LEN];
+ int len;
+};
+
++struct anybus_register {
++ unsigned short address;
++ unsigned short value;
++};
++
+struct mailbox_msg {
+ unsigned short id;
+ unsigned short msg_information;
+ unsigned short command_number;
+ unsigned short data_size;
+ unsigned short extended_word[8];
-+ unsigned short data[256];
++ unsigned short data[ANYBUS_DATA_LEN];
+};
+
+#endif
diff --git a/firmware/wishbone_example/wishbone_example51/binaries/top_wishbone_example51_lx9.bin b/firmware/pod_scripts/apf51_anybus_interface.bin
similarity index 82%
copy from firmware/wishbone_example/wishbone_example51/binaries/top_wishbone_example51_lx9.bin
copy to firmware/pod_scripts/apf51_anybus_interface.bin
index 96c84f8..cff0df0 100644
Binary files a/firmware/wishbone_example/wishbone_example51/binaries/top_wishbone_example51_lx9.bin and b/firmware/pod_scripts/apf51_anybus_interface.bin differ
diff --git a/firmware/pod_scripts/apf51_anybus_interface.pod b/firmware/pod_scripts/apf51_anybus_interface.pod
new file mode 100644
index 0000000..6101634
--- /dev/null
+++ b/firmware/pod_scripts/apf51_anybus_interface.pod
@@ -0,0 +1,50 @@
+create anybus
+selectplatform standard.apf51
+addinstance components.anybus_interface
+addinstance components.pod_gpio
+connectpin irq_mngr00.irq.irqport.0 pod_gpio00.irq.interrupt
+setgeneric anybus_interface00.gpio_reset 240
+setgeneric anybus_interface00.gpio_irq 337
+connectpin anybus_interface00.anybus_interface.anybus_interface_addr.0 apf51.fpga.IO_L43P_GCLK5_M1DQ4_1
+connectpin anybus_interface00.anybus_interface.anybus_interface_addr.1 apf51.fpga.IO_L43N_GCLK4_M1DQ5_1
+connectpin anybus_interface00.anybus_interface.anybus_interface_addr.2 apf51.fpga.IO_L45P_A1_M1LDQS_1
+connectpin anybus_interface00.anybus_interface.anybus_interface_addr.3 apf51.fpga.IO_L45N_A0_M1LDQSN_1
+connectpin anybus_interface00.anybus_interface.anybus_interface_addr.4 apf51.fpga.IO_L30P_A21_M1RESET_1_NOTLX4
+connectpin anybus_interface00.anybus_interface.anybus_interface_addr.5 apf51.fpga.IO_L30N_A20_M1A11_1_NOTLX4
+connectpin anybus_interface00.anybus_interface.anybus_interface_addr.6 apf51.fpga.IO_L31P_A19_M1CKE_1_NOTLX4
+connectpin anybus_interface00.anybus_interface.anybus_interface_addr.7 apf51.fpga.IO_L31N_A18_M1A12_1_NOTLX4
+connectpin anybus_interface00.anybus_interface.anybus_interface_addr.8 apf51.fpga.IO_L32P_A17_M1A8_1_NOTLX4
+connectpin anybus_interface00.anybus_interface.anybus_interface_addr.9 apf51.fpga.IO_L32N_A16_M1A9_1_NOTLX4
+connectpin anybus_interface00.anybus_interface.anybus_interface_addr.10 apf51.fpga.IO_L83P_3
+connectpin anybus_interface00.anybus_interface.anybus_interface_addr.11 apf51.fpga.IO_L40N_M3DQ7_3
+connectpin anybus_interface00.anybus_interface.anybus_interface_data.0 apf51.fpga.IO_L34P_A13_M1WE_1_NOTLX4
+connectpin anybus_interface00.anybus_interface.anybus_interface_data.1 apf51.fpga.IO_L34N_A12_M1BA2_1_NOTLX4
+connectpin anybus_interface00.anybus_interface.anybus_interface_data.2 apf51.fpga.IO_L36P_A9_M1BA0_1
+connectpin anybus_interface00.anybus_interface.anybus_interface_data.3 apf51.fpga.IO_L36N_A8_M1BA1_1
+connectpin anybus_interface00.anybus_interface.anybus_interface_data.4 apf51.fpga.IO_L38P_A5_M1CLK_1
+connectpin anybus_interface00.anybus_interface.anybus_interface_data.5 apf51.fpga.IO_L38N_A4_M1CLKN_1
+connectpin anybus_interface00.anybus_interface.anybus_interface_data.6 apf51.fpga.IO_L40P_GCLK11_M1A5_1
+connectpin anybus_interface00.anybus_interface.anybus_interface_data.7 apf51.fpga.IO_L40N_GCLK10_M1A6_1
+connectpin anybus_interface00.anybus_interface.anybus_interface_ce apf51.fpga.IO_L53P_M3CKE_3
+connectpin anybus_interface00.anybus_interface.anybus_interface_oe apf51.fpga.IO_L40P_M3DQ6_3
+connectpin anybus_interface00.anybus_interface.anybus_interface_rw apf51.fpga.IO_L44N_GCLK20_M3A6_3
+connectpin anybus_interface00.anybus_interface.anybus_interface_busy apf51.fpga.IO_L46N_FOE_B_M1DQ3_1
+project.connectpin pod_gpio00.pod_gpio.gpio.0 apf51.fpga.IO_L42N_GCLK24_M3LDM_3
+connectpin pod_gpio00.pod_gpio.gpio.0 apf51.fpga.IO_L42N_GCLK24_M3LDM_3
+connectpin pod_gpio00.pod_gpio.gpio.1 apf51.fpga.IO_L46P_FCS_B_M1DQS2_1
+project.connectbus imx51_wb16_wrapper00.mwb16 anybus_interface00.swb16
+connectbus imx51_wb16_wrapper00.mwb16 anybus_interface00.swb16
+connectbus imx51_wb16_wrapper00.mwb16 pod_gpio00.swb16
+connectbus rstgen_syscon00.candroutput imx51_wb16_wrapper00.candrinput
+connectbus imx51_wb16_wrapper00.mwb16 irq_mngr00.swb16
+intercon imx51_wb16_wrapper00.mwb16
+intercon rstgen_syscon00.candroutput
+intercon imx51_wb16_wrapper00.mwb16
+top
+synthesis.selecttoolchain ise
+synthesis.generateproject
+driver.selecttoolchain armadeus
+driver.generateproject
+selectprojecttree your_armadeus_directory/target/linux/modules/fpga/POD
+driver.selectprojecttree your_armadeus_directory/target/linux/modules/fpga/POD
+driver.copydrivers
diff --git a/target/demos/mcp25020_ctrl/Makefile b/target/demos/mcp25020_ctrl/Makefile
index 10882e3..1c35652 100644
--- a/target/demos/mcp25020_ctrl/Makefile
+++ b/target/demos/mcp25020_ctrl/Makefile
@@ -4,7 +4,6 @@ ARMADEUS_BASE_DIR=../../..
STAGING_DIR:=$(ARMADEUS_BUILD_DIR)/staging_dir/
INSTALL_DIR:=$(ARMADEUS_ROOTFS_DIR)/usr/local/bin
-INIT_DIR:=$(ARMADEUS_ROOTFS_DIR)/etc/init.d
CC:=$(ARMADEUS_TOOLCHAIN_PATH)/arm-linux-gcc
STRIP:=$(ARMADEUS_TOOLCHAIN_PATH)arm-linux-sstrip
@@ -26,12 +25,10 @@ $(EXEC): mcp25020_ctrl.o
install: $(EXEC)
mkdir -p $(INSTALL_DIR)
cp $^ $(INSTALL_DIR)
- cp init_can.sh $(INIT_DIR)/S50init_can.sh
$(STRIP) $(INSTALL_DIR)/$^
uninstall:
rm -f $(INSTALL_DIR)/$(EXEC)
- rm -f $(INIT_DIR)/S50init_can.sh
clean:
rm -rf mcp25020_ctrl
diff --git a/target/demos/mcp25020_ctrl/init_can.sh b/target/demos/mcp25020_ctrl/init_can.sh
deleted file mode 100755
index 3365644..0000000
--- a/target/demos/mcp25020_ctrl/init_can.sh
+++ /dev/null
@@ -1,10 +0,0 @@
-#!/bin/sh
-
-modprobe can
-modprobe can-dev
-modprobe can-raw
-modprobe mcp251x
-ip link set can0 up type can bitrate 125000
-ifconfig can0 up
-
-exit 0
hooks/post-receive
--
armadeus
|