| .. _apps_object_conf: |
| |
| Microkernel Object Configuration |
| ################################ |
| |
| Microkernel objects are explained fully in the :ref:`kernel`. |
| See :ref:`microkernel` for example MDEF entries. |
| |
| Procedure |
| ********* |
| |
| .. _create_mdef: |
| |
| Creating and Configuring an MDEF for a Microkernel Application |
| ============================================================== |
| |
| Create the MDEF to define microkernel objects used in your |
| application when they apply to the application as a whole. |
| You do not need to define every object before writing code. In |
| some cases, the necessary objects aren't obvious until you begin |
| writing code. However, all objects used in your code must be defined |
| before your application will compile successfully. |
| |
| .. note:: |
| |
| Nanokernel applications do not use an MDEF because microkernel |
| objects cannot be used in applications of this type. |
| |
| Before you begin |
| ---------------- |
| |
| * Confirm your :file:`~/appDir` already exists. |
| |
| * Confirm Zephyr environment variables are set for each console |
| terminal; for instructions, see :ref:`apps_common_procedures`. |
| |
| Steps |
| ----- |
| |
| 1. Create an MDEF in your application directory |
| (:file:`~/appDir ~) using |
| the name you specified in your application Makefile. |
| (See :ref:`Creating an Application Makefile`). |
| |
| .. code-block:: bash |
| |
| $ touch prj.mdef |
| |
| The default MDEF name is :file:`prj.mdef`. |
| |
| 2. Open the file using a standard text editor. |
| |
| 3. Add settings to the file to suit your application. |
| |
| The syntax for objects that can be defined in :file:`.mdef` |
| is: |
| |
| TASK name priority entry_point stack_size groups |
| |
| TASKGROUP name |
| |
| MUTEX name |
| |
| SEMA name |
| |
| FIFO name depth width |
| |
| PIPE name buffer_size |
| |
| MAILBOX name |
| |
| MAP name num_blocks block_size |
| |
| POOL name min_block_size max_block_size numMax |
| |
| .. note:: |
| |
| Some microkernel objects, such as Task IRQs, are not |
| defined in an :file:`.mdef` file. |
| |
| The following example shows the content of the |
| :file:`samples/philosophers/microkernel/proj.mdef` |
| for the Philosophers' sample application. The sample |
| uses seven tasks and six mutexes. |
| |
| Example MDEF |
| ------------ |
| |
| .. literalinclude:: ../../samples/philosophers/microkernel/prj.mdef |
| :linenos: |
| |
| Related Topics |
| -------------- |
| |
| :ref:`src_makefiles_reqs` |
| :ref:`src_files_directories` |