`
`1111111111111111111111111111111111111111111111111111111111111
`US008209705B2
`
`(12) United States Patent
`Fuchs et al.
`
`(10) Patent No.:
`(45) Date of Patent:
`
`US 8,209,705 B2
`*Jun.26,2012
`
`(54) SYSTEM, METHOD AND COMPUTER
`PROGRAM PRODUCT FOR SHARING
`INFORMATION IN A DISTRIBUTED
`FRAMEWORK
`
`(75)
`
`Inventors: Axel Fuchs, San Jose, CA (US); Scott
`Sturges Andrews, Los Altos, CA (US)
`
`(73) Assignee: Stragent, LLC, Longview, TX (US)
`( * ) Notice:
`
`Subject to any disclaimer, the term of this
`patent is extended or adjusted under 35
`U.S.C. 154(b) by 918 days.
`
`This patent is subject to a tenn inal dis(cid:173)
`claimer.
`
`(21) Appl. No.: 12/182,570
`
`(22) Filed:
`
`Jul. 30, 2008
`
`(65)
`
`US 2008/0288954 Al
`
`Prior Publication Data
`Nov. 20, 2008
`
`Related U.S. Application Data
`
`(63) Continuation of application No. 101737,690, filed on
`Dec. 15, 2003, now Pat. No. 7,802,263.
`
`(60) Provisional application No. 60/434,0 18, filed on Dec.
`17, 2002.
`
`(51)
`
`Int. Ct.
`G06F 9/46
`(2006.01)
`G06F 15116
`(2006.01)
`(52) U.S. Ct • ......................... 7191313; 709/230; 71811 04
`(58) Field of Classification Search .................. 709/230;
`71811 04; 719/313
`See application file for complete search history.
`
`(56)
`
`References Cited
`
`U.S. PATENT DOCUMENTS
`5,230,051 A
`7/1993 Quan ............................ 719/312
`211995 Ktmg .............................. 395/50
`5,388,189 A
`
`5,5 13,324 A
`5,588,002 A
`5,737,529 A
`5,923,846 A
`5,941,947 A
`5,956,489 A *
`6,034,970 A *
`6,128,315 A
`6,141,710 A
`6,185,466 Bl
`6,289,390 Bl
`6,363,427 Bl *
`6,378,001 Bl
`6,430,607 BI
`6,438,632 Bl
`6,801,942 Bl
`6,94 1,510 Bl
`7,103,045 82
`7,103,646 Bl
`7,103,656 B2
`7,552,440 Bl
`200 J/00 18685 AI *
`
`.... 710/ 110
`
`4/ 1996 Dolin, Jr. et al.
`1211996 Kawanishi et al. ........... 370/462
`4/1998 Dolin, Jr.
`7/ 1999 Gage et al. ............... 395/200.43
`.. ............... 709/225
`811999 Brown et al.
`911999 San Andres et al. .......... 709/221
`3/2000 Levac et al. ................... 370/466
`10/2000 Takeuchi
`10/2000 Miesterfeld
`2/2001 Nicewonger
`9/2001 Kavner ......................... 719/310
`3/2002 Teibel et al.
`.... 709/227
`4/2002 Aditham et al. . . . . ..... . . . . . 7 I 9/313
`812002 Kavner . ... ... ... .......... .... 709/2 17
`812002 Kikugawa ..................... 710/ 100
`10/2004 Dietrich et al.
`. ... 709/225
`9/2005 Ozzie et al. ................... 715/234
`9/2006 Lavigne et al. ............... 370/392
`9/2006 Suzuki .......................... 709/220
`9/2006 Lewis et al.
`.... 709/223
`6/2009 Stewartet al.
`. ... 719/312
`81200 I Saito et al.
`........ 707/3
`(Continued)
`
`OTHER PUBLICATIONS
`
`Office Action Stunmary from U.S. Appl. No. 101737,690 mailed on
`May 15, 2007.
`
`(Continued)
`
`Primary Examiner - Charles E Anya
`(74) Attorney, Agent, or Firm - Patrick E. Caldwell, Esq.;
`The Caldwell Firm, LLC
`
`(57)
`
`ABSTR"-CT
`
`A system, method and computer program product are pro(cid:173)
`vided for sharing information in a distributed system. After
`information is received, it is stored on a bulletin board. In use,
`the information is shared, in real-time, among a plurabty of
`heterogeneous processes.
`
`20 C laims, 17 Drawing Sheets
`
`PAGE 1 OF27
`
`BMW EXHIBIT 1001
`
`
`
`US 8,209,705 B2
`Page 2
`
`U.S. PATENT DOCUMENTS
`2002/0002586 A1
`112002 Rafal eta!.
`2002/0032856 A1
`3/2002 Noguchi eta!.
`2002/0047868 A1
`4/2002 Miyazawa
`2002/0073243 A1
`6/2002 Staiger .
`2002/0191543 A1
`12/2002 Buskirk eta!.
`2002/0198943 A1 *
`12/2002 Zhuang eta!.
`2003/0088568 A1 *
`5/2003 Matsunaga et al.
`8/2003 Lofton
`2003/0154116 A1
`2003/0236894 A1
`12/2003 Herley
`
`OTHER PUBLICATIONS
`
`709/205
`713/156
`345/835
`719/313
`370/230.1
`709/206
`707/10
`705/8
`709/229
`
`Final Office Action Sununary from U.S. Appl. No. 10/737,690
`mailed on Jan. 25, 2008.
`Office Action Sununary from U.S. Appl. No. 10/737,690 mailed on
`Sep. 15, 2008.
`Office Action Sununary from U.S. Appl. No. 10/737,690 mailed on
`Aug. 6, 2009.
`Notice of Allowance from U.S. Appl. No. 10/737,690 mailed on Mar.
`9, 2010.
`"An Embedded Software Primer," David E. Simon, 1999.
`"Application ofln-Vehicle Data Buses for Collision Avoidance Sys(cid:173)
`tems," William D. Home, eta!., 1998.
`"The Foundation.TM Fieldbus Primer," Fieldbus Inc., Jun. 24,2001.
`"GSA Guide to SpecifYing Interoperable Building Automation and
`Control Systems Using ANSI/ ASHRAE Standard 13 5-1995 ," Steven
`T. Bushby eta!., Nov. 1999.
`"Programming in the OSEKNDX Environment," Joseph Lemieux,
`2001.
`"OSEKNDX Binding Specification Version 1.3," OSEK Group,
`Sep. 17, 2001.
`"OSEKNDX Binding Specification Version 1.4," OSEK Group,
`Sep. 6, 2002.
`"OSEKNDX Binding Specification Version 1.4.1," OSEK Group,
`Jan. 21, 2003.
`"OSEKNDX Communication Specification Version 2.2.2," OSEK
`Group, Dec. 18, 2000.
`
`"OSEKNDX Communication Specification Version 3.0," OSEK
`Group, Jul. 26, 2002.
`"OSEKNDX Communication Specification Version 3.0.1," OSEK
`Group,Jan.29,2003.
`"OSEKNDX Communication Specification Version 3.0.2," OSEK
`Group, Dec. 9, 2003.
`"OSEKNDX Fault-Tolerant Communication Specification Version
`1.0," OSEK Group, Jul. 24, 2001.
`"OSEKNDX Network Management Concept and Application Pro(cid:173)
`gramming Interface Version 2.5.0," OSEK Group, May 31, 1998.
`"OSEKNDX Network Management Concept and Application Pro(cid:173)
`gramming Interface Version 2.5.1," OSEK Group, May 31, 2000.
`"OSEKNDX Network Management Concept and Application Pro(cid:173)
`gramming Interface Version 2.5.2," OSEK Group, Jan. 16, 2003.
`"OSEKNDX OSEK Implementation Language Specification Ver(cid:173)
`sion 2.3," OSEK Group, Sep. 10, 2001.
`"OSEKNDX OSEK Implementation Language Specification Ver(cid:173)
`sion 2.4," OSEK Group, Dec. 2, 2002.
`"OSEKNDX OSEK Implementation Language Specification Ver(cid:173)
`sion 2.4.1," OSEK Group, Jan. 23, 2003.
`"Goals and Motivation: What is OSEKNDX," OSEK VDX Portal,
`2012.
`"OSEKNDX OSEK Run Time Interface Part A: Language Specifi(cid:173)
`cation Version 2.1," OSEK Group, Jul. 16, 2001.
`"OSEKNDX OSEK Operating System Specification Version 2.0
`revision 1," OSEK Group, Oct. 15, 1997.
`"OSEKNDX OSEK Operating System Specification Version 2.1
`revision 1," OSEK Group, Nov. 13, 2000.
`"OSEKNDX OSEK Operating System Specification Version 2.2,"
`OSEK Group, Sep. 10, 2001.
`"OSEKNDX OSEK Operating System Specification Version 2.2.1,"
`OSEK Group, Jan. 16, 2003.
`"OSEKNDX Time-Triggered Operating System Specification Ver(cid:173)
`sion 1.0," OSEK Group, Jul. 24, 2001.
`* cited by examiner
`
`PAGE 2 OF 27
`
`
`
`100 Distributed Embedded Communication
`FIGURE 1
`and Computing System
`r---------------------------------------~--fo"f---------------------------:
`1 02 """"\ 1
`I
`I System
`114
`:
`'-1 ECU ~ Gateway
`
`I
`
`I
`
`:
`
`ECU
`
`ECU
`
`105
`
`112
`1~6 ~
`\.jNetwork
`Sensor
`
`Actuator
`
`SubGroup if 104
`Gateway
`t
`~112~
`ECU
`ECU
`_t
`-..---i113r---
`Local v 109
`---._J Local
`Sensor
`Actuator
`
`1 08
`
`120 External Components
`-------------~----------
`Diagnosis ~1
`Device
`
`-:----I
`I Dev~lop- I)
`
`122
`
`ment Tool
`
`Add-On
`Device
`
`123
`~
`
`130 Remote System
`
`r-------------~------
`1 Gateway ~1
`
`132
`
`l/
`
`Remote
`Device
`
`~
`00
`•
`~
`~
`~
`
`~ = ~
`
`2'
`:=
`
`N
`~Cl\
`N
`0 .....
`N
`
`('D
`('D
`
`rFJ =(cid:173)
`.....
`.....
`0 .....
`.....
`-....l
`
`d
`rJl
`00
`'N = \C
`~ = u. = N
`
`PAGE 3 OF 27
`
`
`
`FIGURE 2
`---------------------------------------~---------~":'~~-----)'--------------------------
`
`200 ECU
`
`201 Micro
`
`202
`
`I
`
`---------
`
`I
`
`205
`
`Real
`Tim~
`Clock
`
`Application I I Application
`
`I
`[-----Middl~~are
`1 Real-Time Operating System 1 l
`I i
`I Devire Dr~ers
`
`'
`
`206
`
`___;___...... Watchdog
`
`'
`Hardware Abstraction Layer 1
`' '
`----------------------------------·
`
`---------..
`
`203
`
`Non(cid:173)
`Volatile
`Memory
`
`.,._____.\.I Volatile
`Memory
`
`204
`
`207
`
`Com-Bus
`Controller
`
`Digital I/O
`
`Analog 1/0
`(DAC/ADC)
`
`211
`
`Com-Bus
`Driver
`
`208
`
`Analog
`Signal
`Conditioning
`
`212
`
`--------------------~-----------------------------------·
`
`210
`
`~
`00
`•
`~
`~
`~
`
`~ = ~
`
`2'
`:=
`
`N
`~Cl\
`N
`0 .....
`N
`
`('D
`('D
`
`rFJ =(cid:173)
`.....
`N
`0 .....
`.....
`-....l
`
`d
`rJl
`00
`'N = \C
`~ = u. = N
`
`PAGE 4 OF 27
`
`
`
`301 Micro
`
`302 Embedded
`
`Middleware
`
`Device Drivers
`
`I
`
`lA
`
`Non-
`_t.. Volatile
`rv---v Memory
`
`.)
`
`..r... Volatile
`-v Memory
`
`~
`-----~-------- r------------------------
`---
`~---------------------------------, I
`Application I Application I ~
`I
`I
`I ~
`Real-Time Operating System I
`I lA.
`I
`Hardware Abstraction Layer I ! l'f
`
`FIGURE 3
`
`300
`G
`
`305 ~ Real
`
`Time
`Clock
`
`r--
`
`306
`
`Watchdog 1 -
`
`f-+
`
`+
`
`----------------------------------·
`t
`+
`
`+
`Wireless
`Comm
`Controller
`+
`RF
`Front End
`
`Com-Bus
`Controller 1
`t
`
`Com-Bus
`( Controller 2
`t
`
`309
`
`...,
`
`Com-Bus
`Driver
`
`---------- ----------- ----------
`310
`
`Com-Bus
`I Driver
`-------------------- ----------·
`
`---------- ..
`
`I
`I
`I
`I
`I
`
`303
`
`304
`
`I
`I
`
`----------·
`
`~
`00
`•
`~
`~
`~
`
`~ = ~
`
`~ = :=
`
`N
`~Cl\
`N
`
`0 ....
`
`N
`
`rFJ =(cid:173)
`.....
`
`('D
`('D
`
`(.H
`
`0 .....
`....
`-....l
`
`d
`rJl
`00
`'N = \C
`~ = u. = N
`
`PAGE 5 OF 27
`
`
`
`FIGURE 4
`
`302 Embedded
`
`,--------------------------------------------~-------------------------------------------
`
`401 ~ Application
`I
`
`I I
`
`Application
`
`---- Software
`r- 401
`r 402
`Real-Time Operating System r 403
`~ 404
`
`I
`
`I
`I
`
`Middleware
`
`Device Drivers
`
`Hardware Abstraction Layer
`
`~405
`
`-----------------------------------------------------------------------------------------·
`
`I
`I
`I
`
`~
`00
`•
`~
`~
`~
`
`~ = ~
`
`2'
`:=
`
`N
`~Cl\
`N
`
`0 ....
`
`N
`
`rFJ =(cid:173)
`.....
`
`('D
`('D
`
`.j;o.
`
`0 .....
`....
`-....l
`
`d
`rJl
`00
`'N = \C
`~ = u. = N
`
`PAGE 6 OF 27
`
`
`
`/ 402 Middleware
`FIGURE 5
`r------------------------------------------------_(.-------------------------------------------------1
`
`I
`I
`
`Application Programming Interface I'- 502
`
`~
`00
`•
`~
`~
`~
`
`~ = ~
`
`507
`
`508
`
`Upgrade and
`i'--- Configuration
`Manager
`
`Access
`v- Manager
`
`Event L/
`Manager
`
`Data Integrity L-J
`Watchdog
`
`5
`
`506
`
`Bulletin Board Manager
`
`503
`
`509
`
`Local Signal
`Com. Interface
`Signal - Variable
`Conversion
`
`Remote Message
`Com. Interface
`Message - Variable
`Conversion
`
`501
`
`504
`
`2'
`:=
`
`N
`~Cl\
`N
`
`0 ....
`
`N
`
`('D
`('D
`
`rFJ =(cid:173)
`.....
`Ul
`0 .....
`....
`-....l
`
`d
`rJl
`00
`'N = \C
`~ = u. = N
`
`PAGE 7 OF 27
`
`
`
`---- -- -
`r
`""'
`, Application
`Process
`.....-
`60 3 '-----...,
`,---~_,
`Application
`Process
`
`.....
`
`'"
`
`.-
`
`"
`Local
`...
`Signal
`/
`~om Proces~ ~
`60
`....~
`5'
`~
`,
`
`Remote
`/ Message
`rom Process
`~~
`"'"'-----
`) 60
`
`...J
`
`......
`
`....
`
`_..
`
`~
`
`601
`
`607
`
`'--
`
`--1
`Events
`___.-/ 608
`~
`Real-Time V
`Variables
`
`;'
`
`~
`
`~
`
`~
`00
`•
`~
`~
`~
`
`~ = ~
`
`~ = :=
`
`N
`~Cl\
`N
`
`0 ....
`
`N
`
`602
`
`BB
`__..../ 609
`r--...
`Diagnostics ~ Manager
`Process
`Data
`~ ~ 610
`Configuration ~
`Parameters
`___..-< 611
`____..,.l--/
`-
`"-
`Firmware
`(Code)
`~
`
`I"""
`
`Bulletin Board
`
`,
`
`...)
`
`('D
`
`rFJ =-('D
`.....
`Cl\
`0 .....
`....
`-....l
`
`d
`rJl
`00
`'N = \C
`~ = u. = N
`
`PAGE 8 OF 27
`
`
`
`BB
`Manager
`Process
`Integrity Check
`
`707
`
`~
`00
`•
`~
`~
`~
`~
`
`= ~
`
`FIGURE 7
`702 --......__,_
`
`705
`
`Com. 1 Com
`
`Bus
`Controller 1
`
`-
`
`1/F 1
`
`706
`
`Remote
`Message
`'
`'
`Conversion 1 l
`\ 714
`
`I
`
`I
`I
`I
`I
`I
`I
`I
`
`Remote
`Message
`Conversion 2
`710
`
`Remote
`Message
`Conversion 3
`
`Mess Proc
`
`701
`External
`Event
`
`713
`
`Com.
`Bus
`Controller 2
`703 ____.,
`
`Com.
`Bus
`Controller 3
`
`704
`
`Com
`1/F 2
`
`-
`
`1/F 3
`
`709
`I
`~ ~ Com Ill
`-.OS ) l Remote
`
`Application
`Process
`
`I
`
`., ......
`
`I
`
`DUI
`
`708 _____,
`
`Manager v712
`Process
`
`~ =
`:=
`
`N
`0\
`N
`0
`N
`
`~
`
`....
`
`('D
`('D
`
`rFJ =-
`.....
`-....l
`0 .....
`....
`-....l
`
`d
`rJl
`00
`'N = \C
`~ = u. = N
`
`PAGE 9 OF 27
`
`
`
`Store Variable
`from remote 1/0
`
`FIGURE 8
`
`801
`-External
`Notification I
`Activation
`
`Set Task inactive(cid:173)
`a it for notification
`
`806
`
`802
`
`803
`
`Receive
`Message
`
`Extract
`Variables
`
`Store
`Variables in
`Bulletin Board
`
`804
`
`no
`
`yes
`
`~
`00
`•
`~
`~
`~
`
`~ = ~
`
`2'
`:=
`
`N
`~Cl\
`N
`
`0 ....
`
`N
`
`rFJ =(cid:173)
`.....
`
`('D
`('D
`
`QO
`
`0 .....
`....
`-....l
`
`d
`rJl
`00
`'N = \C
`~ = u. = N
`
`PAGE 10 OF 27
`
`
`
`FIGURE 9
`
`906
`
`Task inactive-v
`
`a it for notificatio
`
`Store Variable
`from local 110
`
`901
`External or
`internal
`Notification/
`activation
`
`902
`
`903 '
`
`Sample/Poll
`Input ports
`
`I Convert Signals to
`Variables
`I
`I
`
`I
`
`804~ I I
`
`y~
`
`I I
`
`I
`
`Store
`Variables in
`Bulletin Board
`
`no
`
`yes
`
`905
`
`~
`00
`•
`~
`~
`~
`
`~ = ~
`
`2'
`:=
`
`N
`~Cl\
`N
`
`0 ....
`
`N
`
`('D
`
`rFJ =-('D
`.....
`\0
`0 .....
`....
`-....l
`
`d
`rJl
`00
`'N = \C
`~ = u. = N
`
`PAGE 11 OF 27
`
`
`
`FIGURE 10
`
`-------------------------------------------------------------------------------------
`1001
`
`~
`00
`•
`~
`~
`~
`
`~ = ~
`
`804 \j
`
`'
`
`: I
`Bulletin Board
`Store Mechanism
`
`' I
`
`I
`
`I
`
`1009
`_/
`
`yes
`
`Send error
`notification
`
`1010
`
`1006
`Private
`memory
`
`BB Resource
`
`601
`BB
`1007
`
`1008
`--------------------------------------------------------------------------------------·
`
`I
`
`2'
`:=
`
`N
`~Cl\
`N
`
`0 ....
`
`N
`
`('D
`('D
`
`rFJ =(cid:173)
`.....
`....
`0
`0 .....
`....
`-....l
`
`d
`rJl
`00
`'N = \C
`~ = u. = N
`
`PAGE 12 OF 27
`
`
`
`FIGURE 11 ,---------~-------------------------------------------------------------------------------------------
`1102
`Request
`1108
`88 Resource
`
`~
`00
`•
`~
`~
`~
`
`~ = ~
`
`Wait and
`Check again
`
`no
`
`1109
`
`yes
`
`yes
`
`1103
`
`1104
`
`1101 \
`Bulletin Board
`Retrieve
`Mechanism
`
`i
`\.j
`
`I
`
`Get BB
`resource
`I
`
`I
`
`I
`
`1105
`
`Send error
`notification
`
`1110
`
`1..
`
`1006
`Private
`memory
`
`Copy
`1 Variables from 88 to
`private memory
`
`Release
`88 Resource
`
`601
`88
`
`1106
`
`___________________________________________ j_j_()~--------------------------------------------------
`
`2'
`:=
`
`N
`~Cl\
`N
`
`0 ....
`
`N
`
`('D
`('D
`
`rFJ =(cid:173)
`.....
`....
`....
`0 .....
`....
`-....l
`
`d
`rJl
`00
`'N = \C
`~ = u. = N
`
`PAGE 13 OF 27
`
`
`
`FIGURE 12
`
`1201
`1200
`External or
`Application Process
`internal
`Notification/
`activation
`r-----------1---------------------------------------------------------t----------------------------------------------;
`
`I
`I
`I
`I
`I
`I
`
`~
`00
`•
`~
`~
`~
`
`~ = ~
`
`r·-·· -
`
`1
`
`'
`
`1205
`
`Retrieve
`Variables in
`Bulletin Board
`
`Process
`Variables
`
`I
`
`Store
`Variables in
`Bulletin Board
`! _______________________________________________________ _
`l
`--------------------------------
`;
`
`nC> ~ 1:2()<1
`
`1101
`
`1202
`
`1203
`
`801
`
`-----------------------------·
`
`2'
`:=
`
`N
`~Cl\
`N
`
`0 ....
`
`N
`
`('D
`('D
`
`rFJ =(cid:173)
`.....
`....
`N
`0 .....
`....
`-....l
`
`d
`rJl
`00
`'N = \C
`~ = U"l = N
`
`PAGE 14 OF 27
`
`
`
`FIGURE 13
`
`1301
`External or
`internal
`Notification/
`activation
`,------------·---------------------------------------------------------~-------------------------------
`
`~
`00
`•
`~
`~
`~
`
`~ = ~
`
`1305
`
`Task inactive - ~
`a it for notification
`
`Retrieve
`Variables in
`
`I
`
`to signals
`
`I
`~
`I I I Bulletin Board I
`I I Convert variables ~
`
`1101
`
`I 1300 Update
`I i local 1/0 from
`I : Bulletin Board
`
`1302
`
`1303
`
`1304
`
`yes
`
`~ = :=
`
`N
`~Cl\
`N
`
`0 ....
`
`N
`
`('D
`
`rFJ =-('D
`.....
`....
`0 .....
`....
`-....l
`
`(.H
`
`d
`rJl
`00
`'N = \C
`~ = u. = N
`
`PAGE 15 OF 27
`
`
`
`FIGURE 14
`
`1401
`External or
`internal
`Notification/
`activation
`,-------------·---------------------------------------------------·-------------------------------------
`
`' ' ' ' ' ' ' ' ' !
`
`'
`
`I
`
`I
`
`·y
`Select variables and
`Com Port (bus) for replication
`
`Task inactive(cid:173)
`ait for notification
`
`1406
`
`Retrieve
`Variables in
`Bulletin Board
`
`Convert variables
`
`1101
`
`1403
`
`1404
`
`1402
`
`1400
`Update remote
`ECUs orGWs
`from Bulletin Boar
`(data replication)
`
`yes
`
`1405
`
`~
`00
`•
`~
`~
`~
`
`~ = ~
`
`2'
`:=
`
`N
`~Cl\
`N
`
`0 ....
`
`N
`
`('D
`('D
`
`rFJ =(cid:173)
`.....
`....
`0 .....
`....
`-....l
`
`.j;o.
`
`d
`rJl
`00
`'N = \C
`~ = u. = N
`
`PAGE 16 OF 27
`
`
`
`FIGURE 15
`:·----------------------i----------------------------------------------1---------~~~_u-~: ____________ ,
`1502
`
`1501
`External
`Notification I
`
`Receive
`Message (PDU)
`
`I
`I
`I
`I
`I
`I
`I
`I
`I
`I
`I
`I
`I
`I
`I
`I
`I
`
`:
`
`1505
`
`Task inactive-
`a it for notification!
`1
`
`I
`
`... )1
`Ot
`
`I
`
`I
`
`~·
`
`1503
`
`I
`I
`I
`I
`I
`
`i
`:
`
`I
`I
`I
`I
`I
`I
`I
`I
`I
`I
`I
`I
`I
`I
`I
`I
`I
`I
`I
`I
`I
`I
`I
`I
`
`no
`
`yes
`
`I
`
`·-------------------------------------------------------------------------------------------------------
`
`1
`I
`
`1500
`Store variable
`or message
`from remote
`Gateway
`
`~
`00
`•
`~
`~
`~
`
`~ = ~
`
`2'
`:=
`
`N
`~Cl\
`N
`
`0 ....
`
`N
`
`('D
`('D
`
`rFJ =(cid:173)
`.....
`....
`Ul
`0 .....
`....
`-....l
`
`d
`rJl
`00
`'N = \C
`~ = u. = N
`
`PAGE 17 OF 27
`
`
`
`FIGURE 16
`
`1607
`
`Task inactive -
`a it for notification
`
`1601
`External or
`internal
`Notification/
`activation
`
`1600
`Store-and forward
`1602 ! updating mechanism
`
`Select PDU (variables) and
`Com Port (bus) for forwarding
`
`Retrieve
`
`1101
`
`Convert PDU
`
`1603
`
`1604
`
`1605
`
`yes
`
`no
`·-------------------------------------------------------------------------------------------------------
`
`~
`00
`•
`~
`~
`~
`
`~ = ~
`
`2'
`:=
`
`N
`~Cl\
`N
`
`0 ....
`
`N
`
`('D
`('D
`
`rFJ =(cid:173)
`.....
`....
`Cl\
`0 .....
`....
`-....l
`
`d
`rJl
`00
`'N = \C
`~ = u. = N
`
`PAGE 18 OF 27
`
`
`
`FIGURE 17
`1710
`Network shutdown
`In Debug Mode
`
`/
`
`1704
`
`Debug I
`Emergency
`Mode
`
`1709
`Network
`wake-up
`In Debug
`
`Mode~711
`
`Network
`wake-up
`In Run
`Mode
`
`Resume
`Run Mode
`through
`Network or
`local event
`
`1707
`Activation of
`Debug
`Mode
`through
`Network or
`local event
`
`Sleep
`Mode
`
`Network wake-up
`n Config Mode
`1705
`
`1702
`
`1712
`Network
`shutdown
`In Run
`Mode
`
`Config
`Mode
`
`Network Reboot
`In Run Mode
`
`~
`00
`•
`~
`~
`~
`
`~ = ~
`
`2'
`:=
`
`N
`~Cl\
`N
`
`0 ....
`
`N
`
`('D
`('D
`
`rFJ =(cid:173)
`.....
`....
`-....l
`0 .....
`....
`-....l
`
`d
`rJl
`00
`'N = \C
`~ = u. = N
`
`PAGE 19 OF 27
`
`
`
`US 8,209,705 B2
`
`1
`SYSTEM, METHOD AND COMPUTER
`PROGRAM PRODUCT FOR SHARING
`INFORMATION IN A DISTRIBUTED
`FRAMEWORK
`
`RELATED APPLICATION(S)
`
`The present application is a continuation of an application
`filed Dec. 15, 2003 under application Ser. No. 10/737,690,
`now U.S. Pat. No. 7,802,263, which, in tum, claims priority of
`a provisional patent application filed Dec. 17, 2002 under
`application Ser. No. 60/434,018, which are incorporated
`herein by reference.
`
`FIELD AND BACKGROUND OF THE
`INVENTION
`
`The present invention relates to the field of distributed
`control and monitoring systems that may include certain tem(cid:173)
`poral behavior.
`Such technology may optionally apply to electronic
`vehicle communication and control systems, real-time moni(cid:173)
`toring systems, industrial automation and control systems, as
`well as any other desired system.
`
`SUMMARY OF THE INVENTION
`
`A system, method and computer program product are pro(cid:173)
`vided for sharing information in a distributed system. After 30
`information is received, it is stored on a bulletin board. In use,
`the information is shared, in real-time, among a plurality of
`heterogeneous processes.
`In one embodiment, both past and present instances of the
`information may be stored on the bulletin board. As an option, 35
`the information may be replicated among a plurality of the
`bulletin boards. Optionally, first information may be pro(cid:173)
`cessed utilizing a first bulletin board and stored utilizing a
`second bulletin board. Still yet, the bulletin boards may be
`hierarchical.
`In another embodiment, the processes may access multiple
`sections of the bulletin board. Further, the bulletin board may
`send notifications to the processes based on a state of the
`information on the bulletin board.
`Optionally, the information may include variables. For
`example, the information may include input variables, output
`variables, etc. Moreover, the processes may include local
`processes, remote processes, etc. Still yet, the processes may
`include event triggered processes and/or time triggered pro(cid:173)
`cesses. In use, each of the processes may process the infor- 50
`mation in a manner that is isolated from temporal character(cid:173)
`istics associated with the network.
`In still another embodiment, the information may be
`extracted from a message received by a bulletin board man(cid:173)
`ager. Moreover, the information may be converted from a
`signal received by a bulletin board manager. Even still, the
`information may be shared in a single task, may be shared
`according to a schedule, and/or may be shared with an oper(cid:173)
`ating system. Optionally, dynamic preemptive scheduling
`may be provided. Also, the information may be shared across 60
`the communication network with only a portion of a message
`header that is needed for a specific communication link while
`other communication links may use a different message
`header.
`As a further option, resources in the network may be pro- 65
`tected. Specifically, the resources in the network may be
`protected utilizing a schedule that allows information sharing
`
`2
`utilizing the bulletin board. In another embodiment, the
`resources in the network may be protected utilizing sema(cid:173)
`phores.
`In even still another embodiment, the information may be
`shared according to an internal clock, an external clock, etc.
`During operation, objects may be generated based on a
`change of state of the information stored in the bulletin board.
`Such objects may include, but are not limited to flags, events,
`signals, interrupts, etc. Still yet, the information may be
`10 stored in response to interrupts associated with the processes.
`In use, the bulletin board may update the processes with
`information at a first rate that differs from a second rate with
`which the processes send the information to the bulletin
`15 board. Optionally, the bulletin board may be accessed with
`guaranteed access times, jitter, and bandwidth.
`In addition, the bulletin board may be updated irregularly
`and triggered by internal or external objects including, but not
`limited to flags, events, signals, interrupts, etc. Event triggers
`20 may be provided independent of a link connection between
`nodes where the processes are carried out. Moreover, failure
`redundancy may be provided through multiple independent
`links across diverse physical connections.
`As yet another option, the information may have a user-
`25 configured constraint associated therewith. Such constraint
`may include a memory constraint, a real-time constraint, etc.
`As a further option, the constraint may be configured utilizing
`a tool.
`
`BRIEF DESCRIPTION OF THE DRAWINGS
`
`40
`
`FIG. 1 is a block diagram of an embodiment of a system of
`one embodiment;
`FIG. 2 is a block diagram generally depicting an embodi(cid:173)
`ment of an ECU as part of the system illustrated in FIG. 1;
`FIG. 3 is a block diagram generally depicting an embodi(cid:173)
`ment of a Gateway device as part of the system illustrated in
`FIG.1;
`FIG. 4 is a block diagram of an embodiment of the software
`architecture assumed for one embodiment.
`FIG. 5 is a block diagram of an embodiment of the middle(cid:173)
`ware that contains the methods of one embodiment.
`FIG. 6 is a block diagram of an embodiment of the bulletin
`45 board that describes the process interaction of one embodi-
`ment.
`FIG. 7 is a block diagram of an embodiment of the bulletin
`board that describes the process interaction with multiple
`external communication buses as part of one embodiment.
`FIG. 8 is a flow chart diagram of an embodiment of the
`variable store from remote I/0 method of one embodiment.
`FIG. 9 is a flow chart diagram of an embodiment of the
`variable store from local I/0 method of one embodiment.
`FIG. 10 is a flow chart diagram of an embodiment of the
`55 variable method of one embodiment.
`FIG. 11 is a flow chart diagram of an embodiment of the
`variable retrieve method of one embodiment.
`FIG. 12 is a flow chart diagram of an embodiment of the
`application process using the method of one embodiment
`FIG. 13 is a flow chart diagram of an embodiment of the
`local I/0 update from bulletin board method of one embodi(cid:173)
`ment
`FIG. 14 is a flow chart diagram of an embodiment of the
`variable replication method of one embodiment.
`FIG. 15 is a flow chart diagram of an embodiment of the
`message store from remote gateway method of one embodi-
`ment.
`
`PAGE 20 OF 27
`
`
`
`US 8,209,705 B2
`
`3
`FIG. 16 is a flow chart diagram of an embodiment of the
`message forward to remote ECU or Gateway method of one
`embodiment.
`FIG. 17 is a state transition diagram of an embodiment of
`the mode switching method of one embodiment.
`
`DETAILED DESCRIPTION
`
`5
`
`4
`(100). In addition, the system gateway (101) may also be
`connected to an external gateway (131) that may link the
`system to a remote device (132) through wireless or wired
`wide-area-networks such as the Internet, using standard pro-
`tocols such as UDP/IP, TCP/IP,RTP,HTTP, SOAP, JAVA, etc.
`or nonstandard proprietary protocols.
`Subsequent to the system level may be several layers of
`groups and subgroups that are link to the higher levels via
`gateways (101,103,104,105).
`During the design-time of the system, not all ECUs may
`exist. Therefore, the development tool (122) may provide a
`plug-in component or virtual ECU/GW (115) that directly
`links into the wired multiplexing bus or wireless network
`15 (110) and also allows for separate control functions via a
`tool-link (116).
`The block diagram in FIG. 2 depicts the detailed elements
`within a generic ECU (200) that is one embodiment ofECU
`(102). The ECU (200) typically contains a micro-processor
`20 (201), volatile memory (204) such as RAM, S-RAM or simi(cid:173)
`lar, non-volatile memory (203) such as EEPROM, FLASH,
`etc., a real time clock for internal timing of processes (205), a
`watchdog (206) to maintain the health of the system, one or
`more communication bus controllers (207) with associated
`25 drivers (208), digital I/0 (209) with line drivers (210), and
`analog I/0 (211) with associated analog signal conditioning
`(212).
`In an alternate embodiment, the ECU (200) may also con(cid:173)
`tain a wireless communication controller (311) and a RF-
`30 Front-end (312) as outlined in FIG. 3. The software (202) can
`either be stored in local non-volatile memory (203) or par(cid:173)
`tially downloaded via the communication link (207,208) and
`stored in the volatile memory. The software is then executed
`in the microprocessor (201).
`The block diagram FIG. 3 depicts the detailed elements
`within a generic gateway (300) that is one embodiment of
`Gateway (101,103,104,105) in FIG. 1.
`FIG. 4 outlines one embodiment of the software architec-
`ture in an embedded system. The hardware abstraction layer
`40 ( 405) allows the system developer to adapt a standard oper(cid:173)
`ating system to a specific hardware as used in an ECU (200)
`or gateway (300). The hardware abstraction layer (405)
`adapts the real-time operating system (403) and the device
`drivers ( 404) to a specific hardware implementation.
`One embodiment includes the middleware ( 402) that has
`direct access to the real-time operating system (403), the
`device drivers ( 404) and the hardware abstraction layer ( 405).
`The middleware isolates the application from input/output
`functions and allows multiple applications to share common
`50 variables locally. In addition, the middleware lets applica(cid:173)
`tions share variables with remote applications/processes. In
`the context of the present description, a process may refer to
`any hardware and/or software operation, etc.
`In one embodiment, the middleware can directly interface
`55 with the input/output mechanisms of the hardware without
`utilizing an operating system ( 403) or hardware abstraction
`layer ( 405).
`Another embodiment of the middleware utilizes a preemp(cid:173)
`tive multitasking operating system with explicit control of
`60 resources. In an alternate embodiment, the middleware can be
`built with a static multitasking scheme with implicit resource
`management or be part of a single task system.
`Referring now to FIG. 5, the middleware ( 402) contains the
`bulletin board manager (501), a local signal communication
`65 interface (503), a remote message communication interface
`(504), and an application programming interface (502). The
`application interface (502) provides methods and data inter-
`
`10
`
`FIG. 1 is a block diagram generally depicting elements of
`an embodiment of the present distributed embedded commu(cid:173)
`nication and computing system. The system architecture may
`be situated in automotive electronics or industrial control and
`monitoring systems. In an automotive environment, the vari(cid:173)
`ous Electronic Control Units (ECUs, 102) control complex
`applications such as engine control, brake control, or diag(cid:173)
`nostics. They are either connected to sensors and actuators via
`discrete links or simple standard functions such as sensors
`and actuators are organized into separate sub networks.
`These complex functions such as braking, engine-control,
`etc. are then grouped into the backbone system functions for
`the car, such as body control, power train and chassis. The
`backbone also includes the vehicle's high level functions
`such as diagnostics, telematics and entertainment systems.
`Therefore the system is typically hierarchically organized
`and includes a variety of gateways (101,104,105), which
`relay messages up and down through the system layers. Each
`layer may contain multiple electronic control units (ECU,
`102) that are connected through wired serial multiplexing
`bus-systems such as Controller Area Network (CAN or
`IS011898), Flexray, LIN, 11850, 11708, MOST, IEEE 1394,
`and other similar serial multiplexing buses or through wire(cid:173)
`less multiplexing systems such as IEEE802 .11, IEEE802 .15,
`Bluetooth, Zigbee, or similar other wireless links.
`Typically, functions provided by an ECU (102) are bound
`to hard real-time temporal behavior. In the context of the 35
`present description, real-time may include any response time
`that may be measured in milli- or microseconds, ancl/or is less
`than 1 second.
`The ECU may receive a set of real-time input variables
`from local sensors (108), which are connected via discrete
`signal lines (113), or from networked sensors (106), which
`are connected through a multiplexing bus-system (112). The
`ECU may also share variables with other ECUs (102) that are
`either connected on the same physical multiplexing bus or
`that it can reach through a gateway (101,103,104).
`Then the ECU (102) processes the input variables and
`generates a set of output variables that are either shared with
`other ECUs (102) as described above, or which are output to
`local actuators (109), which are connected via discrete signal
`lines (113), or to networked actuators, which are connected
`through a multiplexing bus (112). ECUs (102) typically share
`information with devices that are connected on the same
`physical multiplexing system. This method of information
`sharing is called horizontal information sharing in a hierar(cid:173)
`chical system. Gateways (101,103,104) link multiple physi(cid:173)
`cal multiplexing systems together. In the context of the
`present description, such information may include data, a
`signal, and/or anything else capable of being stored and
`shared.
`The highest level in the hierarchical system is the system
`level. The system level gateway (101) may be connected to
`ECUs on the system level multiplexing bus (117), to subse(cid:173)
`quent gateways (103) that also link to subsequent communi(cid:173)
`cation buses (110), and to external components (120) that
`may contain diagnostics devices (121), development tools
`(122), other add-on devices (123) or other instances of dis(cid:173)
`tributed embedded communication and computing systems
`
`45
`
`PAGE 21 OF 27
`
`
`
`US 8,209,705 B2
`
`5
`faces to a plurality of applications. In one embodiment, the
`application interface is an object library that can be linked to
`an application at design time.
`The bulletin board manager (501) contains an upgrade and
`configuration manager (507), an event manager (505), a data
`access manager (508), and a data integrity watchdog (506).
`The upgrade and configuration manager (507) is necessary to
`configure the data structure of the bulletin board and to make
`executable code available to individual processing nodes. In
`the context of the present description, the bulletin board may 10
`refer to any database that enables users to send and/or read
`el