This page may be out-of-date after LDS Budapest. Its a loose collection of elements all in one place.

Table of contents:

The Android Platform Team Wiki

= The Budapest LDS Android Platform Session Leaders =

Current List of Sessions

Alexander

2011 ELC Follow Up and Planning

Zach

Hosting and Distribution of Linaro Builds

Background

Linaro Android Toolchain Distribution

Android Beyond Phones and Advanced Topics

JTAG and Low Level Debug of SoCs for the World

Patrik

Android Code Review

LEB Board Review and Deliverable Requirements

Upstream Android Build

Jim

Android Hardfloat Experiment

Open Source Development for Non-Application Cores

ADB Shell Improvements

Jeremy

Android Continuous Integration and Building

Android LEB Validation and Test Suite

Android LEB Documentation

Rough Draft of all Android Sessions

  • Hosting and Distribution of Linaro Builds
    • Binary distribution
    • Source distribution
    • binary overlays
    • license click-through support in linaro-media-create
    • source overlays for proprietary binaries? probably not helpful
    • releases.linaro.org or add "make release feature on android build service"
    • how do we do releases? tags/branch-names etc.
  • Android Code Review
    • Gerrit
    • Continuous Integration and Build
    • Continuous Validation
  • Open Source Development for Non-Application Cores
    • Open-Sourcing Development of DSP/Video/Graphics
    • Multimedia
  • Android and Ubuntu Platform Boot - John Rigby
    • Fastboot and u-boot
  • JTAG for the World - Dev Platform Track
    • improve tools for using JTAG from ubuntu hosts
    • script development for on-chip debugging
    • may need a quick presentation
  • Android LEB Documentation
    • what documentation do we need?
    • what do we publish together with releases?
  • LEB Board Review and Deliverable Requirements
    • Define new Member Deliverables for Android LEBs
    • Review what got delivered and if its time to raise the bar
    • Low-cost high volume board, which one exist; which ones are coming?
    • Panda, Snowball, ??
    • LEB candidate
    • Cost ceiling? Elba board might be too expensive, can we still do this?
  • Android Beyond Phones and Advanced Topics
    • Brainstorm, discussion
    • Ask David Russling
    • Expand the platform
    • Dual lib (bionic/glibc)
    • apt-get of Android
    • Android as a general computing platform
    • More enterprise networking
    • More packages
    • Legacy application support
    • Security certification
    • Android Headless
      • TINY_ANDROID
  • Android Continuous Integration and Building
    • infrastructure and validation lab requirements
    • Validation test subsets for merges (gerrit feature? bzr review feature?)
    • select Unit test subset from validation suite
  • Fastboot Support for Validation Farm
    • add support flashing images on fastboot
    • can fastboot work through network? or do we need to innovate how to use USB in validation lab?
  • Linaro Android Toolchain Distribution
    • Platform?
    • NDK?
    • tarball?
    • OS's Fedora, Mac
    • What do we publish?
    • Benchmark
  • Android LEB Validation and Test Suite
    • Monkey, CTS, Monkeyrunner, Unit-test, Continuous Integration
    • What should we run at a merge
  • linaro-platform - Device Tree for Platform Images
    • What will work this cycle?
    • What's missing?
    • Can you showcase anything?
    • Single kernel for OMAP4?
  • ADB Shell Improvements
    • think about more bash like user experience
  • Android Hardfloat Experiment
    • Straegy to identify hot-spots that could benefit from hardfloat without breaking overall binary compatibility with market apps
    • Build everything with hard-float support might a quick way to get started
    • how do we then measure improvements and how do we find the code that makes sense to manually optimize.
  • Upstream Android Build
    • LEB, Member board
    • how many changes do we allow? can we categorize changes that are OK and changes that are not?
  • Android Build Tool Improvement

VCM vs DMA

Criticism

http://lkml.org/lkml/2010/7/20/304

http://lkml.org/lkml/2010/7/14/430

http://lkml.org/lkml/2010/7/20/343

http://lkml.org/lkml/2010/7/7/307

Benefits

DMA

Good

DMA is standard, and has a distinct concept of buffer ownership (solves many race conditions). The sg list feature can be used to allocate "max munch."

Bad

DMA does not allow multiple mappings and does not separate page allocation from virtual space creation. Sometimes we don't want sg lists to be compressed.

VCM Thread

http://thread.gmane.org/gmane.linux.kernel.cross-arch/6824

dma_alloc_coherent

Allocate some uncached, unbuffered memory for a device for performing DMA. This function allocates pages, and will return the CPU-viewed address, and sets handle to be the device-viewed address. ref

void * dma_alloc_coherent (struct device * dev, size_t size, dma_addr_t * handle, int gfp);  

is equivalent to:

Create the virtual space:

struct vcm *vcm_create(unsigned long start_addr, unsigned long len);

Reserve virtual space (attr would be VCM_NOTCACHED):

struct res *vcm_reserve(struct vcm *vcm, size_t len, u32 attr);

Allocate the physical memory:

struct physmem *vcm_phys_alloc(enum memtype_t memtype, size_t len, u32 attr);

Back the physical memory;

int vcm_back(struct res *res, struct physmem *physmem);

Associate the VCM with a device:

struct avcm *vcm_assoc(struct vcm *vcm, size_t dev, uint32_t attr);

Activate it:

int vcm_activate(struct avcm *avcm);

dma_pool_create

Creates a pool of consistent memory blocks, for dma. ref

struct dma_pool * dma_pool_create (     const char * name,
        struct device * dev,
        size_t size,
        size_t align,
        size_t boundary);

is equivalent to:

Call previous multiple times.

dma_map_single

dma_map_single - map a single buffer for streaming DMA ref

dma_addr_t dma_map_single (struct device * dev, void * cpu_addr, size_t size, enum dma_data_direction dir);

Unback (res would be on a VCM associated with the CPU)

int vcm_unback(struct res *res);

Back (res would be on a VCM associated with a device)

int vcm_back(struct res *res, struct physmem *physmem);

Platform/Android/Scratchpad/BudapestLDSSessions (last modified 2013-08-29 09:06:35)