The present invention will hereinafter be described in conjunction with the following drawing figures, wherein like numerals denote like elements, and wherein:
The following detailed description of the invention is merely exemplary in nature and is not intended to limit the invention or the application and uses of the invention. Furthermore, there is no intention to be bound by any theory presented in the preceding background of the invention or the following detailed description of the invention.
The invention may be described herein in terms of functional and/or logical block components and various processing steps. It should be appreciated that such block components may be realized by any number of hardware, software, and/or firmware components configured to perform the specified functions. For example, an embodiment of the invention may employ various integrated circuit components, e.g., radio-frequency (RF) devices, memory elements, digital signal processing elements, logic elements, look-up tables, or the like, which may carry out a variety of functions under the control of one or more microprocessors or other control devices. In addition, those skilled in the art will appreciate that the present invention may be practiced in conjunction with any number of data transmission protocols and that the system described herein is merely exemplary applications for the invention.
For the sake of brevity, conventional techniques related to WLANs, signal processing, data transmission, signaling, network control, the 802.3 and 802.11 families of specifications, and other functional aspects of the system (and the individual operating components of the system) may not be described in detail herein. Furthermore, the connecting lines shown in the various figures contained herein are intended to represent example functional relationships and/or physical couplings between the various elements. It should be noted that many alternative or additional functional relationships or physical connections may be present in a practical embodiment.
In this example, the wireless access devices 116, 118 are realized as wireless access ports, which are “thin” devices that rely on the network intelligence and management functions provided by the wireless switch 112, while wireless access device 120 is realized as a wireless access point, which is a “thick” device having the network intelligence and processing power integrated therein. Thus, the wireless access device 120 need not rely upon the wireless switch 112 for operation. Wireless access ports having conventional features that can be incorporated into the wireless access devices 116, 118, and wireless access points having conventional features that can be incorporated into the wireless access device 120 are available from Symbol Technologies, Inc. Briefly, a wireless access device as described herein is suitably configured to receive data from wireless clients over wireless links. Once that data is captured by the wireless access device, the data can be processed for communication within the computer network 100. For example, the data can be encapsulated into a packet format compliant with a suitable data communication protocol. In the example embodiment, data is routed within the computer network 100 using conventional Ethernet 802.3 addressing (including standard Ethernet destination and source packet addresses).
The wireless switch 112 is coupled to the Ethernet switch 114, which is in turn coupled to the wireless access devices 116, 118, 120. In practice, the wireless switch 112 communicates with the wireless access devices 116, 118 via the Ethernet switch 114. A given wireless switch can support any number of wireless access devices, i.e., one or more wireless access devices can be concurrently adopted by a single wireless switch (in one embodiment, a wireless access device can be adopted by only one wireless switch at a time). The wireless clients are wireless devices that can physically move around the computer network 100 and communicate with the network components 122 via the wireless access devices 116, 118, 120.
The wireless switch 112 may include various advantageous features. For example, the wireless switch 112 may utilize a field programmable gate array (FPGA) to perform the switching code. The wireless switch 112 may also be suitably configured to accept a CompactFlash card or other portable nonvolatile memory device to assist with reloading the wireless switch 112 after initial switch activation. Moreover, a USB port can be included on the exterior of the wireless switch 112 for interfacing with one or more USB devices. In accordance with another feature of the wireless switch 112, booting is initiated via a NAND switch rather than a NOR switch as used in existing wireless switch devices. The wireless switch can include a main processing element such as a motherboard and an additional, optional processing element such as a daughterboard.
The wireless switch 112 can include a physical housing that surrounds and protects the components of the wireless switch 112. A number of features, elements, and components of the wireless switch 112 may be accessible from the exterior of housing. In this example, most of these accessible and/or viewable features are located at the front face panel of wireless switch 112. In this regard, wireless switch 112 may include, without limitation: one or more system LED lights; an out-of-band management port; one or more USB ports; one or more memory card slots; and various Ethernet connectors, jacks, or ports.
The wireless switch 112 has an exemplary implementation of a multi-core data processing system 200 that includes a plurality of cores 202, 204, 206. The multi-core processing system 200 effectively combines the circuitry of two or more processors onto a common semiconductor die. In one embodiment, the core 202 is a control core 202 and the cores 204, 206 are data handling cores 204, 206, although other configurations are possible. The control core 202 typically executes the base operating system (e.g. LINUX or the like), whereas the data handling cores 204, 206 execute the various handler logic. By dividing the data handling function from the operating system function, the overall throughput of system 200 can be markedly improved in many embodiments. Although three cores 202, 204, 206 are illustrated in
As referenced above, the processing system 200 and/or the wireless switch 112 can include additional components (not shown), such as a suitable amount of memory, an external and internal interfaces, and one or more peripheral or accessory components. The peripheral or accessory components can include one or more of the following: an intermediate processor, a boot device selector, an additional amount of memory, a USB interface that includes a USB host controller and at least one USB port, a suitable amount of NAND flash memory, a suitable amount of NOR flash memory, and a portable flash memory card port. These and other elements may be interconnected together using a bus or any suitable interconnection arrangement. In this exemplary embodiment, all of the components are located within a single housing, which represents the physical package for the wireless switch 112.
The cores 202, 204, 206 may be implemented or realized with a general purpose processor, a content addressable memory, a digital signal processor, an application specific integrated circuit, a field programmable gate array, any suitable programmable logic device, discrete gate or transistor logic, discrete hardware components, or any combination thereof, designed to perform the functions described herein. The processing system 200 may also be implemented as a combination of computing devices, e.g., a combination of a digital signal processor and a microprocessor, a plurality of microprocessors, one or more microprocessors in conjunction with a digital signal processor core, or any other such configuration.
As illustrated, the data handling cores 204, 206 each include respective data logic 217, 219 and a plurality of data registers 213, 215. As discussed in further detail below, the data handling cores 204, 206 further include respective JTAG interfaces 212, 214 to clock data in and out of the registers 213, 215 to perform diagnostic tests on the data logic 217, 219.
In accordance with one exemplary embodiment, the wireless switch 112 includes a JTAG emulator 208 coupled to and controlled by a JTAG application 210 in the control core 202. The JTAG emulator 208 is further coupled to the JTAG interfaces 212, 214 of the data handling cores 204, 206. The JTAG emulator 208 may be embodied as a field programmable gate array (FPGA) programmed with the appropriate source code. The JTAG emulator 208 can further include a bit counter 224 and memory 226. Accordingly, as discussed herein, the control core 202 can control the debugging of the two data handling cores 204, 206, although in other embodiments, it can be appreciated that software can be provided on one or both of the other, data handling cores 204, 206 to debug the control core 202. In general, exemplary embodiments of the present invention enable a user to halt a boot process of a respective data handling core 204, 206 in order to enter a diagnostic mode, thereby allowing advanced troubleshooting by the control core 202 and the JTAG emulator 208, as discussed in further detail below. In other words, as a general example, exemplary embodiments of the present invention allows a programmer in San Jose or India to login to a problem wireless switch 112 in Texas, launch the remote JTAG emulator application 210, trace the code, and identify problems. The code can then be fixed, re-compiled, and a new NAND image can then be downloaded over the network via the network interface 216 and the wireless switch 112 re-booted. The user can then re-launch the JTAG application 210 and verify that the modified code was successful.
The JTAG interfaces 212, 214 and JTAG emulator 208 are coupled together by the following five lines: a test-reset (TRST) line; a test clock (TCK) line; a test mode select (TMS) line; a test data in (TDI) line; and a test data out (TDO) line. Generally, and as discussed in further detail below, the TRST line initializes and disables the JTAG interface 212, 214 of the cores 204, 206 to be tested. The TCK line controls the timing of the JTAG interface 212, 214 independently from any system clocks. The TMS line selects the test mode in accordance with the JTAG standard. The TDI lines supplies data to the registers 213, 215 of the cores 204, 206, and the TDO line receives the data from the registers 213, 215 of the cores 204, 206. Those of ordinary skill in the art will appreciate that additional, optional signals may be implemented, for example, to allow communication with the devices of particular manufacturers, depending on which functions have been implemented in the wireless switch 112. Moreover, additional registers (not shown) can be provided in the data handling core 204, 206 such as, for example, bypass, user, and instruction registers.
In the illustrated embodiment, the JTAG emulator 208 is coupled to the TRST, TCK and TMS lines of a respective Test Action Port (TAP) controller of each JTAG interface 212, 214 in parallel and is coupled to the TDO from one data handling core 204, 206 to the TDI of the next data handling core 204, 206 in a single loop. In an alternate embodiment, the JTAG emulator 208 can be individually coupled to the JTAG interface 212, 214 of each data handling core 204, 206.
As noted above, exemplary embodiments of the present invention enable a user to remotely log on to the wireless switch 112 via, for example, the network interface 216. The network interface 216 can be a 10/100M Ethernet out of band management port. The user interacts with the control core 202 and can initiate the launching of the JTAG application 210 to control the JTAG emulator 208 and debug one or both of the cores 204, 206.
During the debugging process, the JTAG application 210 of the control core 202 loads a predetermined string of data bits into registers of the JTAG emulator 208. The JTAG emulator 208 then manipulates the data bits into the registers 213, 215 of the JTAG interfaces 212, 214 via the TDI lines and reads the resulting data from the registers 213, 215 from the TDO lines. As such, the registers 213, 215 form a scan path between the TDI line and the TDO line. During normal operation, input and output signals pass through the registers 213, 215 from the data logic 217, 219. However, when the JTAG mode is initiated by the JTAG emulator 208 and the JTAG application 210, the registers 213, 215 are controlled in such a way that test stimulus can be shifted into the registers 213, 215 by the TDI line and captured as resulting data from the registers 213, 215 by the TDO line. The resulting data can be provided to the control core 202 and the JTAG application 210, and interpreted by a technician to diagnose any problems with one or more of the data handling cores 204, 206.
One exemplary embodiment of a control scheme for loading the data bits into the registers 213, 215 is illustrated in the following table and described after the table.
Bit 0 (JTAG TCLK) is a bit used to drive the TCLK line into the JTAG interface 212, 214 of the respective data handling core 204, 206. This line is normally tri-stated (with a pull up 10k) from the JTAG emulator 208 and a zero in this register pulls down the TCLK line. Setting this line to a one tri-states this signal.
Bit 1 (JTAG TDI) is a bit used to drive the TDI line into the JTAG interface 212, 214 of the respective data handling core 204, 206. This line is normally tri-stated (with a pull up 10k) from the JTAG emulator 208 and a zero in this register pulls down the TDI line. Setting this line to a one tri-states this signal.
Bit 2 (JTAG TMS) is a bit used to drive the TMS line into the JTAG interface 212, 214 of the respective data handling core 204, 206. This line is normally tri-stated (with a pull up 10k) from the FPGA and a zero in this register pulls down the TMS line. Setting this line to a one tri-states this signal.
Bit 3 (JTAG TRST) is a bit used to drive the TRST line into the JTAG interface 212, 214 of the respective data handling core 204, 206. This line is normally driven low (with a pull down 10k) from the JTAG emulator 208 and a zero in this register drives the TRST low. Setting this line to a one drives the TRST line high and causes a JTAG TRST to occur.
Bit 4 (JTAG Bit Enable) is a bit that enables the values for TMS, TCK, and TDI in this register to be driven on particular pins of the cores 204, 206. This bit can be over-ridden when the automated function is exercised.
Bit 5 (JTAG Emulator INT Mask) is a bit that enables the JTAG Interrupt. Setting this bit will generate an interrupt to the respective core 204, 206 when the JTAG Emulator INT is active and the global interrupt logic is enabled. Clearing this bit disables the JTAG Interrupt.
Bit 6 (JTAG Emulator INT) is a bit that is set when the JTAG Interrupt from the JTAG emulator 208 is active. This bit returns to zero when the emulator interrupt is removed. Bit 7 (Emulator JTRST) is a bit that shows the state of the Emulator JTRST line. Bit 8 (Core TDO) is a bit that shows the state of the JTDO line.
Bit 12 (JTAG Read/Write) is a bit that enables the JTAG emulator 208 to automatically read and write to the registers 213, 215 using a serial interface. Setting this bit starts the clocking out of data from JTAG memory 226 on the JTAG emulator 208 and at the same time clocking data into JTAG memory 226 on the JTAG emulator 208. The number of bits clocked out is determined by the value in the JTAG count register 224. Generally, once started, this operation can not be stopped.
Bit 13 (JTAG Operation Complete) is a bit set when the JTAG operation is completed. Bit 14 (JTAG Operation Interrupt Mask) is a bit that enables an interrupt for the data handling core 204, 206.
As such, in accordance with the exemplary embodiment described in Table 1, to use the JTAG emulator 208, the user should first set bits 2,1, and 0 low. Next, the JTAG enable bit is set to high which drives the TCLK, TDI and TMS lines. Next, the JTAG TRST bit is set to high, which takes the JTAG interface 212, 214 out of reset and moves it into idle. The user can now drive the TMS, TCLK and TDI lines into the JTAG interface 212, 214 and read the state of the TDO line out with bit 8.
In another exemplary embodiment, a string of bits can be shifted in or out of the JTAG interface 212, 214 using the auto function. To use the auto JTAG function, the JTAG bit count register 224 is loaded with the number of bits to be shifted out and also read into the JTAG emulator 208.
As noted above, the JTAG emulator 208 can further include the JTAG bit counter 224. The JTAG bit counter 224 can include a seven bit register contains the bit count for the JTAG Read/Write. Setting this register to a non-zero value determines the number of bits shifted out of the JTAG memory 226 in and out of the JTAG interfaces 212, 214 and placed back into the JTAG memory 226 of the JTAG emulator 208. The JTAG bit counter 224 determines the number of bits written and read into this JTAG memory 226.
Accordingly, exemplary embodiments of the present invention provide a remote JTAG emulator 208 that enable switch management tools that do not require direct, on-site intervention by a technician. Embodiments of the present invention additionally provide a remote JTAG emulator that is integrated into a switch that enables diagnosis and debugging of the cores 204, 206 of a multi-core processing system 200.
While at least one exemplary embodiment has been presented in the foregoing detailed description of the invention, it should be appreciated that a vast number of variations exist. It should also be appreciated that the exemplary embodiment or exemplary embodiments are only examples, and are not intended to limit the scope, applicability, or configuration of the invention in any way. Rather, the foregoing detailed description will provide those skilled in the art with a convenient road map for implementing an exemplary embodiment of the invention, it being understood that various changes may be made in the function and arrangement of elements described in an exemplary embodiment without departing from the scope of the invention as set forth in the appended claims and their legal equivalents.
This application claims the benefit of U.S. provisional patent application Ser. No. 60/797,018, filed May 1, 2006.
Number | Date | Country | |
---|---|---|---|
60797018 | May 2006 | US |