| |
|
|
|
|
HOME
COMMUNITY
BLOGS & FORUMS
A View from the Top: A System-Level Blog
|
| A View from the Top: A System-Level Blog |
|
 |
Archive for the 'Wireless' Category
Posted by Achim Nohl on 22nd August 2011
Using the Google Search Debugger
I am spending a reasonable amount of my time helping our users to bring up Android on their chipsets or devices. I am not an Android expert, I gathered my limited knowledge about Android mainly during debugging. I must admit that the first tool I am using when a problem appears is a Google Search. This brings me to the respective expert forums where I hope somebody else has already done the job for me. With Android, this works reasonable well as Android produces an extensive debug log from which I can copy and paste messages into the search bar. With more than 7000 users and 16000 messages just in the Android porting group, chances are high to find something useful. Often the solution to the problem is already there for me.
Android forums did sometimes also the opposite and put me and a completely wrong track. The fact that a symptom is the same, it does not imply the root cause is also the same. Android is a huge SW stack sitting on-top of Linux, which runs on the HW. A bug is often only triggered because of a special combination of Android/Linux version & patch combinations and the specialties of the underlying HW platform. How to get back from Googling into Thinking? Today, I try to force me limiting my Google Search debugging to 20min. After this time I get my hands on into debugging the problem.
Hurdles of using a SW debugger for Android applications and the Android platform
Letâs start debugging the problem. Unfortunately, it is not just launching the software in a debugger and step through the code as we are used to for desktop applications. There are quite a number of hurdles to overcome before we can actually debug. When porting to new hardware, the root cause can be everywhere. Even proven applications, stable Android runtime modules or Linux drivers cannot be excluded. I have often wasted a lot of time debugging when I have refrained myself from investigating SW modules that are said to be stable. Of course, the stability of a module has to be considered, but one should not hesitate to question and debug those as well. Just recently I have found a defect in the Android Apps installer, which has been triggered by a very specific kernel version and filesystem type (http://tinyurl.com/3b3szbj, could only reply my fix directly to the author). Debugging is not exactly easy with Android. Not because Android is so complicated, but just from a pure practical perspective it can be very hard to setup a debugger. For application developers, the Android SDK is providing very convenient debugging capabilities for the Java layer. The companion NDK (native development kit) allows developers to package native code libraries with their applications. But, only one year after its first release in June 2009 it actually provided support for native code debugging. Beyond the NDK and SDK, when the whole Android platform is subject of debug, then things get much more complicated and solutions are sparse. A very useful guideline for debugging I have found in the web, it still requires 12 steps to set up the debug session and another 9 steps to connect the debugger.
Why is setting a debug session more difficult with Android?
What applies to Android may as well apply to many other integrated SW stacks. Each high level device function is delivered by the interaction of many distributed software entities, some of them may be written in Java, others in native code. Most of them executing in the user space, but a fair amount of functions of course also reside in the OS and its drivers.
Another challenge is imposed by the fact that processes and threads are launched and terminated by other processes automatically. First of all you do not know which processes are contributing to a high level device function, and even if you know, the process is often terminated already before you had a chance to connect a debugger. In order to solve that, the best practice is to add an busy wait loop into the code and recompile the respective module. This will give you the chance to connect the debugger at the right point in time and before the bug has eventually passed. The same technique is required when debugging on the Java/C boundary as there is no way to auto-step from Java code down to native code within the debugger. Once you can connect a debugger, it all works pretty well as long as you stay in one software module. But, it is a very tedious process as it requires to modify and rebuild software module, bundle new filesystem images, reproduce complex scenarios each time you want to debug another piece in the puzzle.
If you do not know which SW function to debug, you may add those halts to many places with dangerous side effects. Halted processes may cause time outs or simply impact the sequence of events in the system masking the bug. Many more challenges exist, but I want to stop here as I would like to switch over to talk about some solutions to these problems.
Whatâs next?
In my next post, I would like to introduce how Virtual Prototypes (VP) can help to overcome some of the debug challenges appearing with SW stacks such as Android. As a simple example, the controllability of a VP will help us to intercept the execution of a single SW process. Moreover, I will show you how to inject a halt without modifying the software using a VP. But beyond fixing deficiencies in debug flows, VPs enable much more if used in the right way. A VP can act as a debug server which significantly eases the debug setup and turns you much quicker from an experimenting/guessing mode into systematically analyzing the problem.
Posted in Wireless | No Comments »
Posted by frank schirrmeister on 29th June 2011
What do the Inchron Real Time Congress this week and my last weekend home project have in common? They both are all about complexity, real-time, apps and platforms those apps run on. In automotive and consumer domains, apps are running on platforms in systems of systems. The question to me at this point is how many platforms â like AUTOSAR, GENIVI, Android, IOS, Windows Mobile etc. â as well as versions of them can an apps interested user really handle?

Letâs start with the Inchron Real Time Congress, which I was attending on Tuesday and Wednesday. After BMW talked about the networked car with several networked sub domains. Continental then talked about how to enable Human Machine Interfaces (HMI) with one hardware and hypervisors underneath (see the graphic on the left, Source: Continental). Other presenters from Continental, Audi and Volkswagen confirmed the trend to the networked car and the discussion during the day centered around the real time aspects of car-related applications.
While my next âapps drivenâ car purchase is likely still some time away, my home remodel reminds me in a nightmarish way of what is ahead of us in cars and other apps driven domains. After a one-year re-modeling project and expansion, one geeky upside is that I now have CAT6 installed throughout our home. Everything is installed in-wall. I am happy (and somewhat proud) to report that the engineer in me is still present as without a problem I was able to add Ethernet plugs and such during the last weekend. If this whole system-level gig does not work out, I definitely am still capable of planning and installing home entertainment systems âŚ
Not unlike the networked car, our house now has several networked sub-systems, in our case the home office, bed room, living room and family room. Connected via CAT6, the closet in the bed room hosts a gigabit switch to connect the video server, an Apple iMac hosted in the home office, to the rest of the house. An Apple TV (Version 1) and a Samsung Blue-Ray Player connect via a receiver to a Samsung wide-screen TV in the living room. An Apple TV (Version 2) and an iPOD dock connect via a receiver to a Sharp wide-screen TV in the bed-room. A Comcast multi-room DVR connects from the bed room to the family and living rooms.
The second Apple TV was purchased pretty much specifically to enable more âFamily Guyâ episodes via NetFlix (OK, Caillou and Blues Clues are found here too). As always, the Apple interface is slick and intuitive. It took me 15 minutes from unpacking the box to streaming video via NetFlix. The nightmare started when I activated the internet service on my Blue-Ray player. The Samsung âSmart Hubâ updated via internet. The Netflix interface looked much different on the Samsung âSmart Hubâ platform and I had to tinker a while until I had signed up for a Samsung account, registered the DVD player and got to streaming video after about 90 minutes. It took me another hour to figure out how to get to the latest revision of the Samsung platform via internet, after which all apps needed to be upgraded as well. Now the interface for Netflix roughly resembles the Apple interface, but is less slick, slower and looks different enough to notice.
How do I explain these different interfaces to my wife and daughter? I have no idea. Why are they different, even on the same platform across revisions? Ideally they should not be.
To make things more complex âŚ. our Samsung TV also has an internet âSmart Hubâ interface with apps. Comcast just sent me a advertisement on their apps. I am hesitating to unpack the Sony play station for the family room â yet another platform and yet another apps interface.
At the system-level I am musing in this Blog mostly about aspects at the hardware software interface. The experience with my home network, combined with what I hear about the future of cars, drives me to some conclusions applicable to my world at work of tools enabling software development and system-level design:
- The versioning of platforms and apps running on it, needs to be solved before the mainstream user â like my mom, dad, wife and daughter – can adopt these new technologies. Linaro is a first step for Linux. We desperately need similar activities for AUTOSAR, Android and other platforms.
- Case in point: Gadget Magazine T3 just compared the HTC Flyer, the RIM Playbook and the ASUS EEE Pad Transformer, three tablets. The HTC runs Android 2.3 with a HTC Sense custom UI on it. The RIM Playbook runs the QNX user interface. The ASUS runs Android for tablets â Honeycomb. Three fundamentally different user experiences are OK in competition, but not in the same environment (like our house, or a car). Fellow Blogger Steve Leibson recently referred in his EDA360 Insider post to a PCWorld article on why there are little Honeycomb apps. Oh well.
- To get to mainstream adoption, we may need âUber-Appsâ, both for hardware and software, which stand above the actual apps. I finally may have a good reason to get an iPad, if it could be the âUber-Interfaceâ from which I can control all our apps and devices.
- âOwning the user experienceâ is more crucial than ever. Apple has mastered the art, but you have to commit to them completely. The situation in my family room would be completely unacceptable in a closed environment like a car. Thatâs why the car OEMs at the end will own every interface which touches the user. They will define the platforms their suppliers will need to enable in hardware and have to run apps on.
- Given that the tools I am responsible for sit right at the interface between hardware and software, monetization on apps we enable has always been a fascinating topics. With hardware providers (like Continental above) actively thinking about hypervisors to shield the software from the hardware, monetization on apps will become even more difficult for tool vendors.
Bottom line, apps have become a central part of system-level design and are impacting every step of the design process. Getting them fully adopted and which platforms will prevail, remains an interesting question. As always I am looking forward to your thoughts and comments!
Posted in Abstraction Levels, Automotive, Embedded Software, Models, Wireless | No Comments »
Posted by frank schirrmeister on 30th March 2011
This is really a companion Blog to an article I recently wrote, called âWhich Design Comes First: Hardware Or Software?â. In this article I argued that the landscape of software responsibilities is rapidly changing, and with it the way the different players can actually make money. I ended the article with the words âChip vendors are trying to battle their way back into monetizing on software after Android essentially neutralized them. The hardware-software world remains very interesting!â, Well, this deserves some examples.
First, the neutralization piece. Neutralization may not be the best term. Equalization might be better. Bear with me for a second here. As of today, March 30th, the graph on the left is the best I could come up with to outline the dependency of silicon on end user applications. 728,084 applications is the sum of all available apps of the main application stores from the list of digital distribution platforms for mobile devices. The top six application stores are the Google Android Market, Apple App Store, Palm/HP App Catalog, RIM App World, Nokia OVI Store and the Windows Phone Market Place and they map the applications into an installed base of roughly 964.5 million users. When checking the application stores and counting which mobile devices they map to, one arrives at a total of 230 mobile devices on sale:
What does that mean for a semiconductor company? Well, in the Apple universe 48% of all applications map to 17% of the overall installed base but to only to four actively sold devices. Itâs an âall-or-nothingâ game. In the Android universe 41% of all application map to 8% of the installed base but 52% of the overall available devices. Much more room for silicon here, but a crowded space. Hence Android effectively neutralizes hardware dependency. Everybody can play!
So how does one make money here? There is selling the silicon, selling the device, selling the two year contract with it. And then there are applications. According to Techcrunch and IHS Screen Digest, âDespite 861.5 Percent Growth, Android Market Revenues Remain Punyâ. Well, in 2010, Apple App Store made 82.7%, Blackberry App World 7.7%, Nokia OVI Store 4.9% and the Google Android Market made 4.7% of the $2.155 Billion made with applications. The key is the separation of software and hardware revenue. Apple, RIM and Nokia all make money with the hardware and the software as they take a cut of the application revenue. For all Android devices, the hardware is one piece, and the cut of the software revenue is separate, it goes to Google and other Android app stores out there.
So how does a semiconductor company play in this landscape? With great difficulty? Perhaps. Letâs see what the 2010 top 5 fabless semiconductor companies are doing:
- Qualcomm has embraced Android quite some time ago and has been referred to together with it as the new âWintelâ. One specific step to deal with Open Source was taken by Qualcomm in 2009, when the spun out the Qualcomm Innovation Center, specifically with the âgoal of investing greater resources into enabling and optimizing open source software with Qualcomm technology [âŚ.] to enable the faster advancement of the wireless industry as a wholeâ. The mission is simple: Make sure Qualcomm silicon works with open source software as well as possible. Driving ports and releases of Android and other open source projects makes sure that they run well with Qualcomm Silicon.
- Broadcom now has fully embraced Android in product and at the executive level after they had been initially cautious.
- AMD is investigating Android for tablets
- Mediatek is driving Android into lower cost areas
- Marvell has enabled Android for a while already for tablets and mobile devices. It recently has made probably one of the bolder moves of the top 5 fabless players. With Kinoma they acquired a maker of software which augments Android, As quoted by the Wall Street Journal on Kinomaâs page, it allows to âbetter navigate media-related Web services â without having to buy a new mobile deviceâ. From a fabless semi perspective, augmentation of Android gives Marvell an edge in the pack of chips supporting open source. Not only can they make sure Android runs effectively on their silicon (like Qualcomm as described above), they now can also drive how their chips best support Kinoma on top of Android, essentially wrestling themselves back into monetization via the software their devices enable.
It turns out that for semiconductor providers the life outside of Apple is quite interesting. Embedded software is the key enabler and as shown above the top five fabless companies have realized this and are running with it. Oh, why do I care? The system-level tools I am involved in are the bridge between hardware and embedded software. Chip developers desperately need system-level design methodologies to optimally utilize and monetize the trends above.
There is a reason why we are showing Android running on virtual platforms in our cloud demos âŚ
As always â I am looking forward to your comments âŚ
Posted in Embedded Software, ESL Market, Wireless | 1 Comment »
Posted by Johannes Stahl on 23rd February 2010
The Barcelona sun finally starts to arrive and helps to put the serious business being conducted here into a supportive environment. The best deals are being cut at the outside coffee table. The forward looking roadmap conversations happen by sitting together on the fountain walls.
Mobile is a massive business. Indian software services company WIPRO employs about 1,100 engineers in the mobile practice software services alone. As their general manager Arvind Jayabal points out they prefer doing their work in the fully green oriented WIPRO facilities rather than being forced to work at their international customers facilities. One forcing function for that is the infrastructure to develop software, like specific development board, which may only be available in limited quantities and locations. Virtualization of electronic platforms should be able to solve this problem soon.
Not less massive â from a booth perspective – is the appearance of Microsoftâs new Windows Mobile OS. Even on day 3 a faithful crowd of visitors listen to what the moderator has to say about the great features of managing your social life. You can aggregate all of your friendâs data from your own address book, calendar and FaceBook. Looks very cool. Many people are listening to this while happily typing an e-mail on their Blackberry or checking FaceBook on their iPhonesâŚ.
Mobile video remains an interesting topic throughout the show. CEVA showcases their newest flagship, dual core DSP. The two DSPs are actually performing different tasks within video processing and have been optimized for those using the latest processor design technologies in this area. The CEVA CTO, Erez Barniv, points out proudly that a full rate 1080p HD video can run on an FPGA implementation of their DSP at just 50 MHz clock speed. This provides a promising outlook to using this new core for actual handset chips. DSP industry analyst Will Strauss stops at the demo and is significantly impressed by the technology as well.
Cambridge based mobile IP leader ARM is presenting several netbook products in their booth. More and more of their Chinese customers require them to predict performance for a specific set of target product constraints. ARM is addressing this through their sophisticated traffic generation tools combined with their partners providing the exploration and modeling technologies for ARMâs interconnects. They also point out that significant breakthroughs on the software side are necessary to keep their Santa Clara competitor on a distance in their home market. âThey told us, before you can do Flash, you canât sell real computers. Now we have it. What is their next challenge?â
The green topic in terms of power consumption continues in the infrastructure market. If you are dialing 911 from your cell phone in the US your location information should better be true. TruePosition is the provider of pizza box sized electronics that AT&T and T-Mobile are putting on their basestation towers to calculate your position from relaying several basestation measurement data. Many of these types of infrastructure systems are today being implemented using a combination of FPGAs and DSPs. The race for getting all the âgreen contentâ is on between the TI and Freescale and Xilinx and Altera. In the end only the innovation of the system OEMs to advanced algorithms, software implementation, hardware implementation or custom processor design is making the green difference. The semiconductor companies just deliver the basic ingredients.
Away from the business discussion into the consumer view again one booth caught a significant attention, mostly because of clever marketing. The booth for âPowermatâ was entire closed with the exception of a small entrance where customer had to line up for badge scanning. The process was deliberately slow, so a busy line would form. The product concept? Put your Smartphone into an additional protection sleeve that contains a power plug and a wireless charging device. Carry around a much bulkier phone all day so that when you come home you can just drop it on the Powermat, where it charges. Spend lots of dollars on ânew sleevesâ for each of your device and discard the included charged from your device. If they can stay in business until the phone manufacturers will include the technology into the standard phone package this maybe interesting.
In the end business managers return satisfied from the show. It is a worthwhile concentration of decision makers in the industry. They have their calendars marked for 2011 already.
Posted in Shows and Events, Wireless | No Comments »
Posted by Johannes Stahl on 20th February 2010
Orientation on the second day is a lot easier. Enter hall 8 where the titans of the industry play. Make a right at docomo, go straight to Research in Motion and head straight into leader Nokia? Hold on, Nokia was not exhibiting this year at the event! They offered a comfortable Rikscha ride from the Fira to their meeting place. Even though they refrained from the race to show new hardware, they made a significant software announcement with Intel to merge their Linux efforts into one. This again underpins Intel being serious about their Atom strategy for the mobile market.
So what was the stretch in this day? It was the low-end to high-end stretch. On the high end you would find small software players such as a Swedish company, Ikivo, specializing in high performance user interfaces for selecting from your address book or list of songs. Or specialized IP companies like Chips & Media from Korea producing high performance video IP. Of course the big semiconductor companies play in the performance game, such as TI with their OMAP processors. You wouldnât expect that this processing power is actually needed to drive something as simple looking as an eBook reader, where the display update speed for the sophisticated low power displays is heavily influenced by the digital signal processing done by the processor. What do all of these examples have in common? Itâs the combination of performance of software and hardware. It is critical for this industry to optimize both. Many times it can be done using virtualization technologies sometimes it will require additional subjective testing for the final selection as well.
On the low-end Vodafone announced the $20 retail phone (note â this is without subsidies). Customers can do voice and SMS with it. Imagine the amount of hardware optimization that will produce silicon at that cost level. Not only phones need to be extremely cheap to serve the underdeveloped areas, the network infrastructure needs to very affordable as well. Indian developer VNL demonstrated the low cost, rural area GSM infrastructure, which is using solar powered repeaters to get the GSM signal out into the country side. They are able to provide network operators with revenue even at ARPU of $2. Here the simulation of the physical layer for GSM is critical as it determines how far the operator can stretch the equipment. The chairman of the company told me that a local team of construction people can put the battery, solar and antenna on a roof top in just under 4 hours.
If you think the hardware and software content solely drive the technology edge, Samsung proves that you are mistaken. Their âWaveâ phone displays the brightest color with the lowest reflection and the easiest touch in the industry. It doesnât look like they will license their âsuper-AMOLEDâ technology anytime soon to their Cupertino based Smartphone competitor.
Posted in Shows and Events, Wireless | No Comments »
Posted by Johannes Stahl on 16th February 2010
For those US visitors that came to the Fira de Barcelona this year with the blurred vision from comparing coverage maps in the never ending Verizon vs. AT&T commercials, they were up for a surprise! Vodaphone, the European operator counterpart, is much less embarrassed to push Femtocells as the recipe against missing coverage. Of course all of us in the software industry have known this trick for years, turning a bug into a feature.
This yearâs MWC event is again the marketplace for the mobile world of tomorrow. 45,000+ attendees are lining up in front of the newest gadgets and applications (and the spare foodcourts). One would think that the most useful innovations are the software applications, such as the next Dolby implementation for mobile devices demonstrated in comfortable chairs playing Avatar trailers. The most eye popping innovation today actually was the concept demo from Japanese leader docomo. They showed a headset picking up the eye movements of the user to control the connected audio device operation. There was still room for improvement though as the poor Japanese engineer demonstrating it had to work pretty hard with his eyes. A lot more pleasant to look at was the concept packaging for the next generation phones from docomo. It was a handy roundish shape and it was made out of spare wood produced as a natural product of thinning out the Japanese forests. Already today you can buy âthe leafâ, a biodegradable protection for your iPhone, made in green Ireland. It will disappear in your backyard in 1-5 years â but donât try this with your iPhone itself.
Letâs come back to the capacity question. Aditya Kaul from ABI research was hired by the Femtocell Forum to present on trends for these new pieces of infrastructure that today help out operators with coverage, but could become the panacea for their capacity problem. From today until 2015 it is predicted that the gap between peak and average capacity offered by the basestations deployed will increase 90-fold. That means for people living in dense areas, they may show five bars of signal strength on their Smartphones, but they will never get their 1080p movie to upload to their FaceBook page because of lacking local network capacity. For 2010 ABI predicts only 1,000,000 units of Femtocells shipped world-wide, but this number may need to increase dramatically.
Another way of increasing the capacity is being demonstrated by the wireless patent producer Interdigital Communications. Their VP Air Interface and RF Systems, Ariela Zeira, explains at their booth about advanced handover using âfuzzy cellsâ or traffic aggregation mixing cellular and WiFi transports to maximize bandwidth.
Also Xilinx is happily positioning their LTE Targeted Design Platform for the entire range of eNodeB designs including Femtocells. If you walk onto their booth and get a demonstration of their reference design they will point out that âyou will not find a DSP as part of our solution, it is all being done with IP implemented in Virtex-6â. I kind of expected that, but was disappointed not to see a power meter for their solution, which would have put their product right into the context of the other green solutions I mentioned before.
Finally the participants are not greeted by a green, warm spring. Coming in transit from the winter-stricken Germany, I had hoped for something much better. Well, back into the busy halls of the MWC then, tomorrow.
Posted in Shows and Events, Wireless | No Comments »
Posted by systemleveldesign on 29th July 2009
This week CoWare has been pleased to welcome Victor Leonov, distinguished member of technical staff, Motorola Mobile Devices and user of CoWare Platform Architect, to the CoWare DAC booth as a expert guest speaker on architecture design. His presentation, Achieving Optimal Cost-performance Balance in Advanced Wireless Modem Chipsets using Stochastic Simulation, was of high interest to SoC system architects and project managers here at the show.
Motorola uses CoWareâs ESV environment to analyze system architecture and optimize system performance of the next generation wireless modem chipset for Motorola mobile phones. The key design challenge during product planning was to confirm, as early as possible, that a single modem SoC was able to support the performance requirements of a complete portfolio of handsets, without overdesigning the modem SoC. The results of the project are impressive:
- Motorolaâs chipset architecture was optimized to meet all product tiersâ corner use cases
- Itâs product architecture fits into three groups of performance-critical HW configurations
- Each configuration meets targeted product cost
- Final product exceeds targeted performance by approximately 10%
Visit the booth Wednesday morning at 11am for more details!
Posted in Embedded Software, Wireless | No Comments »
Posted by Johannes Stahl on 6th February 2009
While some of you in the US may be scrambling to get your old Mickey Mouse antenna replaced for the switch over to HD-Digital TV, a group of companies owning a huge amount of spectrum is preparing to get you going with HD content on your mobile devices. The wireless operators around the world, the AT&Ts, Vodafones and Docomos, are working on putting the final touches on a new standard called LTE (Long Term Evolution), which will provide 100Mbit/s peak performance providing access to the internet at warp speed, even while travelling at 200 miles/hour in the Shinkansen train. Along with that goal for the standard, the base station providers and cell phone manufacturers have to reinvent their platforms. Simple scaling of the previous architectures does not work.
Â
Where does this new standard put the biggest pressure? It’s the semiconductor companies in the wireless space. They are redoing their architectures to deliver the scalability and much higher speeds as compared to the previous generation (HSPA), which is deployed in the market today. Even if you are not into wireless design, by taking a look at the required 5-10x performance delta gives you an idea of the design challenge (Peak data rate 100Mbps vs. 14 Mbps today, latency 5 ms vs. 50 ms today, broadcast data rate improvement 8x)
Â
What does it mean for the design? Most design teams would be tempted to design a lot more optimized signal processing hardware, but by the time they would be done with that, the standard will be moving towards LTE-Advanced (1Gbit/s peak rate). Also, the flexibility of the operation of LTE does not lend itself to fixed architecture. So, what should you expect to happen in these leading-edge design teams? They will use processors wherever possible. Standard cores, customizable cores and dedicated cores will be used to differentiate their architecture in terms of power and performance. This is multi-design at its finest and, of course, with a huge amount of design challenges for the performance optimization of the architecture and the software.
Â
Is this all worth it for the semiconductor industry? Well, the operators certainly believe so. According to ABI Research’s senior analyst Nadine Manjaro, “ABI Research believes that NTT will also deploy LTE in Japan in 2009. We forecast that by 2013 operators will spend over $8.6 billion on LTE base station infrastructure alone. For operators that have already deployed 3G networks, LTE will be a key CAPEX driver over the next five years.”
Â
Interested in the most challenging designs around the world? Then quickly learn about LTE!
Posted in Wireless | No Comments »
|
| © 2012 Synopsys, Inc. All Rights Reserved. |
|
|
|
|
|