Giter VIP home page Giter VIP logo

cc3200emt-core's Introduction

The Energia project is no longer maintained.

Energia, the fork of the Arduino IDE and SDK for the LaunchPad boards, is no longer maintained. The last release 1.8.10E23 was published in December 2019.

The official tools from Texas Instruments are Code Composer Studio, based on Eclipse with an online variant, and the SimpleLink SDK for the ARM Cortex-M MCUs.

What Is Energia?

Energia is a fork/port of Arduino for the Launchpads, or boards with MCUs from Texas Instruments.

What Are the LaunchPads Supported?

Energia provides native support for the following LaunchPads:

  • LaunchPad with MSP430G2231, MSP430G2452 or MSP430G2553 or LaunchPad
  • Experimeter Board with MSP430FR5739 or FraunchPad
  • LaunchPad with MSP430F5529 or FattyPad
  • LaunchPad with MSP430FR5969
  • LaunchPad with Stellaris LM4F120 or Tiva C Series TM4C123 or StellarPad
  • Connected LaunchPad with Tiva C Series TM4C129

What Are the BoosterPacks Supported?

Energia includes ready-to-use libraries for the following BoosterPacks:

  • Anaren Air CC110L BoosterPack
  • Educational BoosterPack MKII
  • LCD Sharp BoosterPack
  • CC3000 SimpleLink WiFi BoosterPack

Looking for Help?

No problem! There are a variety of resources available to get you up and running, and sprinting once you're up and running.

  • GitHub repository - This very page!
  • Download - Download a compiled application for Linux, Mac OS X, or Windows.
  • Website - Full documentation including tutorials, reference, pins maps, FAQ and much more!
  • Wiki - Find basic information and tutorials here.
  • LaunchPad forum at 43oh - A community around the original LaunchPad but also the newer ones.
  • StellarPad forum at Stellaristi - A community more focused on the newer Stellaris LaunchPad.
  • Bug report - Is something not working as it ought to? Or better yet, is there something we could make better?

Clone instructions:

Energia consists of the main repository and a submodule called emt. The emt tree contains the sources for the Energia MT (Multi Tasking) feature that is based on TI-RTOS/SYSBIOS. To clone Energia and the emt submodule:

git clone --recursive https://github.com/energia/Energia.git

If you already have a clone of Energia then:

git submodule update --init --recursive
git submodule sync
cd emt
git pull
cd ..

cc3200emt-core's People

Contributors

robertinant avatar

Watchers

 avatar  avatar  avatar  avatar  avatar

cc3200emt-core's Issues

Debugging Against CC3220

Server

  • OpenOCD should be 0.9.0, not 0.10.0
$
openocd -f cc3220_xds110.cfg 

Open On-Chip Debugger 0.9.0 (2016-09-30-17:45)
Licensed under GNU GPL v2
For bug reports, read
	http://openocd.org/doc/doxygen/bugs.html
Info : only one transport option; autoselect 'swd'
adapter speed: 2500 kHz
Info : CMSIS-DAP: SWD  Supported
Info : CMSIS-DAP: JTAG Supported
Info : CMSIS-DAP: Interface Initialised (SWD)
Info : CMSIS-DAP: FW Version = 1.0
Info : SWCLK/TCK = 0 SWDIO/TMS = 0 TDI = 0 TDO = 0 nTRST = 0 nRESET = 1
Info : CMSIS-DAP: Interface ready
Info : clock speed 2500 kHz
Info : SWD IDCODE 0x2ba01477
Info : cc3220.cpu: hardware has 6 breakpoints, 4 watchpoints
Info : accepting 'gdb' connection on tcp/3333
undefined debug reason 7 - target needs reset
requesting target halt and executing a soft reset
Warn : soft_reset_halt is deprecated, please use 'reset halt' instead.
target state: halted
target halted due to breakpoint, current mode: Thread 
xPSR: 0x01000000 pc: 0x0000eb0c msp: 0x20004000
Warn : negative acknowledgment, but no packet pending
Warn : negative acknowledgment, but no packet pending
Warn : negative acknowledgment, but no packet pending
Warn : negative acknowledgment, but no packet pending
Warn : negative acknowledgment, but no packet pending
Warn : negative acknowledgment, but no packet pending
Warn : negative acknowledgment, but no packet pending
Warn : negative acknowledgment, but no packet pending
Warn : negative acknowledgment, but no packet pending
Info : The target is not running when halt was requested, stopping GDB.
Info : dropped 'gdb' connection

Client

$
arm-none-eabi-gcc/6.3.1-20170620/bin/arm-none-eabi-gdb

GNU gdb (GNU Tools for ARM Embedded Processors 6-2017-q2-update) 7.12.1.20170417-git
Copyright (C) 2017 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.  Type "show copying"
and "show warranty" for details.
This GDB was configured as "--host=x86_64-apple-darwin10 --target=arm-none-eabi".
Type "show configuration" for configuration details.
For bug reporting instructions, please see:
<http://www.gnu.org/software/gdb/bugs/>.
Find the GDB manual and other documentation resources online at:
<http://www.gnu.org/software/gdb/documentation/>.
For help, type "help".
Type "apropos word" to search for commands related to "word".
(gdb) target extended :3333
Remote debugging using :3333
warning: No executable has been specified and target does not support
determining executable automatically.  Try using the "file" command.
0x0000eb0c in ?? ()
(gdb) monitor soft_reset_halt
requesting target halt and executing a soft reset
soft_reset_halt is deprecated, please use 'reset halt' instead.
target state: halted
target halted due to breakpoint, current mode: Thread 
xPSR: 0x01000000 pc: 0x0000eb0c msp: 0x20004000
(gdb) file embeddedcomputing.elf
A program is being debugged already.
Are you sure you want to change the file? (y or n) y
Reading symbols from embeddedcomputing.elf...done.
(gdb) load
Loading section .intvecs, size 0x3c lma 0x20004000
Loading section .text, size 0x6eb8 lma 0x20004040
Ignoring packet error, continuing...
Loading section .c_int00, size 0x34 lma 0x2000aef8
Loading section .rodata, size 0xa64 lma 0x2000af2c
Ignoring packet error, continuing...
Loading section .data, size 0x6f4 lma 0x2000b990
Loading section .ARM.exidx, size 0x8 lma 0x2000c084
Loading section .empty, size 0xf4 lma 0x2000d4b8
Start address 0x2000aef8, load size 33148
Transfer rate: 1 KB/sec, 4143 bytes/write.
Reply contains invalid hex digit 79
(gdb) break embed1.ino:156
Reply contains invalid hex digit 79
(gdb) c
Continuing.
warning: Invalid remote reply: 00f0
warning: Invalid remote reply: 
warning: Invalid remote reply: 

Discussion

Documentation on http://ti.com and http://e2e.ti.com is rather scarce.

The same configuration against the CC3200 required setting sp and cp manually.

set $sp = g_pfnVectors[0]
set $pc = g_pfnVectors[1]

UART1 at 2400 bps is not working with CC3200EMT.

Hi,
I was previously using uart1 on cc3200 launchpad without emt. It was working there.
But when I changed the board to cc3200emt, then on using uart1 I received no output on serial console.
my code:=

void setup() {

pinMode(GREEN_LED,INPUT);
Serial.begin(115200);
Serial1.begin(2400);
}

void loop() {

if (Serial1.available())
{
int inByte = Serial1.read();
if(inByte == '\r')
Serial.write("\r");
Serial.write(inByte);
}
}

macOS 10.13.2 — Uploading to the CC3220 LaunchPad

On macOS 10.13.2, uploading to the CC3220 LaunchPad fails with the following error message:

~/Library/Energia15/packages/energia/tools/dslite/7.2.0.2096/DebugServer/bin/DSLite load -c ~/Library/Energia15/packages/energia/tools/dslite/7.2.0.2096/CC3220S_LAUNCHXL.ccxml -f /var/folders/px/cyfvtr757lqg0yp_cv9j79jh0000gn/T/arduino_build_499204/Blink.ino.elf 
DSLite version 7.2.0.2096
Configuring Debugger (may take a few minutes on first launch)...
	Initializing Register Database...
	Initializing: IcePick_C
	Executing Startup Scripts: IcePick_C
	Initializing: CS_DAP
	Executing Startup Scripts: CS_DAP
	Initializing: Cortex_M4_0
	Executing Startup Scripts: Cortex_M4_0
GEL: Cortex_M4_0: GEL Output: 
Memory Map Initialization Complete
Connecting...
fatal: CS_DAP: Error connecting to the target: (Error -1170 @ 0x0) Unable to access the DAP. Reset the device, and retry the operation. If error persists, confirm configuration, power-cycle the board, and/or try more reliable JTAG settings (e.g. lower TCLK). (Emulation package 6.0.628.3) 
Failed: Operation was aborted
the selected serial port Failed: Operation was aborted
 does not exist or your board is not connected

Is there a special configuration of the jumpers required as for the CC3200 LaunchPad?

  • Energia 1.8.5E19
  • cc3220emt/5.6.0

CC3200 EMT — Error, size if data (1234045) is too big to write

From @rei-vilo on December 21, 2016 15:25

Once #12 has been fixed with suggested command, upload fails due to too big file to write.

Resulting MultiBlink_CC3200.ino.elf for the MultiBlink.ino example weights 1234045 whereas arm-none-eabi-size MultiBlink_CC3200.ino.elf gives 33833.

  • Files sizes
ls -all /var/folders/px/cyfvtr757lqg0yp_cv9j79jh0000gn/T/buildcf7d690e97b58be70057bbfed06e8f9b.tmp
total 4512
drwxr-xr-x   10 reivilo  staff      340 21 déc 16:16 .
drwx------@ 122 reivilo  staff     4148 21 déc 16:17 ..
-rwxr-xr-x    1 reivilo  staff  1234045 21 déc 16:16 MultiBlink_CC3200.ino.elf
-rw-r--r--    1 reivilo  staff  1062939 21 déc 16:16 MultiBlink_CC3200.ino.map
-rw-r--r--    1 reivilo  staff      717 21 déc 16:16 build.options.json
drwxr-xr-x    4 reivilo  staff      136 21 déc 16:16 core
-rw-r--r--    1 reivilo  staff      699 21 déc 16:16 includes.cache
drwxr-xr-x    2 reivilo  staff       68 21 déc 16:15 libraries
drwxr-xr-x    3 reivilo  staff      102 21 déc 16:15 preproc
drwxr-xr-x    7 reivilo  staff      238 21 déc 16:16 sketch
  • Upload
$ /Users/ReiVilo/Library/Energia15/packages/energia/tools/cc3200prog/1.1.4/cc3200prog /dev/cu.usbserial-cc3200B /var/folders/px/cyfvtr757lqg0yp_cv9j79jh0000gn/T/buildcf7d690e97b58be70057bbfed06e8f9b.tmp/MultiBlink_CC3200.ino.elf 
Open UART /dev/cu.usbserial-cc3200B
open UART success
Getting storage list
Bootloader Version: 3
Silicon version ES1.32 or higher
Bootloader version is 2, 0, 3, 2
It's a CC3200 device: PG1.32
BlockSize is 4096, number of blocks is 64
erasing 1 blocks starting from  4
Switch to NWP bootloader complete
Load common boot command for PG1.32
Bootloader version is 2, 0, 3, 4
BlockSize is 4096, number of blocks is 16
erasing 12 blocks starting from  0
erasing file "/sys/mcuimg.bin"
deleting file "/sys/mcuimg.bin"
erase file completed
--- Invalid file size ---
Error, size if data (1234045) is too big to write
  • Size
$ /Users/ReiVilo/Library/Energia15/packages/energia/tools/arm-none-eabi-gcc/4.8.4-20140725/bin/arm-none-eabi-size /var/folders/px/cyfvtr757lqg0yp_cv9j79jh0000gn/T/buildcf7d690e97b58be70057bbfed06e8f9b.tmp/MultiBlink_CC3200.ino.elf 
   text	   data	    bss	    dec	    hex	filename
  26013	   4532	   3288	  33833	   8429	/var/folders/px/cyfvtr757lqg0yp_cv9j79jh0000gn/T/buildcf7d690e97b58be70057bbfed06e8f9b.tmp/MultiBlink_CC3200.ino.elf
``

_Copied from original issue: energia/cc3200-core#13_

CC3200-EMT uses `main.cpp` instead of `main.template`

CC3200-EMT uses main.cpp from ~/Library/Energia15/packages/energia/hardware/cc3200emt/1.0.0/cores/cc3200/main.cpp instead of main.template from ~/Library/Energia15/packages/energia/tools/ino2cpp/1.0.2/templates/cc3200emt/main.template.

As a consequence, multi-tasking no longer works.

"~/Library/Energia15/packages/energia/tools/arm-none-eabi-gcc/4.8.4-20140725/bin/arm-none-eabi-g++" -c -g -Os -w -std=gnu++11 -ffunction-sections -fdata-sections -nostdlib -fno-threadsafe-statics --param max-inline-insns-single=500 -fno-rtti -fno-exceptions -Dprintf=iprintf -MMD -mcpu=cortex-m4 -mthumb -DF_CPU=80000000L -DARDUINO=10806 -DENERGIA=10806 -DENERGIA_CC3200-LAUNCHXL -DENERGIA_ARCH_CC3200EMT "-I~/Library/Energia15/packages/energia/hardware/cc3200emt/1.0.0/variants/CC3200-LAUNCHXL" "-I~/Library/Energia15/packages/energia/hardware/cc3200emt/1.0.0/system/driverlib" "-I~/Library/Energia15/packages/energia/hardware/cc3200emt/1.0.0/system/inc" "-I~/Library/Energia15/packages/energia/hardware/cc3200emt/1.0.0/system" -mcpu=cortex-m4 -mthumb -mfloat-abi=soft -mabi=aapcs "-I~/Library/Energia15/packages/energia/hardware/cc3200emt/1.0.0/system/libsam" "-I~/Library/Energia15/packages/energia/hardware/cc3200emt/1.0.0/system/CMSIS/CMSIS/Include/" "-I~/Library/Energia15/packages/energia/hardware/cc3200emt/1.0.0/system/CMSIS/Device/ATMEL/" "-I~/Library/Energia15/packages/energia/hardware/cc3200emt/1.0.0/cores/cc3200" "-I~/Library/Energia15/packages/energia/hardware/cc3200emt/1.0.0/variants/CC3200-LAUNCHXL" "~/Library/Energia15/packages/energia/hardware/cc3200emt/1.0.0/cores/cc3200/main.cpp" -o "/var/folders/px/cyfvtr757lqg0yp_cv9j79jh0000gn/T/arduino_build_417287/core/main.cpp.o"

CC3200 EMT — MultiBlink Fails to Upload

From @rei-vilo on December 21, 2016 15:21

  • Good, used to upload blink.ino to CC3200 standard
/Users/ReiVilo/Library/Energia15/packages/energia/tools/cc3200prog/1.1.4/cc3200prog /dev/cu.usbserial-cc3200B /var/folders/px/cyfvtr757lqg0yp_cv9j79jh0000gn/T/build9548c7de2eb0fa195db29d7f1b03d466.tmp/Blink.ino.bin 
  • Bad, used to upload MulitBlink.ino to CC3200 EMT
/Applications/IDE/Energia.app/Contents/Java/hardware/tools/DSLite/DebugServer/bin/DSLite load -c /Applications/IDE/Energia.app/Contents/Java/hardware/tools/DSLite/MSP_EXP432P401R.ccxml -f /var/folders/px/cyfvtr757lqg0yp_cv9j79jh0000gn/T/buildcf7d690e97b58be70057bbfed06e8f9b.tmp/MultiBlink_CC3200.ino.elf 
  • Fixed, used to upload MulitBlink.ino to CC3200 EMT
/Users/ReiVilo/Library/Energia15/packages/energia/tools/cc3200prog/1.1.4/cc3200prog /dev/cu.usbserial-cc3200B /var/folders/px/cyfvtr757lqg0yp_cv9j79jh0000gn/T/buildcf7d690e97b58be70057bbfed06e8f9b.tmp/MultiBlink_CC3200.ino.elf 

Copied from original issue: energia/cc3200-core#12

Building MultiBlink Against CC3200 Fails

With CC3200 EMT boards package 1.0.0 on Energia 1.8.6E19, building the MultiBlink example against CC3200 fails at link.

Linking everything together...
"~/Library/Energia15/packages/energia/tools/arm-none-eabi-gcc/4.8.4-20140725/bin/arm-none-eabi-g++" -mcpu=cortex-m4 -mthumb -nostartfiles -nostdlib -Os -Wl,--gc-sections "-T~/Library/Energia15/packages/energia/hardware/cc3200emt/1.0.0/cores/cc3200/cc3200.ld" "-Wl,-Map,/var/folders/px/cyfvtr757lqg0yp_cv9j79jh0000gn/T/arduino_build_722728/MultiBlink.ino.map"  -o "/var/folders/px/cyfvtr757lqg0yp_cv9j79jh0000gn/T/arduino_build_722728/MultiBlink.ino.elf" "-L/var/folders/px/cyfvtr757lqg0yp_cv9j79jh0000gn/T/arduino_build_722728" -Wl,--check-sections -Wl,--cref -Wl,--gc-sections -Wl,--entry=ResetISR -Wl,--unresolved-symbols=report-all -Wl,--warn-common -mthumb -mcpu=cortex-m4 -mfloat-abi=soft -mabi=aapcs -Wl,--start-group "/var/folders/px/cyfvtr757lqg0yp_cv9j79jh0000gn/T/arduino_build_722728/sketch/MultiBlink.ino.cpp.o" "/var/folders/px/cyfvtr757lqg0yp_cv9j79jh0000gn/T/arduino_build_722728/core/core.a" -Wl,--end-group "~/Library/Energia15/packages/energia/hardware/cc3200emt/1.0.0/system/driverlib/libdriverlib.a" -lm -lc -lgcc

/var/folders/px/cyfvtr757lqg0yp_cv9j79jh0000gn/T/arduino_build_722728/core/core.a(main.cpp.o): In function `main':
~/Library/Energia15/packages/energia/hardware/cc3200emt/1.0.0/cores/cc3200/main.cpp:39: undefined reference to `setup'
~/Library/Energia15/packages/energia/hardware/cc3200emt/1.0.0/cores/cc3200/main.cpp:42: undefined reference to `loop'
collect2: error: ld returned 1 exit status
exit status 1
Error compiling for board CC3200-LAUNCHXL (80MHz) EMT.

Uploading to the CC3200 SensorTag

Uploading to the CC3200 LaunchPad from Energia requires a specific configuration of the SOP jumpers.

How to manage to upload from Energia to the CC3200 SensorTag?

I've found the SOP 0-1-2 on the schematics (swrc337) but how to use them with Energia?

CC3220SF: analogRead() Returns 1023

The analogRead()on the minimalist example below always returns 1023.

Placing and removing jumper J14 OPAMP EN has no effect.

Same for using 23 instead of A0.

The exact reference of the board is CC3220SF Rev-A. Pin 23 is connected to the middle point of a 10 kΩ potentiometer, connected to +3.3V and GROUND.

Same code works fine on the CC3200 LaunchPad, with taking care not to exceed 1.7 V.

void setup() {
  // put your setup code here, to run once:
  Serial.begin(9600);
}

void loop() {
  // put your main code here, to run repeatedly: 
  Serial.println(analogRead(A0));
  delay(1000);
}

CC3200 EMT — Specific Compilation Procedure?

From @rei-vilo on December 21, 2016 15:38

When compiling the MultiBlink.ino against the CC1310 EMT and MSP432 EMT, compilation generates two files, MultiBlink_CC3200.ino.cpp and main.cpp.

The former concatenate all the different task into one file and the latter declares the tasks to the RTOS.

However, compiling the MultiBlink.ino against the CC3200 EMT does not generate the main.cpp.

Has the compilation procedure changed?

/* magic insertion point 769d20fcd7a0eedaf64270f591438b01 */
extern void setupBlueLed();
extern void loopBlueLed();
extern void setupGreenLed();
extern void loopGreenLed();
extern void setupRedLed();
extern void loopRedLed();
extern void setupMultiBlink_CC3200();
extern void loopMultiBlink_CC3200();

#define NUM_SKETCHES 4
void (*func_ptr[NUM_SKETCHES][2])(void) = {
	{setupBlueLed, loopBlueLed},
	{setupGreenLed, loopGreenLed},
	{setupRedLed, loopRedLed},
	{setupMultiBlink_CC3200, loopMultiBlink_CC3200}
};
const char *taskNames[] = {
	"loopBlueLed",
	"loopGreenLed",
	"loopRedLed",
	"loopMultiBlink_CC3200"
};

Copied from original issue: energia/cc3200-core#14

CC3200 EMT — MultiBlink Fails to Compile Against CC3200 EMT

From @rei-vilo on December 21, 2016 9:10

The `MultiBlink example fails to compile against CC3200 EMT, but succeeds agains MSP432 EMT.

  1. BLUE_LED is unknown, should be replaced by YELLOW_LED

Add

#define BLUE_LED YELLOW_LED
  1. Linking fails, with the following error message

Linking everything together...
"/Users/ReiVilo/Library/Energia15/packages/energia/tools/arm-none-eabi-gcc/4.8.4-20140725/bin/arm-none-eabi-g++" -mcpu=cortex-m4 -mthumb -nostartfiles -nostdlib -Os -Wl,--gc-sections "-T/Users/ReiVilo/Library/Energia15/packages/energia/hardware/cc3200emt/1.0.0/cores/cc3200/cc3200.ld" "-Wl,-Map,/var/folders/px/cyfvtr757lqg0yp_cv9j79jh0000gn/T/build63d44f843ff038a6bc73c3b80b8f85e0.tmp/MultiBlink.ino.map" -o "/var/folders/px/cyfvtr757lqg0yp_cv9j79jh0000gn/T/build63d44f843ff038a6bc73c3b80b8f85e0.tmp/MultiBlink.ino.elf" "-L/var/folders/px/cyfvtr757lqg0yp_cv9j79jh0000gn/T/build63d44f843ff038a6bc73c3b80b8f85e0.tmp" -Wl,--check-sections -Wl,--cref -Wl,--gc-sections -Wl,--entry=ResetISR -Wl,--unresolved-symbols=report-all -Wl,--warn-common -mthumb -mcpu=cortex-m4 -mfloat-abi=soft -mabi=aapcs -Wl,--start-group "/var/folders/px/cyfvtr757lqg0yp_cv9j79jh0000gn/T/build63d44f843ff038a6bc73c3b80b8f85e0.tmp/sketch/MultiBlink.ino.cpp.o" "/var/folders/px/cyfvtr757lqg0yp_cv9j79jh0000gn/T/build63d44f843ff038a6bc73c3b80b8f85e0.tmp/core/core.a" -Wl,--end-group "/Users/ReiVilo/Library/Energia15/packages/energia/hardware/cc3200emt/1.0.0/system/driverlib/libdriverlib.a" -lm -lc -lgcc
/var/folders/px/cyfvtr757lqg0yp_cv9j79jh0000gn/T/build63d44f843ff038a6bc73c3b80b8f85e0.tmp/core/core.a(main.cpp.o): In function main': /Users/ReiVilo/Library/Energia15/packages/energia/hardware/cc3200emt/1.0.0/cores/cc3200/main.cpp:39: undefined reference to setup'
/Users/ReiVilo/Library/Energia15/packages/energia/hardware/cc3200emt/1.0.0/cores/cc3200/main.cpp:42: undefined reference to `loop'
collect2: error: ld returned 1 exit status
exit status 1
Error compiling for board CC3200-LAUNCHXL EMT (80MHz).

Copied from original issue: energia/cc3200-core#9

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.