Top Banner
Using FreeBSD in an Embedded Environment A Work in Progress Philip Paeps [email protected] The FreeBSD Project OpenFest 2011 — Sofia, Bulgaria 6 November 2011
25

Embedding FreeBSD: for large and small beds

May 19, 2015

Download

Technology

OpenFest team

Embedding FreeBSD: for large and small beds - Philip Paeps
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Embedding FreeBSD: for large and small beds

Using FreeBSD in an Embedded EnvironmentA Work in Progress

Philip [email protected]

The FreeBSD Project

OpenFest 2011 — Sofia, Bulgaria6 November 2011

Page 2: Embedding FreeBSD: for large and small beds

Welcome to the Embedded World!Console Server: What, Why?

Embedding FreeBSDFuture Directions

Questions/Comments

1 Welcome to the Embedded World!Differences with Other WorldsIntellectual PropertyFreeBSD as an Embedded Platform

2 Console Server: What, Why?What is a Console Server Anyway?Why Build This Yourself

3 Embedding FreeBSDDevelopment BoardsSoftware EcosystemUsing NanoBSDRemember crunchgen?

4 Future Directions

Philip Paeps Using FreeBSD in an Embedded Environment

Page 3: Embedding FreeBSD: for large and small beds

Welcome to the Embedded World!Console Server: What, Why?

Embedding FreeBSDFuture Directions

Questions/Comments

Differences with Other WorldsIntellectual PropertyFreeBSD as an Embedded Platform

Outline

1 Welcome to the Embedded World!Differences with Other WorldsIntellectual PropertyFreeBSD as an Embedded Platform

2 Console Server: What, Why?What is a Console Server Anyway?Why Build This Yourself

3 Embedding FreeBSDDevelopment BoardsSoftware EcosystemUsing NanoBSDRemember crunchgen?

4 Future Directions

Philip Paeps Using FreeBSD in an Embedded Environment

Page 4: Embedding FreeBSD: for large and small beds

Welcome to the Embedded World!Console Server: What, Why?

Embedding FreeBSDFuture Directions

Questions/Comments

Differences with Other WorldsIntellectual PropertyFreeBSD as an Embedded Platform

Differences with Other Worlds

Space is not free

There is never any time

Electricity costs money too

Philip Paeps Using FreeBSD in an Embedded Environment

Page 5: Embedding FreeBSD: for large and small beds

Welcome to the Embedded World!Console Server: What, Why?

Embedding FreeBSDFuture Directions

Questions/Comments

Differences with Other WorldsIntellectual PropertyFreeBSD as an Embedded Platform

Intellectual Property

Legal uncertainty is not an option

Some things really should not be GNU-“free”

You do not want to hack a payment terminal. . . or an ATM. . . or an X-ray detector

Repeat after me: GNU is not (always) “free”

Philip Paeps Using FreeBSD in an Embedded Environment

Page 6: Embedding FreeBSD: for large and small beds

Welcome to the Embedded World!Console Server: What, Why?

Embedding FreeBSDFuture Directions

Questions/Comments

Differences with Other WorldsIntellectual PropertyFreeBSD as an Embedded Platform

Traditional Embedded Systems

Proprietary

. . . and often expensive

Tiny code-size (10s–100s of Kbytes)

More or less “hard” real-time

Task-switching or multithreaded

Single-application optimized

Philip Paeps Using FreeBSD in an Embedded Environment

Page 7: Embedding FreeBSD: for large and small beds

Welcome to the Embedded World!Console Server: What, Why?

Embedding FreeBSDFuture Directions

Questions/Comments

Differences with Other WorldsIntellectual PropertyFreeBSD as an Embedded Platform

Features of FreeBSD

Friendly BSD-style licence

Contrast with GNU licence

Integrated build-system

Easy to build complete systemsEasy to modify to requirements

Support for some popular embedded platforms

x86ARMPowerPCMIPS

Philip Paeps Using FreeBSD in an Embedded Environment

Page 8: Embedding FreeBSD: for large and small beds

Welcome to the Embedded World!Console Server: What, Why?

Embedding FreeBSDFuture Directions

Questions/Comments

Differences with Other WorldsIntellectual PropertyFreeBSD as an Embedded Platform

Problems with FreeBSD

Somewhat larger than perhaps desirable

On the order of 10s–100s of MbytesEasy to strip down up to a pointSlightly trickier to strip down further

Chunks of infrastructure still lacking

Support for more embedded architecturesNAND/NOR flash device abstraction

Hard to compete with Linux

Linux has a lot of mindshareNot as bad as it used to be. . .Tougher to compete purely on features

Philip Paeps Using FreeBSD in an Embedded Environment

Page 9: Embedding FreeBSD: for large and small beds

Welcome to the Embedded World!Console Server: What, Why?

Embedding FreeBSDFuture Directions

Questions/Comments

What is a Console Server Anyway?Why Build This Yourself

Outline

1 Welcome to the Embedded World!Differences with Other WorldsIntellectual PropertyFreeBSD as an Embedded Platform

2 Console Server: What, Why?What is a Console Server Anyway?Why Build This Yourself

3 Embedding FreeBSDDevelopment BoardsSoftware EcosystemUsing NanoBSDRemember crunchgen?

4 Future Directions

Philip Paeps Using FreeBSD in an Embedded Environment

Page 10: Embedding FreeBSD: for large and small beds

Welcome to the Embedded World!Console Server: What, Why?

Embedding FreeBSDFuture Directions

Questions/Comments

What is a Console Server Anyway?Why Build This Yourself

What is a Console Server Anyway?

Central component of any hacker lab

Talk to consoles without keyboards and monitors

Debug kernels using DDB or even GDB from a comfy chair

Similar uses in large datacentres

. . . for many of the same reasons

Philip Paeps Using FreeBSD in an Embedded Environment

Page 11: Embedding FreeBSD: for large and small beds

Welcome to the Embedded World!Console Server: What, Why?

Embedding FreeBSDFuture Directions

Questions/Comments

What is a Console Server Anyway?Why Build This Yourself

Why Build This Yourself

Commercial units often very expensive

Blame the datacentres!

Retired ones on eBay loud, clunky and powerhungry

It’s fun, of course!

Philip Paeps Using FreeBSD in an Embedded Environment

Page 12: Embedding FreeBSD: for large and small beds

Welcome to the Embedded World!Console Server: What, Why?

Embedding FreeBSDFuture Directions

Questions/Comments

Development BoardsSoftware EcosystemUsing NanoBSDRemember crunchgen?

Outline

1 Welcome to the Embedded World!Differences with Other WorldsIntellectual PropertyFreeBSD as an Embedded Platform

2 Console Server: What, Why?What is a Console Server Anyway?Why Build This Yourself

3 Embedding FreeBSDDevelopment BoardsSoftware EcosystemUsing NanoBSDRemember crunchgen?

4 Future Directions

Philip Paeps Using FreeBSD in an Embedded Environment

Page 13: Embedding FreeBSD: for large and small beds

Welcome to the Embedded World!Console Server: What, Why?

Embedding FreeBSDFuture Directions

Questions/Comments

Development BoardsSoftware EcosystemUsing NanoBSDRemember crunchgen?

Soekris Net4521

100/133 Mhz AMD ElanSC520

32 Mbyte RAM

Compact flash storage

8 GPIOs

1 UART

No USB on-board

MiniPCI and some other stuff

Max 14W power consumption

Philip Paeps Using FreeBSD in an Embedded Environment

Page 14: Embedding FreeBSD: for large and small beds

Welcome to the Embedded World!Console Server: What, Why?

Embedding FreeBSDFuture Directions

Questions/Comments

Development BoardsSoftware EcosystemUsing NanoBSDRemember crunchgen?

Artila M-501

180MHz Atmel AT91RM9200

64 Mbyte RAM

16 Mbyte on-board NOR

32 GPIOs

4 UARTs

USB on-board

The usual complement of busses(I2C, I2S, SPI, SD, . . . )

Max 2.5W power consumption

Philip Paeps Using FreeBSD in an Embedded Environment

Page 15: Embedding FreeBSD: for large and small beds

Welcome to the Embedded World!Console Server: What, Why?

Embedding FreeBSDFuture Directions

Questions/Comments

Development BoardsSoftware EcosystemUsing NanoBSDRemember crunchgen?

Feature Comparisson

Soekris net4521:PRO: Standard PC architecture

PRO: Easy to flash CF cards

CON: High power requirement

CON: Few UARTs

CON: Largish hardware

CON: Fairly expensive

Artila M-501:PRO: Lots and lots of UARTs

PRO: Tiny power requirements

PRO: Cheap(ish) to manufacture

PRO: Very small hardware

CON: Higher porting effort

CON: Less convenient development

Philip Paeps Using FreeBSD in an Embedded Environment

Page 16: Embedding FreeBSD: for large and small beds

Welcome to the Embedded World!Console Server: What, Why?

Embedding FreeBSDFuture Directions

Questions/Comments

Development BoardsSoftware EcosystemUsing NanoBSDRemember crunchgen?

Getting Software on the Boards

Development phase:Netbooting with BOOTP/TFTP

Software runs from root on NFS

FreeBSD makes this very easy

Production system:Soekris runs from easy CF cards

Artila has NOR flash on board

Flashing NOR is a bit tricky

Philip Paeps Using FreeBSD in an Embedded Environment

Page 17: Embedding FreeBSD: for large and small beds

Welcome to the Embedded World!Console Server: What, Why?

Embedding FreeBSDFuture Directions

Questions/Comments

Development BoardsSoftware EcosystemUsing NanoBSDRemember crunchgen?

FreeBSD as a Development Workstation

Base system contains most required tools

Other bits can easily be installed from ports/packages

Netbooting FreeBSD is fairly trivial(ish)

Once it works, it tends to keep working

Philip Paeps Using FreeBSD in an Embedded Environment

Page 18: Embedding FreeBSD: for large and small beds

Welcome to the Embedded World!Console Server: What, Why?

Embedding FreeBSDFuture Directions

Questions/Comments

Development BoardsSoftware EcosystemUsing NanoBSDRemember crunchgen?

Documentation

Interfaces are (often) extensively documented

Even the kernel!

Philip Paeps Using FreeBSD in an Embedded Environment

Page 19: Embedding FreeBSD: for large and small beds

Welcome to the Embedded World!Console Server: What, Why?

Embedding FreeBSDFuture Directions

Questions/Comments

Development BoardsSoftware EcosystemUsing NanoBSDRemember crunchgen?

Integrated Build Environment

Build a cross-toolchain in one command

Build the “world” in one command

Yes! You can do partial builds

No need to reinvent yet another wheel

Philip Paeps Using FreeBSD in an Embedded Environment

Page 20: Embedding FreeBSD: for large and small beds

Welcome to the Embedded World!Console Server: What, Why?

Embedding FreeBSDFuture Directions

Questions/Comments

Development BoardsSoftware EcosystemUsing NanoBSDRemember crunchgen?

Features of NanoBSD

NanoBSD is a script to drive the “normal” build system

Primarily optimized for producing disk images for CF

Chops the FreeBSD world down to 10s of Mbyte easily

That is still quite large though

Philip Paeps Using FreeBSD in an Embedded Environment

Page 21: Embedding FreeBSD: for large and small beds

Welcome to the Embedded World!Console Server: What, Why?

Embedding FreeBSDFuture Directions

Questions/Comments

Development BoardsSoftware EcosystemUsing NanoBSDRemember crunchgen?

Remember crunchgen?

A bit like “busybox” from the Linux/GNU world

. . . but not really

Originally from PicoBSD

Now mainly used in /rescue

Can chop FreeBSD down to < 10 Mbyte

Philip Paeps Using FreeBSD in an Embedded Environment

Page 22: Embedding FreeBSD: for large and small beds

Welcome to the Embedded World!Console Server: What, Why?

Embedding FreeBSDFuture Directions

Questions/Comments

Outline

1 Welcome to the Embedded World!Differences with Other WorldsIntellectual PropertyFreeBSD as an Embedded Platform

2 Console Server: What, Why?What is a Console Server Anyway?Why Build This Yourself

3 Embedding FreeBSDDevelopment BoardsSoftware EcosystemUsing NanoBSDRemember crunchgen?

4 Future Directions

Philip Paeps Using FreeBSD in an Embedded Environment

Page 23: Embedding FreeBSD: for large and small beds

Welcome to the Embedded World!Console Server: What, Why?

Embedding FreeBSDFuture Directions

Questions/Comments

Make FreeBSD Better

Bootloader improvements for development

Generic flash layer in the kernel

Cross-platform pkg add

Better integration of crunchgen with the build

Perhaps with NanoBSDCall it FemtoBSD?

. . . your wishlist here . . .

Philip Paeps Using FreeBSD in an Embedded Environment

Page 24: Embedding FreeBSD: for large and small beds

Welcome to the Embedded World!Console Server: What, Why?

Embedding FreeBSDFuture Directions

Questions/Comments

Porting FreeBSD to CHERI

My current “big” project

64bit-only MIPS on an FPGA

Security research withUniversity of Cambridge

FreeBSD target operatingsystem

Philip Paeps Using FreeBSD in an Embedded Environment

Page 25: Embedding FreeBSD: for large and small beds

Welcome to the Embedded World!Console Server: What, Why?

Embedding FreeBSDFuture Directions

Questions/Comments

Questions? Comments?

Philip Paeps Using FreeBSD in an Embedded Environment