From Web Developer to Hardware Developer

52
From Web Developer To Hardware Developer

Transcript of From Web Developer to Hardware Developer

Page 1: From Web Developer to Hardware Developer

From Web Developer To Hardware Developer

Page 2: From Web Developer to Hardware Developer
Page 3: From Web Developer to Hardware Developer

(1+2+3+…10 )

10

(1+2+3+..16) >> 4

Page 4: From Web Developer to Hardware Developer

1000000.10

= 100000

Page 5: From Web Developer to Hardware Developer

100000.010

= 100000

82

=1000.

10=

100.0 = 4

Page 6: From Web Developer to Hardware Developer
Page 7: From Web Developer to Hardware Developer

Workflow

Page 8: From Web Developer to Hardware Developer
Page 9: From Web Developer to Hardware Developer

Let’s Make A Change In Ruby

Page 10: From Web Developer to Hardware Developer
Page 11: From Web Developer to Hardware Developer

New Features Web

1. Cucumber / UI

2. Write a presenter / controller

3. Then maybe you write a model

4. Hopefully all tests pass

Page 12: From Web Developer to Hardware Developer

Start with a small test

Page 13: From Web Developer to Hardware Developer
Page 14: From Web Developer to Hardware Developer

How The Web Works

apache/nginx

Application Runtime

Your Code

Database

IIS

.NET Framework

Your Code

SqlServer

Page 15: From Web Developer to Hardware Developer

How Embedded Works

Event Loop

Page 16: From Web Developer to Hardware Developer

Interrupts are fast

Page 17: From Web Developer to Hardware Developer

static uint8_t handler_flag = FALSE;

__interrupt void handler(void){handler_flag = TRUE;}

Page 18: From Web Developer to Hardware Developer

static uint8_t handler_flag = FALSE;

__interrupt void handler(void){handler_flag = TRUE;}

void main(void){while(1){if (handler_flag){// do some stuffhandler_flag = FALSE;

}}}

Page 19: From Web Developer to Hardware Developer

Inputs

Page 20: From Web Developer to Hardware Developer
Page 21: From Web Developer to Hardware Developer

Blocking Code

Page 22: From Web Developer to Hardware Developer

apache/nginx

Application Runtime

Your Code

Database

void main(void){while(1){while(databaseWri

te){//Wait

}}}

Page 23: From Web Developer to Hardware Developer

Event Loop

__interrupt void write_callback(void){write_finished = TRUE;}

while(1){start_write();if(write_finished){// do something

}}}

Page 24: From Web Developer to Hardware Developer

Frameworks/Libraries

• Rails

• Bundler

• Cocoapods

• Pip/ez_install ?

Page 25: From Web Developer to Hardware Developer

No Training WheelsController

Model ViewConductor

Model Hardware

Page 26: From Web Developer to Hardware Developer

TDD and Embedded

Page 27: From Web Developer to Hardware Developer

• RSpec

• MiniTest

• Cucumber

• XCTest

Page 28: From Web Developer to Hardware Developer
Page 30: From Web Developer to Hardware Developer

Testing Off Target

Page 31: From Web Developer to Hardware Developer

It’s just memory

Page 32: From Web Developer to Hardware Developer

Conductor

Model Hardware

Page 33: From Web Developer to Hardware Developer

Conductor

Model Hardware Mock Hardware*

* Software Version Of Hardware

Page 34: From Web Developer to Hardware Developer

static uint8_t button_mock = 0x0;

void test_button_is_pressed(void){button_mock = 0x0;TEST_ASSERT_EQUAL(isButtonPressed(&button_mock), 1);}

int isButtonPressed(uint8_t *button_ptr){//some logic around button}

0

Page 35: From Web Developer to Hardware Developer

Finding Failures

Page 36: From Web Developer to Hardware Developer
Page 37: From Web Developer to Hardware Developer
Page 38: From Web Developer to Hardware Developer

Handling Memory

Page 39: From Web Developer to Hardware Developer

void do_some_process(uint8_t arg1, uint8_t arg2);

4 bytes

Page 40: From Web Developer to Hardware Developer

RTOS

Page 41: From Web Developer to Hardware Developer

Scheduler

Job 1

Job 2

Job 3

Job 4

Job 5

Page 42: From Web Developer to Hardware Developer

Scheduler

Job 1

Job 2

Job 3

Job 4

Job 5

Page 43: From Web Developer to Hardware Developer

Scheduler

Job 1

Job 2

Job 3

Job 4

Job 5

Page 44: From Web Developer to Hardware Developer

Scheduler

Job 1

Job 2

Job 3

Job 4

Job 5

Page 45: From Web Developer to Hardware Developer

Scheduler

Job 1

Job 2

Job 3

Job 4

Job 5

Page 46: From Web Developer to Hardware Developer

Scheduler

Job 1

Job 2

Job 3

Job 4

Job 5

Page 47: From Web Developer to Hardware Developer

Scheduler

Job 1

Job 2

Job 3

Job 4

Job 5

Page 48: From Web Developer to Hardware Developer

Releases

Page 49: From Web Developer to Hardware Developer

$ git push origin masterCounting objects: 6, done.Delta compression using up to 4 threads.Compressing objects: 100% (5/5), done.Writing objects: 100% (6/6), 1.90 KiB | 0 bytes/s, done.Total 6 (delta 1), reused 0 (delta 0)To [email protected]:alexshenoy/my_project.git + 93aa517...334aee4 master -> master

Page 50: From Web Developer to Hardware Developer

• Compile Code

• Transfer it to a supplier

• Issue a change request to the supplier

• Ship new products

Page 51: From Web Developer to Hardware Developer

Where To Get Started

• Arduino

• SparkFun - SparkCore

• AdaFruit

Page 52: From Web Developer to Hardware Developer

Alex Shenoy@alexshenoy

http://alexshenoy.com/