.. _apps_dev_process:

Application Development Workflow
################################

The application development workflow identifies procedures needed to create, build, and
run a Zephyr microkernel or nanokernel application.

Before you build
----------------

* Check that your Linux host meets the minimum requirements specified in the
  :ref:`getting_started`.

* Check that environment variables have been configured correctly as outlined
  in :ref:`apps_common_procedures`.

Workflow
--------

1. Create a directory structure for your Zephyr application.

   a) :ref:`create_directory_structure`

2. Add a Makefile

   b) :ref:`create_src_makefile`

3. Define the application's default kernel configuration using
   :ref:`define_default_kernel_conf`.

4. Define kernel configuration override options for the application
   using :ref:`override_kernel_conf`.

5. For a microkernel application, define objects as you develop code
   using :ref:`create_mdef`.

6. For all applications, define nanokernel objects as you need them in
   code.

7. Develop source code and add source code files to the src directory.

   * `naming conventions`_
   * :ref:`src_makefiles_reqs`
   * :ref:`src_files_directories`

.. _naming conventions: https://wiki.zephyrproject.org/view/Coding_conventio    ns#Naming_Conventions

8. Build an application image.

   * :ref:`apps_build`


9. To test the application image's functionality on simulated hardware
   with QEMU, see :ref:`apps_run`.

10. To load an application image on a target hardware, see using
    :ref:`board` documentation.
