Google Coral Notes

Google Coral is a toolkit to build products with local AI.

This topic will include an overview and review of the Coral product and software options.

We will be working with the Coral Dev Board. Below is a photo showing a comparison to a Raspberry PI:

Notes about this board:

Block Diagrams

Below is a block diagram of the SBC:

The SBC contains a Coral SOM, block diagram shown below:

Processor

Boot Mode

Connectors

Software

Repos appear to be in googlesource and github.

Mendel OS

Yocto

TPU Software

TODO.

I thought of just trying to bring up my Coral dev board with something off the net. First thing I’ve attempted is following the instructions here: Quick start guide · mirzak/meta-coral Wiki · GitHub
Things are broken for the latest Arch packages. The build requires python V2 (python2.7 to be exact) but python2 is no longer supported in the mainstream Arch repositories. I had a little better luck with an Ubuntu 22.04 distro as its packages are not as cutting edge as Arch, but ran into a problem during the compile process which I have yet to troubleshoot. Just to get bitbake to run required modification of several python files in sources/poky/bitbake/lib/bb because of recent changes to Python 3.

1 Like

We usually wrap yocto with a docker container, see the Yoe build envsetup.sh file. This way we can pick whatever host OS we need.

I don’t think modern versions of Yocto require Python2.

Those instructions are based on Zeus release of yocto which is already EOL I think once we add it to yoe distro we might be getting a more modern version of support for the coral board

@khem do you think it would be worth asking Google if they are interested in Yocto support? At least collaborating?

It would be. However I don’t know whom to ask. Perhaps supporting coral in yoe is valuable to them

maybe I’ll try to dig out a few email address in the Git repos and send something …

The Yocto images above will not compile on an up to date version of Arch without using docker. The Google provided Mandel OS image works but there are issues getting the Google demos running on my Coral board. The Coral dev board seems to be unusually picky about micro SD cards used for initial flashing. Be sure to have several on hand in case the first one doesn’t work. Also for Linux don’t follow google’s instructions for creating the uSD card, simply write the ‘flashcard_arm64.img’ file to the uSD card using dd.

1 Like

Google also has a dev board mini, which has a MediaTek 8167s SoC (Quad-core Arm Cortex-A35). Some more links for Yocto bits:

The meta-tensorflow seems to be kept reasonably up to date.

It also appears from the above that Mediatek is serious about Yocto support.

The kernel tree referred top by the meta layer:

https://coral.googlesource.com/linux-imx/

Booted the default Mendel image:

Starting kernel ...                                                                                          
                                                                                                                                                                                                                          
[    0.000000] Booting Linux on physical CPU 0x0                                                                                                                                                                          
[    0.000000] Linux version 4.14.98-imx (pbuilder@linux-imx-7c598330-766d-4b03-a12e-333509ed9db6-d1dc9-rtjkh) (gcc version 8.3.0 (Debian 8.3.0-2)) #1 SMP PREEMPT Tue Nov 2 02:55:21 UTC 2021                            
[    0.000000] Boot CPU: AArch64 Processor [410fd034]                                                                                                                                                                     
[    0.000000] Machine model: Freescale i.MX8MQ Phanbell                                                                                                                                                                  
[    0.000000] earlycon: ec_imx6q0 at MMIO 0x0000000030860000 (options '115200')                                                                                                                                          
[    0.000000] bootconsole [ec_imx6q0] enabled                                                                                                                                                                            
[    0.000000] efi: Getting EFI parameters from FDT:                                                                                                                                                                      
[    0.000000] efi: UEFI not found.                                                                          
[    0.000000] Reserved memory: created CMA memory pool at 0x000000006c000000, size 320 MiB                                                                                                                               
[    0.000000] OF: reserved mem: initialized node linux,cma, compatible id shared-dma-pool                                                                                                                                
[    0.000000] NUMA: No NUMA configuration found                                                             
[    0.000000] NUMA: Faking a node at [mem 0x0000000000000000-0x000000007fffffff]                            
[    0.000000] NUMA: NODE_DATA [mem 0x6bfb2400-0x6bfb41ff]                                                   
[    0.000000] Zone ranges:                                                                                                                                                                                               
[    0.000000]   DMA      [mem 0x0000000040000000-0x000000007fffffff]                                        
[    0.000000]   Normal   empty                                                                              
[    0.000000] Movable zone start for each node                                                                                                                                                                           
[    0.000000] Early memory node ranges                                                                      
[    0.000000]   node   0: [mem 0x0000000040000000-0x000000007fffffff]                                       
[    0.000000] Initmem setup node 0 [mem 0x0000000040000000-0x000000007fffffff]                              
[    0.000000] psci: probing for conduit method from DT.                                                                                                                                                                  
[    0.000000] psci: PSCIv1.1 detected in firmware.                                                                                                                                                                       
[    0.000000] psci: Using standard PSCI v0.2 function IDs                                                   
[    0.000000] psci: MIGRATE_INFO_TYPE not supported.                                                        
[    0.000000] psci: SMC Calling Convention v1.1                                                                                                                                                                          
[    0.000000] percpu: Embedded 24 pages/cpu @ffff80002bf4d000 s57624 r8192 d32488 u98304                    
[    0.000000] Detected VIPT I-cache on CPU0                                                                 
[    0.000000] CPU features: enabling workaround for ARM erratum 845719                                      
[    0.000000] Speculative Store Bypass Disable mitigation not required                                                                                                                                                   
[    0.000000] Built 1 zonelists, mobility grouping on.  Total pages: 258048                                 
[    0.000000] Policy zone: DMA                                                                              
[    0.000000] Kernel command line: console=ttymxc0,115200 console=tty0 earlycon=ec_imx6q,0x30860000,115200 root=PARTUUID=70672ec3-5eee-49ff-b3b1-eb1fbd406bf5 rootfstype=ext4 rw rootwait init=/sbin/init net.ifnames=0 p
ci=pcie_bus_perf                                                                                             
[    0.000000] PID hash table entries: 4096 (order: 3, 32768 bytes)     

Not sure how to log in – can’t find the default user login information. Anyway, on to Yoe images …

Coral Dev board is booting Yoe and running 5.15 kernel :tada:

coral-dev login: root
Last login: Tue Dec 20 18:15:54 UTC 2022 on ttymxc0
root@coral-dev:~# cat /proc/version 
Linux version 5.15.78-fslc+g97c2965ca430 (oe-user@oe-host) (aarch64-yoe-linux-gcc (GCC) 12.2.0, GNU ld (GNU Binutils) 2.39.0.20220819) #1 SMP PREEMPT Sun Nov 13 15:09:41 UTC 2022

Nice work @khem !