WP_Term Object
(
    [term_id] => 13
    [name] => Arm
    [slug] => arm
    [term_group] => 0
    [term_taxonomy_id] => 13
    [taxonomy] => category
    [description] => 
    [parent] => 178
    [count] => 393
    [filter] => raw
    [cat_ID] => 13
    [category_count] => 393
    [category_description] => 
    [cat_name] => Arm
    [category_nicename] => arm
    [category_parent] => 178
)
            
Mobile Unleashed Banner SemiWiki
WP_Term Object
(
    [term_id] => 13
    [name] => Arm
    [slug] => arm
    [term_group] => 0
    [term_taxonomy_id] => 13
    [taxonomy] => category
    [description] => 
    [parent] => 178
    [count] => 393
    [filter] => raw
    [cat_ID] => 13
    [category_count] => 393
    [category_description] => 
    [cat_name] => Arm
    [category_nicename] => arm
    [category_parent] => 178
)

Developing ARM v8 Code…Today

Developing ARM v8 Code…Today
by Paul McLellan on 02-13-2013 at 12:50 pm

 You are going to be developing software for an SoC that contains an ARM Cortex-A57 64-bit CPU. Or perhaps it is an SoC containing ARM’s hybrid big.LITTLE multi-core architecture that combines one or more low power cores with some high power, high performance cores to get the best of both worlds: high throughput when it is needed and low power when it is not.

The old way of doing things would be to wait for reference boards that at least contained the processor. As a Japanese engineering manager memorably told me when I asked him what they did during that waiting period, they “pretend to program.” But these days even waiting probably won’t work. No silicon implementation of the processor is likely to be available until the SoC tapes out, and a lot of the software is already meant to be ready by then.

A solution to this quandary is to use a Virtualizer Development Kit (VDK). This allows you to put together a virtual platform containing the core and key peripherals and start doing software development. And not just of the “pretend to program” type. You can actually run the binary code, set breakpoints, and debug in all the usual ways you would normally expect. In fact, since there is more visibility into what is going on inside the core, more ways that you would normally expect.

The Synopsys VDK comes with full support for Linux, Android and, for the big.LITTLE cores, task migration software. Of course an complex multi-core big.LITTLE architecture combining either ARM v7 cores (Cortex-A15/A7) or v8 cores (Cortex-A57/53) requires good analysis capabilities to optimize performance versus energy. The VDK is also integrated with debuggers from ARM themselves, from Lauterbach and from GNU. The basic idea is that all the software development can be done before the SoC is available. Moreover, for multicore designs that are inherently non-deterministic, with better control and observability and repeatability.


The VDK also contains models for the most popular DesignWare interface IP, along with device drivers and middleware. So if your SoC contains USB 3.0, USB 2.0, Ethernet GMAC, mobile storage and I2C then it is straightforward to configure a virtual platform and the operating system appropriately.


Of course ARM’s portfolio of cores isn’t static and new cores will appear in the future. Synopsys and ARM have signed a long-term collaboration agreement for VDKs going forward, ensuring that investment in development environments can be leveraged as new cores are announced.

More information on Synopsys’s VDKs is here. The full datasheet (registration required) is here. More information on the specific challenges of integrating DesignWare interface IP is here. The press release about the collaboration agreement with ARM is here.

Share this post via:

Comments

0 Replies to “Developing ARM v8 Code…Today”

You must register or log in to view/post comments.