Archive

Posts Tagged ‘armv8’

HTC Desire 510 Smartphone Could Be the First 64-Bit ARM Android Device

September 3rd, 2014 3 comments

We’ve had 64-bit ARM servers for a few months, but the first consumer grade 64-bit ARM products should be smartphones, starting with HTC Desire 510. This entry-level / mid-range phone will feature Qualcomm Snapdragon 410 ARM Cortex A53 processor with 1GB RAM, 8GB storage, and a 4.7″ display with 854 x 480 resolution.

HTC_Desire_510HTC Desire 510 technical specifications:

  • SoC – Qualcomm Snapdragon 410 quad core ARM Cortex A53 processor @ 1.2Ghz with Adreno 306 GPU
  • System Memory – 1GB RAM
  • Storage – 8GB + micro SD slot (up to 128GB)
  • Display – 4.7″ FWVGA display (854×480)
  • Cellular Networks
    • 2G/2.5G – GSM/GPRS/EDGE – 850/900/1800/1900 MHz
    • 3G/3.5G – WCDMA – 850/900/2100 MHz with HSPA+ up to 42 Mbps
    • 4G – LTE – B3/B7/B20
    • micro SIM
  • Connectivity – 802.11 b/g/n Wi-Fi, Bluetooth 4.0, GPS + GLONASS
  • Camera – 5MP rear camera, 0.3MP front camera
  • USB – micro USB 2.0 port
  • Sensor – Accelerometer, proximity sensor, ambient light sensor
  • Battery – 2,100 mAh Li-Ion battery. Talk time (3G): 17 hours. Standby time (3G): Up to 646 hours.
  • Dimensions – 139.9 x 69.8 x 9.99 mm
  • Weight – 158 grams

HTC Desire 510 runs Android 4.4.2 KitKat with HTC Sense software including BlinkFeed and support for HTC’s Dot View case. I’m not even sure it’s running a 64-bit version of Android 4.4 (is there one?), so it will hopefully be upgrade to Android L in due time.

There’s currently no information about price, but it should be available soon. Other upcoming phones based on Snapdron 410 64-bit processor include Huawei G621, Lenovo A805e, and Samsung Galaxy Mega 2. Devices is more powerful ARM Cortex A57 cores should be available in 2015.

Via Liliputing

Digg This
Reddit This
Stumble Now!
Buzz This
Vote on DZone
Share on Facebook
Bookmark this on Delicious
Kick It on DotNetKicks.com
Share on LinkedIn
Bookmark this on Technorati
Post on Twitter

Linaro 14.08 Release with Kernel 3.16 and Android 4.4.4

September 2nd, 2014 No comments

I’m a little late for that one, as Linaro 14.08 was released last Thursday. Nevertheless, this release features Linux kernel 3.16 (baseline), Linux 3.10.52 (LSK), and Android 4.4.4.

As usual Linaro has worked on member hardware such as Qualcomm based IFC6410 and ARM Juno &Vexpress boards. They’ve also committed changes for LLVM, big Endian, and added a workload generator tool (rt-app) to the Ubuntu and Android image. This tool has been developed and used by the power management working group, presumably to measure and optimize power consumption under various loads.

Here are the highlights of this release:

  • Linux Linaro 3.16-2014.08
    • GATOR version 5.19 (new version)
    • updated topic from Qualcomm LT (ifc6410 board support)
    • updated Versatile Express ARM64 support (FVP Base and Foundation models, Juno) from ARM LT (Landing Team)
    • updated Versatile Express patches from ARM LT
    • updated LLVM topic (follows the community llvmlinux-latest branch)
    • Big endian support (the 2014.05 topic version rebased to 3.16 kernel)
    • config fragments changes: CONFIG_DEBUG_INFO=y added to linaro-base.conf. This is needed to get the debug package containing vmlinux to be built, and vmlinux is required to run perf.
  • Linaro Toolchain Binaries 2014.08 – Based on GCC 4.9, and updated to latest Linaro TCWG releases:
    • Linaro GCC 4.9-2014.08
    • Linaro EGLIBC 2.19-2014.08
    • Linaro binutils 2.24-2014.08
    • Linaro GDB 7.8-2014.08
  • Linaro Android 14.08 – Built with Linaro GCC 4.9-2014.08
  • Linaro OpenEmbedded 2014.08
    • integrated Linaro GCC 4.9-2014.08, Linaro EGLIBC 2.19-2014.08, Linaro binutils 2.24-2014.08, and Linaro GDB 7.8-2014.08
    • added rt-app (contributed from Power Management WG)
    • updated GATOR to 5.19,  LSK kernels, and QEMU to 2.1.0
    • fixed boot wrapper build
    • upstreaming:
      • fixed kexec-tools
      • fixed udev startup script to fix mysql launch failure
      • updated PM QA to 0.4.12
      • fixed PHP build
      • fixed hugetlbfs
  • Linaro Ubuntu 14.08
    • added rt-app
    • updated packages: GATOR 5.19, LSK 3.10.52/3.14.16 and linux-linaro 3.16 kernels.
  • KVM ARMv8 Continuous Integration and Testing is completed
  • Make debug symbols available for Versatile Express ALIP image

You can visit https://wiki.linaro.org/Cycles/1408/Release for a list of known issues, and further release details about the LEB, LMB (Linaro Member Builds), and community builds, as well as Android, Kernel, Graphics, Multimedia, Landing Team, Platform, Power management and Toolchain components.

Digg This
Reddit This
Stumble Now!
Buzz This
Vote on DZone
Share on Facebook
Bookmark this on Delicious
Kick It on DotNetKicks.com
Share on LinkedIn
Bookmark this on Technorati
Post on Twitter

Samsung Exynos 7 ARM Cortex A57 Processor Linux Code Submitted

August 28th, 2014 6 comments

Samsung has not announced any 64-bit processor yet, but according to a recent patchset Exynos 7 may be their first 64-bit ARM SoC, and it will be based on the faster Cortex A57 cores. A quick way to learn a little more is to check the device tree file (exynos7.dtsi).

Samsung_Exynos_7Here’s an interesting snippet:

+	cpus {
+		#address-cells = ;
+		#size-cells = ;
+
+		cpu@0 {
+			device_type = "cpu";
+			compatible = "arm,cortex-a57", "arm,armv8";
+			reg = ;
+		};
+	};

As it stands, Exynos7 would be a single core Cortex A57 processor. This sounds unlikely that a company would launch a single core processor at this stage, so it’s probably early code that may not support all cores just yet.  We also know Samsung uses ESPRESSO board for development with Samsung Exynos 7 processor and 3 GB RAM.

Thanks to David for the tips.

Digg This
Reddit This
Stumble Now!
Buzz This
Vote on DZone
Share on Facebook
Bookmark this on Delicious
Kick It on DotNetKicks.com
Share on LinkedIn
Bookmark this on Technorati
Post on Twitter

How to Build and Run Android L 64-bit ARM in QEMU

August 23rd, 2014 12 comments

Most people can’t afford Juno Cortex A57/A53 development board, and mobile processors based on the latest 64-bit ARM cores are only expected by early 2015. But thanks to a small team at Linaro, you can now build and run Android L 64-bit ARM in the latest version of QEMU that supports Aarch64. Alex Bennée, an engineer working for Linaro, wrote a blog post in Linaro’s Core Dump blog explaining the Android emulator is actually based on QEMU,  the differences compared to mainline QEMU, the work they’ve done on Android L at Linaro, and most importantly, provided the basic steps showing how to build and try Android L 64-bit ARM (ARMv8) in QEMU. I’ve just done that, but unfortunately, albeit the builds complete, I could not manage to start Android L in QEMU yet. [Update: working now]. If you want to give it a try, you’ll need a Linux PC, and patience, as it may take about one day to retrieve the source code, and build everything from source.

Android_L_64-bit_ARM_QEMU

I’ve done all this in a computer running Ubuntu 14.04 with an AMD FX8350 processor and 16 GB RAM.

First, you’ll need to install an ARM 64-bit toolchain, some dependencies, and tools:

sudo apt-get install gcc-aarch64-linux-gnu build-essentials git bison zlib1g-dev \
libglib2.0-dev libpixman-1-dev gperf android-tools-adb vncviewer

The next step is to cross-compile a Linux 3.10 kernel for Android:

mkdir -p ~/edev/linaro
git clone https://git.linaro.org/people/christoffer.dall/linux-android.git
cd linux-android
git checkout ranchu-linaro-beta1

There’s a bug include the current version of the toolchain in Ubuntu 14.04 (https://bugs.launchpad.net/linaro-linux-baseline/+bug/1258013) which prevents the build to complete. You can either remove CONFIG_DEBUG_INFO=Y in arch/arm64/configs/ranchu_defconfig (I did that), or update your toolchain. Let’s complete the build:

ARCH=arm64 make ranchu_defconfig
ARCH=arm64 make CROSS_COMPILE=aarch64-linux-gnu- -j8

Now you need to build the Android Open Source Project (AOSP). If you haven’t done so, you’ll have to install the repo tool:

mkdir ~/bin
PATH=~/bin:$PATH
curl https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repo
chmod a+x ~/bin/repo

Then get AOSP source code (master as below, or l-preview branch):

cd ..
mkdir AOSP
repo init -u https://android.googlesource.com/platform/manifest
repo sync

The last step can take a few hours depending on your internet connection to Google servers.
Now download and apply a patch made by Linaro:

wget http://people.linaro.org/~christoffer.dall/linaro-devices.tar.gz
tar -xvf linaro-devices.tar.gz

Possibly configure git:

git config --global user.email "[email protected]"
git config --global user.name "Your Name"

You need to apply a patch for qemu:

pushd system/core
wget http://people.linaro.org/~alex.bennee/android/android-init-tweaks.diff
patch -p1 < android-init-tweaks.diff 
popd

And build Android L for ARMv8:

source build/envsetup.sh
lunch ranchu-userdebug
m -j8

The last step will again take a while. It took my machine 2 or 3 hours, and the total time was actually a bit more than than as my PC suffered two thermal shutdowns during the build, and I had to restart the build twice. The last time, I decided to underclock my CPU to 3.4 GHz, and the build went through.

The last step before running Android L is to build QEMU:

cd ..
git clone https://git.linaro.org/people/peter.maydell/qemu-arm.git
cd qemu-arm
git checkout ranchu-linaro-beta1
make -j8

Builds should now all be successfully complete. We just need to create some symlinks helping to shorten qemu command line, start the ADB server, and run QEMU:

cd ..
ln -s linux-android/arch/arm64/boot/ ranchu-kernel
ln -s AOSP/out/target/product/ranchu/ ranchu-build
adb start-server
./qemu-arm/aarch64-softmmu/qemu-system-aarch64 -cpu cortex-a57 -machine type=ranchu -m 4096 \
-kernel ./ranchu-kernel/Image -append 'console=ttyAMA0,38400 keep_bootcon' -monitor stdio \
-initrd ranchu-build/ramdisk.img -drive index=2,id=userdata,file=ranchu-build/userdata.img \
-device virtio-blk-device,drive=userdata -device virtio-blk-device,drive=cache \
-drive index=1,id=cache,file=ranchu-build/cache.img -device virtio-blk-device,drive=system \
-drive index=0,id=system,file=ranchu-build/system.img -netdev user,id=mynet \
-device virtio-net-device,netdev=mynet -show-cursor

That’s the output I get:

QEMU 2.0.50 monitor - type 'help' for more information
console on port 5554, ADB on port 5555
VNC server running on `127.0.0.1:5900'

So it’s quite possible there’s a problem with adb, but Google did not help, and I failed to go further. More detailed instructions will soon be posted in Linaro Wiki, so I may be able to find out where I made a mistake once it’s posted.

Finally, start vncviewer to access Android user’s interface:

vncviewer 127.0.0.1:5009

Here’s a screenshot of the “About Device” menu in Android L 64-bit ARM running in QEMU.
Android_64-bit_ARM_Qemu

Digg This
Reddit This
Stumble Now!
Buzz This
Vote on DZone
Share on Facebook
Bookmark this on Delicious
Kick It on DotNetKicks.com
Share on LinkedIn
Bookmark this on Technorati
Post on Twitter

More Technical Details & Benchmarks about Nvidia Tegra K1 “Denver” 64-bit ARM SoC

August 12th, 2014 1 comment

The 32-bit version of Nvidia Tegra K1 have generally received good reviews in terms of performance, especially GPU performance, and the company has also provided good developer’s documentation and Linux support, including open source drivers for the Kepler GPU (GK20A) found in the SoC. But as initially announced, Tegra K1 with also get a 64-bit ARM version codenamed “Denver”, and Nvidia provided more details at Hotchips conference.

Nvidia_Tegra_K1_Denver_CPU
The 64-bit Tegra K1 will still feature a 192-core Kepler GPU, but replace the four ARM Cortex A15 cores found in the 32-bit version, by two ARMv8 “Project Denver” cores custom-designed by Nvidia. The multi-core performance of the dual core 64-bit Tegra K1 @ 2.5 GHz may end up being equivalent to the quad core 32-bit Tegra K1 @ 2.1 GHz, but the single core performance will be much better thanks to a  a 7-way superscalar microarchitecture (vs 3-way for Cortex A15), as well as 128KB L1 instruction cache, 64KB  L1 data cache, and a 2MB L2 cache.

To further improve performance, Nvidia implemented a new technique called “Dynamic Code Optimization” that optimized frequently used routines into “tuned microcode-equivalent routine”, and store then in a 128MB dedicated optimization cache in the main memory. The software is done by software the first time, as the optimization overhead is said to be outweighed by the performance gains due to optimized code. Dynamic Code Optimization works with all standard ARM-based applications, requiring no customization from developers, and without added power consumption versus other ARM mobile processors.

Adding new low latency power-state transitions (CC4 Cluster retention), extensive power-gating and dynamic voltage and clock scaling based on workloads, Nvidia claims their dual core 64-bit Tegra K1 processor will outperform existing quad and octa core processor on most mobile workload, and it should even rival mainstream PC-class CPUs with much lower power consumption. You can find some benchmark results below comparing Tegra K1 32-bit performance to Tegra K1 Denver, Celeron N2910 (Bay Trail), Apple A7, Qualcomm Krait-400, and Haswell Celeron 2955U.

Nvidia Tegra K1 64-bit Benchmarks Against Competition (Click to Enklarge)

Nvidia Tegra K1 64-bit Benchmarks Against Competition (Click to Enlarge)

Another good news is that Denver will be pin-to-pin compatible with the original Tegra K1, which should make it pretty easy for OEMs to upgrade their products. Nvidia is currently working on Android “L” the 64-bit Tegra K1, and products should be available by the end of the year. You can find more details on a white paper called “NVIDIA Charts Its Own Path to ARMv8

Digg This
Reddit This
Stumble Now!
Buzz This
Vote on DZone
Share on Facebook
Bookmark this on Delicious
Kick It on DotNetKicks.com
Share on LinkedIn
Bookmark this on Technorati
Post on Twitter

Linux 3.16 Released

August 6th, 2014 3 comments

Linus Torvalds announced the release of Linux Kernel 3.16 over the week-end:

So nothing particularly exciting happened this week, and 3.16 is out there.

And as usual (previous release being the exception) that means that the merge window for 3.17 is obviously open. And for the third time in a row, the timing sucks for me, as I have travel coming up the second week of the merge window. Many other core developers will be traveling too, since it’s just before the kernel summit in Chicago.

So we’ll see how the next merge window goes, but I’m not going to worry about it overmuch. If I end up not having time to do all the merges, I might delay things into the week of the kernel summit, but I’ll hope to get most of the big merging done this upcoming week before any travel takes place, so maybe it won’t come to that. So this is just a heads-up that the merge window *might* be extended.

Anyway, back to the changes since -rc7: it’s really fairly small stuff randomly all over, with a third being architecture updates, a third drivers, and a third “misc” (mainly mm and networking). The architecture stuff is small ARM updates (mostly DT), some x86 Xen fixups, some random small powerpc things. The shortlog gives a good idea of what kind of stuff it all is, but it’s really just 83 commits (plus merges and the release commit) and about a third of them are marked for stable.

So while 3.16 looked a bit iffy for a while, things cleared up nicely, and there was no reason to do extra release candidates like I feared just a couple of weeks ago.

Linus

Kernel 3.15 brought various file systems improvements, faster resume from suspend, etc… Some of Linux 3.16 main changes include:

  • Various KVM improvements: optimizations, support for migration, and GDB support for s390, little-endian support for POWER8, as well as MIPS improvements.
  • Xen – Virtual network interfaces now have multi-queue support for much better performance.
  • Goldfish virtual platform now has 64-bit support.
  • Hugepage migration has been turned off for all architectures except x86_64 since it is only tested on that architecture and there are bugs for some of the others.
  • Automatic NUMA balancing has been turned off for 32-bit x86. Existing 32-bit NUMA systems are not well supported by the code and the developers did not think the effort to support them would be worthwhile.
  • EFI – The kernel EFI code will now handle Unicode characters, and initial support for ARM64 (aarch64) had been added.
  • NFS – Patches to make loopback NFS mounts work reliably have been merged through the NFS tree.  External data representation (XDR) handling in NFS has been reworked to support access control lists (ACLs) larger than 4KB. It also returns readdir() results in chunks larger than 4KB giving better performance on large directories.
  • Modules now have the read-only (RO) and no-execute (NX) bits set on their data sections much earlier in the loading process, before parsing any module arguments. This will further reduce the time window in which a misbehaving (or malicious) module can modify or execute its data.
  • Support for TCP fast open over IPv6 has been added.
  • Support for busy polling on stream control transmission protocol (SCTP) sockets has been added. Busy polling is set on a socket using the SO_BUSY_POLL socket option; it can reduce the latency of receives on high-traffic interfaces that support the option.

New features and improvements specific to the ARM architecture include:

  • AllWinner – All platforms: AXP20x PMIC and MMC support, 5 drivers + SMP reworked for AllWinner A31, touchscreen drivers for AllWinner A10. DTS added for Mele M9 and R7. You can read details about AllWinner changes here.
  • Rockchip – RK3xxx SoC I2C drivers
  • Xen on ARM systems now supports suspend and resume.
  • Hibernation support added for ARM targets.
  • Initial support for ARM64 (aarch64) had been added
  • SMP support has been added for Marvell Armada 375 and 38x SoCs. SMP has been reworked for the Allwinner A31 SoC.
  • New ARM SoC added: ST Microelectronics STiH407; Freescale i.MX6SX; Samsung Exynos 3250, 5260, 5410, 5420, and 5800; and LSI Axxia AXM55xx.
  • Nouveau driver has initial support for NVIDIA Tegra K1 GK20A devices.
  • Various changes for Atmel AT91, Marvell Armada, Fresscale i.MX, Samsung Exynos, and TI AM43xx SoCs.

Further details on Linux 3.16 will eventually be available on Kernelnewbies.org. For more details about ARM changes, remember to also check ARM architecture and drivers sections.

Digg This
Reddit This
Stumble Now!
Buzz This
Vote on DZone
Share on Facebook
Bookmark this on Delicious
Kick It on DotNetKicks.com
Share on LinkedIn
Bookmark this on Technorati
Post on Twitter

Linaro 14.07 Release with Linux Kernel 3.16 and Android 4.4

August 1st, 2014 No comments

Linaro 14.07 has just been released with Linux Kernel 3.16-rc6 (baseline), Linux Kernel 3.10.50 (LSK), and Android 4.4.4.

This month, Linaro has continued development on Juno 64-bit ARM development board, as well as other member boards from Broadcom (Capri), Qualcomm (IFC6410), Hisilicon D01, Samsung (Arndale / Arndale Octa), etc.. Android have been upgraded to version 4.4.4 with images released for Pandaboard, Arndale, Nexus 10, and Nexus 7, built with Linaro GCC 4.9.

Here are the highlights of this release:

  • Linux Linaro 3.16-rc6-2014.07 released
    • GATOR version 5.18 (same version as in 2014.04)
    • updated basic Capri board support from Broadcom LT. Good progress in upstreaming the code: now the topic has 21 patch on top of v3.16-rc4 vs 53 patches on top of v3.15 in 2014.06 cycle
    • removed cortex-strings-arm64 topic as the code is accepted into the mainline
    • new topic from Qualcomm LT to add IFC6410 board support
    • updated Versatile Express ARM64 support (FVP Base and Foundation models, Juno) from ARM LT. cpufreq support for Juno has been added.
    • updated Versatile Express patches from ARM LT
    • more HiP0x Cortex A15 family updates from HiSilicon LT
    • switched to mainline support for Arndale and Arndale-octa boards
    • updated llvm topic (follows the community llvmlinux-latest branch)
    • Big endian support (the 2014.05 topic version rebased to 3.16 kernel)
    • removed ftrace_audit topic as the code is accepted into the mainline
    • config fragments changes – added ifc6410.conf
  • Linaro Toolchain Binaries 2014.07 released – Based on GCC 4.9 and updated to latest Linaro TCWG releases:  Linaro GCC 4.9-2014.07 & Linaro binutils 2.24.0-2014.07
  • Linaro Android 14.07 released
    • built with Linaro GCC 4.9-2014.07
    • Pandaboard, Arndale, Nexus 10, Nexus 7 upgraded to Android 4.4.4.
    • LSK Engineering build moved back to 4.4.2.
    • Android LSK v3.14 CI loop added
  • Linaro OpenEmbedded 2014.07
    • Integrated Linaro GCC 4.9-2014.07
    • Integrated Linaro EGLIBC 2.19-2014.07
    • Integrated Linaro binutils 2.24.0-2014.07
    • Upstreaming:
      • fixes recipes related to oe-core autotools update
      • cleaned up overlayed recipes
      • updated PM QA to 0.4.12
  • Linaro Ubuntu 14.07 released
    • added gstreamer 1.0
    • updated packages: ARM trusted firmware (support latest FVP models), PM QA (0.4.12), LSK 3.10.49/3.14.13 and linux-linaro 3.16-rc6 kernels.
  • Integrate ARMv8 Big endian systems into LAVA and CI
  • Migrate Linaro Android builds to 4.9 Linaro toolchain
  • LSK: add ARMv8 kernel + arm32 rootfs CI loop
  • Package rt-app
  • LSK: enable member kernel configs for build testing

You can visit https://wiki.linaro.org/Cycles/1407/Release for a list of known issues, and further release details about the LEB, LMB (Linaro Member Builds), and community builds, as well as Android, Kernel, Graphics, Multimedia, Landing Team, Platform, Power management and Toolchain components.

Digg This
Reddit This
Stumble Now!
Buzz This
Vote on DZone
Share on Facebook
Bookmark this on Delicious
Kick It on DotNetKicks.com
Share on LinkedIn
Bookmark this on Technorati
Post on Twitter