2 # Copyright (C) 2009 OpenWrt.org
4 # This is free software, licensed under the GNU General Public License v2.
5 # See /LICENSE for more information.
7 include $(TOPDIR
)/rules.mk
8 include $(INCLUDE_DIR
)/kernel.mk
13 include $(INCLUDE_DIR
)/package.mk
16 define KernelPackage
/ucmb
17 SUBMENU
:=Other modules
18 DEPENDS
:=@LINUX_2_6
+kmod-spi-gpio
+kmod-crc16
19 KCONFIG
:=CONFIG_SPI
=y \
21 TITLE
:=Microcontroller Message Bus
(EXPERIMENTAL
)
22 FILES
:=$(PKG_BUILD_DIR
)/ucmb.
$(LINUX_KMOD_SUFFIX
)
23 AUTOLOAD
:=$(call AutoLoad
,93,ucmb
)
26 define KernelPackage
/ucmb
/description
27 The Microcontroller Message Bus is a tiny SPI-GPIO based communication
28 channel used to talk to microcontrollers over GPIO pins.
29 The lowlevel protocol is CRC16 protected
, so one can be pretty sure
30 that the data transmitted and received through the
/dev
/ucmb node is not corrupted.
31 So no further checks should be needed at upper protocol layers.
32 The device node considers every read
/write to be one packet. The maximum packet
33 size is either PAGE_SIZE
(at least
4kb
) or the microcontroller specific packet size
34 limit
, which is likely to be a lot smaller than PAGE_SIZE.
35 Example implementations for the microcontroller-side code can be found in
36 the utils
/ucmb
/microcontroller_examples subdirectory of the OpenWRT packages feed.
40 mkdir
-p
$(PKG_BUILD_DIR
)
41 $(CP
) .
/driver
/* $(PKG_BUILD_DIR
)/
45 $(MAKE
) -C
"$(LINUX_DIR)" \
46 CROSS_COMPILE
="$(TARGET_CROSS)" \
47 ARCH
="$(LINUX_KARCH)" \
48 SUBDIRS
="$(PKG_BUILD_DIR)" \
49 EXTRA_CFLAGS
="$(BUILDFLAGS)" \
53 $(eval
$(call KernelPackage
,ucmb
))