GithubHelp home page GithubHelp logo

tibbotech / yocto_layers Goto Github PK

View Code? Open in Web Editor NEW
8.0 5.0 6.0 29.7 MB

Tibbo Linux Yocto layers for sp7021, am335x -based boards

Home Page: https://tibbo.com/

BitBake 19.29% PHP 1.86% C++ 5.09% Makefile 1.84% Pascal 3.48% Shell 3.86% C 59.00% JavaScript 0.05% HTML 0.61% CMake 0.19% NASL 4.58% AMPL 0.13%
ltpp3g1 ltpp3g2 sp7021 am335x yocto-layers tibbo rootfs rpm xboot yocto

yocto_layers's Introduction

Tibbo/SunPlus Yocto Layers

Tibbo/SunPlus Linux Yocto layers for sp7021, am335x -based boards

This repo is moving to ARCHIVE, please use https://github.com/tibbotech/repo-manifests/tree/master/yocto-layers or https://github.com/tibbotech/yocto_docker instead

Plus1 (sp7021): A Linux Chip for IoT and Industrial Control Applications

Read Tibbo Yocto Layers Howto for more details.

1. Preparing the ENV

1.0 Checking your OS requirements

In the Yocto Reference Manual

1.1 Clonning layers

rel="dunfell"
git clone -b ${rel} git://git.yoctoproject.org/poky.git
git clone -b ${rel} https://github.com/meta-qt5/meta-qt5.git ./poky/meta-qt5
git clone https://github.com/OpenAMP/meta-openamp.git ./poky/meta-openamp
git clone -b ${rel} git://git.openembedded.org/meta-openembedded ./poky/meta-openembedded
git clone -b ${rel} https://github.com/tibbotech/yocto_layers.git ./poky.x
rsync -a --exclude=.git ./poky.x/ ./poky/
patch -d ./poky -p0 < ./meta-tibbo/npm.${rel}.patch
sed -i 's/"honister/"dunfell honister/g' ./poky/meta-openamp/conf/layer.conf

1.2 Pulling the updates from the GitHub

cd ./poky; rm -rf ./meta-tibbo;  rm -rf ./meta-sunplus; cd ..
cd ./poky.x/;  git pull ; cd ..
rsync -a --exclude=.git ./poky.x/ ./poky/

Update your Yocto-core and Openembedded layers (optionally):

cd ./poky;
git pull
cd ./meta-openembedded; git pull; cd ..

1.3 Creating separate disk directory for build (under root account)

# install -d -m 0777 /disk2

2.0 Before builds (env initialization)

cd <subdir>/poky
source oe-init-build-env build.tppg2

2.1 Build the image

'Make sure you did 2.0 step in this console. Then:

bitbake <imagename>

Final images and parts will be placed at /disk2/build.tibbo.dunfell.0/tmp/deploy/images//

machine, distro, imagename table for IMG

machine distro imagename command line tasks / DL / HDD comment
tpp-tppg2-arm5 tps imgf-xboot bitbake mc:tpp-tppg2-arm5:imgf-xboot ~2800 / 6 GB / 29 GB Builds several versions of XBoot and A926 FW
tpp-tppg2 tps img-tst-tini bitbake mc::img-tst-tini ~4800 / 7 GB / 30 GB Small CLI systemd-only image
tpp-tppg2 tin img-tst-tini DISTRO=tin bitbake mc::img-tst-tini ~3300 / 3 GB / 10 GB Test: No systemd, no WiFi, no BT image
tpp-tppg2 tps img-tps-free bitbake mc::img-tps-free ~4950 / 7 GB / 31 GB + package management, gdb, tcf-agent
tpp-tppg2 tps img-tps-base bitbake mc::img-tps-base ~5400 / 7 GB / 32 GB + TiOS, TPS-WAN, other closed-source apps
tpp-tppg2 tps img-tps-repo bitbake mc::img-tps-repo ~9900 / 12 GB / 40 GB Packages free + private collection
tppg2, -arm5 tps imgm-spmn bitbake imgm-spmn ~7700 / 7 GB / 60 GB img-tst-tini + img-tps-free + imgf-xboot
tppg2, -arm5 tps imgm-spmt bitbake imgm-spmt ~8100 / 7 GB / 61 GB img-tst-tini + img-tps-base + imgf-xboot
qemux86-64 tps imgm-spba bitbake imgm-spba ~7000 / ? GB / ?? GB BuildApplience image

2.2 Build the SDK

'Make sure you did 2.0 step in this console. Then:

bitbake -c populate_sdk <imagename>

SDK self-unpack image will be placed into /disk2/build.tibbo.dunfell.0/tmp/deploy/sdk/

cross-target, distro, imagename table for SDK

cross-target distro imagename command line comment
tpp-tppg2-arm5 tps imgf-xboot bitbake mc:tpp-tppg2-arm5:imgf-xboot -c populate_sdk A926 SDK (cross-tools + libs)
tpp-tppg2 tps img-tst-tini bitbake mc::img-tst-tini -c populate_sdk A7 SDK
tpp-tppg2 tps img-tps-free bitbake mc::img-tps-free -c populate_sdk A7 SDK
tpp-tppg2 tps img-tps-base bitbake mc::img-tps-base -c populate_sdk A7 SDK
tpp-tppg2 tps img-tps-repo meanless

First bitbake run is time-consuming. All subsequent builds are incremental.

Xboot + arm926 firmware is not required for ISPBOOOT assembly. Script will download this parts from Tibbo website.

After build /disk2/build.tibbo.dunfell.0/tmp/deploy/images/tppg2/ contains all required image components: bootloaders, kernel, rootfs images.

3. Assembling ISPBOOOT.BIN from built parts

Deploy dir /disk2/build.tibbo.dunfell.0/tmp/deploy/images/ contains image components:

bootloaders, kernel, rootfs images. Pack the final image:

$ cd /disk2/build.tibbo.dunfell.0/tmp/deploy/images/tppg2/
$ make -f ./sp_make.mk

ISPBOOOT.BIN will be placed at ./sp_out/

How to reduce build time and resources

  1. build "img-spmo" - main CPU code only. XBoot and B-Chip firmware parts will be downloaded from Tibbo website
  2. use RPM or DEB only. Configured at build.tppg2/conf/local.conf#L116:
    PACKAGE_CLASSES ?= "package_rpm package_deb"

Customizations

Bootloader and kernel source

(SunPlus private repo or GitHub public) are defined at

meta-tibbo/conf/machine/include/tppg2-all-prefs.inc

ISPBOOOT.BIN components

are defined at

/disk2/build.tibbo.dunfell.0/tmp/deploy/images/tppg2/sp_make.mk

Components to choose:

  • xboot and U-boot: for nand or emmc,
  • DTB version,
  • rootfs: there are several, packed to ext4, UBI and squashfs.

Preconfigured RPM repo URL

is defined (PACKAGE_FEED_URIS variable) at

meta-tibbo/conf/distro/tps.conf

yocto_layers's People

Contributors

dmitrydvorkin avatar erimsa avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar

yocto_layers's Issues

Fetcher failure

I have pulled last changes and tried to compile, but I get error:

bitbake img-spmn

WARNING: mc:tpp-tppg2-arm5:xboot-tools-native-gh-r0 do_fetch: Failed to fetch URL git://github.com/tibbotech/plus1_draminit.git;name=draminit;branch=master;destsuffix=draminit;, attempting MIRRORS if available
ERROR: mc:tpp-tppg2-arm5:xboot-tools-native-gh-r0 do_fetch: Fetcher failure: Unable to find revision 1e5f063b3a79169662fc18cf71f0f2668f775d4b in branch master even from upstream
ERROR: mc:tpp-tppg2-arm5:xboot-tools-native-gh-r0 do_fetch: Fetcher failure for URL: 'git://github.com/tibbotech/plus1_draminit.git;name=draminit;branch=master;destsuffix=draminit;'. Unable to fetch URL from any source.
ERROR: Logfile of failure stored in: /disk2/build.24/tmp/work/x86_64-linux/xboot-tools-native/gh-r0/temp/log.do_fetch.13207
ERROR: Task (mc:tpp-tppg2-arm5:virtual:native:/usr/yoctoPlus2/poky/c.tppg2/../meta-sunplus/recipes-bsp/xboot/xboot-tools_gh.bb:do_fetch) failed with exit code '1'

meta-sunplus/recipes-kernel/linux-sprel_%.bbappend SRCREV is wrong

linux-sprel_%.bbpappend file has ;
KBRANCH = "kernel_4.19"
SRCREV = "2a286661044e3b3b1127e7bb07018992ee19ddcf"

It tries to fetch "linux-sprel-4.19.37+gitAUTOINC+2a28666104-r0" which linux_4.19 branch does not have this commit revision.

Results with ;
WARNING: linux-sprel-4.19.37+gitAUTOINC+2a28666104-r0 do_fetch: Failed to fetch URL git://github.com/tibbotech/plus1_kernel.git;branch=kernel_4.19;, attempting MIRRORS if available
ERROR: linux-sprel-4.19.37+gitAUTOINC+2a28666104-r0 do_fetch: Fetcher failure: Unable to find revision 2a286661044e3b3b1127e7bb07018992ee19ddcf in branch kernel_4.19 even from upstream
ERROR: linux-sprel-4.19.37+gitAUTOINC+2a28666104-r0 do_fetch: Fetcher failure for URL: 'git://github.com/tibbotech/plus1_kernel.git;branch=kernel_4.19;'. Unable to fetch URL from any source.
ERROR: Logfile of failure stored in: /media/erimsa/mySSD/build.24/tmp/work/tppg2-tps-linux-gnueabi/linux-sprel/4.19.37+gitAUTOINC+2a28666104-r0/temp/log.do_fetch.912753
ERROR: Task (/home/erimsa/Desktop/SpGate/tibbo/tibbotech_yocto/poky/c.tppg2/../meta-sunplus/recipes-kernel/linux/linux-sprel_4.19.bb:do_fetch) failed with exit code '1'

I tried this commit "eee6766b2540822a9b229f64549299793a903f41" but it fails at kernel patches.

typo here

Hi
In the build section
. oe-init-build-env c.tppg2 should be
source oe-init-build-env c.tppg2

Is that right?

Alex

Kernel warning

I dont know if it's importand, just for information, during bitbake bitbake img-spmn:

First warning:
Parsing of 2630 .bb files complete (2597 cached, 33 parsed). 15404 targets, 399 skipped, 0 masked, 0 errors.
WARNING: No bb files matched BBFILE_PATTERN_tibbopriv '^/usr/yoctoPlus2/poky/c.tppg2/../meta-tibbopriv/'
WARNING: No bb files matched BBFILE_PATTERN_tibbopriv '^/usr/yoctoPlus2/poky/c.tppg2/../meta-tibbopriv/'
WARNING: No bb files matched BBFILE_PATTERN_tibbopriv '^/usr/yoctoPlus2/poky/c.tppg2/../meta-tibbopriv/'
WARNING: No bb files matched BBFILE_PATTERN_tibbopriv '^/usr/yoctoPlus2/poky/c.tppg2/../meta-tibbopriv/'

And second warning:

WARNING: mc:tpp-tppg2:linux-sprel-4.19.37+gitAUTOINC+277821b48c-r0 do_kernel_configcheck: [kernel config]: specified values did not make it into the kernel's final configuration:

---------- CONFIG_DEBUG_UART_PHYS -----------------
Config: CONFIG_DEBUG_UART_PHYS
From: /disk2/build.24/tmp/work-shared/tppg2/kernel-source/.kernel-meta/configs/tiny/pentagram/tppg2/kernel-meta/bsp/pentagram/pentagram.cfg
Requested value: CONFIG_DEBUG_UART_PHYS=0x9c000900
Actual value:

No symbol DEBUG_UART_PHYS exists in the configuration

---------- CONFIG_DEBUG_UART_VIRT -----------------
Config: CONFIG_DEBUG_UART_VIRT
From: /disk2/build.24/tmp/work-shared/tppg2/kernel-source/.kernel-meta/configs/tiny/pentagram/tppg2/kernel-meta/bsp/pentagram/pentagram.cfg
Requested value: CONFIG_DEBUG_UART_VIRT=0xf8000900
Actual value:

No symbol DEBUG_UART_VIRT exists in the configuration

---------- CONFIG_I2C_SMBUS -----------------
Config: CONFIG_I2C_SMBUS
From: /disk2/build.24/tmp/work-shared/tppg2/kernel-source/.kernel-meta/configs/tiny/pentagram/tppg2/kernel-meta/bsp/pentagram/hw_i2c.cfg
Requested value: CONFIG_I2C_SMBUS=m
Actual value:

Config 'I2C_SMBUS' has the following Direct dependencies (=y):
I2C(=y)

---------- CONFIG_BCMDHD_WEXT -----------------
Config: CONFIG_BCMDHD_WEXT
From: /disk2/build.24/tmp/work-shared/tppg2/kernel-source/.kernel-meta/configs/tiny/pentagram/tppg2/kernel-meta/bsp/pentagram/wifi/tppg2_brcm.cfg
Requested value: CONFIG_BCMDHD_WEXT=y
Actual value:

No reference to BCMDHD_WEXT found

---------- CONFIG_CAN_C_CAN_PCI -----------------
Config: CONFIG_CAN_C_CAN_PCI
From: /disk2/build.24/tmp/work-shared/tppg2/kernel-source/.kernel-meta/configs/tiny/pentagram/features/can/can.cfg
Requested value: CONFIG_CAN_C_CAN_PCI=m
Actual value:

No reference to CAN_C_CAN_PCI found

---------- CONFIG_CAN_EMS_PCI -----------------
Config: CONFIG_CAN_EMS_PCI
From: /disk2/build.24/tmp/work-shared/tppg2/kernel-source/.kernel-meta/configs/tiny/pentagram/features/can/can.cfg
Requested value: CONFIG_CAN_EMS_PCI=m
Actual value:

No reference to CAN_EMS_PCI found

---------- CONFIG_CAN_PEAK_PCI -----------------
Config: CONFIG_CAN_PEAK_PCI
From: /disk2/build.24/tmp/work-shared/tppg2/kernel-source/.kernel-meta/configs/tiny/pentagram/features/can/can.cfg
Requested value: CONFIG_CAN_PEAK_PCI=m
Actual value:

Config: CONFIG_CAN_PEAK_PCIEC
From: /disk2/build.24/tmp/work-shared/tppg2/kernel-source/.kernel-meta/configs/tiny/pentagram/features/can/can.cfg
Requested value: CONFIG_CAN_PEAK_PCIEC=m
Actual value:

Config 'CAN_PEAK_PCI' has the following Direct dependencies (=m):
PCI(=y) && CAN_SJA1000(=m) && CAN_DEV(=m) && CAN(=m) && NET(=y)

---------- CONFIG_CAN_PEAK_PCIEC -----------------
Config: CONFIG_CAN_PEAK_PCIEC
From: /disk2/build.24/tmp/work-shared/tppg2/kernel-source/.kernel-meta/configs/tiny/pentagram/features/can/can.cfg
Requested value: CONFIG_CAN_PEAK_PCIEC=m
Actual value:

No reference to CAN_PEAK_PCIEC found

---------- CONFIG_CAN_KVASER_PCI -----------------
Config: CONFIG_CAN_KVASER_PCI
From: /disk2/build.24/tmp/work-shared/tppg2/kernel-source/.kernel-meta/configs/tiny/pentagram/features/can/can.cfg
Requested value: CONFIG_CAN_KVASER_PCI=m
Actual value:

No reference to CAN_KVASER_PCI found

---------- CONFIG_CAN_PLX_PCI -----------------
Config: CONFIG_CAN_PLX_PCI
From: /disk2/build.24/tmp/work-shared/tppg2/kernel-source/.kernel-meta/configs/tiny/pentagram/features/can/can.cfg
Requested value: CONFIG_CAN_PLX_PCI=m
Actual value:

No reference to CAN_PLX_PCI found

after build make -f ./sp_make.mk

km@ubuntu:/disk2/build.24/tmp/deploy/images/tppg2$ make -f ./sp_make.mk
install -d ./sp_out/
install ../tppg2-arm5/xboot-emmc.bin ./sp_out/xboot.bin
./sp_tools/secure_sign/gen_signature.sh ./sp_out xboot.bin 0


*** Warning: Sign with TEST key !! ***
*** Please put real keys in keys/. ***


Private key: ./sp_tools/secure_sign/sign_keys/test-keys/key_priv_0.hex
Public key : ./sp_tools/secure_sign/sign_keys/test-keys/key_pub_0.hex
Sign and verify signature OK.
key_pub : 0xAC, 0xE4, 0x68, 0x98, 0x89, 0x68, 0x75, 0x2B, 0x91, 0x61, 0xF7, 0x3F, 0x9B, 0x72, 0x98, 0x34, 0xA8, 0xF5, 0x68, 0xE1, 0xA2, 0x05, 0x60, 0x0F, 0x7D, 0xDE, 0xBC, 0xCE, 0xDE, 0x87, 0x40, 0x5C
Signature : 0x7B, 0x9E, 0x23, 0x74, 0x91, 0x83, 0x8A, 0x51, 0xC3, 0xE2, 0x9A, 0x4D, 0x34, 0x7A, 0x33, 0x2C, 0xCA, 0x45, 0xBA, 0xEB, 0xDA, 0x80, 0xB2, 0x95, 0xE4, 0x92, 0x94, 0xDF, 0x81, 0xB9, 0x52, 0x9E, 0x93, 0xE6, 0x73, 0xF2, 0xC5, 0x1F, 0x56, 0x82, 0x11, 0x6D, 0x17, 0x63, 0xD0, 0x94, 0xA5, 0x24, 0x64, 0x8D, 0xA6, 0x42, 0xA2, 0x39, 0x04, 0xD5, 0xB5, 0xC0, 0xC7, 0x49, 0xB4, 0x13, 0x90, 0x03

Save signature to file: ./sp_out/sign.sig
no need to add sign flag (xboot)
OUT_SIG: ./sp_out/sign.sig
IN_IMG: ./sp_out/xboot.bin
cd ../tppg2-arm5/sp_tools/; ./add_xhdr.sh ../../tppg2/sp_out/xboot.bin ../../tppg2/sp_out/xboot.img 1
chksum=0000e265
install ./sp_out/xboot.img ./sp_out/xboot0
install ./sp_out/xboot.img ./sp_out/xboot1
install -d ./sp_out/
export MKIMAGE=./sp_tools/mkimage
./sp_tools/add_uhdr.sh nonos_B ../tppg2-arm5/a926.bin sp_out/nonos 0x10040 0x10040
./sp_tools/add_uhdr.sh: line 68: ./boot/uboot/tools/mkimage: No such file or directory
ls: cannot access 'sp_out/nonos': No such file or directory

sp_make.mk:48: recipe for target 'sp_out/nonos' failed
make: *** [sp_out/nonos] Error 2
km@ubuntu:/disk2/build.24/tmp/deploy/images/tppg2$

I dont have sp_out/nonos, and I dont have ./boot/uboot/tools/mkimage, instead I have tppg2/sp_tools/mkimage and tppg2-arm5/sp_tools/mkimage

mode-sqlite3 bash

I'm building image for LTPP3 for the first time and I have these error:

ERROR: node-sqlite3-4.1.1-r0 do_package_qa: QA Issue: /usr/lib/node_modules/sqlite3/node_modules/node-gyp/test/docker.sh contained in package node-sqlite3-node-gyp requires /bin/bash, but no providers found in RDEPENDS_node-sqlite3-node-gyp? [file-rdeps]
ERROR: node-sqlite3-4.1.1-r0 do_package_qa: QA Issue: /usr/lib/node_modules/sqlite3/node_modules/node-gyp/gyp/samples/samples contained in package node-sqlite3-node-gyp requires /usr/bin/python, but no providers found in RDEPENDS_node-sqlite3-node-gyp? [file-rdeps]
ERROR: node-sqlite3-4.1.1-r0 do_package_qa: QA Issue: /usr/lib/node_modules/sqlite3/tools/docker/architecture/linux-arm64/Dockerfile contained in package node-sqlite3 requires /bin/echo, but no providers found in RDEPENDS_node-sqlite3? [file-rdeps]
ERROR: node-sqlite3-4.1.1-r0 do_package_qa: QA run found fatal errors. Please consider fixing them.
ERROR: Logfile of failure stored in: /disk2/build.24/tmp/work/cortexa9hf-neon-tps-linux-gnueabi/node-sqlite3/4.1.1-r0/temp/log.do_package_qa.58248
ERROR: Task (/usr/yoctoPlus2/poky/c.tppg2/../meta-tibbo/recipes-core/node-modules/node-sqlite3_4.1.1.bb:do_package_qa) failed with exit code '1'

Error in npymath

| building 'npymath' library
...
| In file included from numpy/core/src/npymath/npy_math_private.h:25,
| from numpy/core/src/npymath/ieee754.c.src:8:
| numpy/core/src/common/npy_fpmath.h:19:6: error: #error No long double representation defined
| 19 | #error No long double representation defined
| | ^~~~~
...
| numpy/core/src/npymath/npy_math_private.h:451:31: error: 'LDBL_EXP_MASK' undeclared (first use in this function)
| 451 | (((x).a[LDBL_EXP_INDEX] & LDBL_EXP_MASK) >> LDBL_EXP_SHIFT)
| | ^~~~~~~~~~~~~
...
ERROR: Task (mc:tpp-tppg2:/usr/yoctoPlus2/poky/c.tppg2/../meta/recipes-devtools/python-numpy/python3-numpy_1.17.0.bb:do_compile) failed with exit code '1'

SD card image.

Does your Yocto provide image of the SD card? I have tried file ISPBOOOT.BIN from boot2linux_SDcard directory but it doesnt have valid partitions. Also other BIN files from sp_out.

xboot-helpers-native repository

xboot-helpers-native look for tibbo custom git server.

Please add the line ;
PREFERRED_VERSION_xboot-helpers-native = "${xboot_v}"

How can I create SD boot image?

Hi, I would like to run dunfell yocto on SD card but scripts in deploy provides only image to flash internal NAND from SD.
In Zeus there was boot2linux_SDcard folder after build.

d96f8577c is not a valid commit ID

I have error, situation is weird becouse that commit ID really exist in yocto_layers.

ERROR: mc:tpp-tppg2:linux-sprel-4.19.37+gitAUTOINC+ac3527cae6-r0 do_validate_branches: 7bf03ca60187927d02779c9857b14b3d96f8577c is not a valid commit ID.
ERROR: mc:tpp-tppg2:linux-sprel-4.19.37+gitAUTOINC+ac3527cae6-r0 do_validate_branches: The kernel source tree may be out of sync
ERROR: mc:tpp-tppg2:linux-sprel-4.19.37+gitAUTOINC+ac3527cae6-r0 do_validate_branches: Execution of '/disk2/build.24/tmp/work/tppg2-tps-linux-gnueabi/linux-sprel/4.19.37+gitAUTOINC+ac3527cae6-r0/temp/run.do_validate_branches.4452' failed with exit code 1:
fatal: git cat-file: could not get object info
WARNING: exit code 1 from a shell command.

Cloning layers procedure not up to date anymore

Last Thursday (may 19th) the openamp repo was updated to support more recent yocto releases.
gatesgarth was removed and replaced with honister and kirkstone.

so the patch line in the readme (step 1.1 Cloning layers) should be upgraded to:

sed -i 's/"honister"/"rocko sumo thud zeus dunfell gatesgarth honister kirkstone"/g' ./poky/meta-openamp/conf/layer.conf

Henk

ISPBOOOT.BIN not created

After built any image,
"make -f ./sp_make.mk"
fails with that errors ;

Error for 'isp_script_nand_002c3465': isp.c: 1131
make: *** [sp_make.mk:86: sp_out/ISPBOOOT.BIN] Error 255

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.