Abstract:
A method of updating in system program (ISP) of an USB device is disclosed. After the USB device is connected to a host and its attribute is recognized by the host, the USB device configuration is set. The microprocessor (mp) in USB device executes the ISP codes stored in the flash memory until a first vendor command “ISP_START” is sent from the host for updating new ISP codes. The mp is then idled. Afterward, the ISP decoder handled a series of vendor commands until a vendor command “ISP_RESET” is retrieved. The series of vender commands include “ISP_INITIAL”, “ISP_ERASE_PAGE”, “ISP_INITIAL”, “ISP_PROGRAM”, “ISP_READ”, and “ISP_RESET” to program new ISP codes. The “ISP_READ” is to verify the codes programmed.

Description:
BACKGROUND OF THE INVENTION  
         [0001]    1. Field of the Invention  
           [0002]    The present invention relates to a firmware updating on an USB device, and more particularly to a method of updating the firmware on an USB (Universal Serial Bus) device having a microprocessor therein.  
           [0003]    2. Description of the Prior Art  
           [0004]    Since a USB device having a build-in system program, a microprocessor and a set of descriptor therein, the host can easily enumerate and set a configuration for it. User does not need to set any extra address and IRQ (interrupt request) for this peripheral equipment. Thus, for a user feeling frustrated or even nightmare would be alleviated as the periphery device is an USB device. By contrast, as he (or she) plugs a peripheral device other than USB device into a host, the situation would not be true. Mostly, the host can not recognize the device plugged. In addition, USB devices usually support hot-plugging and provided users with a sufficient satisfied data transfer rate merely with very low power consumption while in connection with a computer. Under the full speed mode, the data transfer rate that USB interface provided is fast enough to transfer those digital music files or compressed image signals. Typical USB devices supporting full speed mode are as follows: digital voice recorder, digital camera, MP3 player, printer, flash driver, scanner etc. Next, the USB devices can also run under low speed mode. Exemplary devices are as mouse and keyboard. Besides, the USB device requires only two transmission lines for data transfer and two for power cords. Consequently, for power, the USB device consumed, a coarse wire or transformers are needlessly.  
           [0005]    Owe to the aforementioned benefits, the USB device can provide, the conventional serial port such as RS-232 or the parallel port interface is gradually abandoned by users since USB device provides a better choice. Hence, more and more products use USB port as data transfer interface.  
           [0006]    When a USB device is plugged through the USB port, the operating system of the computer (or USB host) will send a standard request such as “Get Descriptor” to the USB device. Then, the USB device should have a decoder that can decode the standard request. Afterward, the USB device delivers a descriptor to the operating system for enumerating the USB device. After that, the operating system executes a series of commands such as “Set Address”, “Set Configuration”, etc. to configure an address for the USB device, the USB device can share the resources from the USB host hereafter.  
           [0007]    Generally, that the function of USB device provides depends on the firmware or system program in the erasable programmable flash memory thereof. Then, the build-in microprocessor executes the system program. Without the firmware, the USB device can do nothing.  
           [0008]    However, these programming codes do not be modified conveniently. When an USB device is sold to customers from a seller, the firmware of the USB device is usually being used until the USB device is discarded by user, even though, an upgraded version of system program was developed by vendor during the device is still available. The reason just because updating the system code is not an ease thing to do by user  
           [0009]    Currently, if we want to update the firmware, one method that was adopted is through a parallel port programming system. The programming rate of a parallel port programming system is much faster, but lots of I/O pins are usually required. Especially when the IC (Integrated Circuit chip was welded on the PCB (Printed Circuit Board), update the program code of the USB devices would be a troublesome business. The other method is utilizing a serial port programming system .by which I/O pin encounter does not become a problem, but the speed is slow. Therefore, the upgrade firmware is still a thing for those skilled engineers.  
           [0010]    Consequently, the present invention is to provide a programming method for user who can use it as easy as using an application program of the USB device through an USB port. At that time the user runs a programming command or executes normal commands stored in the firmware is a matter of user desired.  
         SUMMARY OF THE INVENTION  
         [0011]    A main object of the present invention is to provide a method to update the USB device through an USB port thereof.  
           [0012]    The present invention discloses a method about updating the firmware of the USB device. The USB device comprises a microprocessor, an USB ISP (In System Program) decoder, and a flash memory therein. To update the firmware, the USB device, the USB device connects with the host firstly. Thereafter, the host enumerates and configures the USB device and then sets up an address for it after getting a descriptor from the USB device. The USB device can then share the resource of the host computer. The microprocessor of the USB device either executing the commands stored in the firmware or the command sending from the host. While receiving the vendor burning command, ISP_START from the host, the USB device enters into a burning mode. The microprocessor hands over the right of controlling power to the USBSP decoder, A series of burning commands such as ISP_INITIAL and ISP—ERASE_PAGE sent from the host then followed. The ISP_INITIAL is to make sure the flash memory in available and avoid any catastrophe occurring that erases the data in the flash memory cell. The burning command, ISP_ERASE_PAGE, is able to erase one flash memory cell page once.  
           [0013]    Thereafter, the burning commands, ISP_INITIAL and ISP_PROGRAM is then followed which programs a new version of the system program to the programmable flash memory. Then the command, ISP_READ, reads the updated program to verify the written data correctness. Finally, the burning command, ISP_RESET is to end the burning mode which returns the rights to the microprocessor. And then the microprocessor will process according to the updated system codes. 
       
    
    
     BRIEF DESCRIPTION OF THE DRAWINGS  
       [0014]    The foregoing aspects and many of the attendant advantages of this invention will become more readily appreciated as the same becomes better understood by reference to the following detailed description, when taken in conjunction with the accompanying drawings, wherein:  
         [0015]    [0015]FIG. 1 shows hardware controlling block diagram of the USB burning system according to the present invention.  
         [0016]    [0016]FIG. 2 shows a flow chart of the normal and the burning commands according to the present invention.  
         [0017]    [0017]FIG. 3 a  is a table list about ISP request commands and formats thereof according to the present invention.  
         [0018]    [0018]FIG. 3 b  is a table list about ISP request commands and corresponding values according to the present invention.  
         [0019]    [0019]FIG. 4 shows controlling flow chart of the USB burning system software according to the present invention. 
     
    
     DESCRIPTION OF THE PREFERRED EMBODIMENT  
       [0020]    As described in the background of the invention, the microprocessor of the USB device operates according to the system program command fetched from the firmware of the USB device. The user can operate a new function only when the functional relative program had built in the firmware. Besides, for the complicated burning procedures, the user won&#39;t update the system program even a new version had provided by the vender. The present invention thus provides a new method to make the firmware updating easily. What the user has to do is just connecting the host with the USB device and assigning burning commands from the host to the USB device.  
         [0021]    Referring to FIG. 1, it shows a hardware controlling block diagram of the burning system in accordance with the present invention. The burning system comprises an USB engine  110 , an ISP (In System Program)_multiplexer  120 , a microprocessor  130 , an USB ISP decoder  140 , and a programmable flash memory  150 . Refer to FIG. 2, which shows a flow chart of the burning procedures according to the present invention. In the beginning, starting on step  200 , the USB device connects with the host (not shown), and then step  210 , the host sends a standard request to the USB engine  110 . Afterward, the USB engine  110  generates an interrupt command through the ISP_multiplexer  120  and the normal route  130   a  to the microprocessor  130 . After the microprocessor  130  received the interrupt command, then it responds to the host and requests the host to allot and configure the USB device with an initial address so that the USB device can share the resource of the host. Ordinarily, the first standard request is to get descriptor. The microprocessor  130  decodes the command and sends the descriptor thereof to the host for recognizing the attributes of the USB device connected.  
         [0022]    Thereafter, as shown in step  220 , the USB device waits for command from the host. Any command received by the USB engine  110  will be read and judged by the microprocessor  130 , as shown in step  230 . If the command is a normal command relative not to burning, the microprocessor  130  will fetch the system program command of the programmable flash memory  150  via the route  145  and execute it, as shown in step  235 . However, as shown in step  240 , when a Vendor Request such as ISP_START is sent from the host and received by the microprocessor  130 , the ISP_multiplexer  120  will disable the path  130   a  so that the microprocessor  130  will be isolated and present idle state.  
         [0023]    Upon the moment, the microprocessor  130  will hand over its right of command handler to the USB ISP decoder  140  until the USB device be reset thereafter. The ISP_multiplexer  120  will set up a path  140   a  between the USB engine  110  and the USB ISP decoder  140 . Any further commands received by the USB engine  110  will be decode by the USB ISP decoder  140 .  
         [0024]    Then the USB device is in the burning mode. That is entering the step  250  of performing erasing the codes stored in the flash memory, programming codes into flash memory, and reading out the written codes from the flash memory successively. The detail will describe below:  
         [0025]    The USB ISP decoder  140  will decode all the commands in the burning mode from the host and proceed with the burning command so as to update the system program of the programmable flash memory  150 .  
         [0026]    Apart from the forgoing (1) ISP_START command, the burning mode also includes the following commands (2) ISP_INITIAL, (3) ISP—READ, (4) ISP_ERASE_PAGE, (5) ISP_PROGRAM, and (6) ISP_RESET. The detailed functions of these commands are mentioned below.  
         [0027]    ISP_START: When the microprocessor  130  receives such command from the host, the normal mode will switch to the burning mode automatically, and the microprocessor  130  will hand over its right of command handler to the USB ISP decoder  140  and then enter idle state. After that, the USB ISP decoder  140  will handle the right of command handler and wait for the command of burning initialization.  
         [0028]    ISP_INTIALL: In the burning mode, before proceeding with programming or erasing to the programmable flash memory cell, the command is executed and confirmed to prevent any undesired action from executing. After the USB ISP decoder  140  decodes ISP_INTIALL command and the programmable flash memory  150  responds followed, the USB ISP decoder  140  will proceed with the programming or erasing command.  
         [0029]    ISP_ERASE_PAGE: In the burning mode, before programming, the command is to remove all of the carriers stored in the floating gate, so that the channel between the source and the drain is opened. As a result, when reading the content of the erased cell, a voltage level high is achieved. The command erases the contents of programmable flash memory  150  in a unit of page.  
         [0030]    ISP_PROGRAM: In the burning mode, the command is to program the programmable flash memory  150  in a unit of byte.  
         [0031]    ISP_READ: In the burning mode, the command is to confirm the correctness of the data programmed in the programmable flash memory  150  by the way of reading the data out once a byte.  
         [0032]    ISP_RESET: The command is performed at the last step  260  of the burning mode. In the burning mode, when all the other burning commands, such as programming and reading had finished, the USB ISP decoder  140  will return the right of command handler back to the microprocessor  130  after receiving the command, ISP_RESET. In other words, the route  130   a  between the USB engine  110  and the microprocessor  130  will recover. Afterward, the microprocessor  130  can execut the updated firmware, no matter the USB device is connected with the host or not, unless another burning commend is received.  
         [0033]    Referring to FIG. 3( a ), it shows a table about the format of the ISP request commands mentioned before. All the commands are transaction packets composed of 8 bytes. In the table, “NA” means none. The significant bit of the least byte represents the direction of transaction. As the bit is 0, transaction direction is from the host to the USB device, on the contrary, when the bit is 1, means that it is from the USB device to the host. When the fifth bit is 1, it represents that the command is one of vendor commands. Only the USB ISP decoder  140  can recognize the contents of these commands. The values of the least bit through the fourth bit represent the sorts of interfaces. The least bit equals to 1 represents that the input port of the command is through “endpoint 0”.  
         [0034]    The first byte of the six vendor commands mentioned above is about burning. The relationship between the values of the first byte with the corresponding vender commands is shown in FIG. 3( b ). When the USB ISP decoder  140  reads the first byte, some action will be executed according to the function of the corresponding commands read. The contents of the second and the third bytes represent different means in accordance with the command corresponded to. For example, ISP_START does not act till waiting time out (wTimeOut). The operation of the commands, ISP_READ, ISP_ERASE_PAGE, and ISP—PROGRAM, need an initial address each. The command ISP—ERASE—PAGE is to erase contents of the programmable flash memory  150  in a unit of page. A page may be 128 bytes but not intended to limit thereto. For example, it may be 64 or 256 bytes per page, so the total byte length of the ISP_ERASE_PAGE pocket described needs not to be limited, and the initial address of the page is enough for the command to operate. On the other hand, the commands, ISP_READ and ISP_PROGRAM, are executed in a unit of byte, so that the byte B 6  containing the byte length is necessary.  
         [0035]    Referring to FIG. 4, it shows the USB burning system software controlling flow chart according to the present invention. In the normal mode, the standard requests from the host and the USB system program commands are all commanded by the microprocessor  130 . By contrast, the USB ISP decoder  140  handles the burning commands. When the execution of burning commands finishes, as shown in the figure, the USB device will respond an “OK” message to the host.  
         [0036]    As is understood by a person skilled in the art, the foregoing preferred embodiments of the present invention are illustrated of the present invention rather than limiting of the present invention. It is intended to cover various modifications and similar arrangements included within the spirit and scope of the appended claims, the scope of which should be accorded the broadest formation so as to encompass all such modifications and similar structure.