WO2018068658A1 - 一种设备的组件加载方法、装置以及物联网系统 - Google Patents
一种设备的组件加载方法、装置以及物联网系统 Download PDFInfo
- Publication number
- WO2018068658A1 WO2018068658A1 PCT/CN2017/104168 CN2017104168W WO2018068658A1 WO 2018068658 A1 WO2018068658 A1 WO 2018068658A1 CN 2017104168 W CN2017104168 W CN 2017104168W WO 2018068658 A1 WO2018068658 A1 WO 2018068658A1
- Authority
- WO
- WIPO (PCT)
- Prior art keywords
- component
- cloud server
- target
- target component
- executable file
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Ceased
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/445—Program loading or initiating
- G06F9/44521—Dynamic linking or loading; Link editing at or after load time, e.g. Java class loading
- G06F9/44526—Plug-ins; Add-ons
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/445—Program loading or initiating
Definitions
- the present application relates to the field of computer technology, and in particular, to a component loading method of a device, a component loading device of the device, a device, and an Internet of Things system.
- IoT terminal devices such as industrial control devices, smart furniture devices, and wearable devices can communicate through access networks.
- Various sensors can be set up on the IoT terminal devices to collect various data and conduct networks. data transmission.
- IoT terminal devices In order to reduce costs, IoT terminal devices usually use embedded devices with limited computing power and limited memory resources to control each sensor.
- the embedded device needs to load the driver components of the sensor to control the sensor.
- the driving components of the respective sensors can be preset in the embedded device or dynamically loaded.
- the way to pre-set the drive components to the embedded device is not to update the drive components flexibly.
- the existing dynamic loading mode after the embedded component downloads the driving component, the embedded component needs to drive the component to perform symbol relocation, the relocation process needs to occupy more computing resources, and the driving component includes information for relocation. Information takes up a lot of memory space.
- embodiments of the present application have been made in order to provide a component loading method of a device that overcomes the above problems or at least partially solves the above problems, a component loading device of a corresponding device, a device, and a device Networked system.
- the embodiment of the present application discloses a component loading method of a device, where the device communicates with a cloud server, and the method includes:
- the device generates a component load request
- the device runs an executable file of the target component to complete loading of the target component.
- the method further includes:
- the device stores the received executable file of the target component into a flash memory.
- the step of the device running the executable file of the target component to complete loading of the target component comprises:
- the device extracts an initialization function of the executable file of the target component in the flash memory;
- the device runs the initialization function to complete loading of the target component.
- the step of the device running the executable file of the target component to complete the loading of the target component further comprises:
- the device extracts metadata in an executable file of the target component;
- the metadata includes: an initialization function memory address and the executable file Corresponding component name;
- the device copies the executable file of the target component after extracting the metadata into the memory
- the device runs the initialization function to complete loading of the target component.
- the method further includes:
- the step of the device generating a component loading request includes:
- the device generates a component load request for the target component that needs to be updated.
- the executable file of the target component has a standardized interface function;
- the interface function includes at least one of the following functions: a start function, a close function, a read function, a write function, and an I/O channel management function.
- the component loading request includes available memory address space information of the device; or, the cloud server is preset with available memory address space information of the device;
- the executable file of the target component is generated by the cloud server by using an object file of the target component and available memory address space information of the device; the target file of the target component is obtained by the cloud server according to the component loading request. .
- the component loading request includes memory address information of a target symbol, and the target symbol is the target The symbol in the device to be called by the target component; or the memory address information of the target symbol preset in the cloud server;
- the executable file of the target component is generated by the cloud server using a target file of the target component, available memory address space information of the device, and a memory address information link of the target symbol.
- the cloud server is an Internet of Things server
- the target component is a driving component of a sensor that the device needs to load.
- the embodiment of the present application further discloses a component loading method of a device, where the device communicates with a cloud server, and the method includes:
- the cloud server generates an executable file of the target component according to the component loading request
- the cloud server sends an executable file of the target component to the device, and the device is configured to execute an executable file of the target component to complete loading of the target component.
- the component loading request includes available memory address space information of the device; or, the cloud server is preset with available memory address space information of the device;
- the step of generating, by the cloud server, the executable file of the target component according to the component loading request includes:
- the cloud server obtains an object file of the target component according to the component loading request
- the cloud server uses the target file of the target component and the available memory address space information to generate an executable file of the target component in a preset format.
- the component loading request includes memory address information of a target symbol, the target symbol is a symbol in the device that the target component needs to invoke; or a memory address preset with a target symbol in the cloud server information;
- the step of the cloud server using the target file of the target component and the available memory address space information to generate an executable file of the target component in a preset format includes:
- the cloud server uses the target file of the target component, the available memory address space information, and the memory address information of the target symbol to link, and generates an executable file of the target component in a preset format.
- the step of the cloud server sending the executable file to the device comprises:
- the cloud server sets an executable file of the target component to an XIP execution mode
- the cloud server sends the executable file of the target component set to the XIP execution mode to the device.
- the method further includes:
- the cloud server generates a component update message when the component is updated
- the cloud server sends the component update message to the device, and the device is configured to return the component load request after receiving the component update message.
- the executable file of the target component has a standardized interface function;
- the interface function includes at least one of the following functions: a start function, a close function, a read function, a write function, and an I/O channel management function.
- the cloud server is an Internet of Things server
- the target component is a driving component of a sensor that the device needs to load.
- the embodiment of the present application further discloses a component loading device of the device, where the device communicates with a cloud server, and the device includes:
- a request generation module located at the device, configured to generate a component load request
- a request sending module of the device configured to send the component loading request to the cloud server
- a file receiving module of the device configured to receive an executable file of a target component returned by the cloud server; and an executable file of the target component is generated by the cloud server according to the component loading request;
- a file execution module located in the device, configured to execute an executable file of the target component to complete loading of the target component.
- the embodiment of the present application further discloses a component loading device of the device, where the device communicates with a cloud server, and the device includes:
- a request receiving module of the cloud server configured to receive a component loading request sent by the device
- An executable file generating module of the cloud server configured to generate an executable file of the target component according to the component loading request
- a file sending module of the cloud server configured to send an executable file of the target component to the device, where the device is configured to run an executable file of the target component to complete loading of the target component.
- the embodiment of the present application further discloses a device, where the device communicates with a cloud server, where the device includes:
- An output device coupled to the processor for transmitting the component load request to the cloud server
- An input device coupled to the processor for receiving an executable file of a target component returned by the cloud server
- An executable file of the target component is generated by the cloud server according to the component loading request
- the processor is further configured to execute an executable file of the target component obtained by the input device to complete loading of the target component.
- an Internet of Things system including: a cloud server and a device that communicates with the cloud server;
- the device includes:
- a request generation module for generating a component load request
- a request sending module configured to send the component loading request to the cloud server
- a file receiving module configured to receive an executable file of a target component returned by the cloud server
- a file running module configured to execute an executable file of the target component to complete loading of the target component
- the cloud server includes:
- a request receiving module configured to receive a component loading request sent by the device
- An executable file generating module configured to generate an executable file of the target component according to the component loading request
- a file sending module configured to send an executable file of the target component to the device, where the device is configured to run an executable file of the target component to complete loading of the target component.
- the embedded device when the embedded device needs to load the driver component, the embedded device sends a component loading request to the cloud server, where the request includes the available memory address space information of the embedded device.
- the cloud server determines the driver component required by the embedded device according to the request, and generates an executable file of the driver component by using the available memory address space information of the embedded device, and the embedded device runs the executable file of the driver component to complete the loading of the driver component.
- the cloud server locates the memory address of each symbol of the driving component according to the available memory address space information of the embedded device, and needs to be used by the driving component.
- the memory address of the embedded device local symbol is directly positioned as the actual memory address of the symbol in the memory space of the embedded device.
- the embedded device can directly run the executable file of the driver component without symbol relocation, which reduces the occupation of computing resources of the embedded device.
- the executable component of the driver component eliminates the information for symbol relocation, thereby reducing the memory space.
- the dynamic loading of components can also be implemented in the embedded device with limited computing power and memory resources by the method described in the present application.
- Embodiment 1 is a flow chart showing the steps of Embodiment 1 of a component loading method of a device of the present application;
- Embodiment 2 is a flow chart showing the steps of Embodiment 2 of a component loading method of a device according to the present application;
- FIG. 3 is a flow chart of dynamic loading of a driving component according to an embodiment of the present application.
- FIG. 4 is a flow chart of dynamic loading of a driving component according to an embodiment of the present application.
- Embodiment 3 is a flow chart showing the steps of Embodiment 3 of a component loading method of a device according to the present application.
- Embodiment 1 is a structural block diagram of Embodiment 1 of a component loading device of an apparatus of the present application;
- Embodiment 7 is a structural block diagram of Embodiment 2 of a component loading device of an apparatus of the present application;
- FIG. 8 is a hardware structural diagram of an apparatus embodiment of the present application.
- FIG. 9 is a block diagram of an embodiment of an Internet of Things system of the present application.
- One of the core concepts of the embodiments of the present application is that the memory address of the symbol of the driver component is located by the cloud server, so that the embedded device does not need to perform the symbol relocation process when loading the driver component.
- FIG. 1 a flow chart of the steps of the component loading method of the device of the present application is shown, wherein the device is in communication with a cloud server, and the method may specifically include the following steps:
- Step 101 The device generates a component loading request.
- the device in the embodiment of the present application may be an embedded device with limited computing power and memory resources, or a large computing device with sufficient computing power and sufficient memory resources.
- the component load request can include the identity of the target component that the device needs to load.
- the embedded device when an embedded device first calls a sensor, the embedded device needs to load the driver component of the sensor, and the embedded device generates a component load request according to the driver component that needs to be loaded for the first time.
- the embedded device when a driver component of a sensor needs to be updated, the embedded device generates a component load request according to the determination component that needs to be updated.
- an executable image of an embedded device is preset in the device.
- Executable image contains The main part of the operating system, that is, the operating system's kernel API (Application Programming Interface), such as task collaboration management module, memory management module.
- kernel API Application Programming Interface
- the executable image is loaded into the memory RAM when the embedded device is running.
- the component Component in the embedded device can call the kernel API provided by the operating system. After the component is loaded into the memory, the component can call the kernel API according to the actual memory address in the memory of the kernel API symbol.
- the external does not know the actual memory address of the kernel API in the device memory that the component needs to use. Therefore, after the embedded device downloads the component, it needs to relocate the address of the symbol of the kernel API that the component calls to the actual memory address of the symbols of these kernel APIs in memory. This process is called symbol relocation.
- Step 102 The device sends the component loading request to the cloud server.
- Step 103 The device receives an executable file of a target component returned by the cloud server; an executable file of the target component is generated by the cloud server according to the component loading request;
- the cloud server After receiving the component loading request, the cloud server generates an executable file of the target component that the device needs to load.
- the target symbol refers to a symbol in a device that the target component needs to invoke, and may specifically include a symbol of a kernel API of the device and a symbol of a component that is already running in the device.
- the cloud server assigns the symbol of the target component to the available memory address that has not been used, ensuring that the memory address of the symbol of the target component does not conflict with the memory address of the local symbol in the device.
- the device Since the memory address of each symbol in the target file of the target component and the memory address of the target symbol are the actual memory addresses in the memory space of the device, the device does not need to perform the symbol relocation process after receiving the executable file of the target component. .
- Step 104 The device runs an executable file of the target component to complete loading of the target component.
- the target component can be loaded by running the executable file of the target component.
- the embedded device when the embedded device needs to load the driver component, the embedded device sends a component loading request to the cloud server.
- the cloud server generates an executable file of the driver component required by the embedded device according to the component loading request, and the embedded device runs the executable file of the driver component to complete the loading of the driver component.
- the cloud server is available according to the embedded device.
- the address space information is stored, the memory address of each symbol of the driver component is located, and the memory address of the local symbol of the embedded device that is required to be driven by the component is directly positioned as the actual memory address of the symbol in the memory space of the embedded device.
- the embedded device can directly run the executable file of the driver component without symbol relocation, which reduces the occupation of computing resources of the embedded device.
- the executable component of the driver component eliminates the information for symbol relocation, thereby reducing the memory space.
- the dynamic loading of components can also be implemented in the embedded device with limited computing power and memory resources by the method described in the present application.
- FIG. 2 a flow chart of the steps of the component loading method of the device of the present application is shown, wherein the device is in communication with the cloud server, and the method may specifically include the following steps:
- Step 201 The device generates a component loading request.
- the method may further include:
- the step 201 may specifically include the following sub-steps:
- Sub-step S11 the device determines, according to the component update message, a target component that needs to be updated
- Sub-step S12 the device generates a component load request for the target component that needs to be updated.
- the cloud server can notify the device to update components.
- the cloud server when the cloud server detects a driver component update of a sensor, the cloud server notifies the device that the driver component can be updated.
- Step 202 The device sends the component loading request to the cloud server.
- Step 203 The device receives an executable file of a target component returned by the cloud server, and an executable file of the target component is generated by the cloud server according to the component loading request.
- the component loading request includes available memory address space information of the device; or, the cloud server is preset with available memory address space information of the device;
- the executable file of the target component is generated by the cloud server by using an object file of the target component and available memory address space information of the device; the target file of the target component is obtained by the cloud server according to the component loading request. .
- the available address information may specifically include available address fields and address ranges.
- the device can send available memory address space information to the cloud server in a component load request.
- the cloud server may obtain the available memory address space information of the device in advance, or First agree which addresses can be available memory address space information.
- the component loading request includes memory address information of a target symbol, where the target symbol is a symbol in the device that the target component needs to invoke; or, in the cloud server Pre-set memory address information of the target symbol;
- the executable file of the target component is generated by the cloud server using a target file of the target component, available memory address space information of the device, and a memory address information link of the target symbol.
- the device may send the memory address information of the target symbol to the cloud server in the component loading request.
- the device sends the symbol table of the memory address information of the target symbol to the cloud server through the component loading request.
- the cloud server may obtain the memory address information of the target symbol in the device in advance.
- the cloud server may obtain the symbol table of the device in advance, and the memory address information of the target symbol is recorded in the symbol table.
- the target component When the target component is loaded, the target component can interact with the device's kernel API. Interaction between components refers to calls between symbols in a component and symbols in other components. The interaction between a component and the kernel API refers to a call between the symbol of the component and the symbol of the kernel API. Symbols are variables and functions in a component.
- the executable file of the target component has a standardized interface function;
- the interface function includes at least one of the following functions: a start function, a close function, a read function, a write function, and an I/O channel. Management function.
- the local component on the device side can interact with the dynamically downloaded target component.
- the standardized interface function described above is also provided for the component local to the device.
- Each component interacts through standardized interface functions, thereby avoiding the generation of a large symbol table during the interaction process, greatly reducing the Footprint occupation, and Footprint refers to RAM/ROM.
- the calling process is performed by reading the memory address of the symbol.
- the memory address of each symbol in the target component that is dynamically downloaded from the cloud server is generated by the cloud server link, and the cloud server uses the available memory address space information in the device as each symbol in the target component. Assign an address. This ensures that the memory address of the target component does not conflict with the memory address of the symbol local to the device.
- the start function is a function that starts the component;
- the close function is a function that closes the component;
- the read function is a function that the component uses to read data;
- the write function is a function that the component uses to write data;
- component A can be started by the startup function of component B.
- Component B When component A needs to read the data of component B, component A can read the data of component B through the read function.
- group price A can write data to component B through the write function.
- component A does not need to call component B component A closes component B through the closing function of component B.
- the I/O channel management function is a function that the component manages the I/O channel in the device, for example, controlling the transmission baud rate and sensor mode of the serial port.
- Step 204 The device stores the received executable file of the target component into a flash memory.
- the device stores the executable file of the target component received into the code segment address space of the flash memory.
- Step 205 The device runs an executable file of the target component to complete loading of the target component.
- the step 205 may specifically include the following sub-steps:
- Sub-step S21 if the executable file of the target component is an XIP execution mode, the device extracts an initialization function of the executable file of the target component in the flash memory;
- the XIP (eXecute In Place) execution mode is a way to execute directly in the flash memory.
- the executable file of the target file is in the XIP execution mode, the device is initialized in the address space of the flash memory. function.
- the initialization function may exist at the head of the executable file of the target file, and the device may take out the initialization function from the head of the executable file of the target file.
- Sub-step S22 the device runs the initialization function to complete loading of the target component.
- the device completes the loading of the target component by running an initialization function.
- the standardized interface function of the target component is recorded in an interface data structure.
- the pointer of the interface data structure is recorded in the hash map table of the operating system of the device, and the name of each component and the pointer of the interface data structure of each component are maintained in the hash map table.
- a pointer to the interface data structure of the component to be called can be found according to the hash map table.
- the memory address of each interface function of the component can be found through the memory address of the interface data structure.
- the step 204 may further include the following sub-steps:
- Sub-step S23 if the executable file of the target component is not in the XIP execution mode, the device extracts metadata in the executable file of the target component; the metadata includes: an initialization function memory address and a location The component name corresponding to the executable file;
- Sub-step S24 the device copies the executable file of the target component after extracting the metadata into the memory
- Sub-step S25 the device runs the initialization function to complete loading of the target component.
- the device If the executable file of the target component is not in the XIP execution mode, the device extracts the metadata of the executable file of the target component (the initialization function memory address and the component name corresponding to the executable file) in the code segment address space of the flash memory. And then copy the executable file that retrieved the metadata into the memory RAM. The device runs an initialization function to complete the loading of the target component.
- a pointer to the interface data structure of the interface function of the component is recorded in the hash map table of the operating system of the device.
- the cloud server is an Internet of Things server
- the target component is a driving component of a sensor that the device needs to load.
- FIG. 3 a flow chart of dynamic loading of a driving component of an embodiment of the present application is shown.
- a drive component load request containing the device identification is sent to the IoT server.
- the information of the sensor used by the IoT server may be registered in advance, such as model information, and then stored in association with the sensor information through the unique device identifier of the device chip.
- the IoT server can determine the sensor information such as the sensor model associated with the device identifier according to the device identifier.
- the IoT server can return sensor information pre-registered by the device to the device.
- the device downloads the executable file of the corresponding driver component from the IoT server according to the sensor information. Specifically, in one case, after the IoT server sends the sensor information to the device, the executable file of the driver component corresponding to the sensor information is directly pushed to the device, and the device downloads and loads the operating system, thereby driving the sensor to work normally. In another case, after the IoT server sends the sensor information to the device, the device sends a download request to the IoT server according to the sensor information, and the IoT server sends the executable file of the corresponding driver component to the device according to the download request, and the device Download and load into the operating system to drive the sensor to work properly.
- the target file of the driver component is the file generated by the compiler's source code file compiled by the compiler.
- the source code file of the driver component of the sensor in the IoT server or the target file of the driver component may be provided by the vendor of the sensor.
- FIG. 4 a flow chart of dynamic loading of a driving component of an embodiment of the present application is shown.
- the drive component loading request including the device identifier is sent to the Internet of Things server.
- the IoT server After receiving the component loading request, the IoT server detects the sensor information newly connected by the device.
- the IoT server service can obtain sensor information such as the sensor model connected to the device.
- the IoT server returns the detected sensor information to the device.
- the device downloads the executable file of the corresponding driver component from the IoT server according to the sensor information. Specifically, in one case, after the IoT server sends the sensor information to the device, the executable file of the driver component corresponding to the sensor information is directly pushed to the device, and the device downloads and loads the operating system, thereby driving the sensor to work normally. In another case, after the IoT server sends the sensor information to the device, the device sends a download request to the IoT server according to the sensor information, and the IoT server sends the executable file of the corresponding driver component to the device according to the download request, and the device Download and load into the operating system to drive the sensor to work properly.
- FIG. 5 a flow chart of the steps of the component loading method of the device of the present application is shown in FIG. 5, wherein the device is in communication with a cloud server, and the method may specifically include the following steps:
- Step 301 The cloud server receives a component loading request sent by the device.
- the cloud server may be in communication connection with multiple devices.
- the component loading request may include a device identifier, and the cloud server may determine, according to the device identifier, which device sent the component loading request.
- Step 302 The cloud server generates an executable file of the target component according to the component loading request.
- the cloud server is an Internet of Things server
- the target component is a driving component of a sensor that the device needs to load.
- the component loading request includes available memory address space information of the device; or, the cloud server is preset with available memory address space information of the device;
- the step 302 may specifically include the following sub-steps:
- Sub-step S31 the cloud server obtains an object file of the target component according to the component loading request
- the target file is the source code file that is compiled by the compiler to get the file.
- the source code files include: .c files, .cpp files, .e files.
- the target files include: .obj file, .lib file, .o file, .a file.
- the target file of the target component or the source code file of the target component is preset in the cloud server.
- the cloud server When the cloud server receives the component load request, it immediately compiles the source code file of the target component to generate the target file of the target component.
- Sub-step S32 the cloud server uses the target file of the target component and the available memory address space information to generate an executable file of the target component in a preset format;
- the component loading request includes memory address information of the target symbol, where the target symbol is a symbol in the device that the target component needs to invoke; or, the cloud server is pre- Memory address information with the target symbol;
- the sub-step S32 may further include:
- the cloud server uses the target file of the target component, the available memory address space information, and the memory address information of the target symbol to link, and generates an executable file of the target component in a preset format.
- An executable file is a file generated by a linker link of a target file.
- the linker generates an executable file by linking the target file of the target component, the available memory address space information, and the memory address information of the target symbol.
- Executable files include: EXE files, DLL files, ELF files, SO files.
- the device Since the memory address of each symbol in the target file of the target component and the memory address of the target symbol are the actual memory addresses in the memory space of the device, the device does not need to perform the symbol relocation process after receiving the executable file of the target component. .
- the executable file is located in the Y-ELF format in the embodiment of the present application.
- the executable file in the Y-ELF format only exposes the standardized initialization function interface.
- the initialization function attaches the interface data structure of the standardized function to the hash map table of the operating system of the device, and the name of each component is maintained in the hash map table. A pointer to the interface data structure of each component.
- a standardized interface function is recorded in the interface data structure; the standardized interface function includes at least one of the following functions: a start function, a close function, a read function, a write function, and an I/O channel management function.
- a pointer to the interface data structure of the component to be called can be found according to the hash map table.
- the memory address of each interface function of the component can be found through the memory address of the interface data structure.
- the standardized interface function described above is also provided for the component local to the device.
- the various components interact with each other through standardized interface functions, thereby avoiding the generation of huge symbol tables in the interaction process and greatly reducing the Footprint occupation.
- components can interact with the device's kernel API.
- Step 303 The cloud server sends an executable file of the target component to the device, where the device is configured to run an executable file of the target component to complete loading of the target component.
- the step 303 may specifically include the following sub-steps:
- the cloud server sets an executable file of the target component to an XIP execution mode
- the cloud server sends the executable file of the target component set to the XIP execution mode to the device.
- the cloud server determines whether the device can support the XIP execution mode. If the device supports the XIP execution mode, the cloud server sets the executable file of the target file to the XIP execution mode.
- the method may further include:
- the cloud server generates a component update message when the component is updated
- the cloud server sends the component update message to the device, and the device is configured to return the component load request after receiving the component update message.
- the cloud server can record the component name of the component existing in each device.
- the cloud server detects the device having the component name of the updated component, and then sends a component update message to the device. After receiving the component update message, the device returns a phase component load request to the cloud server.
- the cloud server determines a driving component required by the embedded device according to the component loading request of the embedded device, and generates an executable file of the driving component by using available memory address space information of the embedded device, and the embedded device runs.
- the driver component's executable file can be loaded by the driver component.
- the cloud server locates the address of each symbol of the driving component according to the available memory address space information of the embedded device, and embeds the required component of the driving component.
- the address of the local symbol of the device is directly positioned as the actual memory address of the symbol in the memory space of the embedded device.
- the embedded device can directly run the executable file of the driver component without symbol relocation, which reduces the occupation of computing resources of the embedded device.
- the executable component of the driver component eliminates the information for symbol relocation, thereby reducing the memory space.
- the dynamic loading of components can also be implemented in the embedded device with limited computing power and memory resources by the method described in the present application.
- FIG. 6 a structural block diagram of a component loading device embodiment 1 of an apparatus of the present application is shown, wherein the device is in communication with a cloud server, and the device may specifically include the following modules:
- a request generation module 401 located at the device, configured to generate a component load request
- a request sending module 402 located at the device, configured to send the component loading request to the cloud server;
- a file receiving module 403 of the device configured to receive an executable file of a target component returned by the cloud server; and an executable file of the target component is generated by the cloud server according to the component loading request;
- a file execution module 404 located at the device is configured to execute an executable file of the target component to complete loading of the target component.
- the device may further include:
- a storage module located in the device, configured to store the received executable file of the target component into a flash memory.
- the file running module 404 may include:
- a function extracting submodule configured to extract an initialization function of an executable file of the target component in the flash memory if the executable file of the target component is an XIP execution mode
- the first function runs a submodule for running the initialization function to complete loading of the target component.
- the file running module 404 may further include:
- a metadata extraction submodule configured to extract metadata in an executable file of the target component if the executable file of the target component is not in an XIP execution manner;
- the metadata includes: an initialization function memory address and a component name corresponding to the executable file;
- a copy submodule configured to copy an executable file of the target component that is proposed to extract metadata into an internal memory
- the second function runs a submodule for running the initialization function to complete loading of the target component.
- the device may further include: a message receiving module located in the device, configured to receive a component update message sent by the cloud server;
- the request generating module 401 can include:
- a target component determining submodule configured to determine, according to the component update message, a target component that needs to be updated
- the target request generation submodule is configured to generate a component load request for the target component that needs to be updated.
- the executable file of the target component has a standardized interface function;
- the interface function includes at least one of the following functions: a start function, a close function, a read function, a write function, and an I/O channel. Management function.
- the component loading request includes available memory address space information of the device; or, the cloud server is preset with available memory address space information of the device;
- the executable file of the target component is generated by the cloud server by using an object file of the target component and available memory address space information of the device; the target file of the target component is added by the cloud server according to the component Request is obtained.
- the component loading request includes memory address information of a target symbol, where the target symbol is a symbol in the device that the target component needs to invoke; or, a target is preset in the cloud server. Memory address information of the symbol;
- the executable file of the target component is generated by the cloud server using a target file of the target component, available memory address space information of the device, and a memory address information link of the target symbol.
- the cloud server is an Internet of Things server
- the target component is a driving component of a sensor that the device needs to load.
- the embedded device when the embedded device needs to load the driver component, the embedded device sends a component loading request to the cloud server, where the request includes the available memory address space information of the embedded device.
- the cloud server determines the driver component required by the embedded device according to the request, and generates an executable file of the driver component by using the available memory address space information of the embedded device, and the embedded device runs the executable file of the driver component to complete the loading of the driver component. .
- the cloud server locates the address of each symbol of the driving component according to the available memory address space information of the embedded device, and embeds the required component of the driving component.
- the address of the local symbol of the device is directly positioned as the actual memory address of the symbol in the memory space of the embedded device.
- the embedded device can directly run the executable file of the driver component without symbol relocation, which reduces the occupation of computing resources of the embedded device.
- the executable component of the driver component eliminates the information for symbol relocation, thereby reducing the memory space.
- the dynamic loading of components can also be implemented in the embedded device with limited computing power and memory resources by the method described in the present application.
- FIG. 7 a structural block diagram of a component loading device of a device of the present application is shown, wherein the device communicates with a cloud server, and the device may specifically include the following modules:
- a request receiving module 501 located at the cloud server, configured to receive a component loading request sent by the device;
- An executable file generating module 502 located at the cloud server, configured to generate an executable file of the target component according to the component loading request;
- the component loading request includes available memory address space information of the device; or, the cloud server is preset with available memory address space information of the device;
- the executable file generating module 502 can include:
- the target file obtaining submodule is configured to obtain the target file of the target component according to the component loading request;
- An executable file generating submodule configured to generate an executable file of the target component in a preset format by using an object file of the target component and the available memory address space information.
- the component loading request includes memory address information of a target symbol, where the target symbol is a symbol in the device that the target component needs to invoke; or, a target is preset in the cloud server. Memory address information of the symbol;
- the executable file generation submodule further includes:
- a linking unit configured to link with an object file of the target component, the available memory address space information, and memory address information of the target symbol, to generate an executable file of the target component in a preset format.
- the file sending module 503 may include:
- An execution mode setting submodule configured to set an executable file of the target component to an XIP execution mode
- a file sending submodule configured to send the executable file of the target component set to the XIP execution mode to the device.
- the device may further include:
- An update message generating module located at the cloud server, configured to generate a component update message when the component is updated;
- An update message sending module of the cloud server configured to send the component update message to the device, where the device is configured to return the component load request after receiving the component update message.
- the executable file of the target component has a standardized interface function;
- the interface function includes at least one of the following functions: a start function, a close function, a read function, a write function, and an I/O channel. Management function.
- the cloud server is an Internet of Things server
- the target component is a driving component of a sensor that the device needs to load.
- the cloud server determines a driving component required by the embedded device according to the component loading request of the embedded device, and generates an executable file of the driving component by using available memory address space information of the embedded device, and the embedded device runs.
- the driver component's executable file can be loaded by the driver component.
- the cloud server locates the address of each symbol of the driving component according to the available memory address space information of the embedded device, and embeds the required component of the driving component.
- the address of the local symbol of the device is directly positioned as the actual memory address of the symbol in the memory space of the embedded device.
- the embedded device can directly run the executable file of the driver component without symbol relocation, which reduces the occupation of computing resources of the embedded device.
- the executable component of the driver component eliminates the information for symbol relocation, from And reduce the memory space.
- the dynamic loading of components can also be implemented in the embedded device with limited computing power and memory resources by the method described in the present application.
- the device can include a processor 60, an output device 61, an input device 62, a memory 63, and at least one communication bus 64.
- Communication bus 64 is used to implement a communication connection between components.
- Memory 23 may include high speed RAM memory, and may also include non-volatile memory NVM, such as at least one disk memory, and may also include flash memory.
- Various programs can be stored in the memory for performing various processing functions and implementing the method steps of the present embodiment.
- the processor 60 may be, for example, a central processing unit (CPU), an application specific integrated circuit (ASIC), a digital signal processor (DSP), a digital signal processing device (DSPD), or the like.
- CPU central processing unit
- ASIC application specific integrated circuit
- DSP digital signal processor
- DSPD digital signal processing device
- PLD programming logic device
- FPGA field programmable gate array
- controller a controller
- microcontroller a microprocessor, or other electronic component coupled to the input device 62 and via an in-vehicle line or wireless connection Output device 61.
- the input device 62 may include multiple input devices, for example, at least one of a user-oriented user interface, a device-oriented device interface, and a transceiver.
- the device-oriented device interface may be a wired interface for data transmission between the device and the device, or may be a hardware insertion interface (for example, USB) for data or command transmission between the device and the device.
- the input touch sensing device for example, a touch screen with a touch sensing function, a touch panel, etc.
- the transceiver may be a radio frequency transceiver chip with a communication function, a baseband processing chip, a transceiver antenna, and the like.
- the output device 61 may be a corresponding output interface or a voice playback device or a transceiver with a communication function.
- the processor 60 is configured to generate a component loading request.
- An output device 61 coupled to the processor 60, for transmitting the component loading request to the cloud server;
- An input device 62 coupled to the processor 60, for receiving an executable file of a target component returned by the cloud server; an executable file of the target component is generated by the cloud server according to the component loading request;
- the processor 60 is further configured to execute an executable file of the target component obtained by the input device 62 to complete loading of the target component.
- the device provided by the embodiment of the present application may perform the foregoing method embodiments, and the implementation principles and technical effects thereof are similar, and details are not described herein again.
- the processor 60 is further configured to store the executable file of the target component received by the input device 62 into the flash memory.
- the processor 60 is specifically configured to: if the executable file of the target component is an XIP execution mode, extract an initialization function of the executable file of the target component in the flash memory; The initialization function to complete loading of the target component.
- the processor 60 is specifically configured to: if the executable file of the target component is not the XIP execution mode, extract metadata in the executable file of the target component; the metadata
- the method includes: initializing a function memory address and a component name corresponding to the executable file; copying an executable file of the target component after extracting the metadata into the memory; and running the initialization function to complete the target component load.
- the input device 62 is further configured to receive a component update message sent by the cloud server;
- the processor 60 is specifically configured to determine, according to the component update message, a target component that needs to be updated, and generate a component load request for the target component that needs to be updated.
- the executable file of the target component has a standardized interface function;
- the interface function includes at least one of the following functions: a start function, a close function, a read function, a write function, and an I/O channel management. function.
- the component loading request includes available memory address space information of the device; or, the cloud server is preset with available memory address space information of the device;
- the executable file of the target component is generated by the cloud server by using an object file of the target component and available memory address space information of the device; the target file of the target component is obtained by the cloud server according to the component loading request. .
- the component loading request includes the memory address information of the target symbol, where the target symbol is a symbol in the device that the target component needs to invoke; or the target symbol is preset in the cloud server. Memory address information;
- the executable file of the target component is generated by the cloud server using a target file of the target component, available memory address space information of the device, and a memory address information link of the target symbol.
- the cloud server is an Internet of Things server
- the target component is a driving component of a sensor that the device needs to load.
- the device provided by the embodiment of the present application may perform the foregoing method embodiments, and the implementation principle and the technical effect are similar. I will not repeat them here.
- FIG. 9 a block diagram of an embodiment of an Internet of Things system of the present application is shown, the Internet of Things system comprising: a cloud server 70 and a device 71 in communication with the cloud server;
- the device 71 can include:
- a request generation module for generating a component load request
- a request sending module configured to send the component loading request to the cloud server
- a file receiving module configured to receive an executable file of a target component returned by the cloud server
- a file running module configured to execute an executable file of the target component to complete loading of the target component
- the cloud server 70 can include:
- a request receiving module configured to receive a component loading request sent by the device
- An executable file generating module configured to generate an executable file of the target component according to the component loading request
- a file sending module configured to send an executable file of the target component to the device, where the device is configured to run an executable file of the target component to complete loading of the target component.
- the device 71 may further include:
- a storage module configured to store the received executable file of the target component into the flash memory.
- the file sending module may include:
- An execution mode setting submodule configured to set an executable file of the target component to an XIP execution mode
- a file sending submodule configured to send the executable file of the target component set to the XIP execution mode to the device.
- the file running module may include:
- a function extracting submodule configured to extract an initialization function of an executable file of the target component in the flash memory if the executable file of the target component is an XIP execution mode
- the first function runs a submodule for running the initialization function to complete loading of the target component.
- the file running module may further include:
- a metadata extraction submodule configured to extract metadata in an executable file of the target component if the executable file of the target component is not in an XIP execution manner;
- the metadata includes: an initialization function memory address and a component name corresponding to the executable file;
- a copy submodule configured to copy an executable file of the target component that is proposed to extract metadata into an internal memory
- the second function runs a submodule for running the initialization function to complete loading of the target component.
- the cloud server 70 may further include:
- An update message generating module configured to generate a component update message when the component is updated
- an update message sending module configured to send the component update message to the device, where the device is configured to return the component load request after receiving the component update message.
- the device may further include:
- a message receiving module configured to receive a component update message sent by the cloud server
- the request generation module includes:
- a target component determining submodule configured to determine, according to the component update message, a target component that needs to be updated
- the target request generation submodule is configured to generate a component load request for the target component that needs to be updated.
- the executable file of the target component has a standardized interface function;
- the interface function includes at least one of the following functions: a start function, a close function, a read function, a write function, and an I/O channel. Management function.
- the component loading request includes available memory address space information of the device; or, the cloud server is preset with available memory address space information of the device;
- the executable file generating module includes:
- the target file obtaining submodule is configured to obtain the target file of the target component according to the component loading request;
- An executable file generating submodule configured to generate an executable file of the target component in a preset format by using an object file of the target component and the available memory address space information.
- the component load request includes memory address information of the target symbol, the target symbol is a symbol in the device that the target component needs to invoke; or memory address information in which the target symbol is preset in the cloud server;
- the executable file generation submodule further includes:
- a linking unit configured to link with an object file of the target component, the available memory address space information, and memory address information of the target symbol, to generate an executable file of the target component in a preset format.
- the cloud server is an Internet of Things server
- the target component is a driving component of a sensor that the device needs to load.
- the description is relatively simple and relevant. See the section of the method embodiment for a description.
- embodiments of the embodiments of the present application can be provided as a method, apparatus, or computer program product. Therefore, the embodiments of the present application may take the form of an entirely hardware embodiment, an entirely software embodiment, or an embodiment combining software and hardware. Moreover, embodiments of the present application can take the form of a computer program product embodied on one or more computer-usable storage media (including but not limited to disk storage, CD-ROM, optical storage, etc.) including computer usable program code.
- computer-usable storage media including but not limited to disk storage, CD-ROM, optical storage, etc.
- Embodiments of the present application are described with reference to flowcharts and/or block diagrams of methods, terminal devices (systems), and computer program products according to embodiments of the present application. It will be understood that each flow and/or block of the flowchart illustrations and/or FIG.
- These computer program instructions can be provided to a processor of a general purpose computer, special purpose computer, embedded processor or other programmable data processing terminal device to produce a machine such that instructions are executed by a processor of a computer or other programmable data processing terminal device
- Means are provided for implementing the functions specified in one or more of the flow or in one or more blocks of the flow chart.
- the computer program instructions can also be stored in a computer readable memory that can direct a computer or other programmable data processing terminal device to operate in a particular manner, such that the instructions stored in the computer readable memory produce an article of manufacture comprising the instruction device.
- the instruction device implements the functions specified in one or more blocks of the flowchart or in a flow or block of the flowchart.
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
- Information Transfer Between Computers (AREA)
Abstract
一种设备的组件加载方法,其中所述设备与云服务器通信,所述方法包括:所述设备生成组件加载请求(101);所述设备将所述组件加载请求发送至所述云服务器(102);所述设备接收所述云服务器返回的目标组件的可执行文件;所述目标组件的可执行文件由所述云服务器依据所述组件加载请求生成(103);所述设备运行所述目标组件的可执行文件,以完成所述目标组件的加载(104)。所述方法中,目标组件的可执行文件由云服务器生成,设备接收目标组件的可执行文件后,可直接运行可执行文件以完成目标组件的加载,无需进行符号重定位,减少了设备计算资源的占用。
Description
本申请要求2016年10月13日递交的申请号为201610895963.1、发明名称为“一种设备的组件加载方法、装置以及物联网系统”的中国专利申请的优先权,其全部内容通过引用结合在本申请中。
本申请涉及计算机技术领域,特别是涉及一种设备的组件加载方法、一种设备的组件加载装置、一种设备以及一种物联网系统。
在物联网技术中,工业控制设备、智能家具设备、可穿戴设备等物联网终端设备可以通过接入网络进行通信,物联网终端设备上可以设置各种传感器来采集各种数据,并通过网络进行数据传输。
为了降低成本,物联网终端设备通常都采用计算能力和内存资源有限的嵌入式设备对各个传感器进行控制,嵌入式设备需要加载传感器的驱动组件后才能实现对传感器的控制。
现有技术中,各个传感器的驱动组件可以预置在嵌入式设备中,或动态加载。将驱动组件预置在嵌入式设备的方式,不能灵活的更新驱动组件。在现有动态加载方式中,嵌入式设备在下载了驱动组件后,需要驱动组件进行符号重定位,重定位过程需要占用较多的计算资源,并且驱动组件中包括用于重定位的信息,这些信息占用内存空间较大。
发明内容
鉴于上述问题,提出了本申请实施例以便提供一种克服上述问题或者至少部分地解决上述问题的一种设备的组件加载方法、相应的一种设备的组件加载装置、一种设备以及一种物联网系统。
为了解决上述问题,本申请实施例公开了一种设备的组件加载方法,其中,所述设备与云服务器通信,所述的方法包括:
所述设备生成组件加载请求;
所述设备将所述组件加载请求发送至所述云服务器;
所述设备接收所述云服务器返回的目标组件的可执行文件;所述目标组件的可执行文件由所述云服务器依据所述组件加载请求生成;
所述设备运行所述目标组件的可执行文件,以完成所述目标组件的加载。
优选的,还包括:
所述设备将接收到的所述目标组件的可执行文件存储到闪存Flash中。
优选的,所述设备运行所述目标组件的可执行文件,以完成所述目标组件的加载的步骤包括:
若所述目标组件的可执行文件为XIP执行方式,则所述设备在所述闪存Flash中提取所述目标组件的可执行文件的初始化函数;
所述设备运行所述初始化函数,以完成所述目标组件的加载。
优选的,所述设备运行所述目标组件的可执行文件,以完成所述目标组件的加载的步骤还包括:
若所述目标组件的可执行文件不为XIP执行方式,则所述设备提取出所述目标组件的可执行文件中的元数据;所述元数据包括:初始化函数内存地址和所述可执行文件对应的组件名称;
所述设备将提出提取元数据后的所述目标组件的可执行文件复制至内存中;
所述设备运行所述初始化函数,以完成所述目标组件的加载。
优选的,还包括:
所述设备接收所述云服务器发送的组件更新消息;
所述设备生成组件加载请求的步骤包括:
所述设备依据所述组件更新消息,确定需要更新的目标组件;
所述设备生成针对所述需要更新的目标组件的组件加载请求。
优选的,所述目标组件的可执行文件具有标准化的接口函数;所述接口函数至少包括以下的一个函数:启动函数、关闭函数、读取函数、写入函数和I/O通道管理函数。
优选的,所述组件加载请求包括所述设备的可用内存地址空间信息;或,所述云服务器中预置有所述设备的可用内存地址空间信息;
所述目标组件的可执行文件由所述云服务器采用目标组件的目标文件、所述设备的可用内存地址空间信息生成;所述目标组件的目标文件由所述云服务器依据所述组件加载请求获得。
优选的,所述组件加载请求包括目标符号的内存地址信息,所述目标符号为所述目
标组件需要调用的所述设备中的符号;或,所述云服务器中预置有目标符号的内存地址信息;
所述目标组件的可执行文件由所述云服务器采用目标组件的目标文件、所述设备的可用内存地址空间信息和所述目标符号的内存地址信息链接生成。
优选的,所述云服务器为物联网服务器,所述目标组件为所述设备需要加载的传感器的驱动组件。
同时,本申请实施例还公开了一种设备的组件加载方法,其中,所述设备与云服务器通信,所述的方法包括:
所述云服务器接收所述设备发送的组件加载请求;
所述云服务器依据所述组件加载请求,生成目标组件的可执行文件;
所述云服务器向所述设备发送所述目标组件的可执行文件,所述设备用于运行所述目标组件的可执行文件,以完成所述目标组件的加载。
优选的,所述组件加载请求包括所述设备的可用内存地址空间信息;或,所述云服务器中预置有所述设备的可用内存地址空间信息;
所述云服务器依据所述组件加载请求,生成目标组件的可执行文件的步骤包括:
所述云服务器依据所述组件加载请求,获得目标组件的目标文件;
所述云服务器采用所述目标组件的目标文件、所述可用内存地址空间信息,生成预设格式的所述目标组件的可执行文件。
优选的,所述组件加载请求包括目标符号的内存地址信息,所述目标符号为所述目标组件需要调用的所述设备中的符号;或,所述云服务器中预置有目标符号的内存地址信息;
所述云服务器采用所述目标组件的目标文件、所述可用内存地址空间信息,生成预设格式的所述目标组件的可执行文件的步骤包括:
所述云服务器采用所述目标组件的目标文件、所述可用内存地址空间信息和所述目标符号的内存地址信息进行链接,生成预设格式的所述目标组件的可执行文件。
优选的,所述云服务器向所述设备发送所述可执行文件的步骤包括:
所述云服务器将所述目标组件的可执行文件设置为XIP执行方式;
所述云服务器向所述设备发送所述设置为XIP执行方式的目标组件的可执行文件。
优选的,还包括:
当组件更新时,所述云服务器生成组件更新消息;
所述云服务器向所述设备发送所述组件更新消息,所述设备用于在接收到所述组件更新消息后,返回所述组件加载请求。
优选的,所述目标组件的可执行文件具有标准化的接口函数;所述接口函数至少包括以下的一个函数:启动函数、关闭函数、读取函数、写入函数和I/O通道管理函数。
优选的,所述云服务器为物联网服务器,所述目标组件为所述设备需要加载的传感器的驱动组件。
同时,本申请实施例还公开了一种设备的组件加载装置,其中,所述设备与云服务器通信,所述的装置包括:
位于所述设备的请求生成模块,用于生成组件加载请求;
位于所述设备的请求发送模块,用于将所述组件加载请求发送至所述云服务器;
位于所述设备的文件接收模块,用于接收所述云服务器返回的目标组件的可执行文件;所述目标组件的可执行文件由所述云服务器依据所述组件加载请求生成;
位于所述设备的文件运行模块,用于运行所述目标组件的可执行文件,以完成所述目标组件的加载。
同时,本申请实施例还公开了一种设备的组件加载装置,其中,所述设备与云服务器通信,所述的装置包括:
位于所述云服务器的请求接收模块,用于接收所述设备发送的组件加载请求;
位于所述云服务器的可执行文件生成模块,用于依据所述组件加载请求,生成目标组件的可执行文件;
位于所述云服务器的文件发送模块,用于向所述设备发送所述目标组件的可执行文件,所述设备用于运行所述目标组件的可执行文件,以完成所述目标组件的加载。
同时,本申请实施例还公开了一种设备,其中,所述设备与云服务器通信,所述的设备包括:
处理器,用于生成组件加载请求;
输出设备,耦合至所述处理器,用于将所述组件加载请求发送至所述云服务器;
输入设备,耦合至所述处理器,用于接收所述云服务器返回的目标组件的可执行文
件;所述目标组件的可执行文件由所述云服务器依据所述组件加载请求生成;
所述处理器,还用于运行所述输入设备获得的目标组件的可执行文件,以完成所述目标组件的加载。
同时,本申请实施例还公开了一种物联网系统,包括:云服务器和与所述云服务器通信的设备;
所述设备包括:
请求生成模块,用于生成组件加载请求;
请求发送模块,用于将所述组件加载请求发送至所述云服务器;
文件接收模块,用于接收所述云服务器返回的目标组件的可执行文件;
文件运行模块,用于运行所述目标组件的可执行文件,以完成所述目标组件的加载;
所述云服务器包括:
请求接收模块,用于接收所述设备发送的组件加载请求;
可执行文件生成模块,用于依据所述组件加载请求,生成目标组件的可执行文件;
文件发送模块,用于向所述设备发送所述目标组件的可执行文件,所述设备用于运行所述目标组件的可执行文件,以完成所述目标组件的加载。
本申请实施例包括以下优点:
本申请实施例中,当嵌入式设备需要加载驱动组件时,嵌入式设备向云服务器发送组件加载请求,请求中包括嵌入式设备的可用内存地址空间信息。云服务器根据请求确定嵌入式设备所需的驱动组件,并采用嵌入式设备的可用内存地址空间信息生成驱动组件的可执行文件,嵌入式设备运行驱动组件的可执行文件即可完成驱动组件的加载。与现有的动态加载方式相比,本申请实施例中,云服务器根据嵌入式设备的可用内存地址空间信息,对驱动组件的各个符号的内存地址进行了定位,并且将驱动组件需要用到的嵌入式设备本地符号的内存地址直接定位为符号在嵌入式设备的内存空间中的实际内存地址。嵌入式设备可直接运行驱动组件的可执行文件,无需进行符号重定位,减少了嵌入式设备计算资源的占用。并且驱动组件的可执行文件省去了用于符号重定位的信息,从而减少内存空间的占用。在计算能力和内存资源有限的嵌入式设备中也可以通过本申请所述的方法实现组件的动态加载。
图1是本申请的一种设备的组件加载方法实施例1的步骤流程图;
图2是本申请的一种设备的组件加载方法实施例2的步骤流程图;
图3是本申请实施例一种驱动组件的动态加载的流程图;
图4是本申请实施例一种驱动组件的动态加载的流程图;
图5是本申请的一种设备的组件加载方法实施例3的步骤流程图;
图6是本申请的一种设备的组件加载装置实施例1的结构框图;
图7是本申请的一种设备的组件加载装置实施例2的结构框图;
图8是本申请的一种设备实施例的硬件结构图;
图9是本申请的一种物联网系统实施例的框图。
为使本申请的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式对本申请作进一步详细的说明。
本申请实施例的核心构思之一在于,由云服务器对驱动组件的符号的内存地址进行定位,使得嵌入式设备在加载驱动组件时可以无需进行符号重定位过程。
参照图1,示出了本申请的一种设备的组件加载方法实施例1的步骤流程图,其中所述设备与云服务器通信,所述的方法具体可以包括如下步骤:
步骤101,所述设备生成组件加载请求;
本申请实施例中的设备可以是计算能力和内存资源有限的嵌入式设备,还可以是计算能力,内存资源充足的大型计算设备。
当设备需要加载组件时,设备生成组件加载请求。组件加载请求中可以包括设备需要加载的目标组件的标识。
例如,当嵌入式设备首次调用某个传感器时,嵌入式设备需要加载该传感器的驱动组件,嵌入式设备依据需要首次加载的驱动组件生成组件加载请求。
又例如,当某个传感器的驱动组件需要更新时,嵌入式设备依据需要更新的确定组件生成组件加载请求。
在嵌入式设备中,嵌入式设备的可执行映像Image预置在设备中。可执行映像包含
了操作系统的主体部分,亦即操作系统的内核API(Application Programming Interface,应用程序编程接口),如任务协作管理模块、内存管理模块。
当嵌入式设备运行时,可执行映像被加载到内存RAM中。
嵌入式设备中的组件Component可以调用操作系统的提供的内核API,当组件被加载到内存后,组件可以根据内核API的符号在内存中的实际内存地址,对内核API进行调用。
在现有的组件动态加载方法中,外部并不知道组件需要用到的内核API在设备内存中的实际内存地址。因此,嵌入设备在下载了组件后,需要对组件调用到的内核API的符号的地址重新地位成这些内核API的符号在内存中的实际内存地址,此过程称为符号重定位。
步骤102,所述设备将所述组件加载请求发送至所述云服务器;
步骤103,所述设备接收所述云服务器返回的目标组件的可执行文件;所述目标组件的可执行文件由所述云服务器依据所述组件加载请求生成;
云服务器在接收到组件加载请求后,生成设备需要加载的目标组件的可执行文件。
云服务器在生成目标组件的可执行文件过程中,需要获取目标符号的内存地址信息以及设备中尚未被使用的可用内存地址空间信息。其中,目标符号是指目标组件需要调用到的设备中的符号,具体可以包括设备的内核API的符号和设备中已运行的组件的符号。
云服务器将目标组件的符号分配到尚未被使用的可用内存地址中,保证目标组件的符号的内存地址与设备中本地符号的内存地址不会产生冲突。
由于目标组件的目标文件中各个符号的内存地址,和目标符号的内存地址都是设备的内存空间中的实际内存地址,因此设备在接收到目标组件的可执行文件后,无需进行符号重定位过程。
步骤104,所述设备运行所述目标组件的可执行文件,以完成所述目标组件的加载。
设备在接收到目标组件的可执行文件后,通过运行目标组件的可执行文件即可完成目标组件的加载。
本申请实施例中,当嵌入式设备需要加载驱动组件时,嵌入式设备向云服务器发送组件加载请求。云服务器根据组件加载请求生成嵌入式设备所需的驱动组件的可执行文件,嵌入式设备运行驱动组件的可执行文件即可完成驱动组件的加载。
与现有的动态加载方式相比,本申请实施例中,云服务器根据嵌入式设备的可用内
存地址空间信息,对驱动组件的各个符号的内存地址进行了定位,并且将驱动组件需要用到的嵌入式设备本地符号的内存地址直接定位为符号在嵌入式设备的内存空间中的实际内存地址。嵌入式设备可直接运行驱动组件的可执行文件,无需进行符号重定位,减少了嵌入式设备计算资源的占用。并且驱动组件的可执行文件省去了用于符号重定位的信息,从而减少内存空间的占用。在计算能力和内存资源有限的嵌入式设备中也可以通过本申请所述的方法实现组件的动态加载。
参照图2,示出了本申请的一种设备的组件加载方法实施例2的步骤流程图,其中所述设备与云服务器通信,所述的方法具体可以包括如下步骤:
步骤201,所述设备生成组件加载请求;
在本申请实施例中,所述的方法还可以包括:
所述设备接收所述云服务器发送的组件更新消息;
所述步骤201具体可以包括如下子步骤:
子步骤S11,所述设备依据所述组件更新消息,确定需要更新的目标组件;
子步骤S12,所述设备生成针对所述需要更新的目标组件的组件加载请求。
具体的,由于各种组件都存储在云服务器中,当某个组件更新时。云服务器可以通知设备更新组件。
例如,当云服务器检测到某个传感器的驱动组件更新时,云服务器通知设备可以更新该驱动组件。
步骤202,所述设备将所述组件加载请求发送至所述云服务器;
步骤203,所述设备接收所述云服务器返回的目标组件的可执行文件;所述目标组件的可执行文件由所述云服务器依据所述组件加载请求生成;
在本申请实施例中,所述组件加载请求包括所述设备的可用内存地址空间信息;或,所述云服务器中预置有所述设备的可用内存地址空间信息;
所述目标组件的可执行文件由所述云服务器采用目标组件的目标文件、所述设备的可用内存地址空间信息生成;所述目标组件的目标文件由所述云服务器依据所述组件加载请求获得。
可用的地址信息具体可以包括可用的地址字段和地址范围。
在一种情况中,设备可以在组件加载请求中将可用内存地址空间信息发送到云服务器。在另一种情况中,云服务器可以预先获取到设备的可用内存地址空间信息,或,预
先约定哪些地址可以为可用内存地址空间信息。
更进一步的,在本申请实施例中,所述组件加载请求包括目标符号的内存地址信息,所述目标符号为所述目标组件需要调用的所述设备中的符号;或,所述云服务器中预置有目标符号的内存地址信息;
所述目标组件的可执行文件由所述云服务器采用目标组件的目标文件、所述设备的可用内存地址空间信息和所述目标符号的内存地址信息链接生成。
在一种情况中,设备可以在组件加载请求中将目标符号的内存地址信息发送至云服务器,例如,设备将记录了目标符号的内存地址信息的符号表通过组件加载请求发送到云服务器。
在另一种情况中,云服务器可以预先获取到设备中的目标符号的内存地址信息。具体的,云服务器可以预先获取到设备的符号表,符号表中记录有目标符号的内存地址信息。
当目标组件加载完成后,目标组件可以与设备的内核API进行交互。组件之间的交互,是指组件中的符号与其他组件中的符号之间的调用。组件和内核API的交互,是指组件的符号与内核API的符号之间的调用。符号是指组件中的变量和函数。
在本申请实施例中,所述目标组件的可执行文件具有标准化的接口函数;所述接口函数至少包括以下的一个函数:启动函数、关闭函数、读取函数、写入函数和I/O通道管理函数。
当目标组件加载完成后,设备端中本地的组件就可以与动态下载的目标组件进行交互。
实际上,在本申请实施例中,对于设备端本地的组件也设置有上述的标准化接口函数。各个组件之间通过标准化的接口函数进行交互,从而避免在交互过程中产生庞大的符号表,大大减少Footprint占用,Footprint是指RAM/ROM。
调用过程是以读取符号的内存地址来进行的。在本申请实施例中,从云服务器中动态下载的目标组件中的各个符号的内存地址是由云服务器链接生成的,云服务器根据设备中的可用内存地址空间信息为目标组件中的各个符号的分配地址。从而保证目标组件的内存地址与设备本地的符号的内存地址不冲突。
启动函数是启动组件的函数;关闭函数是关闭组件的函数;读取函数是组件用于读取数据的函数;写入函数是组件用于写入数据的函数;
例如,在组件A调用组件B的过程中,组件A可以通过组件B的启动函数来启动
组件B。当组件A需要读取组件B的数据时,组件A可以通过读取函数读取组件B的数据。当组件A需要向组件B写入数据时,组价A可以通过写入函数向组件B写入数据。当组件A不需要调用组件B时,组件A通过组件B的关闭函数,关闭组件B。
I/O通道管理函数是组件对设备中I/O通道进行管理的函数,例如,对串口的传输波特率、传感器模式等进行控制。
步骤204,所述设备将接收到的所述目标组件的可执行文件存储到闪存Flash中;
设备将接收到的目标组件的可执行文件存储到闪存Flash的代码段地址空间中。
步骤205,所述设备运行所述目标组件的可执行文件,以完成所述目标组件的加载。
在本申请实施例的一种优选示例中,所述步骤205具体可以包括如下子步骤:
子步骤S21,若所述目标组件的可执行文件为XIP执行方式,则所述设备在所述闪存Flash中提取所述目标组件的可执行文件的初始化函数;
XIP(eXecute In Place,芯片内执行)执行方式,是一种可直接在闪存Flash中执行的方式,当目标文件的可执行文件为XIP执行方式时,设备在闪存的地址段代码空间中取出初始化函数。
在本申请实施例中,初始化函数可以存在目标文件的可执行文件的头部,设备可以从目标文件的可执行文件的头部取出初始化函数。
子步骤S22,所述设备运行所述初始化函数,以完成所述目标组件的加载。
设备通过运行初始化函数以完成目标组件的加载。在本申请实施例中,目标组件的标准化的接口函数记录在一个接口数据结构中。当初始化函数运行后,该接口数据结构的指针被记录到设备的操作系统的hash map表中,该hash map表中维护了各个组件的名称和各个组件的接口数据结构的指针。
在调用组件时,可以根据hash map表查找到需要调用的组件的接口数据结构的指针。根据指针查找到各个组件的接口数据结构的内存地址,通过接口数据结构的内存地址就可以找到组件的各个接口函数的内存地址。
在本申请实施例的一种优选示例中,所述步骤204具体还可以包括如下子步骤:
子步骤S23,若所述目标组件的可执行文件不为XIP执行方式,则所述设备提取出所述目标组件的可执行文件中的元数据;所述元数据包括:初始化函数内存地址和所述可执行文件对应的组件名称;
子步骤S24,所述设备将提出提取元数据后的所述目标组件的可执行文件复制至内存中;
子步骤S25,所述设备运行所述初始化函数,以完成所述目标组件的加载。
若目标组件的可执行文件不为XIP执行方式,设备在闪存Flash的代码段地址空间中将目标组件的可执行文件的元数据(初始化函数内存地址和所述可执行文件对应的组件名称)取出,然后将取出元数据的可执行文件复制到内存RAM中。设备运行初始化函数,从而完成目标组件的加载。
当初始化函数运行后,记录了组件的接口函数的接口数据结构的指针被记录到设备的操作系统的hash map表中。
在本申请实施例中,所述云服务器为物联网服务器,所述目标组件为所述设备需要加载的传感器的驱动组件。
参照图3,示出了本申请实施例一种驱动组件的动态加载的流程图。在本实施例中,当设备被初次激活,将包含设备标识的驱动组件加载请求发送至物联网服务器。
设备中的设备芯片在出厂之前,可以预先在物联网服务器注册其所采用传感器的信息,例如型号信息等,然后通过该设备芯片的唯一设备标识与该传感器信息进行关联存储。物联网服务器接收到包含设备标识的驱动组件加载请求后,就能够根据设备标识确定出与其相关联的传感器型号等传感器信息。
物联网服务器可以将设备预先注册的传感器信息返回给设备。
设备依据传感器信息从物联网服务器中下载对应的驱动组件的可执行文件。具体的,一种情况可以是:物联网服务器在向设备发送传感器信息后,直接向设备推送传感器信息对应的驱动组件的可执行文件,由设备下载并加载到操作系统,从而驱动传感器正常工作。另一种情况是:物联网服务器在向设备发送传感器信息后,由设备依据传感器信息向物联网服务器发送下载请求,物联网服务器依据下载请求发送对应的驱动组件的可执行文件给设备,由设备下载并加载到操作系统,从而驱动传感器正常工作。
物联网服务器中具有传感器的驱动组件的源代码文件或驱动组件的目标文件。驱动组件的目标文件是由驱动组件的源代码文件经编译器,编译生成的文件。物联网服务器中的传感器的驱动组件的源代码文件或驱动组件的目标文件可以是由传感器的厂商上传提供的。
参照图4示出了本申请实施例一种驱动组件的动态加载的流程图。
在本实施例中,当设备检测到新连接的传感器时,将包含设备标识的驱动组件加载请求发送至物联网服务器。
物联网服务器接收到组件加载请求后,检测设备新连接的传感器信息。
目前已经存在较成熟的传感器信息检测技术,本申请直接使用即可,并不对具体的检测方式进行限制。通过这种检测技术,物联网服务器服务能够获取到设备连接的传感器型号等传感器信息。
物联网服务器将检测到的传感器信息返回给设备。
设备依据传感器信息从物联网服务器中下载对应的驱动组件的可执行文件。具体的,一种情况可以是:物联网服务器在向设备发送传感器信息后,直接向设备推送传感器信息对应的驱动组件的可执行文件,由设备下载并加载到操作系统,从而驱动传感器正常工作。另一种情况是:物联网服务器在向设备发送传感器信息后,由设备依据传感器信息向物联网服务器发送下载请求,物联网服务器依据下载请求发送对应的驱动组件的可执行文件给设备,由设备下载并加载到操作系统,从而驱动传感器正常工作。
参照图5,示出了本申请的一种设备的组件加载方法实施例3的步骤流程图,其中所述设备与云服务器通信,所述的方法具体可以包括如下步骤:
步骤301,所述云服务器接收所述设备发送的组件加载请求;
在本申请实施例中,云服务器可以与多个设备通信连接。组件加载请求中可以包括设备标识,云服务器可以根据设备标识确定是哪个设备发送了组件加载请求。
步骤302,所述云服务器依据所述组件加载请求,生成目标组件的可执行文件;
在本申请实施例中,所述云服务器为物联网服务器,所述目标组件为所述设备需要加载的传感器的驱动组件。
在本申请实施例中,所述组件加载请求包括所述设备的可用内存地址空间信息;或,所述云服务器中预置有所述设备的可用内存地址空间信息;
所述步骤302具体可以包括如下子步骤:
子步骤S31,所述云服务器依据所述组件加载请求,获得目标组件的目标文件;
目标文件是源代码文件由编译器编译后得到文件。
具体的,源代码文件包括:.c文件、.cpp文件、.e文件。
目标文件包括:.obj文件、.lib文件、.o文件、.a文件。
在本申请实施例中,云服务器中预置有目标组件的目标文件或目标组件的源代码文件。
当云服务器接收到组件加载请求后,马上对目标组件的源代码文件进行编译生成目标组件的目标文件。
子步骤S32,所述云服务器采用所述目标组件的目标文件、所述可用内存地址空间信息,生成预设格式的所述目标组件的可执行文件;
进一步的,在本申请实施例中,所述组件加载请求包括目标符号的内存地址信息,所述目标符号为所述目标组件需要调用的所述设备中的符号;或,所述云服务器中预置有目标符号的内存地址信息;
所述子步骤S32可以进一步包括:
所述云服务器采用所述目标组件的目标文件、所述可用内存地址空间信息和所述目标符号的内存地址信息进行链接,生成预设格式的所述目标组件的可执行文件。
可执行文件是目标文件经链接器链接生成的文件。链接器采用目标组件的目标文件、可用内存地址空间信息和目标符号的内存地址信息进行链接生成可执行文件。
可执行文件包括:EXE文件、DLL文件、ELF文件、SO文件。
由于目标组件的目标文件中各个符号的内存地址,和目标符号的内存地址都是设备的内存空间中的实际内存地址,因此设备在接收到目标组件的可执行文件后,无需进行符号重定位过程。
为了与现有的可执行文件进行区别,本申请实施例中将可执行文件定位为Y-ELF格式。Y-ELF格式的可执行文件只暴露了标准化初始化函数接口,初始化函数将标准化函数的接口数据结构挂接在设备的操作系统的hash map表中,该hash map表中维护了各个组件的名称和各个组件的接口数据结构的指针。
接口数据结构中记录标准化的接口函数;标准化接口函数至少包括以下的一个函数:启动函数、关闭函数、读取函数、写入函数和I/O通道管理函数。
在调用组件时,可以根据hash map表查找到需要调用的组件的接口数据结构的指针。根据指针查找到各个组件的接口数据结构的内存地址,通过接口数据结构的内存地址就可以找到组件的各个接口函数的内存地址。
实际上,在本申请实施例中,对于设备端本地的组件也设置有上述的标准化接口函数。各个组件之间通过标准化的接口函数进行交互,从而避免在交互过程中产生庞大的符号表,大大减少Footprint占用。另外,组件也可以与设备的内核API进行交互。
步骤303,所述云服务器向所述设备发送所述目标组件的可执行文件,所述设备用于运行所述目标组件的可执行文件,以完成所述目标组件的加载。
在本申请实施例中,所述步骤303具体可以包括如下子步骤:
所述云服务器将所述目标组件的可执行文件设置为XIP执行方式;
所述云服务器向所述设备发送所述设置为XIP执行方式的目标组件的可执行文件。
具体的,云服务器确定设备是否可以支持XIP执行方式,若设备支持XIP执行方式,则云服务器将目标文件的可执行文件设置为XIP执行方式。
在本申请实施例中,所述的方法还可以包括:
当组件更新时,所述云服务器生成组件更新消息;
所述云服务器向所述设备发送所述组件更新消息,所述设备用于在接收到所述组件更新消息后,返回所述组件加载请求。
具体的,云服务器中可以记录各个设备已有的组件的组件名,当某个组件更新时,云服务器检测具有该更新的组件的组件名的设备,然后向这些设备发送组件更新消息。设备在接收到组件更新消息后,向云服务器返回相组件加载请求。
在本申请实施例中,云服务器根据嵌入式设备的组件加载请求确定嵌入式设备所需的驱动组件,并采用嵌入式设备的可用内存地址空间信息生成驱动组件的可执行文件,嵌入式设备运行驱动组件的可执行文件即可完成驱动组件的加载。
与现有的动态加载方式相比,本申请实施例中,云服务器根据嵌入式设备的可用内存地址空间信息,对驱动组件的各个符号的地址进行了定位,并且将驱动组件需要用到的嵌入式设备本地符号的地址直接定位为符号在嵌入式设备的内存空间中的实际内存地址。嵌入式设备可直接运行驱动组件的可执行文件,无需进行符号重定位,减少了嵌入式设备计算资源的占用。并且驱动组件的可执行文件省去了用于符号重定位的信息,从而减少内存空间的占用。在计算能力和内存资源有限的嵌入式设备中也可以通过本申请所述的方法实现组件的动态加载。
需要说明的是,对于方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本申请实施例并不受所描述的动作顺序的限制,因为依据本申请实施例,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作并不一定是本申请实施例所必须的。
参照图6,示出了本申请的一种设备的组件加载装置实施例1的结构框图,其中所述设备与云服务器通信,所述的装置具体可以包括如下模块:
位于所述设备的请求生成模块401,用于生成组件加载请求;
位于所述设备的请求发送模块402,用于将所述组件加载请求发送至所述云服务器;
位于所述设备的文件接收模块403,用于接收所述云服务器返回的目标组件的可执行文件;所述目标组件的可执行文件由所述云服务器依据所述组件加载请求生成;
位于所述设备的文件运行模块404,用于运行所述目标组件的可执行文件,以完成所述目标组件的加载。
在本申请实施例中,所述的装置还可以包括:
位于所述设备的存储模块,用于将接收到的所述目标组件的可执行文件存储到闪存Flash中。
在本申请实施例中,所述文件运行模块404可以包括:
函数提取子模块,用于若所述目标组件的可执行文件为XIP执行方式,则在所述闪存Flash中提取所述目标组件的可执行文件的初始化函数;
第一函数运行子模块,用于运行所述初始化函数,以完成所述目标组件的加载。
在本申请实施例中,所述文件运行模块404还可以包括:
元数据提取子模块,用于若所述目标组件的可执行文件不为XIP执行方式,则提取出所述目标组件的可执行文件中的元数据;所述元数据包括:初始化函数内存地址和所述可执行文件对应的组件名称;
复制子模块,用于将提出提取元数据后的所述目标组件的可执行文件复制至内存中;
第二函数运行子模块,用于运行所述初始化函数,以完成所述目标组件的加载。
在本申请实施例中,所述的装置还可以包括:位于所述设备的消息接收模块,用于接收所述云服务器发送的组件更新消息;
所述请求生成模块401可以包括:
目标组件确定子模块,用于依据所述组件更新消息,确定需要更新的目标组件;
目标请求生成子模块,用于生成针对所述需要更新的目标组件的组件加载请求。
在本申请实施例中,所述目标组件的可执行文件具有标准化的接口函数;所述接口函数至少包括以下的一个函数:启动函数、关闭函数、读取函数、写入函数和I/O通道管理函数。
在本申请实施例中,所述组件加载请求包括所述设备的可用内存地址空间信息;或,所述云服务器中预置有所述设备的可用内存地址空间信息;
所述目标组件的可执行文件由所述云服务器采用目标组件的目标文件、所述设备的可用内存地址空间信息生成;所述目标组件的目标文件由所述云服务器依据所述组件加
载请求获得。
在本申请实施例中,所述组件加载请求包括目标符号的内存地址信息,所述目标符号为所述目标组件需要调用的所述设备中的符号;或,所述云服务器中预置有目标符号的内存地址信息;
所述目标组件的可执行文件由所述云服务器采用目标组件的目标文件、所述设备的可用内存地址空间信息和所述目标符号的内存地址信息链接生成。
在本申请实施例中,所述云服务器为物联网服务器,所述目标组件为所述设备需要加载的传感器的驱动组件。
本申请实施例中,当嵌入式设备需要加载驱动组件时,嵌入式设备向云服务器发送组件加载请求,请求中包括嵌入式设备的可用内存地址空间信息。云服务器根据请求确定嵌入式设备所需的驱动组件,并采用嵌入式设备的可用内存地址空间信息生成驱动组件的可执行文件,嵌入式设备运行驱动组件的可执行文件即可完成驱动组件的加载。
与现有的动态加载方式相比,本申请实施例中,云服务器根据嵌入式设备的可用内存地址空间信息,对驱动组件的各个符号的地址进行了定位,并且将驱动组件需要用到的嵌入式设备本地符号的地址直接定位为符号在嵌入式设备的内存空间中的实际内存地址。嵌入式设备可直接运行驱动组件的可执行文件,无需进行符号重定位,减少了嵌入式设备计算资源的占用。并且驱动组件的可执行文件省去了用于符号重定位的信息,从而减少内存空间的占用。在计算能力和内存资源有限的嵌入式设备中也可以通过本申请所述的方法实现组件的动态加载。
参照图7,示出了本申请的一种设备的组件加载装置实施例2的结构框图,其中所述设备与云服务器通信,所述的装置具体可以包括如下模块:
位于所述云服务器的请求接收模块501,用于接收所述设备发送的组件加载请求;
位于所述云服务器的可执行文件生成模块502,用于依据所述组件加载请求,生成目标组件的可执行文件;
位于所述云服务器的文件发送模块503,用于向所述设备发送所述目标组件的可执行文件,所述设备用于运行所述目标组件的可执行文件,以完成所述目标组件的加载。
在本申请实施例中,所述组件加载请求包括所述设备的可用内存地址空间信息;或,所述云服务器中预置有所述设备的可用内存地址空间信息;
所述可执行文件生成模块502可以包括:
目标文件获得子模块,用于依据所述组件加载请求,获得目标组件的目标文件;
可执行文件生成子模块,用于采用所述目标组件的目标文件、所述可用内存地址空间信息,生成预设格式的所述目标组件的可执行文件。
在本申请实施例中,所述组件加载请求包括目标符号的内存地址信息,所述目标符号为所述目标组件需要调用的所述设备中的符号;或,所述云服务器中预置有目标符号的内存地址信息;
所述可执行文件生成子模块进一步包括:
链接单元,用于采用所述目标组件的目标文件、所述可用内存地址空间信息和所述目标符号的内存地址信息进行链接,生成预设格式的所述目标组件的可执行文件。
在本申请实施例中,所述文件发送模块503可以包括:
执行方式设置子模块,用于将所述目标组件的可执行文件设置为XIP执行方式;
文件发送子模块,用于向所述设备发送所述设置为XIP执行方式的目标组件的可执行文件。
在本申请实施例中,所述的装置还可以包括:
位于所述云服务器的更新消息生成模块,用于当组件更新时,生成组件更新消息;
位于所述云服务器的更新消息发送模块,用于向所述设备发送所述组件更新消息,所述设备用于在接收到所述组件更新消息后,返回所述组件加载请求。
在本申请实施例中,所述目标组件的可执行文件具有标准化的接口函数;所述接口函数至少包括以下的一个函数:启动函数、关闭函数、读取函数、写入函数和I/O通道管理函数。
在本申请实施例中,所述云服务器为物联网服务器,所述目标组件为所述设备需要加载的传感器的驱动组件。
在本申请实施例中,云服务器根据嵌入式设备的组件加载请求确定嵌入式设备所需的驱动组件,并采用嵌入式设备的可用内存地址空间信息生成驱动组件的可执行文件,嵌入式设备运行驱动组件的可执行文件即可完成驱动组件的加载。
与现有的动态加载方式相比,本申请实施例中,云服务器根据嵌入式设备的可用内存地址空间信息,对驱动组件的各个符号的地址进行了定位,并且将驱动组件需要用到的嵌入式设备本地符号的地址直接定位为符号在嵌入式设备的内存空间中的实际内存地址。嵌入式设备可直接运行驱动组件的可执行文件,无需进行符号重定位,减少了嵌入式设备计算资源的占用。并且驱动组件的可执行文件省去了用于符号重定位的信息,从
而减少内存空间的占用。在计算能力和内存资源有限的嵌入式设备中也可以通过本申请所述的方法实现组件的动态加载。
参照图8,示出了本申请的一种设备实施例的硬件结构图,该设备可以与云服务器通信。如图8所示,该设备可以包括处理器60、输出设备61、输入设备62、存储器63和和至少一个通信总线64。通信总线64用于实现元件之间的通信连接。存储器23可能包含高速RAM存储器,也可能还包括非易失性存储NVM,例如至少一个磁盘存储器,还可能包括闪存Flash。存储器中可以存储各种程序,用于完成各种处理功能以及实现本实施例的方法步骤。
本申请实施例中,上述处理器60例如可以为中央处理器(Central Processing Unit,简称CPU)、应用专用集成电路(ASIC)、数字信号处理器(DSP)、数字信号处理设备(DSPD)、可编程逻辑器件(PLD)、现场可编程门阵列(FPGA)、控制器、微控制器、微处理器或其他电子元件实现,该处理器60通过车内线路或无线连接耦合到上述输入设备62和输出设备61。
本申请实施例中,上述输入设备62可以包括多种输入设备,例如可以包括面向用户的用户接口、面向设备的设备接口、收发信机中的至少一个。本申请实施例中,该面向设备的设备接口可以是用于设备与设备之间进行数据传输的有线接口、还可以是用于设备与设备之间进行数据或者指令传输的硬件插入接口(例如USB接口、串口、车体硬件设施之间的接口等);本申请实施例中,该面向用户的用户接口例如可以是面向用户的控制按键、用于接收语音输入的语音输入设备以及用户接收用户触摸输入的触摸感知设备(例如具有触摸感应功能的触摸屏、触控板等);本申请实施例中,上述收发信机可以是具有通信功能的射频收发芯片、基带处理芯片以及收发天线等。本申请实施例中,上述输出设备61可以为相应的具有通信功能的输出接口或者语音播放设备或者收发信机。
在本申请实施例中,处理器60,用于生成组件加载请求;
输出设备61,耦合至所述处理器60,用于将所述组件加载请求发送至所述云服务器;
输入设备62,耦合至所述处理器60,用于接收所述云服务器返回的目标组件的可执行文件;所述目标组件的可执行文件由所述云服务器依据所述组件加载请求生成;
所述处理器60,还用于运行所述输入设备62获得的目标组件的可执行文件,以完成所述目标组件的加载。
本申请实施例提供的设备,可以执行上述方法实施例,其实现原理和技术效果类似,在此不再赘述。
本申请实施例中,所述处理器60,还用于将所述输入设备62接收到的所述目标组件的可执行文件存储到闪存Flash中。
本申请实施例中,所述处理器60,具体用于若所述目标组件的可执行文件为XIP执行方式,则在所述闪存Flash中提取所述目标组件的可执行文件的初始化函数;运行所述初始化函数,以完成所述目标组件的加载。
本申请实施例中,所述处理器60,具体用于若所述目标组件的可执行文件不为XIP执行方式,则提取出所述目标组件的可执行文件中的元数据;所述元数据包括:初始化函数内存地址和所述可执行文件对应的组件名称;将提出提取元数据后的所述目标组件的可执行文件复制至内存中;运行所述初始化函数,以完成所述目标组件的加载。
本申请实施例中,所述输入设备62,还用于接收所述云服务器发送的组件更新消息;
所述处理器60,具体用于依据所述组件更新消息,确定需要更新的目标组件,并生成针对所述需要更新的目标组件的组件加载请求。
本申请实施例中,所述目标组件的可执行文件具有标准化的接口函数;所述接口函数至少包括以下的一个函数:启动函数、关闭函数、读取函数、写入函数和I/O通道管理函数。
本申请实施例中,所述组件加载请求包括所述设备的可用内存地址空间信息;或,所述云服务器中预置有所述设备的可用内存地址空间信息;
所述目标组件的可执行文件由所述云服务器采用目标组件的目标文件、所述设备的可用内存地址空间信息生成;所述目标组件的目标文件由所述云服务器依据所述组件加载请求获得。
本申请实施例中,所述组件加载请求包括目标符号的内存地址信息,所述目标符号为所述目标组件需要调用的所述设备中的符号;或,所述云服务器中预置有目标符号的内存地址信息;
所述目标组件的可执行文件由所述云服务器采用目标组件的目标文件、所述设备的可用内存地址空间信息和所述目标符号的内存地址信息链接生成。
本申请实施例中,所述云服务器为物联网服务器,所述目标组件为所述设备需要加载的传感器的驱动组件。
本申请实施例提供的设备,可以执行上述方法实施例,其实现原理和技术效果类似,
在此不再赘述。
参照图9,示出了本申请的一种物联网系统实施例的框图,该物联网系统包括:云服务器70和与所述云服务器通信的设备71;
所述设备71可以包括:
请求生成模块,用于生成组件加载请求;
请求发送模块,用于将所述组件加载请求发送至所述云服务器;
文件接收模块,用于接收所述云服务器返回的目标组件的可执行文件;
文件运行模块,用于运行所述目标组件的可执行文件,以完成所述目标组件的加载;
所述云服务器70可以包括:
请求接收模块,用于接收所述设备发送的组件加载请求;
可执行文件生成模块,用于依据所述组件加载请求,生成目标组件的可执行文件;
文件发送模块,用于向所述设备发送所述目标组件的可执行文件,所述设备用于运行所述目标组件的可执行文件,以完成所述目标组件的加载。
本申请实施例中,所述设备71还可以包括:
存储模块,用于将接收到的所述目标组件的可执行文件存储到闪存Flash中。
在本申请实施例中,所述文件发送模块可以包括:
执行方式设置子模块,用于将所述目标组件的可执行文件设置为XIP执行方式;
文件发送子模块,用于向所述设备发送所述设置为XIP执行方式的目标组件的可执行文件。
本申请实施例中,所述文件运行模块可以包括:
函数提取子模块,用于若所述目标组件的可执行文件为XIP执行方式,则在所述闪存Flash中提取所述目标组件的可执行文件的初始化函数;
第一函数运行子模块,用于运行所述初始化函数,以完成所述目标组件的加载。
在本申请实施例中,所述文件运行模块还可以包括:
元数据提取子模块,用于若所述目标组件的可执行文件不为XIP执行方式,则提取出所述目标组件的可执行文件中的元数据;所述元数据包括:初始化函数内存地址和所述可执行文件对应的组件名称;
复制子模块,用于将提出提取元数据后的所述目标组件的可执行文件复制至内存中;
第二函数运行子模块,用于运行所述初始化函数,以完成所述目标组件的加载。
在本申请实施例中,
所述云服务器70还可以包括:
更新消息生成模块,用于当组件更新时,生成组件更新消息;
更新消息发送模块,用于向所述设备发送所述组件更新消息,所述设备用于在接收到所述组件更新消息后,返回所述组件加载请求。
所述设备还可以包括:
消息接收模块,用于接收所述云服务器发送的组件更新消息;
所述请求生成模块包括:
目标组件确定子模块,用于依据所述组件更新消息,确定需要更新的目标组件;
目标请求生成子模块,用于生成针对所述需要更新的目标组件的组件加载请求。
在本申请实施例中,所述目标组件的可执行文件具有标准化的接口函数;所述接口函数至少包括以下的一个函数:启动函数、关闭函数、读取函数、写入函数和I/O通道管理函数。
在本申请实施例中,
所述组件加载请求包括所述设备的可用内存地址空间信息;或,所述云服务器中预置有所述设备的可用内存地址空间信息;
所述可执行文件生成模块包括:
目标文件获得子模块,用于依据所述组件加载请求,获得目标组件的目标文件;
可执行文件生成子模块,用于采用所述目标组件的目标文件、所述可用内存地址空间信息,生成预设格式的所述目标组件的可执行文件。
在本申请实施例中,
所述组件加载请求包括目标符号的内存地址信息,所述目标符号为所述目标组件需要调用的所述设备中的符号;或,所述云服务器中预置有目标符号的内存地址信息;
所述可执行文件生成子模块进一步包括:
链接单元,用于采用所述目标组件的目标文件、所述可用内存地址空间信息和所述目标符号的内存地址信息进行链接,生成预设格式的所述目标组件的可执行文件。
在本申请实施例中,所述云服务器为物联网服务器,所述目标组件为所述设备需要加载的传感器的驱动组件。
对于装置实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关
之处参见方法实施例的部分说明即可。
本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。
本领域内的技术人员应明白,本申请实施例的实施例可提供为方法、装置、或计算机程序产品。因此,本申请实施例可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请实施例可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本申请实施例是参照根据本申请实施例的方法、终端设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理终端设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理终端设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理终端设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理终端设备上,使得在计算机或其他可编程终端设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程终端设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
尽管已描述了本申请实施例的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例做出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本申请实施例范围的所有变更和修改。
最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何
其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者终端设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者终端设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者终端设备中还存在另外的相同要素。
以上对本申请所提供的一种设备的组件加载方法、一种设备的组件加载装置、一种设备以及一种物联网系统,进行了详细介绍,本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想;同时,对于本领域的一般技术人员,依据本申请的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本申请的限制。
Claims (20)
- 一种设备的组件加载方法,其特征在于,所述设备与云服务器通信,所述的方法包括:所述设备生成组件加载请求;所述设备将所述组件加载请求发送至所述云服务器;所述设备接收所述云服务器返回的目标组件的可执行文件;所述目标组件的可执行文件由所述云服务器依据所述组件加载请求生成;所述设备运行所述目标组件的可执行文件,以完成所述目标组件的加载。
- 根据权利要求1所述的方法,其特征在于,还包括:所述设备将接收到的所述目标组件的可执行文件存储到闪存Flash中。
- 根据权利要求2所述的方法,其特征在于,所述设备运行所述目标组件的可执行文件,以完成所述目标组件的加载的步骤包括:若所述目标组件的可执行文件为XIP执行方式,则所述设备在所述闪存Flash中提取所述目标组件的可执行文件的初始化函数;所述设备运行所述初始化函数,以完成所述目标组件的加载。
- 根据权利要求3所述的方法,其特征在于,所述设备运行所述目标组件的可执行文件,以完成所述目标组件的加载的步骤还包括:若所述目标组件的可执行文件不为XIP执行方式,则所述设备提取出所述目标组件的可执行文件中的元数据;所述元数据包括:初始化函数内存地址和所述可执行文件对应的组件名称;所述设备将提出提取元数据后的所述目标组件的可执行文件复制至内存中;所述设备运行所述初始化函数,以完成所述目标组件的加载。
- 根据权利要求1所述的方法,其特征在于,还包括:所述设备接收所述云服务器发送的组件更新消息;所述设备生成组件加载请求的步骤包括:所述设备依据所述组件更新消息,确定需要更新的目标组件;所述设备生成针对所述需要更新的目标组件的组件加载请求。
- 根据权利要求1所述的方法,其特征在于,所述目标组件的可执行文件具有标准化的接口函数;所述接口函数至少包括以下的一个函数:启动函数、关闭函数、读取函数、写入函数和I/O通道管理函数。
- 根据权利要求1所述的方法,其特征在于,所述组件加载请求包括所述设备的可用内存地址空间信息;或,所述云服务器中预置有所述设备的可用内存地址空间信息;所述目标组件的可执行文件由所述云服务器采用目标组件的目标文件、所述设备的可用内存地址空间信息生成;所述目标组件的目标文件由所述云服务器依据所述组件加载请求获得。
- 根据权利要求7所述的方法,其特征在于,所述组件加载请求包括目标符号的内存地址信息,所述目标符号为所述目标组件需要调用的所述设备中的符号;或,所述云服务器中预置有目标符号的内存地址信息;所述目标组件的可执行文件由所述云服务器采用目标组件的目标文件、所述设备的可用内存地址空间信息和所述目标符号的内存地址信息链接生成。
- 根据权利要求1所述的方法,其特征在于,所述云服务器为物联网服务器,所述目标组件为所述设备需要加载的传感器的驱动组件。
- 一种设备的组件加载方法,其特征在于,所述设备与云服务器通信,所述的方法包括:所述云服务器接收所述设备发送的组件加载请求;所述云服务器依据所述组件加载请求,生成目标组件的可执行文件;所述云服务器向所述设备发送所述目标组件的可执行文件,所述设备用于运行所述目标组件的可执行文件,以完成所述目标组件的加载。
- 根据权利要求10所述的方法,其特征在于,所述组件加载请求包括所述设备的可用内存地址空间信息;或,所述云服务器中预置有所述设备的可用内存地址空间信息;所述云服务器依据所述组件加载请求,生成目标组件的可执行文件的步骤包括:所述云服务器依据所述组件加载请求,获得目标组件的目标文件;所述云服务器采用所述目标组件的目标文件、所述可用内存地址空间信息,生成预设格式的所述目标组件的可执行文件。
- 根据权利要求11所述的方法,其特征在于,所述组件加载请求包括目标符号的内存地址信息,所述目标符号为所述目标组件需要调用的所述设备中的符号;或,所述云服务器中预置有目标符号的内存地址信息;所述云服务器采用所述目标组件的目标文件、所述可用内存地址空间信息,生成预 设格式的所述目标组件的可执行文件的步骤包括:所述云服务器采用所述目标组件的目标文件、所述可用内存地址空间信息和所述目标符号的内存地址信息进行链接,生成预设格式的所述目标组件的可执行文件。
- 根据权利要求10所述的方法,其特征在于,所述云服务器向所述设备发送所述可执行文件的步骤包括:所述云服务器将所述目标组件的可执行文件设置为XIP执行方式;所述云服务器向所述设备发送所述设置为XIP执行方式的目标组件的可执行文件。
- 根据权利要求10所述的方法,其特征在于,还包括:当组件更新时,所述云服务器生成组件更新消息;所述云服务器向所述设备发送所述组件更新消息,所述设备用于在接收到所述组件更新消息后,返回所述组件加载请求。
- 根据权利要求10所述的方法,其特征在于,所述目标组件的可执行文件具有标准化的接口函数;所述接口函数至少包括以下的一个函数:启动函数、关闭函数、读取函数、写入函数和I/O通道管理函数。
- 根据权利要求10所述的方法,其特征在于,所述云服务器为物联网服务器,所述目标组件为所述设备需要加载的传感器的驱动组件。
- 一种设备的组件加载装置,其特征在于,所述设备与云服务器通信,所述的装置包括:位于所述设备的请求生成模块,用于生成组件加载请求;位于所述设备的请求发送模块,用于将所述组件加载请求发送至所述云服务器;位于所述设备的文件接收模块,用于接收所述云服务器返回的目标组件的可执行文件;所述目标组件的可执行文件由所述云服务器依据所述组件加载请求生成;位于所述设备的文件运行模块,用于运行所述目标组件的可执行文件,以完成所述目标组件的加载。
- 一种设备的组件加载装置,其特征在于,所述设备与云服务器通信,所述的装置包括:位于所述云服务器的请求接收模块,用于接收所述设备发送的组件加载请求;位于所述云服务器的可执行文件生成模块,用于依据所述组件加载请求,生成目标 组件的可执行文件;位于所述云服务器的文件发送模块,用于向所述设备发送所述目标组件的可执行文件,所述设备用于运行所述目标组件的可执行文件,以完成所述目标组件的加载。
- 一种设备,其特征在于,所述设备与云服务器通信,所述的设备包括:处理器,用于生成组件加载请求;输出设备,耦合至所述处理器,用于将所述组件加载请求发送至所述云服务器;输入设备,耦合至所述处理器,用于接收所述云服务器返回的目标组件的可执行文件;所述目标组件的可执行文件由所述云服务器依据所述组件加载请求生成;所述处理器,还用于运行所述输入设备获得的目标组件的可执行文件,以完成所述目标组件的加载。
- 一种物联网系统,其特征在于,包括:云服务器和与所述云服务器通信的设备;所述设备包括:请求生成模块,用于生成组件加载请求;请求发送模块,用于将所述组件加载请求发送至所述云服务器;文件接收模块,用于接收所述云服务器返回的目标组件的可执行文件;文件运行模块,用于运行所述目标组件的可执行文件,以完成所述目标组件的加载;所述云服务器包括:请求接收模块,用于接收所述设备发送的组件加载请求;可执行文件生成模块,用于依据所述组件加载请求,生成目标组件的可执行文件;文件发送模块,用于向所述设备发送所述目标组件的可执行文件,所述设备用于运行所述目标组件的可执行文件,以完成所述目标组件的加载。
Applications Claiming Priority (2)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| CN201610895963.1A CN107957887A (zh) | 2016-10-13 | 2016-10-13 | 一种设备的组件加载方法、装置以及物联网系统 |
| CN201610895963.1 | 2016-10-13 |
Publications (1)
| Publication Number | Publication Date |
|---|---|
| WO2018068658A1 true WO2018068658A1 (zh) | 2018-04-19 |
Family
ID=61905173
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| PCT/CN2017/104168 Ceased WO2018068658A1 (zh) | 2016-10-13 | 2017-09-29 | 一种设备的组件加载方法、装置以及物联网系统 |
Country Status (3)
| Country | Link |
|---|---|
| CN (1) | CN107957887A (zh) |
| TW (1) | TW201814546A (zh) |
| WO (1) | WO2018068658A1 (zh) |
Families Citing this family (5)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| CN111190649B (zh) * | 2018-10-26 | 2023-07-25 | 阿里巴巴集团控股有限公司 | 客户端组建方法、装置及系统 |
| CN113475048B (zh) * | 2019-04-03 | 2024-05-14 | 深圳迈瑞生物医疗电子股份有限公司 | 接入控制方法、接入控制设备及电子设备 |
| TWI740380B (zh) * | 2020-02-17 | 2021-09-21 | 中華電信股份有限公司 | 監控設備之系統及其方法 |
| CN113873044B (zh) * | 2021-10-15 | 2024-01-02 | 阿里巴巴(中国)有限公司 | 数据传输方法、系统、设备及存储介质 |
| CN115033301B (zh) * | 2022-05-17 | 2025-07-22 | 杭州义益钛迪信息技术有限公司 | 边缘计算主机的设备接入方法、装置、设备及存储介质 |
Citations (6)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US6269481B1 (en) * | 1997-05-02 | 2001-07-31 | Webtv Networks, Inc. | Automatic selecting and downloading device drivers from a server system to a client system that includes one or more devices |
| US20090228881A1 (en) * | 2008-03-04 | 2009-09-10 | Atul Mukker | Linux matrix compilation system and method |
| US20140108600A1 (en) * | 2010-12-06 | 2014-04-17 | Flexycore | Application distribution supplying a dedicated application to a terminal from an application deposited by the developer |
| US20140207846A1 (en) * | 2013-01-23 | 2014-07-24 | International Business Machines Corporation | Client-side aggregation of nested resource dependencies |
| CN104144466A (zh) * | 2013-05-10 | 2014-11-12 | 中国电信股份有限公司 | 物联网中传感器接入方法、物联网系统和服务器 |
| CN104253783A (zh) * | 2013-06-25 | 2014-12-31 | 中国移动通信集团公司 | web应用实现代码加载方法、装置、系统及服务器 |
Family Cites Families (6)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| CN1252951C (zh) * | 2003-11-04 | 2006-04-19 | 中兴通讯股份有限公司 | 节点b单板软件下载及升级方法 |
| CN101510161A (zh) * | 2009-03-30 | 2009-08-19 | 北京中星微电子有限公司 | 一种引导程序的实现方法、装置和便携式电子设备 |
| CN103942078B (zh) * | 2014-04-30 | 2017-11-17 | 华为技术有限公司 | 一种加载驱动程序的方法及嵌入式设备 |
| CN105988836B (zh) * | 2015-02-12 | 2020-07-10 | Oppo广东移动通信有限公司 | 一种应用推荐方法及装置 |
| CN105991729B (zh) * | 2015-02-12 | 2019-12-31 | Oppo广东移动通信有限公司 | 一种安装包下载方法及服务器 |
| CN105573810A (zh) * | 2016-03-23 | 2016-05-11 | 重庆邮电大学 | 一种无线传感器网络节点远程升级方法及装置 |
-
2016
- 2016-10-13 CN CN201610895963.1A patent/CN107957887A/zh active Pending
-
2017
- 2017-08-08 TW TW106126769A patent/TW201814546A/zh unknown
- 2017-09-29 WO PCT/CN2017/104168 patent/WO2018068658A1/zh not_active Ceased
Patent Citations (6)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US6269481B1 (en) * | 1997-05-02 | 2001-07-31 | Webtv Networks, Inc. | Automatic selecting and downloading device drivers from a server system to a client system that includes one or more devices |
| US20090228881A1 (en) * | 2008-03-04 | 2009-09-10 | Atul Mukker | Linux matrix compilation system and method |
| US20140108600A1 (en) * | 2010-12-06 | 2014-04-17 | Flexycore | Application distribution supplying a dedicated application to a terminal from an application deposited by the developer |
| US20140207846A1 (en) * | 2013-01-23 | 2014-07-24 | International Business Machines Corporation | Client-side aggregation of nested resource dependencies |
| CN104144466A (zh) * | 2013-05-10 | 2014-11-12 | 中国电信股份有限公司 | 物联网中传感器接入方法、物联网系统和服务器 |
| CN104253783A (zh) * | 2013-06-25 | 2014-12-31 | 中国移动通信集团公司 | web应用实现代码加载方法、装置、系统及服务器 |
Also Published As
| Publication number | Publication date |
|---|---|
| TW201814546A (zh) | 2018-04-16 |
| CN107957887A (zh) | 2018-04-24 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| US11847470B2 (en) | Request processing method, system on chip, and public cloud management component | |
| WO2018068658A1 (zh) | 一种设备的组件加载方法、装置以及物联网系统 | |
| EP3675537B1 (en) | Application processing method and apparatus for embedded universal integrated circuit card | |
| CN104954451B (zh) | 一种虚拟化环境下usb设备的访问控制方法 | |
| WO2019047745A1 (zh) | 一种数据共享方法、终端设备和存储介质 | |
| TW201721411A (zh) | 應用程式的處理方法和裝置 | |
| CN106886429A (zh) | 一种加载驱动程序的方法和服务器 | |
| JP2012079130A (ja) | デバッグ支援プログラム、デバッグ支援装置、及びデバッグ支援方法 | |
| CN105527881A (zh) | 一种指令处理方法及装置 | |
| CN107968828B (zh) | 家电语音播报方法、装置及设备 | |
| WO2023070823A1 (zh) | 启动引导程序加载方法、装置、系统、电子设备及介质 | |
| CN104572564A (zh) | 一种实现android移动设备与USB OTG主机通讯的方法 | |
| WO2018040746A1 (zh) | 一种驱动程序的安装方法及装置、电子设备 | |
| WO2015051728A1 (zh) | 一种获取与终端相匹配的应用的方法及装置 | |
| CN103092648B (zh) | 一种镜像升级方法、系统及用户设备和个人计算机 | |
| WO2018006884A1 (zh) | 一种软件安装方法及装置、用户终端 | |
| CN112579202A (zh) | Windows系统的服务性程序编辑方法、装置、设备及存储介质 | |
| CN110502261A (zh) | 一种更新用户设备中控制程序的方法与设备 | |
| CN102929662B (zh) | 一种基于网络批量分区的方法 | |
| JP2013513874A (ja) | データカードのアップグレーディング方法およびデバイス | |
| WO2020064000A1 (zh) | 一种消息框的显示方法及装置、终端、存储介质 | |
| CN111381978A (zh) | 一种接入应用程序的方法、存储介质以及智能电视 | |
| WO2016058188A1 (zh) | 一种应用于终端的软件升级方法、装置及终端 | |
| CN110377345B (zh) | 系统启动文件的处理方法及装置 | |
| WO2018121652A1 (zh) | 通过用户设备中的应用连接无线接入点的方法与设备 |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| 121 | Ep: the epo has been informed by wipo that ep was designated in this application |
Ref document number: 17860363 Country of ref document: EP Kind code of ref document: A1 |
|
| NENP | Non-entry into the national phase |
Ref country code: DE |
|
| 122 | Ep: pct application non-entry in european phase |
Ref document number: 17860363 Country of ref document: EP Kind code of ref document: A1 |