Optimized transfer of packets in a resource constrained operating environment

Information

  • Patent Grant
  • 8612693
  • Patent Number
    8,612,693
  • Date Filed
    Monday, October 5, 2009
    15 years ago
  • Date Issued
    Tuesday, December 17, 2013
    11 years ago
Abstract
An apparatus includes first and second components, a memory, and an allocator configured to allocate a portion of the memory to the first component, wherein the first component is configured to access the allocated portion of the memory and to send information to the second component to provide the second component with access to the allocated portion of the memory.
Description
BACKGROUND

1. Field


The present disclosure relates generally to optimizing the transfer of packets in a resource constrained operating environment.


2. Background


Many electronic devices employ a central processing unit (CPU) to perform highly sophisticated and complex processing functions. An ARM (Advanced RISC Machine) processor is just one example of a CPU that is widely used today for mobile applications because of its efficient, low-power architecture. The CPU generally operates with system memory, which holds the software programs and data needed by the CPU to perform its functions.


Direct memory access (DMA) is a common feature that allows certain hardware subsystems within the electronic device to access system memory independently of the CPU. This is typically achieved with a DMA command issued by the CPU, which enables the DMA to copy a block of data from system memory to a buffer within the hardware subsystem, or vice versa. Because the DMA is executing the data transfer, the CPU is available to perform other operations while the transfer is in progress.


Although DMA has proven to be a useful feature, there are a number of disadvantages. The use of a memory in the hardware subsystem solely for buffering is expensive. This is especially true in packet-based communication devices where the quality of service (QoS) requirements may necessitate the buffering of the entire packet at numerous stages throughout the hardware subsystem. In such cases it may not be possible to reuse the same buffer memory for multiple hardware stages. In cases where the communication device is placed in an idle or disabled state for a specific period of time or a specific usage mode, it may not be possible to reuse the memory elsewhere in the device to enhance overall system capability or performance. In addition, the power consumed by a DMA transfer is undesirable in ultra-low power applications, such as those typically encountered in short range wireless communications.


SUMMARY

In one aspect of the disclosure, an apparatus includes first and second components, a memory, and an allocator configured to allocate a portion of the memory to the first component, wherein the first component is configured to access the allocated portion of the memory and to send information to the second component to provide the second component with access to the allocated portion of the memory.


In another aspect of the disclosure, an apparatus includes first and second components, a memory, and means for allocating a portion of the memory to the first component, wherein the first component comprises means for accessing the allocated portion of the memory and means for sending information to the second component to provide the second component with access to the allocated portion of the memory.


In yet another aspect of the disclosure, a method of sharing memory between first and second components includes allocating a portion of the memory to the first component, accessing the allocated portion of the memory by the first component, and sending information from the first component to the second component to provide the second component with access to the allocated portion of the memory.


In a further aspect of the disclosure, a computer-program product for enabling first and second components to share memory includes computer-readable medium comprising codes executable by at least one processor to allocate a portion of the memory to the first component to enable the first component to access the allocated portion of the memory, and enable the second component to access the allocated portion of the memory after the first component sends information to the second component.


In yet a further aspect of the disclosure, a headset includes first and second components, a memory, and an allocator configured to allocate a portion of the memory to the first component, wherein the first component is configured to access the allocated portion of the memory and to send information to the second component to provide the second component with access to the allocated portion of the memory, and wherein the first or second component comprises a transducer.


In yet another aspect of the disclosure, a watch includes first and second components, a memory, and an allocator configured to allocate a portion of the memory to the first component, wherein the first component is configured to access the allocated portion of the memory and to send information to the second component to provide the second component with access to the allocated portion of the memory, and wherein the first or second component comprises a user interface.


In yet a further aspect of the disclosure, a sensing device includes first and second components, a memory, and an allocator configured to allocate a portion of the memory to the first component, wherein the first component is configured to access the allocated portion of the memory and to send information to the second component to provide the second component with access to the allocated portion of the memory, and wherein the first or second component comprises a sensor.


It is understood that other aspects of the disclosure will become readily apparent to those skilled in the art from the following detailed description, wherein various aspects of heterogeneous wireless ad-hoc networks are shown and described by way of illustration. As will be realized, these aspects of the disclosure may be implemented in other and different configurations and its several details are capable of modification in various other respects. Accordingly, the drawings and detailed description are to be regarded as illustrative in nature and not as restrictive.





BRIEF DESCRIPTION OF THE DRAWINGS


FIG. 1 is a conceptual diagram illustrating an example of a wireless network;



FIG. 2 is a conceptual diagram illustrating an example of a wireless node;



FIG. 3 is a conceptual diagram illustrating an example of a wireless interface for use in a wireless node; and



FIG. 4 is a conceptual diagram illustrating an example of the functionality of a wireless interface for use in a wireless node.





In accordance with common practice, some of the drawings may be simplified for clarity. Thus, the drawings may not depict all of the components of a given apparatus or method.


DETAILED DESCRIPTION

Various aspects of the invention are described more fully hereinafter with reference to the accompanying drawings. This invention may, however, be embodied in many different forms and should not be construed as limited to any specific structure or function presented throughout this disclosure. Rather, these aspects are provided so that this disclosure will be thorough and complete, and will fully convey the scope of the invention to those skilled in the art. Based on the teachings herein one skilled in the art should appreciate that the scope of the invention is intended to cover any aspect of the invention disclosed herein, whether implemented independently of or combined with any other aspect of the invention. For example, an apparatus may be implemented or a method may be practiced using any number of the aspects set forth herein. In addition, the scope of the invention is intended to cover such an apparatus or method which is practiced using other structure, functionality, or structure and functionality in addition to or other than the various aspects of the invention set forth herein. It should be understood that any aspect of the invention disclosed herein may be embodied by one or more elements of a claim.


Several aspects of an apparatus will now be presented. These aspects will be presented with reference to a wireless node for short range communications. The wireless node includes a CPU and hardware subsystem that shares system memory to process packets for wireless transmission and reception. Configurable amounts of system memory are allocated to the CPU and the various components within the hardware subsystem as required. This arrangement allows for real time adjustment of memory resources based on the current packet size, the number of wireless channels, etc. It also avoids DMA copying, enabling a packet to traverse from the highest software layer down to the low level hardware using the same location in system memory.


An example of a short range communications network suitable for supporting a wireless node embodying one or more aspects of the invention presented throughout this disclosure is illustrated in FIG. 1. The network 100 is shown with various wireless nodes that communicate using any suitable radio technology or wireless protocol. By way of example, the wireless nodes may be configured to support Ultra-Wideband (UWB) technology. Alternatively, the wireless nodes may be configured to support various wireless protocols such as Bluetooth or IEEE 802.11, just to name a few.


The network 100 is shown with a computer 102 in communication with the other wireless nodes. In this example, the computer 102 may receive digital photos from a digital camera 104, send documents to a printer 106 for printing, synch-up with e-mail on a personal digital assistant (PDA) 108, transfer music files to a digital audio player (e.g., MP3 player) 110, back up data and files to a mobile storage device 112, and communicate with a remote network (e.g., the Internet) via a wireless hub 114. The network 100 may also include a number of mobile and compact nodes, either wearable or implanted into the human body. By way of example, a person may be wearing a headset 116 (e.g., headphones, earpiece, etc.) that receives streamed audio from the computer 102, a watch 118 that is set by the computer 102, and/or a sensor 120 which monitors vital body parameters (e.g., a biometric sensor, a heart rate monitor, a pedometer, and EKG device, etc.). The sensor 120 transmits information from the body of the person to the computer 102 where the information may be forwarded to a medical facility (e.g., hospital, clinic, etc) via the wireless hub 114.


Although shown as a network supporting short range communications, a wireless node embodying any aspect of the invention presented throughout this disclosure may also be configured to support communications in a wide area network supporting any suitable wireless protocol, including by way of example, Evolution-Data Optimized (EV-DO), Ultra Mobile Broadband (UMB), Code Division Multiple Access (CDMA) 2000, Long Term Evolution (LTE), or Wideband CDMA (W-CDMA), just to name a few. Alternatively, the wireless node may be configured to support wired communications using cable modem, Digital Subscriber Line (DSL), fiber optics, Ethernet, HomeRF, or any other suitable wired access protocol.


A wireless node supporting any of the networks described above, or any other suitable wireless or wired network, stands to benefit from the various aspects of the invention presented throughout this disclosure because, among other things, the packet-based nature of the communications. However, as those skilled in the art will readily appreciate, these aspects may be extended to any other apparatus, system, method, process, device, product, or node that currently uses DMA to transfer data between two components or would benefit from a method of transferring data between two components using shared memory.



FIG. 2 is a conceptual block diagram of a wireless node. The wireless node 200 includes a wireless interface 202 configured to implement the protocol stack for the transmission medium. More specifically, the wireless interface 202 is responsible for implementing the physical layer by providing the means to transmit and receive data in accordance with the physical and electrical specifications required to interface to the transmission medium and the Medium Access Control (MAC) layer by managing access to the transmission medium. The wireless node 202 may provide other functionality including encryption/decryption, as well providing additional protocol layers (e.g., network layer, transport layer, etc.) that may be required for any particular application. Those skilled in the art will be readily able to implement the appropriate protocol for any wireless or wired node depending on the particular application and the overall design constraints imposed on the overall system.


The wireless node 200 also includes an application processor 204 that provides various data processing functions including, by way of example, speech and multimedia codecs and/or graphics processing. The application processor 204 may support a user interface 206. The user interface 206 may include a keypad, display, speaker, microphone, sensor, joystick, and/or any other combination user interface components.


Various inventive concepts will now be presented with reference to the wireless interface. The wireless interface may be implemented as an ASIC (Application Specific Integrated Circuit), or by some other suitable means. The ASIC may be used to implement the wireless interface alone, or in combination with any other circuitry in the wireless node (e.g. the application processor).


One configuration of a wireless interface is shown in FIG. 3. The wireless interface 300 is shown with a bus architecture represented generally by a bus 302. The bus 302 may include any number of interconnecting buses and bridges depending on the specific application of the wireless interface 300 and the overall design constraints. The bus 302 links together various circuits including a Central Processing Unit (CPU) 304, memory 306, a bus arbiter 307, an allocator 308, and a hardware subsystem 310. The bus 302 may also link various other components such as timing sources, peripherals, voltage regulators, power management circuits, and the like, which are well known in the art, and therefore, will not be described any further.


The hardware subsystem 310 includes a transmit and receive channel. The transmit channel includes an encryption module 312, a Reed-Solomon (RS) encoder 314, a convolutional encoder 316, a constellation mapper 318, and a packetizer 320. The receiver channel includes a depacketizer 322, a constellation demapper 324, a Viterbi decoder 326, an RS decoder 328, and a decryption module 330. The hardware subsystem 310 also includes a MAC 332 and an application processor interface 334. An RF component 336 is connected to the transmit and receive channels of the hardware subsystem 310. The RF component 336 is used to modulate an RF carrier with data generated by the transmit channel. The RF component 336 is also used to recover data from an RF carrier transmitted by an another wireless node. The recovered data is provided by the RF component 336 to the receive channel.


The CPU 304 may be any suitable machine that can execute software. In one configuration of a wireless interface 300, the CPU is an embedded Advanced RISC (Reduced Instruction Set Computing) microprocessor commonly referred to in the industry as an ARM processor. The ARM processor is commonly used as a platform to run operating systems for wireless, consumer, imaging, automotive, industrial and networking applications. In other configurations, the CPU may be another type of microprocessor, a microcontroller, a Digital Signal Processor (DSP), or any other suitable general-purpose or special-purpose processor capable of providing a platform for executing software.


The memory 306 holds the software required by the CPU 304 to perform its functions. Software shall be construed broadly to mean instructions executable by the CPU, whether referred to as software, firmware, middleware, microcode, hardware description language, or otherwise. The memory 306 also holds data that is required by the CPU 304 and the hardware subsystem 310. As will be discussed in greater detail later, the memory serves as the MAC packet transport mechanism for the CPU 304 and the hardware subsystem 310 within the wireless interface 300. Access to the memory 306 is accomplished through the bus 302 with access on a priority/fairness basis being enforced by the bus arbiter 307.


The memory 306 may be implemented with RAM (Random Access Memory), DRAM (Dynamic RAM), SDRAM (Synchronous DRAM), SRAM (Static RAM), cache, general register files in the CPU 304, or any other suitable storage device that can be written to and read from by one or more components within the wireless interface 300. The memory 306 may be implemented with a single component or multiple components. The memory 306 may reside in the wireless interface 300, or alternatively, any portion of the memory 306 may be external to the wireless interface 300. Those skilled in the art will be readily able to design the memory with a suitable architecture for any particular application depending on the overall design constraints imposed on the system and/or other pertinent factors.


A sending component in the wireless interface 300 transfers data by writing the data to an allocated portion of the memory 306 and then sending a pointer to a receiving component to provide the receiving component with access to the allocated portion of the memory 306. The pointer includes the location and the size of the allocated portion of the memory 306. Prior to sending the data, the sending component requests an allocation of a portion of memory from the allocator 308, whose role is to allocate empty memory portions to components upon request. The component with the pointer has access to the allocated portion of the memory 306. Thus, once the sending component writes the data into the allocated portion of the memory 306 and transfers the pointer, the receiving component is given access to the allocated portion of the memory. The receiving component can now access the data, process it, write the processed data back to the allocated portion of the memory, and determine which component in the wireless interface will have access to the processed data by sending the pointer to that component.


The memory 306, or a portion thereof, is divided into multiple blocks, referred to as buffers. The buffers are configurable in terms of size. A configuration manager initializes the buffers at startup and then hands off real-time buffer allocation responsibility to the allocator 308. The configuration manager may be implemented as software that is executed by the CPU 304. The software may be stored in the memory 306 of the wireless interface 300, in memory external to the wireless interface, or distributed between the two. Alternatively, the configuration manager may be implemented as a hardware component in the wireless interface. In one configuration of a wireless node, the configuration manager may be implemented in its entirety outside the wireless interface 300. By way of example, the configuration manager may be implemented by the application processor 204 (see FIG. 2) or by some other entity in the wireless node.


The allocator 308 is shown residing in the wireless interface 300, but it too may be implemented in whole or part external to the wireless interface 300. The allocator 308 is shown as a hardware component, but may be implemented in software executed by the CPU or some other hardware platform residing either inside or outside the wireless interface. Similar to the configuration manager, the software may be stored in the memory 306 of the wireless interface 300, in memory external to the wireless interface, or distributed between the two.


In the transmit mode, the CPU 304 requests a buffer in the memory 306 from the allocator 308. The allocator 308 configures and allocates a buffer to the CPU 304 by transferring a pointer to the CPU 304. Once the pointer is received, the CPU 304 generates a data packet for transmission to another wireless node. The CPU writes the data packet into the buffer and sends the pointer to the MAC 332 to provide the MAC 332 with access to the buffer.


The MAC 332 uses the pointer to retrieve the portion of the data packet necessary to perform MAC layer processing. The ability of the MAC 332 to avoid retrieving the entire data packet may be advantageous in terms of reduced power consumption. The MAC 332 also creates a portion of MAC header and writes it to the buffer. The remaining portion of the MAC header is written to the buffer by the CPU 304. The MAC header together with the data packet (i.e., MAC payload) constitutes a MAC packet. The MAC 332 then sends the pointer to the encryption module 312 to provide the encryption module 312 with access to the buffer.


The encryption module 312 uses the pointer to retrieve the MAC packet in the buffer. The encryption module 312 then computes a MIC (Message Integrity Code) and a CRC (Cyclic Redundancy Check) and adds them to the MAC packet. The MIC allows the receiving wireless node to authenticate the transmission and the CRC provides for error detection. The MAC packet, or a portion thereof (e.g., the MAC payload), is then encrypted with an encryption algorithm using a key that is shared with the wireless node receiving the transmission.


In this example, physical layer processing of a MAC packet includes RS encoding, convolutional encoding, packetizing, and pulse position modulation (PPM). The RS encoder 314 and the convolutional encoder 316 add redundant information to the MAC packet. This redundancy may be used by the receiving node to correct errors in the transmission due to disturbances in the wireless channel. The encoded MAC packet is then provided to the packetizer 320. The packetizer 320 creates the physical layer packet. The physical layer packet includes the MAC packet which constitutes the physical layer payload. The packetizer 320 creates a physical layer preamble and appends the physical layer payload to the preamble to create a physical layer packet. The physical layer packet is then modulated using PPM before being transmitted.


In one configuration of a wireless interface 300, the physical layer processing is performed without the use of the buffer. The MAC packet from the encryption module 312 is provided directly to the RS encoder and then passed through the convolutional encoder 316 and the packetizer 320 to the modulator 318. Alternatively, the MAC packet may be retrieved separately for physical layer processing by RS encoder 314, convolutional encoder 316, the packetizer 320, and the modulator 318 by transferring the pointer between them.


In the receive mode, the RF component 336 recovers a physical layer packet from the transmission and provides it to the demodulator 324. The demodulated physical layer packet is then provided to the depacketizer 322. The depacketizer 322 strips the physical layer preamble from the physical layer packet before decoding the payload (i.e., MAC packet).


The decoding of the payload involves the inverse signal processing functions performed by the transmitting node. In this example, the redundant information in the MAC packet is used by the Viterbi decoder 326 and the RS decoder 328 to correct any transmission errors in the MAC packet. Similar to the physical layer processing in the transmit channel, the MAC packet is passed through the various physical layer processing components without the use of the buffer. However, in an alternative configuration of the wireless interface 300, the MAC packet may be retrieved separately by the demodulator 324, depacketizer 322, Viterbi decoder 326, and the RS decoder 328 by transferring the pointer between them.


Once the physical layer processing is complete, the MAC packet is provided to the decryption module 330. The decryption module 330 decrypts the MAC packet. Once decrypted, the MIC and CRC are checked. Next, the decryption module 330 requests a buffer in the memory 306 from the allocator 308. The allocator 308 configures and allocates a buffer to the decryption module 330 by transferring a pointer to the decryption module 330. Once the pointer is received, the decryption module 330 writes the MAC packet to the buffer and then provides the pointer to the MAC 332. The MAC 332 uses the pointer to retrieve the portion of the MAC packet necessary to perform MAC layer processing. Once complete, the MAC 332 provides the pointer to the CPU 304. The CPU 304 may use the pointer to access the MAC payload (i.e., data packet) in the buffer and perform further processing.



FIG. 4 is a conceptual diagram illustrating an example of the functionality of a wireless interface for use in a wireless node. In this example, a wireless node 400 includes first and second components 402, 404 and a memory 406. The wireless node 400 further includes a module 408 for allocating a portion of the memory to the first component. The first component 402 includes a module 410 for accessing the allocated portion of the memory 406 and a module 412 for sending information to the second component 404 to provide the second component 404 with access to the allocated portion of the memory 406.


It is understood that the specific order or hierarchy of steps in the processes disclosed is an illustration of exemplary approaches. Based upon design preferences, it is understood that the specific order or hierarchy of steps in the processes may be rearranged. The accompanying method claims present elements of the various steps in a sample order, and are not meant to be limited to the specific order or hierarchy presented.


The previous description is provided to enable any person skilled in the art to practice the various aspects described herein. Various modifications to these aspects will be readily apparent to those skilled in the art, and the generic principles defined herein may be applied to other aspects. Thus, the claims are not intended to be limited to the aspects shown herein, but is to be accorded the full scope consistent with the language claims, wherein reference to an element in the singular is not intended to mean “one and only one” unless specifically so stated, but rather “one or more.” Unless specifically stated otherwise, the term “some” refers to one or more. Pronouns in the masculine (e.g., his) include the feminine and neuter gender (e.g., her and its) and vice versa. All structural and functional equivalents to the elements of the various aspects described throughout this disclosure that are known or later come to be known to those of ordinary skill in the art are expressly incorporated herein by reference and are intended to be encompassed by the claims. Moreover, nothing disclosed herein is intended to be dedicated to the public regardless of whether such disclosure is explicitly recited in the claims. No claim element is to be construed under the provisions of 35 U.S.C. §112, sixth paragraph, unless the element is expressly recited using the phrase “means for” or, in the case of a method claim, the element is recited using the phrase “step for.”

Claims
  • 1. An apparatus for constructing or deconstructing a data packet, comprising: first, second, and third components;a memory; andan allocator configured to allocate a portion of the memory to the first component;wherein the first component is configured to: access the allocated portion of the memory;store at least a portion of the data packet in the allocated portion of the memory;send information to the second component to provide the second component with access to the at least a portion of the data packet from the allocated portion of the memory; andwherein the second component is configured to: retrieve the at least portion of the data packet stored in the allocated portion of the memory using the information, wherein the at least portion of the data packet comprises a data payload of the data packet;modify the at least portion of the data packet to construct or deconstruct the data packet;store the modified at least portion of the data packet in the allocated portion of the memory; andprovide the third component with access to the stored modified at least portion of the data packet.
  • 2. The apparatus of claim 1 wherein the allocator is further configured to determine location and size of the portion of the memory allocated to the first component.
  • 3. The apparatus of claim 1 wherein the allocator allocates the portion of the memory to the first component by sending the first component the information.
  • 4. The apparatus of claim 1 wherein the first component sends data to the second component by writing the data to the allocated portion of the memory.
  • 5. The apparatus of claim 1 wherein the first component surrenders access to the allocated portion of the memory by sending the information to the second component.
  • 6. The apparatus of claim 1 wherein the information comprises location and size of the portion of the memory allocated to the first component.
  • 7. The apparatus of claim 1 wherein the allocator is further configured to map the first component to the portion of the memory allocated to the first component.
  • 8. The apparatus of claim 1 wherein the allocator is further configured to allocate portions of the remaining memory to other components.
  • 9. The apparatus of claim 8 further comprising a configuration manager configured to initialize the allocator to initially define by location and size the portion of the memory allocated to the first component and the portions of the remaining memory allocated to the other components.
  • 10. The apparatus of claim 9 wherein the allocator is further configured to change the location and size of the portion of the memory allocated to the first component and the portions of the remaining memory allocated to the other components.
  • 11. The apparatus of claim 1 wherein one of the first and second components comprises a hardware subsystem and the other one of the first and second components comprises a platform for executing software.
  • 12. The apparatus of claim 11 wherein the hardware subsystem comprises a component configured for physical layer processing and the platform for executing software comprises a central processing unit.
  • 13. The apparatus of claim 1 wherein the second component is further configured to modify the at least portion of the data packet by creating at least a first portion of a media access controller (MAC) header for the data packet and adding the created first portion to the at least portion of the data packet by writing the first portion to the allocated portion of the memory.
  • 14. The apparatus of claim 13 wherein the first component is further configured to modify the at least portion of the data packet by creating at least a second portion of the media access controller (MAC) header for the data packet and adding the created second portion to the data packet by writing the second portion to the allocation portion of the memory.
  • 15. The apparatus of claim 1 wherein the third component is configured to: retrieve at least another portion of the modified data packet stored in the allocated portion of the memory;encrypt the at least another portion of the data packet to construct the data packet;store the encrypted at least another portion of the data packet in the allocated portion of the memory; andprovide a fourth component of the apparatus with access to the encrypted data packet.
  • 16. The apparatus of claim 15 wherein the forth component is configured to: retrieve at least a third portion of the encrypted data packet stored in the allocated portion of the memory;perform error correction encoding of the at least third portion of the encrypted data packet to construct the data packet;store the encoded at least third portion of the data packet in the allocated portion of the memory; andprovide a fifth component of the apparatus with access to the encoded data packet.
  • 17. The apparatus of claim 16 wherein the fifth component is configured to: retrieve at least a forth portion of the encoded data packet stored in the allocated portion of the memory; andperform physical layer packetizing of the encoded data packet to construct the data packet;store the packetized physical layer data packet in the allocated portion of the memory; andprovide a sixth component of the apparatus with access to the packetized physical layer data packet.
  • 18. The apparatus of claim 17 wherein the fifth component is configured to: retrieve at least a fifth portion of the packetized physical layer data packet stored in the allocated portion of the memory; andmodulate a carrier with the at least fifth portion of the packetized physical layer data packet to construct the data packet.
  • 19. The apparatus of claim 1 wherein the second component is configured to modify the at least portion of the data packet by performing physical layer depacketizing of the data packet in deconstructing the data packet.
  • 20. The apparatus of claim 19 wherein the third component is configured to: retrieve at least a second portion of the depacketized data packet stored in the allocated portion of the memory;perform error correction decoding of the at least second portion of the depacketized data packet to deconstruct the data packet;store the decoded at least second portion of the data packet in the allocated portion of the memory; andprovide a forth component of the apparatus with access to the decoded data packet.
  • 21. The apparatus of claim 20 wherein the forth component is configured to: retrieve at least a third portion of the decoded data packet stored in the allocated portion of the memory;perform decryption of the at least third portion of the data packet to deconstruct the data packet;store the decrypted at least third portion of the data packet in the allocated portion of the memory; andprovide a fifth component of the apparatus with access to the decrypted data packet.
  • 22. The apparatus of claim 21 wherein the fifth component is configured to: retrieve at least a forth portion of the decrypted data packet stored in the allocated portion of the memory; andperform MAC layer processing to deconstruct the data packet.
  • 23. An apparatus for constructing or deconstructing a data packet, comprising: means for allocating a portion of a memory to a first component;means for accessing the allocated portion of the memory by the first component to store at least a portion of the data packet in the allocated portion of the memory;means for sending information from the first component to the second component to provide the second component with access to the allocated portion of the memory; andmeans for modifying the at least portion of the data packet by the second component to construct or deconstruct the data packet.
  • 24. The apparatus of claim 23 further comprising means for determining location and size of the portion of the memory allocated to the first component.
  • 25. The apparatus of claim 23 wherein the means for allocating a portion of the memory to the first component allocates the portion of the memory by sending the first component the information.
  • 26. The apparatus of claim 23 further comprising means for sending data from the first component to the second component, wherein the data is sent by the first component writing the data to the allocated portion of the memory.
  • 27. The apparatus of claim 23 further comprising means for surrendering access to the allocated portion of the memory by sending the information to the second component.
  • 28. The apparatus of claim 23 wherein the information comprises location and size of the portion of the memory allocated to the first component.
  • 29. The apparatus of claim 23 further comprising means for mapping the first component to the portion of the memory allocated to the first component.
  • 30. The apparatus of claim 23 further comprising means for allocating portions of the remaining memory to other components.
  • 31. The apparatus of claim 30 further comprising means for initially defining by location and size the portion of the memory allocated to the first component and the portions of the remaining memory allocated to the other components.
  • 32. The apparatus of claim 31 further comprising means for changing the location and size of the portion of the memory allocated to the first component and the portions of the remaining memory allocated to the other components.
  • 33. The apparatus of claim 23 wherein one of the first and second components comprises a hardware subsystem and the other one of the first and second components comprises a platform for executing software.
  • 34. The apparatus of claim 33 wherein the hardware subsystem comprises a component configured for physical layer processing and the platform for executing software comprises a central processing unit.
  • 35. A method of constructing or deconstructing a data packet by sharing memory between first, second, and third components, comprising: allocating a portion of the memory to the first component;accessing the allocated portion of the memory by the first component;the first component storing at least a portion of the data packet in the allocated portion of the memory;sending information from the first component to the second component to provide the second component with access to the stored at least portion of the data packet from the allocated portion of the memory;the second component retrieving the stored at least portion of the data packet using the information, wherein the at least portion of the data packet comprises a data payload of the data packet;the second component modifying the at least portion of the data packet to construct or deconstruct the data packet;the second component storing the modified at least portion of the data packet in the allocated portion of the memory; andthe second component providing the third component with access to the stored modified data packet.
  • 36. The method of claim 35 further comprising determining location and size of the portion of the memory allocated to the first component.
  • 37. The method of claim 35 wherein the portion of the memory is allocated to the first component by sending the first component the information.
  • 38. The method of claim 35 further comprising sending data from the first component to the second component, wherein the data is sent by the first component writing the data to the allocated portion of the memory.
  • 39. The apparatus of claim 35 wherein the first component surrenders access to the allocated portion of the memory by sending the information to the second component.
  • 40. The method of claim 35 wherein the information comprises location and size of the portion of the memory allocated to the first component.
  • 41. The method of claim 35 further comprising mapping the first component to the portion of the memory allocated to the first component.
  • 42. The method of claim 35 further comprising allocating portions of the remaining memory to other components.
  • 43. The method of claim 42 further comprising initially defining by location and size the portion of the memory allocated to the first component and the portions of the remaining memory allocated to the other components.
  • 44. The method of claim 43 further comprising changing the location and size of the portion of the memory allocated to the first component and the portions of the remaining memory allocated to the other components.
  • 45. The method of claim 35 wherein one of the first and second components comprises a hardware subsystem and the other one of the first and second components comprises a platform for executing software.
  • 46. The method of claim 45 wherein the hardware subsystem comprises a component configured for physical layer processing and the platform for executing software comprises a central processing unit.
  • 47. A computer-program product for enabling first, second, and third components to share memory for constructing and deconstructing a data packet, comprising: non-transitory computer-readable medium storing codes executable by at least one processor to: allocate a portion of the memory to the first component to enable the first component to;access the allocated portion of the memory;store at least a portion of the data packet in the allocated portion of the memory; andsend information to the second component to provide the second component with access of the at least a portion of the data packet from the allocated portion of the memory; andenable the second component to: retrieve the at least portion of the stored data packet using the information, wherein the at least portion of the data packet comprises a data payload of the data packet;modify the at least portion of the data packet to construct or deconstruct the data packet;store the modified at least portion of the data packet in the allocated portion of the memory; andprovide the third component with access to the stored modified at least portion of the data packet.
  • 48. A headset, comprising: first, second, and third components;a memory; andan allocator configured to allocate a portion of the memory to the first component;wherein the first component is configured to: access the allocated portion of the memory;store at least a portion of a data packet in the allocated portion of the memory;send information to the second component to provide the second component with access to the at least portion of the data packet from the allocated portion of the memory;wherein the second component is configured to: retrieve the at least portion of the data packet stored in the allocated portion of the memory using the information, wherein the at least portion of the data packet comprises a data payload of the data packet;modify the at least portion of the data packet to construct or deconstruct the data packet;store the modified at least portion of the data packet in the allocated portion of the memory; andprovide the third component with access to the stored modified at least portion of the data packet; anda transducer configured to generate data of the data packet.
  • 49. A watch comprising: first, second, and third components;a memory; andan allocator configured to allocate a portion of the memory to the first component;wherein the first component is configured to: access the allocated portion of the memory;store at least a portion of a data packet in the allocated portion of the memory;send information to the second component to provide the second component with access to the at least a portion of the data packet from the allocated portion of the memory; andwherein the second component is configured to: retrieve the at least portion of the data packet stored in the allocated portion of the memory using the information, wherein the at least portion of the data packet comprises a data payload of the data packet;modify the at least portion of the data packet to construct or deconstruct the data packet;store the modified at least portion of the data packet in the allocated portion of the memory; andprovide the third component with access to the stored modified at least portion of the data packet; anda user interface configured to capture data of the data packet.
  • 50. A sensing device, comprising: first, second, and third components;a memory; andan allocator configured to allocate a portion of the memory to the first component;wherein the first component is configured to: access the allocated portion of the memory;store at least a portion of a data packet in the allocated portion of the memory;send information to the second component to provide the second component with access to the at least a portion of the data packet from the allocated portion of the memory; andwherein the second component is configured to: retrieve the at least portion of the data packet stored in the allocated portion of the memory using the information, wherein the at least portion of the data packet comprises a data payload of the data packet;modify the at least portion of the data packet to construct or deconstruct the data packet;store the modified at least portion of the data packet in the allocated portion of the memory; andprovide the third component with access to the stored modified at least portion of the data packet; anda sensor configured to generate data of the data packet.
CROSS-REFERENCE TO RELATED APPLICATIONS

The present Application for Patent claims priority to Provisional Application No. 61/161,617 entitled “Optimized Transfer of Packets in a Resource Constrained Operating Environment” filed Mar. 19, 2009.

US Referenced Citations (164)
Number Name Date Kind
5293487 Russo et al. Mar 1994 A
5687169 Fullerton Nov 1997 A
5764696 Barnes et al. Jun 1998 A
5812081 Fullerton Sep 1998 A
5832035 Fullerton Nov 1998 A
5889781 Eftimakis et al. Mar 1999 A
5907427 Scalora et al. May 1999 A
5952956 Fullerton Sep 1999 A
5960031 Fullerton et al. Sep 1999 A
5963581 Fullerton et al. Oct 1999 A
5969663 Fullerton et al. Oct 1999 A
5995534 Fullerton et al. Nov 1999 A
6021132 Muller et al. Feb 2000 A
6031862 Fullerton et al. Feb 2000 A
6088777 Sorber Jul 2000 A
6091374 Barnes Jul 2000 A
6111536 Richards et al. Aug 2000 A
6133876 Fullerton et al. Oct 2000 A
6177903 Fullerton et al. Jan 2001 B1
6218979 Barnes et al. Apr 2001 B1
6295019 Richards et al. Sep 2001 B1
6297773 Fullerton et al. Oct 2001 B1
6300903 Richards et al. Oct 2001 B1
6304623 Richards et al. Oct 2001 B1
6351652 Finn et al. Feb 2002 B1
6354946 Finn Mar 2002 B1
6400307 Fullerton et al. Jun 2002 B2
6400329 Barnes Jun 2002 B1
6421389 Jett et al. Jul 2002 B1
6430208 Fullerton et al. Aug 2002 B1
6437756 Schantz Aug 2002 B1
6462701 Finn Oct 2002 B1
6466125 Richards et al. Oct 2002 B1
6469628 Richards et al. Oct 2002 B1
6483461 Matheney et al. Nov 2002 B1
6489893 Fullerton et al. Dec 2002 B1
6492904 Richards Dec 2002 B2
6492906 Richards et al. Dec 2002 B1
6501393 Richards et al. Dec 2002 B1
6504483 Richards et al. Jan 2003 B1
6512455 Finn et al. Jan 2003 B2
6512488 Schantz Jan 2003 B2
6519464 Santhoff et al. Feb 2003 B1
6529568 Richards et al. Mar 2003 B1
6538615 Schantz Mar 2003 B1
6539213 Richards et al. Mar 2003 B1
6549567 Fullerton Apr 2003 B1
6552677 Barnes et al. Apr 2003 B2
6556621 Richards et al. Apr 2003 B1
6560463 Santhoff May 2003 B1
6571089 Richards et al. May 2003 B1
6573857 Fullerton et al. Jun 2003 B2
6577691 Richards et al. Jun 2003 B2
6585597 Finn Jul 2003 B2
6593886 Schantz Jul 2003 B2
6606051 Fullerton et al. Aug 2003 B1
6611234 Fullerton et al. Aug 2003 B2
6614384 Hall et al. Sep 2003 B2
6621462 Barnes Sep 2003 B2
6636566 Roberts et al. Oct 2003 B1
6636567 Roberts et al. Oct 2003 B1
6636573 Richards et al. Oct 2003 B2
6642903 Schantz Nov 2003 B2
6661342 Hall et al. Dec 2003 B2
6667724 Barnes et al. Dec 2003 B2
6670909 Kim Dec 2003 B2
6671310 Richards et al. Dec 2003 B1
6674396 Richards et al. Jan 2004 B2
6677796 Brethour et al. Jan 2004 B2
6684363 Cassiday et al. Jan 2004 B1
6700538 Richards Mar 2004 B1
6710736 Fullerton et al. Mar 2004 B2
6717992 Cowie et al. Apr 2004 B2
6748040 Johnson et al. Jun 2004 B1
6750757 Gabig, Jr. et al. Jun 2004 B1
6759948 Grisham et al. Jul 2004 B2
6760387 Langford et al. Jul 2004 B2
6762712 Kim Jul 2004 B2
6763057 Fullerton et al. Jul 2004 B1
6763282 Glenn et al. Jul 2004 B2
6774846 Fullerton et al. Aug 2004 B2
6774859 Schantz et al. Aug 2004 B2
6778546 Epps et al. Aug 2004 B1
6778603 Fullerton et al. Aug 2004 B1
6781530 Moore Aug 2004 B2
6782048 Santhoff Aug 2004 B2
6788730 Richards et al. Sep 2004 B1
6822604 Hall et al. Nov 2004 B2
6823022 Fullerton et al. Nov 2004 B1
6836223 Moore Dec 2004 B2
6836226 Moore Dec 2004 B2
6845253 Schantz Jan 2005 B1
6847675 Fullerton et al. Jan 2005 B2
6879878 Glenn et al. Apr 2005 B2
6882301 Fullerton Apr 2005 B2
6895034 Nunally et al. May 2005 B2
6900732 Richards May 2005 B2
6906625 Taylor et al. Jun 2005 B1
6907244 Santhoff et al. Jun 2005 B2
6912240 Kumar et al. Jun 2005 B2
6914949 Richards et al. Jul 2005 B2
6917284 Grisham et al. Jul 2005 B2
6919838 Santhoff Jul 2005 B2
6922166 Richards et al. Jul 2005 B2
6922177 Barnes et al. Jul 2005 B2
6925109 Richards et al. Aug 2005 B2
6931581 Cassiday et al. Aug 2005 B1
6933882 Fullerton Aug 2005 B2
6937639 Pendergrass et al. Aug 2005 B2
6937663 Jett et al. Aug 2005 B2
6937667 Fullerton et al. Aug 2005 B1
6937674 Santhoff et al. Aug 2005 B2
6947492 Santhoff et al. Sep 2005 B2
6950485 Richards et al. Sep 2005 B2
6954480 Richards et al. Oct 2005 B2
6959031 Haynes et al. Oct 2005 B2
6959032 Richards et al. Oct 2005 B1
6963727 Shreve Nov 2005 B2
6980613 Krivokapic Dec 2005 B2
6989751 Richards Jan 2006 B2
7015793 Gabig, Jr. et al. Mar 2006 B2
7020224 Krivokapic Mar 2006 B2
7027425 Fullerton et al. Apr 2006 B1
7027483 Santhoff et al. Apr 2006 B2
7027493 Richards Apr 2006 B2
7030806 Fullerton Apr 2006 B2
7042417 Santhoff et al. May 2006 B2
7046187 Fullerton et al. May 2006 B2
7046618 Santhoff et al. May 2006 B2
7069111 Glenn et al. Jun 2006 B2
7075476 Kim Jul 2006 B2
7079827 Richards et al. Jul 2006 B2
7099367 Richards et al. Aug 2006 B2
7099368 Santhoff et al. Aug 2006 B2
7129886 Hall et al. Oct 2006 B2
7132975 Fullerton et al. Nov 2006 B2
7145954 Pendergrass et al. Dec 2006 B1
7148791 Grisham et al. Dec 2006 B2
7151490 Richards Dec 2006 B2
7167525 Santhoff et al. Jan 2007 B2
7170408 Taylor et al. Jan 2007 B2
7184938 Lansford et al. Feb 2007 B1
7190722 Lakkis et al. Mar 2007 B2
7190729 Siwiak Mar 2007 B2
7206334 Siwiak Apr 2007 B2
7209724 Richards et al. Apr 2007 B2
7230980 Langford et al. Jun 2007 B2
7239277 Fullerton et al. Jul 2007 B2
RE39759 Fullerton Aug 2007 E
7256727 Fullerton et al. Aug 2007 B2
7269744 Shippy et al. Sep 2007 B1
7271779 Hertel Sep 2007 B2
7480303 Ngai Jan 2009 B1
20020069301 Fan et al. Jun 2002 A1
20030117958 Nation et al. Jun 2003 A1
20030172138 McCormack et al. Sep 2003 A1
20040215955 Tamai et al. Oct 2004 A1
20050223184 Russell et al. Oct 2005 A1
20060075057 Gildea et al. Apr 2006 A1
20060123203 Suzuki Jun 2006 A1
20070041342 Usuda et al. Feb 2007 A1
20080005437 Gupta et al. Jan 2008 A1
20090172393 Tanik et al. Jul 2009 A1
20100058256 El-Zein et al. Mar 2010 A1
Non-Patent Literature Citations (3)
Entry
International Search Report and Written Opinion—PCT/US10/028031, International Search Authority—European Patent Office, May 12, 2010.
International Preliminary Report on Patentability—PCT/US2010/028031, The International Bureau of WIPO—Geneva, Switzerland, Jun. 7, 2011.
Taiwan Search Report—TW099108239—TIPO—Jul. 19, 2013.
Related Publications (1)
Number Date Country
20100241816 A1 Sep 2010 US
Provisional Applications (1)
Number Date Country
61161617 Mar 2009 US