Jump to content

Allwinner R40 -- some already available information


tkaiser

Recommended Posts

R40 is a new SoC from Allwinner known as 'quad-core A20 successor' (link to datasheet). It shares most hardware details with A20 (true SATA, GbE -- EMAC and GMAC listed separately -- 2 USB2.0 host ports, one USB OTG, and fortunately also PMIC/battery support (link to AXP221s datasheet).

 

Unfortunately Allwinner chose a manufacturing partner known for never providing exact specs/info to produce the first R40 device available. So we won't get any info about performance and working hardware features unless we buy this device on our own and test.

 

I just had a quick look into one already released OS image 'funnily' based on one of our Armbian OS images for a H3 board:

 

 

root@orangepiplus2e:/mnt/sdb2/boot# ls -la
total 3076
drwxr-xr-x  3 root root    4096 May 15 08:50 .
drwxr-xr-x 23 root root    4096 Sep 27 02:45 ..
-rw-r--r--  1 root root    6944 Apr 30 17:51 boot.bmp
-rw-r--r--  1 root root    2372 Apr 30 17:51 boot.cmd
-rw-r--r--  1 root root    2444 Apr 30 17:54 boot.scr
drwxr-xr-x  2 root root    4096 May  5 02:06 firmware
lrwxrwxrwx  1 root root      22 Apr 30 17:51 script.bin -> bin/bananapim2plus.bin
-rw-r--r--  1 root root 3115776 Apr 30 17:50 uInitrd
-rw-r--r--  1 root root     180 May 15 08:36 .verbose
lrwxrwxrwx  1 root root      21 Apr 30 17:50 zImage -> vmlinuz-3.4.112-sun8i
root@orangepiplus2e:/mnt/sdb2/boot# cat boot.cmd 
gpio set PL10
gpio set PG11
setenv machid 1029
setenv bootm_boot_mode sec
if ext4load mmc 0 0x00000000 /boot/.verbose
then
setenv verbosity 7
else
setenv verbosity 1
fi
setenv bootargs "console=tty1 root=/dev/mmcblk0p1 rootwait rootfstype=ext4 cgroup_enable=memory swapaccount=1 sunxi_ve_mem_reserve=0 sunxi_g2d_mem_reserve=0 sunxi_no_mali_mem_reserve sunxi_fb_mem_reserve=16 panic=10 consoleblank=0 enforcing=0 loglevel=${verbosity}"
#--------------------------------------------------------------------------------------------------------------------------------
# Boot loader script to boot with different boot methods for old and new kernel
#--------------------------------------------------------------------------------------------------------------------------------
if ext4load mmc 0 0x00000000 /boot/.next || fatload mmc 0 0x00000000 .next || ext4load mmc 0 0x00000000 .next
then
# sunxi mainline kernel
#--------------------------------------------------------------------------------------------------------------------------------
ext4load mmc 0 0x49000000 /boot/dtb/${fdtfile} || fatload mmc 0 0x49000000 /dtb/${fdtfile} || ext4load mmc 0 0x49000000 /dtb/${fdtfile}
ext4load mmc 0 0x42000000 /boot/uInitrd || fatload mmc 0 0x42000000 uInitrd || ext4load mmc 0 0x42000000 uInitrd
ext4load mmc 0 0x46000000 /boot/zImage || fatload mmc 0 0x46000000 zImage || ext4load mmc 0 0x46000000 zImage
bootz 0x46000000 0x42000000 0x49000000
#bootz 0x46000000 - 0x49000000
#--------------------------------------------------------------------------------------------------------------------------------
else
# sunxi android kernel
#--------------------------------------------------------------------------------------------------------------------------------
ext4load mmc 0 0x43000000 /boot/script.bin || fatload mmc 0 0x43000000 script.bin || ext4load mmc 0 0x43000000 script.bin
ext4load mmc 0 0x42000000 /boot/uInitrd || fatload mmc 0 0x42000000 uInitrd || ext4load mmc 0 0x42000000 uInitrd
ext4load mmc 0 0x48000000 /boot/zImage || fatload mmc 0 0x48000000 zImage || ext4load mmc 0 0x48000000 zImage
bootz 0x48000000 0x42000000
#bootz 0x48000000
#--------------------------------------------------------------------------------------------------------------------------------
fi
# Recompile with:
# mkimage -C none -A arm -T script -d /boot/boot.cmd /boot/boot.scr 

 

 

 

BSP kernel version is 3.10.65 (just like with Pine64 a year ago):

uImage: u-boot legacy uImage, Linux-3.10.65-BPI-M2U-Kernel, Linux/ARM, OS Kernel Image (Not compressed), 6673480 bytes, Sun Sep 25 13:09:02 2016, Load Address: 0x40008000, Entry Point: 0x40008000, Header CRC: 0x1258CB35, Data CRC: 0xB92252E8

U-boot version is also the same (2014.07), an initrd and uEnvt.txt will be used (same way to specify display resolutions, HDMI is still 3, mode 10 is still 1080p and so on):

 

 

bootargs=enforcing=1 initcall_debug=0 console=ttyS0,115200n8 console=tty1 no_console_suspend board=bpi-m2u loglevel=4 root=/dev/mmcblk0p2 rw rootwait  init=/init cma=256M panic=10 consoleblank=0 bootmenutimeout=10 datadev=mmcblk0p2

# output HDMI 1080P (type:3 mode:10)
#bootargs=enforcing=1 initcall_debug=0 console=ttyS0,115200n8 console=tty1 no_console_suspend board=bpi-m2u loglevel=4 root=/dev/mmcblk0p2 rw rootwait  init=/init cma=256M panic=10 consoleblank=0 bootmenutimeout=10 datadev=mmcblk0p2 disp.screen0_output_type=3 disp.screen0_output_mode=10 disp.screen1_output_type=3 disp.screen1_output_mode=10

# output HDMI 720P (type:3 mode:5)
#bootargs=enforcing=1 initcall_debug=0 console=ttyS0,115200n8 console=tty1 no_console_suspend board=bpi-m2u loglevel=4 root=/dev/mmcblk0p2 rw rootwait  init=/init cma=256M panic=10 consoleblank=0 bootmenutimeout=10 datadev=mmcblk0p2 disp.screen0_output_type=3 disp.screen0_output_mode=5 disp.screen1_output_type=3 disp.screen1_output_mode=5 

# output HDMI 480P (type:3 mode:2)
#bootargs=enforcing=1 initcall_debug=0 console=ttyS0,115200n8 console=tty1 no_console_suspend board=bpi-m2u loglevel=4 root=/dev/mmcblk0p2 rw rootwait  init=/init cma=256M panic=10 consoleblank=0 bootmenutimeout=10 datadev=mmcblk0p2 disp.screen0_output_type=3 disp.screen0_output_mode=2 disp.screen1_output_type=3 disp.screen1_output_mode=2 

 

 

 

R40 is sun8iw11p1 in Allwinner speech (formerly known as A20E and now also known as T3 -- see this entry in 'Android device database') and it seems it's not only meant to work together with AXP22x but still AXP209 (based on initrd piped through strings)

 

The OS image also contains a binary /usr/local/bin/tinacameratest (Allwinner has some ambitions to produce an Open Source Linux OS called Tina for R40 -- strings output for the binary can be found here). In case anyone wants to dig around himself the more important stuff in blob format can also be found there.

Link to comment
Share on other sites

BTW: @sinovoip is busy producing OS images for BPi M2 Ultra as usual. It's quite interesting that they emphasize on tinacameratest capabilities:

support camera (tinacameratest app support photo / video H.264 hw encode)

 

So there's some hope that Allwinner will release working HW accelerated video encoding code for R40 (hopefully re-usable for the other SoCs too)

Link to comment
Share on other sites

BTW: TinaOS (Allwinner's 'Open Source Linux distro for the Internet of Things') seems to be available at https://github.com/tinalinux (currently only containing code for R16 which is obviously the same SoC as A33 -- compare with Olimex' github ressources for their new board). They really call the combination of an outdated u-boot 2011.09 with a smelly 3.4.39 kernel and a weird mixture of ancient OpenWRT and Android code/tools 'TinaOS' :)

 

Maybe soon here kernel 3.10.65 for R40 will appear to just have a look into.

Link to comment
Share on other sites

I checked code quickly and while it is true, that it has mostly uninterested things, it contains some interested bits. Newest 3.4.39 BSP kernel, which could also be compiled for H3. I will make a diff to see if there is anything important, but I guess not. Other interested thing is different mali framebuffer driver. Instead UMP it is using dmabuf. Probably it is not interesting for Armbian, becuase it doesn't support X11. I guess that now it can be officially added to linux-sunxi collection of userspace mali drivers.

Link to comment
Share on other sites

Great news! R40 does not contain a self-destruction feature that destroys the SoC after 3 weeks: http://forum.banana-pi.org/t/bpi-m2-ultra-test-it-running-22-days-with-ubuntu-16-04-1-lts/2351

 

(is it really newsworthy that Linux on a device has an uptime of more than 3 weeks? Or does it tell something about @sinovoip's expectations? We've several Armbian installations with +200 days uptime that are only due to kernel updates and the necessary reboots)

 

Any real information missing as expected (how hot gets the SoC for example when idle or when running cpuburn-a7, why is average load that high? Is it just @sinovoip forgetting USB OTG settings as with every other device they released so far so that it takes community to complain maybe 20 times until @sinovoip fixes stuff like this months later?). Unfortunately it still applies what I wrote above:

 

we won't get any info about performance and working hardware features unless we buy this device on our own and test.

Link to comment
Share on other sites

Guest
This topic is now closed to further replies.
×
×
  • Create New...

Important Information

Terms of Use - Privacy Policy - Guidelines