throbber
111111
`
`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

This document is available on Docket Alarm but you must sign up to view it.


Or .

Accessing this document will incur an additional charge of $.

After purchase, you can access this document again without charge.

Accept $ Charge
throbber

Still Working On It

This document is taking longer than usual to download. This can happen if we need to contact the court directly to obtain the document and their servers are running slowly.

Give it another minute or two to complete, and then try the refresh button.

throbber

A few More Minutes ... Still Working

It can take up to 5 minutes for us to download a document if the court servers are running slowly.

Thank you for your continued patience.

This document could not be displayed.

We could not find this document within its docket. Please go back to the docket page and check the link. If that does not work, go back to the docket and refresh it to pull the newest information.

Your account does not support viewing this document.

You need a Paid Account to view this document. Click here to change your account type.

Your account does not support viewing this document.

Set your membership status to view this document.

With a Docket Alarm membership, you'll get a whole lot more, including:

  • Up-to-date information for this case.
  • Email alerts whenever there is an update.
  • Full text search for other cases.
  • Get email alerts whenever a new case matches your search.

Become a Member

One Moment Please

The filing “” is large (MB) and is being downloaded.

Please refresh this page in a few minutes to see if the filing has been downloaded. The filing will also be emailed to you when the download completes.

Your document is on its way!

If you do not receive the document in five minutes, contact support at support@docketalarm.com.

Sealed Document

We are unable to display this document, it may be under a court ordered seal.

If you have proper credentials to access the file, you may proceed directly to the court's system using your government issued username and password.


Access Government Site

We are redirecting you
to a mobile optimized page.





Document Unreadable or Corrupt

Refresh this Document
Go to the Docket

We are unable to display this document.

Refresh this Document
Go to the Docket