Repository: incubator-mynewt-site Updated Branches: refs/heads/master a45eda021 -> 274e59de4
Modified event description Add os_task_remove mynewt.apache.org/newtmgr vanity import domain Added cputime module and WiFi on Arduino MKR1000 documentation PR from cwanda. This closes #165. Updated events Updated events Fixed typo in mkdocs.yml Project: http://git-wip-us.apache.org/repos/asf/incubator-mynewt-site/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-mynewt-site/commit/274e59de Tree: http://git-wip-us.apache.org/repos/asf/incubator-mynewt-site/tree/274e59de Diff: http://git-wip-us.apache.org/repos/asf/incubator-mynewt-site/diff/274e59de Branch: refs/heads/master Commit: 274e59de402df86a3e8395720ad8e7ae8c9f9969 Parents: a45eda0 Author: aditihilbert <[email protected]> Authored: Fri Mar 24 23:33:05 2017 -0700 Committer: aditihilbert <[email protected]> Committed: Fri Mar 31 11:06:08 2017 -0700 ---------------------------------------------------------------------- .../core_os/context_switch/os_sched_remove.md | 45 ++++ docs/os/core_os/cputime/os_cputime.md | 43 ++++ .../core_os/cputime/os_cputime_delay_nsecs.md | 25 ++ .../core_os/cputime/os_cputime_delay_ticks.md | 25 ++ .../core_os/cputime/os_cputime_delay_usecs.md | 25 ++ docs/os/core_os/cputime/os_cputime_get32.md | 23 ++ docs/os/core_os/cputime/os_cputime_init.md | 29 +++ .../cputime/os_cputime_nsecs_to_ticks.md | 24 ++ .../cputime/os_cputime_ticks_to_nsecs.md | 24 ++ .../cputime/os_cputime_ticks_to_usecs.md | 24 ++ .../os/core_os/cputime/os_cputime_timer_init.md | 65 +++++ .../cputime/os_cputime_timer_relative.md | 33 +++ .../core_os/cputime/os_cputime_timer_start.md | 34 +++ .../os/core_os/cputime/os_cputime_timer_stop.md | 30 +++ .../cputime/os_cputime_usecs_to_ticks.md | 24 ++ .../memory_pool/os_mempool_info_get_next.md | 70 ++++++ docs/os/core_os/task/os_task_remove.md | 43 ++++ docs/os/core_os/time/os_get_uptime_usec.md | 24 ++ docs/os/core_os/time/os_time_advance.md | 22 ++ docs/os/core_os/time/os_time_ms_to_ticks.md | 29 +++ docs/os/tutorials/pics/mkr1000-jlink.jpg | Bin 0 -> 146645 bytes docs/os/tutorials/pics/mkr1000-serial.jpg | Bin 0 -> 73565 bytes docs/os/tutorials/project-stm32-slinky.md | 243 +++++++++++++++++++ docs/os/tutorials/rbnano2.md | 206 ++++++++++++++++ extras/newtmgr/index.html | 6 + extras/newtmgr/newtmgr/index.html | 6 + extras/newtmgr/nmxact/index.html | 6 + mkdocs.yml | 14 +- 28 files changed, 1135 insertions(+), 7 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-mynewt-site/blob/274e59de/docs/os/core_os/context_switch/os_sched_remove.md ---------------------------------------------------------------------- diff --git a/docs/os/core_os/context_switch/os_sched_remove.md b/docs/os/core_os/context_switch/os_sched_remove.md new file mode 100644 index 0000000..f0a5048 --- /dev/null +++ b/docs/os/core_os/context_switch/os_sched_remove.md @@ -0,0 +1,45 @@ +## <font color="#F2853F" style="font-size:24pt"> os_sched_remove </font> + +```c +int os_sched_remove(struct os_task *t) +``` +Stops and removes task `t`. + +The function removes the task from the `g_os_task_list` task list. It also removes the task from one of the following task list: + +* `g_os_run_list` if the task is in the Ready state. +* `g_os_sleep_list` if the task is in the Sleep state. + +#### Arguments + +| Arguments | Description | +|-----------|-------------| +| `t` | Pointer to the `os_task` structure for the task to be removed.| + +#### Returned values +OS_OK - The task is removed successfully. + +#### Notes +This function must be called with all interrupts disabled. + +#### Example + +The `os_task_remove` function calls the `os_sched_remove ` function to remove a task: +```c + +int +os_task_remove(struct os_task *t) +{ + int rc; + os_sr_t sr; + + /* Add error checking code to ensure task can removed. */ + + + /* Call os_sched_remove to remove the task. */ + OS_ENTER_CRITICAL(sr); + rc = os_sched_remove(t); + OS_EXIT_CRITICAL(sr); + return rc; +} +``` http://git-wip-us.apache.org/repos/asf/incubator-mynewt-site/blob/274e59de/docs/os/core_os/cputime/os_cputime.md ---------------------------------------------------------------------- diff --git a/docs/os/core_os/cputime/os_cputime.md b/docs/os/core_os/cputime/os_cputime.md new file mode 100644 index 0000000..1a6ce06 --- /dev/null +++ b/docs/os/core_os/cputime/os_cputime.md @@ -0,0 +1,43 @@ +# CPU Time + +The MyNewt `cputime` module provides high resolution time and timer support. This module is intended for use by BSPs, drivers, and network controllers. + +## Description + +The `cputime` API provides high resolution time and timer support. The module must be initialized, using the `os_cputime_init()` function, with the clock frequency to use. The module uses the `hal_timer` API, defined in hal/hal_timer.h, to access the hardware timers. It uses the hardware timer number specified by the `OS_CPUTIME_TIMER_NUM` system configuration setting. + +## Data Structures + +The module uses the following data structures: + +* `uint32_t` to represent `cputime`. Only the lower 32 bits of a 64 timer are used. +* `struct hal_timer` to represent a cputime timer. + +## List of Functions + +The functions available in cputime are: + +| **Function** | **Description** | +|-----------|-----------| +| [os_cputime_delay_nsecs](os_cputime_delay_nsecs.md) | Delays for a specified number of nanoseconds. | +| [os_cputime_delay_ticks](os_cputime_delay_ticks.md) | Delays for a specified number of ticks. | +| [os_cputime_delay_usecs](os_cputime_delay_usecs.md) | Delays for a specified number of microseconds. | +| [os_cputime_get32](os_cputime_get32.md) | Gets the current value of the cpu time.| +| [os_cputime_init](os_cputime_init.md) | Initializes the cputime module. | +| [os_cputime_nsecs_to_ticks](os_cputime_nsecs_to_ticks.md) | Converts the specified number of nanoseconds to number of ticks. | +| [os_cputime_ticks_to_nsecs](os_cputime_ticks_to_nsecs.md) | Converts the specified number of ticks to number of nanoseconds. | +| [os_cputime_ticks_to_usecs](os_cputime_ticks_to_usecs.md) | Converts the specified number of ticks to number of microseconds. | +| [os_cputime_timer_init](os_cputime_timer_init.md) | Initializes a timer. | +| [os_cputime_timer_relative](os_cputime_timer_relative.md) | Sets a timer to expire in the specified number of microseconds from the current time. | +| [os_cputime_timer_start](os_cputime_timer_start.md) | Sets a timer to expire at the specified cputime. | +| [os_cputime_timer_stop](os_cputime_timer_stop.md) | Stops a timer from running. | +| [os_cputime_usecs_to_ticks](os_cputime_usecs_to_ticks.md) | Converts the specified number of microseconds to number of ticks. | + +## List of Macros + +These macros should be used to evaluate the time with respect to each other. + +* `CPUIME_LT(t1,t2)` -- evaluates to true if t1 is before t2 in time. +* `CPUTIME_GT(t1,t2)` -- evaluates to true if t1 is after t2 in time +* `CPUTIME_LEQ(t1,t2)` -- evaluates to true if t1 is on or before t2 in time. +* `CPUTIME_GEQ(t1,t2)` -- evaluates to true if t1 is on or after t2 in time. http://git-wip-us.apache.org/repos/asf/incubator-mynewt-site/blob/274e59de/docs/os/core_os/cputime/os_cputime_delay_nsecs.md ---------------------------------------------------------------------- diff --git a/docs/os/core_os/cputime/os_cputime_delay_nsecs.md b/docs/os/core_os/cputime/os_cputime_delay_nsecs.md new file mode 100644 index 0000000..c4e0e71 --- /dev/null +++ b/docs/os/core_os/cputime/os_cputime_delay_nsecs.md @@ -0,0 +1,25 @@ +## <font color="F2853F" style="font-size:24pt">os_cputime_delay_nsecs</font> + +```c +void os_cputime_delay_nsecs(uint32_t nsecs) +``` +Waits for a specified number of nanoseconds to elapse before returning. + + +#### Arguments + +| Arguments | Description | +|-----------|-------------| +| `nsecs` | Number of nanoseconds to delay for. + + +#### Returned values +N/A + +#### Notes + +#### Example +Delays for 250000 nsecs: +```c +os_cputime_delay_nsecs(250000) +``` http://git-wip-us.apache.org/repos/asf/incubator-mynewt-site/blob/274e59de/docs/os/core_os/cputime/os_cputime_delay_ticks.md ---------------------------------------------------------------------- diff --git a/docs/os/core_os/cputime/os_cputime_delay_ticks.md b/docs/os/core_os/cputime/os_cputime_delay_ticks.md new file mode 100644 index 0000000..a744141 --- /dev/null +++ b/docs/os/core_os/cputime/os_cputime_delay_ticks.md @@ -0,0 +1,25 @@ +## <font color="F2853F" style="font-size:24pt">os_cputime_delay_ticks</font> + +```c +void os_cputime_delay_ticks(uint32_t ticks) +``` +Waits for a specified number of ticks to elapse before returning. + + +#### Arguments + +| Arguments | Description | +|-----------|-------------| +| `ticks` | Number of ticks to delay for. + + +#### Returned values +N/A + +#### Notes + +#### Example +Delays for 100000 ticks: +```c +os_cputime_delay_ticks(100000) +``` http://git-wip-us.apache.org/repos/asf/incubator-mynewt-site/blob/274e59de/docs/os/core_os/cputime/os_cputime_delay_usecs.md ---------------------------------------------------------------------- diff --git a/docs/os/core_os/cputime/os_cputime_delay_usecs.md b/docs/os/core_os/cputime/os_cputime_delay_usecs.md new file mode 100644 index 0000000..86c1b43 --- /dev/null +++ b/docs/os/core_os/cputime/os_cputime_delay_usecs.md @@ -0,0 +1,25 @@ +## <font color="F2853F" style="font-size:24pt">os_cputime_delay_usecs</font> + +```c +void os_cputime_delay_usecs(uint32_t usecs) +``` +Waits for a specified number of microseconds to elapse before returning. + + +#### Arguments + +| Arguments | Description | +|-----------|-------------| +| `usecs` | Number of microseconds to delay for. + + +#### Returned values +N/A + +#### Notes + +#### Example +Delays for 250000 usecs: +```c +os_cputime_delay_usecs(250000) +``` http://git-wip-us.apache.org/repos/asf/incubator-mynewt-site/blob/274e59de/docs/os/core_os/cputime/os_cputime_get32.md ---------------------------------------------------------------------- diff --git a/docs/os/core_os/cputime/os_cputime_get32.md b/docs/os/core_os/cputime/os_cputime_get32.md new file mode 100644 index 0000000..b2ee2c8 --- /dev/null +++ b/docs/os/core_os/cputime/os_cputime_get32.md @@ -0,0 +1,23 @@ +## <font color="F2853F" style="font-size:24pt">os_cputime_get32</font> + +```c +uint32_t os_cputime_get32(void) +``` +Gets the current cputime. If a timer is 64 bits, only the lower 32 bit is returned. + +#### Arguments +N/A + +#### Returned values + +The current cputime. + +#### Notes + +#### Example + +```c +uint32 cur_cputime; +cur_cputime = os_cputime_get32(); +``` + http://git-wip-us.apache.org/repos/asf/incubator-mynewt-site/blob/274e59de/docs/os/core_os/cputime/os_cputime_init.md ---------------------------------------------------------------------- diff --git a/docs/os/core_os/cputime/os_cputime_init.md b/docs/os/core_os/cputime/os_cputime_init.md new file mode 100644 index 0000000..2e119c8 --- /dev/null +++ b/docs/os/core_os/cputime/os_cputime_init.md @@ -0,0 +1,29 @@ +## <font color="F2853F" style="font-size:24pt">os_cputime_init</font> + +```c +int os_cputime_init(uint32_t clock_freq) +``` +Initializes the cputime module with the clock frequency (in HZ) to use for the timer resolution. It configures the hardware timer specified by the `OS_CPUTIME_TIMER_NUM` sysconfig value to run at the specified clock frequency. + + +#### Arguments + +| Arguments | Description | +|-----------|-------------| +| `clock_freq` | Clock frequency, in HZ, for the timer resolution. + + +#### Returned values + +0 on success and -1 on error. + +#### Notes +This function must be called after os_init is called. It should only be called once and before any other timer API and hardware timers are used. + +#### Example +A BSP package usually calls this function and uses the `OS_CPUTIME_FREQUENCY` sysconfig value for the clock frequency argument: +```c +int rc +rc = os_cputime_init(MYNEWT_VAL(OS_CPUTIME_FREQUENCY)); +``` + http://git-wip-us.apache.org/repos/asf/incubator-mynewt-site/blob/274e59de/docs/os/core_os/cputime/os_cputime_nsecs_to_ticks.md ---------------------------------------------------------------------- diff --git a/docs/os/core_os/cputime/os_cputime_nsecs_to_ticks.md b/docs/os/core_os/cputime/os_cputime_nsecs_to_ticks.md new file mode 100644 index 0000000..1666d58 --- /dev/null +++ b/docs/os/core_os/cputime/os_cputime_nsecs_to_ticks.md @@ -0,0 +1,24 @@ +## <font color="F2853F" style="font-size:24pt">os_cputime_nsecs_to_ticks</font> + +```c +uint32_t os_cputime_nsecs_to_ticks(uint32_t nsecs) +``` +Converts a specified number of nanoseconds to cputime ticks. + +#### Arguments + +| Arguments | Description | +|-----------|-------------| +| `nsecs` | Number of nanoseconds to convert to ticks. + + +#### Returned values +The number of ticks in `nsecs` nanoseconds. + +#### Notes + +#### Example +```c +uint32_t num_ticks; +num_ticks = os_cputime_nsecs_to_ticks(1000000); +``` http://git-wip-us.apache.org/repos/asf/incubator-mynewt-site/blob/274e59de/docs/os/core_os/cputime/os_cputime_ticks_to_nsecs.md ---------------------------------------------------------------------- diff --git a/docs/os/core_os/cputime/os_cputime_ticks_to_nsecs.md b/docs/os/core_os/cputime/os_cputime_ticks_to_nsecs.md new file mode 100644 index 0000000..dc6afa0 --- /dev/null +++ b/docs/os/core_os/cputime/os_cputime_ticks_to_nsecs.md @@ -0,0 +1,24 @@ +## <font color="F2853F" style="font-size:24pt">os_cputime_ticks_to_nsecs</font> + +```c +uint32_t os_cputime_ticks_to_nsecs(uint32_t ticks) +``` +Converts cputime ticks to nanoseconds. + +#### Arguments + +| Arguments | Description | +|-----------|-------------| +| `ticks` | Number of cputime ticks to convert to nanoseconds. + + +#### Returned values +The number of nanoseconds in `ticks` number of ticks. + +#### Notes + +#### Example +```c +uint32_t num_nsecs; +num_nsecs = os_cputime_ticks_to_nsecs(1000000); +``` http://git-wip-us.apache.org/repos/asf/incubator-mynewt-site/blob/274e59de/docs/os/core_os/cputime/os_cputime_ticks_to_usecs.md ---------------------------------------------------------------------- diff --git a/docs/os/core_os/cputime/os_cputime_ticks_to_usecs.md b/docs/os/core_os/cputime/os_cputime_ticks_to_usecs.md new file mode 100644 index 0000000..6fcc496 --- /dev/null +++ b/docs/os/core_os/cputime/os_cputime_ticks_to_usecs.md @@ -0,0 +1,24 @@ +## <font color="F2853F" style="font-size:24pt">os_cputime_ticks_to_usecs</font> + +```c +uint32_t os_cputime_ticks_to_usecs(uint32_t ticks) +``` +Converts a specified number of cputime ticks to microseconds. + +#### Arguments + +| Arguments | Description | +|-----------|-------------| +| `ticks` | Number of cputime ticks to convert to microseconds. + + +#### Returned values +The number of microseconds in `ticks` number of ticks. + +#### Notes + +#### Example +```c +uint32_t num_usecs; +num_usecs = os_cputime_ticks_to_usecs(1000000); +``` http://git-wip-us.apache.org/repos/asf/incubator-mynewt-site/blob/274e59de/docs/os/core_os/cputime/os_cputime_timer_init.md ---------------------------------------------------------------------- diff --git a/docs/os/core_os/cputime/os_cputime_timer_init.md b/docs/os/core_os/cputime/os_cputime_timer_init.md new file mode 100644 index 0000000..7fba485 --- /dev/null +++ b/docs/os/core_os/cputime/os_cputime_timer_init.md @@ -0,0 +1,65 @@ +## <font color="F2853F" style="font-size:24pt">os_cputime_timer_init</font> + +```c +void os_cputime_timer_init(struct hal_timer *timer, hal_timer_cb fp, void *arg) +``` +Initializes a cputime timer, indicated by `timer`, with a pointer to a callback function to call when the timer expires. When an optional opaque argument is specified, it is passed to the timer callback function. + +The callback function has the following prototype: +```c +void hal_timer_cb(void *arg) +``` + +#### Arguments + +| Arguments | Description | +|-----------|-------------| +| `timer` | Pointer to the hal_timer to initialize. This value cannot be NULL. +| `fp` | Pointer to the callback function to call when the timer expires. This value cannot be NULL. +| `arg` | Optional opaque argument to pass to the hal timer callback function. + + +#### Returned values +N/A + +#### Notes + +#### Example + +Example of ble_ll setting up a response timer: + +```c +ble_ll_wfr_timer_exp(void *arg) +{ + int rx_start; + uint8_t lls; + + ... + + /* If we have started a reception, there is nothing to do here */ + if (!rx_start) { + switch (lls) { + case BLE_LL_STATE_ADV: + ble_ll_adv_wfr_timer_exp(); + break; + + ... + + /* Do nothing here. Fall through intentional */ + case BLE_LL_STATE_INITIATING: + default: + break; + } + } +} + +void ble_ll_init(void) +{ + ... + + os_cputime_timer_init(&g_ble_ll_data.ll_wfr_timer, ble_ll_wfr_timer_exp, NULL); + + ... +} +``` + http://git-wip-us.apache.org/repos/asf/incubator-mynewt-site/blob/274e59de/docs/os/core_os/cputime/os_cputime_timer_relative.md ---------------------------------------------------------------------- diff --git a/docs/os/core_os/cputime/os_cputime_timer_relative.md b/docs/os/core_os/cputime/os_cputime_timer_relative.md new file mode 100644 index 0000000..2d420a8 --- /dev/null +++ b/docs/os/core_os/cputime/os_cputime_timer_relative.md @@ -0,0 +1,33 @@ +## <font color="F2853F" style="font-size:24pt">os_cputime_timer_relative</font> + +```c +void os_cputime_timer_relative(struct hal_timer *timer, uint32_t usecs) +``` +Sets a timer to expire in the specified number of microseconds from the current time. The callback function for the timer is called when the timer expires. + + +#### Arguments + +| Arguments | Description | +|-----------|-------------| +| `timer` | Pointer to an initialized hal_timer. +| `usecs` | The number of microseconds to set the timer to expire from now. + + +#### Returned values +N/A + +#### Notes + +`timer` must be initialized using the `os_cputime_timer_init()` function before setting up a timer. + +#### Example +` +```c +struct hal_timer mytimer; + ... + +os_cputime_timer_relative(&mytimer, 100); + +``` + http://git-wip-us.apache.org/repos/asf/incubator-mynewt-site/blob/274e59de/docs/os/core_os/cputime/os_cputime_timer_start.md ---------------------------------------------------------------------- diff --git a/docs/os/core_os/cputime/os_cputime_timer_start.md b/docs/os/core_os/cputime/os_cputime_timer_start.md new file mode 100644 index 0000000..4cdba9c --- /dev/null +++ b/docs/os/core_os/cputime/os_cputime_timer_start.md @@ -0,0 +1,34 @@ +## <font color="F2853F" style="font-size:24pt">os_cputime_timer_start</font> + +```c +void os_cputime_timer_start(struct hal_timer *timer, uint32_t cputime) +``` +Sets a timer to expire at the specified cputime. The callback function for the timer is called when the timer expires. + + +#### Arguments + +| Arguments | Description | +|-----------|-------------| +| `timer` | Pointer to an initialized hal_timer. +| `cputime` | The cputime when the timer expires. + + +#### Returned values +N/A + +#### Notes + +`timer` must be initialized using the `os_cputime_timer_init()` function before setting up a timer. + +#### Example + +```c +void +ble_ll_wfr_enable(uint32_t cputime) +{ + os_cputime_timer_start(&g_ble_ll_data.ll_wfr_timer, cputime); +} + +``` + http://git-wip-us.apache.org/repos/asf/incubator-mynewt-site/blob/274e59de/docs/os/core_os/cputime/os_cputime_timer_stop.md ---------------------------------------------------------------------- diff --git a/docs/os/core_os/cputime/os_cputime_timer_stop.md b/docs/os/core_os/cputime/os_cputime_timer_stop.md new file mode 100644 index 0000000..5c38f06 --- /dev/null +++ b/docs/os/core_os/cputime/os_cputime_timer_stop.md @@ -0,0 +1,30 @@ +## <font color="F2853F" style="font-size:24pt">os_cputime_timer_stop</font> + +```c +void os_cputime_timer_stop(struct hal_timer *timer) +``` +Stops a timer from running. The timer is removed from the timer queue and interrupts are disabled if there are no more timers on the timer queue. + +#### Arguments + +| Arguments | Description | +|-----------|-------------| +| `timer` | Pointer to the timer to stop. + + +#### Returned values +N/A + +#### Notes + +#### Example + +```c +void +ble_ll_wfr_disable(void) +{ + os_cputime_timer_stop(&g_ble_ll_data.ll_wfr_timer); +} + +``` + http://git-wip-us.apache.org/repos/asf/incubator-mynewt-site/blob/274e59de/docs/os/core_os/cputime/os_cputime_usecs_to_ticks.md ---------------------------------------------------------------------- diff --git a/docs/os/core_os/cputime/os_cputime_usecs_to_ticks.md b/docs/os/core_os/cputime/os_cputime_usecs_to_ticks.md new file mode 100644 index 0000000..dd6618d --- /dev/null +++ b/docs/os/core_os/cputime/os_cputime_usecs_to_ticks.md @@ -0,0 +1,24 @@ +## <font color="F2853F" style="font-size:24pt">os_cputime_usecs_to_ticks</font> + +```c +uint32_t os_cputime_usecs_to_ticks(uint32_t usecs) +``` +Converts a specified number of microseconds to cputime ticks. + +#### Arguments + +| Arguments | Description | +|-----------|-------------| +| `usecs` | Number of microseconds to convert to ticks. + + +#### Returned values +The number of ticks in `usecs` nanoseconds. + +#### Notes + +#### Example +```c +uint32_t num_ticks; +num_ticks = os_cputime_usecs_to_ticks(100); +``` http://git-wip-us.apache.org/repos/asf/incubator-mynewt-site/blob/274e59de/docs/os/core_os/memory_pool/os_mempool_info_get_next.md ---------------------------------------------------------------------- diff --git a/docs/os/core_os/memory_pool/os_mempool_info_get_next.md b/docs/os/core_os/memory_pool/os_mempool_info_get_next.md new file mode 100644 index 0000000..8f5f2a3 --- /dev/null +++ b/docs/os/core_os/memory_pool/os_mempool_info_get_next.md @@ -0,0 +1,70 @@ +## <font color="F2853F" style="font-size:24pt"> os_mempool_info_get_next</font> + +```c +struct os_mempool * os_mempool_info_get_next(struct os_mempool *mp, struct os_mempool_info *omi) +``` +Populates the os_mempool_info structure pointed to by `omi` with memory pool information. +The value of `mp` specifies the memory pool information to populate. If `mp` is **NULL**, it populates the information for the first memory pool on the memory pool list. If `mp` is not NULL, it populates the information for the next memory pool after `mp`. + +<br> +#### Arguments + +| Arguments | Description | +|-----------|-------------| +| `mp` | Pointer to the memory pool in the memory pool list from the previous `os_mempool_info_get_next` function call. The next memory pool after `mp` is populated. If `mp` is NULL, the first memory pool on the memory pool list is populated.| +| `omi` | Pointer to `os_mempool_info` structure where memory information will be stored.| + +<br> +#### Returned values + +* A pointer to the memory pool structure that was used to populate the memory pool information structure. + +* NULL indicates `mp` is the last memory pool on the list and `omi` is not populated with memory pool information. + +<br> +#### Example + +```c + +shell_os_mpool_display_cmd(int argc, char **argv) +{ + struct os_mempool *mp; + struct os_mempool_info omi; + char *name; + + name = NULL; + found = 0; + + if (argc > 1 && strcmp(argv[1], "")) { + name = argv[1]; + } + console_printf("Mempools: \n"); + mp = NULL; + console_printf("%32s %5s %4s %4s %4s\n", "name", "blksz", "cnt", "free", + "min"); + while (1) { + mp = o{_mempool_info_get_next(mp, &omi); + if (mp == NULL) { + break; + } + if (name) { + if (strcmp(name, omi.omi_name)) { + continue; + } else { + found = 1; + } + } + + console_printf("%32s %5d %4d %4d %4d\n", omi.omi_name, + omi.omi_block_size, omi.omi_num_blocks, + omi.omi_num_free, omi.omi_min_free); + } + + if (name && !found) { + console_printf("Couldn't find a memory pool with name %s\n", + name); + } + return (0); +} + +``` http://git-wip-us.apache.org/repos/asf/incubator-mynewt-site/blob/274e59de/docs/os/core_os/task/os_task_remove.md ---------------------------------------------------------------------- diff --git a/docs/os/core_os/task/os_task_remove.md b/docs/os/core_os/task/os_task_remove.md new file mode 100644 index 0000000..79f18c3 --- /dev/null +++ b/docs/os/core_os/task/os_task_remove.md @@ -0,0 +1,43 @@ +## <font color="F2853F" style="font-size:24pt"> os_task_remove</font> + +```c +int os_task_remove(struct os_task *t) +``` +Removes a task, `t`, from the task list. A task cannot be removed when it is in one of the following states: + +* It is running - a task cannot remove itself. +* It has not been initialized. +* It is holding a lock on a semphore or mutex. +* It is suspended waiting on a lock (semaphore or mutex) or for an event on an event queue. + +<br> +#### Arguments + +| Arguments | Description | +|-----------|-------------| +| `t` | Pointer to the `os_task` structure for the task to be removed | + +<br> +#### Returned values +`OS_OK`: Task `t` is removed sucessfully. +<br>`OS_INVALID_PARM`: Task `t` is the calling task. A task cannot remove itself. +<br>`OS_NOT_STARTED`: Task `t` is not initialized. +<br>`OS_EBUSY`: Task `t` is either holding a lock or suspended waiting on lock on event. +<br> +#### Example + +```c + +struct os_task worker_task; + +int +remove_my_worker_task(void) +{ + /* Add error checking code to ensure task can removed. */ + + /* Call os_task_remove to remove the worker task */ + rc = os_task_remove(&worker_task); + return rc; +} +``` + http://git-wip-us.apache.org/repos/asf/incubator-mynewt-site/blob/274e59de/docs/os/core_os/time/os_get_uptime_usec.md ---------------------------------------------------------------------- diff --git a/docs/os/core_os/time/os_get_uptime_usec.md b/docs/os/core_os/time/os_get_uptime_usec.md new file mode 100644 index 0000000..4859196 --- /dev/null +++ b/docs/os/core_os/time/os_get_uptime_usec.md @@ -0,0 +1,24 @@ +## <font color="F2853F" style="font-size:24pt">os_get_uptime_usec</font> + +```c +int64_t os_get_uptime_usec(void) +``` +Gets the time duration, in microseconds, since boot. + +#### Arguments + +N/A + +#### Returned values +Time since boot in microseconds. + +#### Notes + +#### Example + +<Add text to set up the context for the example here> + +```c + int64_t time_since_boot; + time_since_boot = os_get_uptime_usec(); +``` http://git-wip-us.apache.org/repos/asf/incubator-mynewt-site/blob/274e59de/docs/os/core_os/time/os_time_advance.md ---------------------------------------------------------------------- diff --git a/docs/os/core_os/time/os_time_advance.md b/docs/os/core_os/time/os_time_advance.md new file mode 100644 index 0000000..fff1245 --- /dev/null +++ b/docs/os/core_os/time/os_time_advance.md @@ -0,0 +1,22 @@ +## <font color="F2853F" style="font-size:24pt">os_time_advance</font> + +```c +void os_time_advance(int ticks) +``` +Moves the OS time forward by the value specified in `ticks`. Typically, this is called in one place by the architecture specific OS code (kernel/os/src/arch) timer_handler which is in turn called by the BSP specific code assigned to drive the OS timer tick. See Porting Mynewt OS for details. + +#### Arguments + +| Arguments | Description | +|-----------|-------------| +| `ticks` | Number of ticks to move the OS time forward. | + + +#### Returned values + +N/A + +#### Notes + + +#### Example http://git-wip-us.apache.org/repos/asf/incubator-mynewt-site/blob/274e59de/docs/os/core_os/time/os_time_ms_to_ticks.md ---------------------------------------------------------------------- diff --git a/docs/os/core_os/time/os_time_ms_to_ticks.md b/docs/os/core_os/time/os_time_ms_to_ticks.md new file mode 100644 index 0000000..4508012 --- /dev/null +++ b/docs/os/core_os/time/os_time_ms_to_ticks.md @@ -0,0 +1,29 @@ +## <font color="F2853F" style="font-size:24pt">os_time_ms_to_ticks</font> + +```c +int os_time_ms_to_ticks(uint32_t ms, uint32_t *out_ticks) +``` +Converts milliseconds to OS ticks. + +#### Arguments +| Arguments | Description | +|-----------|-------------| +| `ms` | Number of milliseconds to convert to OS ticks. | +| `out_ticks` | Pointer to an uint32_t to return the number of OS ticks for `ms` milliseconds.| + +N/A + +#### Returned values +`0`: Success +<br>`OS_EINVAL`: Number of ticks is too large to fit in an uint32_t. + +N/A + +#### Notes + + +#### Example +```c +unint32_t num_ticks; +os_time_ms_to_ticks(50, &num_ticks); +``` http://git-wip-us.apache.org/repos/asf/incubator-mynewt-site/blob/274e59de/docs/os/tutorials/pics/mkr1000-jlink.jpg ---------------------------------------------------------------------- diff --git a/docs/os/tutorials/pics/mkr1000-jlink.jpg b/docs/os/tutorials/pics/mkr1000-jlink.jpg new file mode 100755 index 0000000..cfa09ca Binary files /dev/null and b/docs/os/tutorials/pics/mkr1000-jlink.jpg differ http://git-wip-us.apache.org/repos/asf/incubator-mynewt-site/blob/274e59de/docs/os/tutorials/pics/mkr1000-serial.jpg ---------------------------------------------------------------------- diff --git a/docs/os/tutorials/pics/mkr1000-serial.jpg b/docs/os/tutorials/pics/mkr1000-serial.jpg new file mode 100755 index 0000000..f4e3819 Binary files /dev/null and b/docs/os/tutorials/pics/mkr1000-serial.jpg differ http://git-wip-us.apache.org/repos/asf/incubator-mynewt-site/blob/274e59de/docs/os/tutorials/project-stm32-slinky.md ---------------------------------------------------------------------- diff --git a/docs/os/tutorials/project-stm32-slinky.md b/docs/os/tutorials/project-stm32-slinky.md new file mode 100644 index 0000000..926a459 --- /dev/null +++ b/docs/os/tutorials/project-stm32-slinky.md @@ -0,0 +1,243 @@ +## Project Slinky Using STM32 Board + +The goal of the project is to enable and demonstrate remote communications with the Mynewt OS via newt manager (newtmgr) by leveraging a sample app "Slinky" included under the /apps directory in the repository. In this project we will define a target for the STM32-E407 board and assign the app "Slinky" to it. + +If you have an existing project that has a different application and you wish to add newtmgr functionality to it, check out the [Enable newtmgr in any app](add_newtmgr.md) tutorial. + +<br> + + +###Prerequisites +Ensure that you have met the following prerequisites before continuing with this tutorial: + +* Have a STM32-E407 development board from Olimex. +* Have a ARM-USB-TINY-H connector with JTAG interface for debugging ARM microcontrollers (comes with the ribbon cable to hook up to the board) +* Have a USB to TTL Serial Cable with female wiring harness. +* Have a USB Micro-A cable to connect your computer to the board. +* Have Internet connectivity to fetch remote Mynewt components. +* Have a computer to build a Mynewt application and connect to the board over USB. +* Install the newt tool and the toolchains (See Basic Setup). +* Install the newtmgr tool. +* Create a project space (directory structure) and populated it with the core code repository (apache-mynewt-core) or know how to as explained in Creating Your First Project. +* Read the Mynewt OS Concepts section. + +### Overview of Steps + +* Install dependencies +* Define a target using the newt tool +* Build executables for the targets using the newt tool +* Set up serial connection with the targets +* Create a connection profile using the newtmgr tool +* Use the newtmgr tool to communicate with the targets + +### Create a New Project +Create a new project if you do not have an existing one. You can skip this step and proceed to [create the targets](#create_targets) if you already have a project created or completed the [Sim Slinky](project-slinky.md) tutorial. + +```no-highlight +$ newt new slinky +Downloading project skeleton from apache/incubator-mynewt-blinky... +... +Installing skeleton in slink... +Project slink successfully created +$ cd slinky +$newt install +apache-mynewt-core +``` + +<br> + +###<a name="create_targets"></a> Create the Targets +Create two targets for the STM32-E407 board - one for the bootloader and one for the Slinky application. + +Run the following `newt target` commands, from your project directory, to create a bootloader target. We name the target ` +stm32_boot`. + +```no-highlight +$ newt target create stm32_boot +$ newt target set stm32_bootr bsp=@apache-mynewt-core/hw/bsp/olimex_stm32-e407_devboard +$ newt target set stm32_boot build_profile=optimized +$ newt target set stm32_boot target.app=@apache-mynewt-core/apps/boot +``` +<br> +Run the following `newt target` commands to create a target for the Slinky application. We name the target `stm32_slinky`. + +```no-highlight +$ newt target create stm32_slinky +$ newt target set stm32_slinky bsp=@apache-mynewt-core/hw/bsp/olimex_stm32-e407_devboard +$ newt target set stm32_slinky build_profile=debug +$ newt target set stm32_slinky app=@apache-mynewt-core/apps/slinky +``` +<br> + +### Build the Targets +Run the `newt build stm32_boot` command to build the bootloader: + +```no-highlight +$ newt build stm32_boot +Building target targets/stm32_boot +Compiling repos/apache-mynewt-core/boot/bootutil/src/image_ec256.c +Compiling repos/apache-mynewt-core/boot/bootutil/src/image_rsa.c +Compiling repos/apache-mynewt-core/boot/bootutil/src/loader.c +Compiling repos/apache-mynewt-core/boot/bootutil/src/image_ec.c +Compiling repos/apache-mynewt-core/boot/bootutil/src/image_validate.c +Compiling repos/apache-mynewt-core/crypto/mbedtls/src/aes.c +Compiling repos/apache-mynewt-core/boot/bootutil/src/bootutil_misc.c +Compiling repos/apache-mynewt-core/apps/boot/src/boot.c + + ... + +Archiving sys_mfg.a +Archiving sys_sysinit.a +Archiving util_mem.a +Linking ~/dev/slinky/bin/targets/stm32_boot/app/apps/boot/boot.elf +Target successfully built: targets/stm32_boot +$ +``` +<br> +Run the `newt build stm32_slinky` command to build the Slinky application: + +```no-highlight +$newt build stm32_slinky +Building target targets/stm32_slinky +Compiling repos/apache-mynewt-core/boot/bootutil/src/image_ec.c +Compiling repos/apache-mynewt-core/boot/bootutil/src/image_rsa.c +Compiling repos/apache-mynewt-core/boot/bootutil/src/image_ec256.c +Compiling repos/apache-mynewt-core/boot/bootutil/src/loader.c +Compiling repos/apache-mynewt-core/boot/bootutil/src/image_validate.c +Compiling repos/apache-mynewt-core/boot/split/src/split.c +Compiling repos/apache-mynewt-core/boot/bootutil/src/bootutil_misc.c +Compiling repos/apache-mynewt-core/apps/slinky/src/main.c + + ... + +Archiving util_crc.a +Archiving util_mem.a +Linking ~/dev/slinky/bin/targets/stm32_slinky/app/apps/slinky/slinky.elf +Target successfully built: targets/stm32_slinky +$ +``` +<br> +### Sign and Create the Slinky Application Image + +Run the `newt create-image stm32_slinky 1.0.0` command to create and sign the application image. You may assign an arbitrary version (e.g. 1.0.0) to the image. + +```no-highlight +create-image stm32_slinky 1.0.0 +App image succesfully generated: ~/dev/slinky/bin/targets/stm32_slinky/app/apps/slinky/slinky.img +$ +``` +<br> + + +###Connect to the Board + +* Connect the USB A-B type cable to the ARM-USB-TINY-H debugger connector. +* Connect the ARM-USB-Tiny-H debugger connector to your computer and the board. +* Connect the USB Micro-A cable to the USB-OTG2 port on the board. +* Set the Power Sel jumper on the board to pins 5 and 6 to select USB-OTG2 as the power source. If you would like to use a different power source, refer to the [OLIMEX STM32-E407 user manual](https://www.olimex.com/Products/ARM/ST/STM32-E407/resources/STM32-E407.pdf) for pin specifications. + +You should see a red LED light up on the board. + +<br> +### Load the Bootloader and the Slinky Application Image + +Run the `newt load stm32_boot` command to load the bootloader onto the board: + +```no-highlight +$ newt load stm32_boot +Loading bootloader +$ +``` +<br> +Run the `newt load stm32_slinky` command to load the Slinky application image onto the board: +```no-highlight +$ newt load stm32_slinky +Loading app image into slot 1 +$ +``` +<br> + +### Connect Newtmgr with the Board using a Serial Connection + +Locate the PC6/USART6_TX (pin 3), PC7/USART6_RX (pin 4), and GND (pin 2) of the UEXT connector on the Olimex board. More information on the UEXT connector can be found at [https://www.olimex.com/Products/Modules/UEXT/](https://www.olimex.com/Products/Modules/UEXT/). The schematic of the board can be found at [https://www.olimex.com/Products/ARM/ST/STM32-E407/resources/STM32-E407_sch.pdf](https://www.olimex.com/Products/ARM/ST/STM32-E407/resources/STM32-E407_sch.pdf) for reference. + + + + +* Connect the female RX pin of the USB-TTL serial cable to the TX (Pin 3) of the UEXT connector on the board. +* Connect the female TX pin of the USB-TTL serial cable to the RX (Pin 4) of the UEXT connector on the board. +* Connect the GND pin of the USB-TTL serial cable to the GND (Pin 2) of the UEXT connector on the board. + +<br> +Locate the port, in the /dev directory on your computer, that the serial connection uses. It should be of the type `tty.usbserial-<some identifier>`. + +```no-highlight +$ ls /dev/tty*usbserial* +/dev/tty.usbserial-1d13 +$ +``` + +<br> +Setup a newtmgr connection profile for the serial port. For our example, the port is `/dev/tty.usbserial-1d13`. + +Run the `newtmgr conn add` command to define a newtmgr connection profile for the serial port. We name the connection profile `stm32serial`. You will need to replace the `connstring` with the specific port for your serial connection. + +```no-highlight +$ newtmgr conn add stm32serial type=serial connstring=/dev/tty.usbserial-1d13 +Connection profile stm32serial successfully added +$ +``` +<br> +You can run the `newt conn show` command to see all the newtmgr connection profiles: + +```no-highlight +$ newtmgr conn show +Connection profiles: + stm32serial: type=serial, connstring='/dev/tty.usbserial-1d13' + sim1: type=serial, connstring='/dev/ttys012' +$ +``` + +<br> +### Use Newtmgr to Query the Board +Run some newtmgr commands to query and receive responses back from the board (See the [Newt Manager Guide](newtmgr/overview) for more information on the newtmgr commands). + +Run the `newtmgr echo hello -c stm32serial` command. This is the simplest command that requests the board to echo back the + text. + +```no-highlight +$ newtmgr echo hello -c stm32serial +hello +$ +``` +<br> +Run the `newtmgr image list -c stm32serial` command to list the images on the board: + +```no-highlight +$ newtmgr image list -c stm32serial +Images: + slot=0 + version: 1.0.0 + bootable: true + flags: active confirmed + hash: 9cf8af22b1b573909a8290a90c066d4e190407e97680b7a32243960ec2bf3a7f +Split status: N/A +$ +``` + + +<br> +Run the `newtmgr taskstats -c stm32serial` command to display the task statistics on the board: + +```no-highlight +$ newtmgr taskstats -c stm32serial +Return Code = 0 + task pri tid runtime csw stksz stkuse last_checkin next_checkin + task1 8 2 0 90 192 110 0 0 + task2 9 3 0 90 64 31 0 0 + idle 255 0 89460 89463 64 26 0 0 + main 127 1 4 26 1024 368 0 0 +$ +``` + + http://git-wip-us.apache.org/repos/asf/incubator-mynewt-site/blob/274e59de/docs/os/tutorials/rbnano2.md ---------------------------------------------------------------------- diff --git a/docs/os/tutorials/rbnano2.md b/docs/os/tutorials/rbnano2.md new file mode 100644 index 0000000..52883fa --- /dev/null +++ b/docs/os/tutorials/rbnano2.md @@ -0,0 +1,206 @@ +## Blinky, your "Hello World!", on RedBear Nano 2 + +<br> + +### Objective + +Learn how to use packages from a default application repository of Mynewt to build your first *Hello World* application (Blinky) on a target board. Once built using the *newt* tool, this application will blink the LED lights on the target board. + +Create a project with a simple application that blinks an LED on a RedBear Nano 2 board. Download the application to the target and watch it blink! + +<br> + +### Prerequisites + +Ensure that you have met the following prerequisites before continuing with this tutorial: + +* Have a RedBear Nano 2 board. +* Have Internet connectivity to fetch remote Mynewt components. +* Have a computer to build a Mynewt application and connect to the board over USB. +* Install the Newt tool and toolchains (See [Basic Setup](/os/get_started/get_started.md)). +* Create a project space (directory structure) and populated it with the core code repository (apache-mynewt-core) or know how to as explained in [Creating Your First Project](/os/get_started/project_create). +* Read the Mynewt OS [Concepts](/os/get_started/vocabulary.md) section. + +**Note:** You must install a patched version of OpenOCD .10.0 (See [Debugger Option 2 in the Arduino Primo Blinky Tutorial](/os/tutorials/blinky_primo)). + +### Create a Project +Create a new project if you do not have an existing one. You can skip this step and proceed to [create the targets](#create_targets) if you already have a project created. + +Run the following commands to create a new project: + +```no-highlight + $ mkdir ~/dev + $ cd ~/dev + $ newt new myproj + Downloading project skeleton from apache/incubator-mynewt-blinky... + Installing skeleton in myproj... + Project myproj successfully created. + $ cd myproj + $ newt install + apache-mynewt-core + $ +``` + +<br> + +### <a name="create_targets"></a>Create the Targets + +Create two targets for the RedBear Nano 2 board - one for the bootloader and one for the Blinky application. + +Run the following `newt target` commands, from your project directory, to create a bootloader target. We name the target `rbnano2_boot`: + +```no-highlight +$ newt target create rbnano2_boot +$ newt target set rbnano2_boot app=@apache-mynewt-core/apps/boot +$ newt target set rbnano2_boot bsp=@apache-mynewt-core/hw/bsp/rb-nano2 +$ newt target set rbnano2_boot build_profile=optimized +``` + +<br> +Run the following `newt target` commands to create a target for the Blinky application. We name the target `nrf52_blinky`. + +```no-highlight +$ newt target create rbnano2_blinky +$ newt target set rbnano2_blinky app=apps/blinky +$ newt target set rbnano2_blinky bsp=@apache-mynewt-core/hw/bsp/rb-nano2 +$ newt target set rbnano2_blinky build_profile=debug +``` +<br> +You can run the `newt target show` command to verify the target settings: + +```no-highlight +$ newt target show +targets/rbnano2_blinky + app=apps/blinky + bsp=@apache-mynewt-core/hw/bsp/rb-nano2 + build_profile=debug +targets/rbnano2_boot + app=@apache-mynewt-core/apps/boot + bsp=@apache-mynewt-core/hw/bsp/rb-nano2 + build_profile=optimized +``` +<br> + +### Build the Target Executables + +Run the `newt build rbnano2_boot` command to build the bootloader: + +```no-highlight +$newt build rbnano2_boot +Building target targets/rbnano2_boot +Compiling repos/apache-mynewt-core/boot/bootutil/src/image_rsa.c +Compiling repos/apache-mynewt-core/boot/bootutil/src/image_ec256.c +Compiling repos/apache-mynewt-core/boot/bootutil/src/loader.c +Compiling repos/apache-mynewt-core/crypto/mbedtls/src/aes.c +Compiling repos/apache-mynewt-core/boot/bootutil/src/image_validate.c +Compiling repos/apache-mynewt-core/boot/bootutil/src/image_ec.c +Compiling repos/apache-mynewt-core/boot/bootutil/src/bootutil_misc.c +Compiling repos/apache-mynewt-core/apps/boot/src/boot.c + + ... + +Archiving sys_sysinit.a +Archiving util_mem.a +Linking ~/dev/myproj/bin/targets/rbnano2_boot/app/apps/boot/boot.elf +Target successfully built: targets/rbnano2_boot +``` + +<br> +Run the `newt build rbnano2_blinky` command to build the Blinky application: + +```no-highlight +$newt build rbnano2_blinky +Building target targets/rbnano2_blinky +Assembling repos/apache-mynewt-core/hw/bsp/rb-nano2/src/arch/cortex_m4/gcc_startup_nrf52_split.s +Compiling repos/apache-mynewt-core/hw/drivers/uart/src/uart.c +Compiling repos/apache-mynewt-core/hw/cmsis-core/src/cmsis_nvic.c +Compiling repos/apache-mynewt-core/hw/bsp/rb-nano2/src/sbrk.c +Compiling apps/blinky/src/main.c + + ... + +Archiving sys_sysinit.a +Archiving util_mem.a +Linking ~/dev/myproj/bin/targets/rbnano2_blinky/app/apps/blinky/blinky.elf +Target successfully built: targets/rbnano2_blinky + +``` + +<br> + +### Sign and Create the Blinky Application Image + +Run the `newt create-image rbnano2_blinky 1.0.0` command to create and sign the application image. You may assign an arbitrary version (e.g. 1.0.0) to the image. + +```no-highlight +$newt create-image rbnano2_blinky 1.0.0 +App image succesfully generated: ~/dev/myproj/bin/targets/rbnano2_blinky/app/apps/blinky/blinky.img +``` + +<br> + +### Connect to the Board + +Connect the RedBear Nano 2 USB to a USB port on your computer. You should see an orange LED light up on the board. + + +### Load the Bootloader and the Blinky Application Image + +Run the `newt load rbnano2_boot` command to load the bootloader onto the board: + +```no-highlight +$ newt load rbnano2_boot +Loading bootloader +$ +``` +<br> +Note: The flash memory on the RedBear Nano 2 comes write protected from the factory. If you get an error loading the bootloader and you are using a brand new chip, you need to clear the write protection from the debugger and then load the bootloader again. Run the `newt debug rbnano2_blinky` command and issue the following commands at the highlighted (gdb) prompts. + +```hl_lines="8 9 11 14" +$newt debug rbnano2_blinky +[~/dev/myproj/repos/apache-mynewt-core/hw/bsp/rb-nano2/rb-nano2_debug.sh ~/dev/myproj/repos/apache-mynewt-core/hw/bsp/rb-nano2 ~/dev/myproj/bin/targets/rbnano2_blinky/app/apps/blinky/blinky] +Open On-Chip Debugger 0.10.0-dev-snapshot (2017-03-28-11:24) +Licensed under GNU GPL v2 + + ... + +(gdb) set {unsigned long}0x4001e504=2 +(gdb) x/1wx 0x4001e504 +0x4001e504:0x00000002 +(gdb) set {unsigned long}0x4001e50c=1 +Info : SWD DPIDR 0x2ba01477 +Error: Failed to read memory at 0x00009ef4 +(gdb) x/32wx 0x00 +0x0:0xffffffff0xffffffff0xffffffff0xffffffff +0x10:0xffffffff0xffffffff0xffffffff0xffffffff +0x20:0xffffffff0xffffffff0xffffffff0xffffffff +0x30:0xffffffff0xffffffff0xffffffff0xffffffff +0x40:0xffffffff0xffffffff0xffffffff0xffffffff +0x50:0xffffffff0xffffffff0xffffffff0xffffffff +0x60:0xffffffff0xffffffff0xffffffff0xffffffff +0x70:0xffffffff0xffffffff0xffffffff0xffffffff +(gdb) +``` + +<br> +Run the `newt load rbnano2_blinky` command to load the Blinky application image onto the board. +```no-highlight +$ newt load rbnano2_blinky +Loading app image into slot 1 +``` + +You should see a blue LED on the board blink! + +Note: If the LED does not blink, try resetting your board. + + +### Conclusion + +You have created, setup, compiled, loaded, and ran your first mynewt application for a RedBear Nano 2 board. + +We have more fun tutorials for you to get your hands dirty. Be bold and work on the OS with tutorials on [writing a test suite](unit_test.md) or try enabling additional functionality such as [remote comms](project-target-slinky.md) or [Bluetooth Low Energy](bletiny_project.md) on your current board. + +If you see anything missing or want to send us feedback, please do so by signing up for appropriate mailing lists on our [Community Page](../../community.md). + +Keep on hacking and blinking! + http://git-wip-us.apache.org/repos/asf/incubator-mynewt-site/blob/274e59de/extras/newtmgr/index.html ---------------------------------------------------------------------- diff --git a/extras/newtmgr/index.html b/extras/newtmgr/index.html new file mode 100644 index 0000000..c58608a --- /dev/null +++ b/extras/newtmgr/index.html @@ -0,0 +1,6 @@ +<html> + <head> + <meta name="go-import" content="mynewt.apache.org/newtmgr git https://git-wip-us.apache.org/repos/asf/incubator-mynewt-newtmgr.git"> + <meta http-equiv="refresh" content="0; url=/"> + </head> +</html> http://git-wip-us.apache.org/repos/asf/incubator-mynewt-site/blob/274e59de/extras/newtmgr/newtmgr/index.html ---------------------------------------------------------------------- diff --git a/extras/newtmgr/newtmgr/index.html b/extras/newtmgr/newtmgr/index.html new file mode 100644 index 0000000..c58608a --- /dev/null +++ b/extras/newtmgr/newtmgr/index.html @@ -0,0 +1,6 @@ +<html> + <head> + <meta name="go-import" content="mynewt.apache.org/newtmgr git https://git-wip-us.apache.org/repos/asf/incubator-mynewt-newtmgr.git"> + <meta http-equiv="refresh" content="0; url=/"> + </head> +</html> http://git-wip-us.apache.org/repos/asf/incubator-mynewt-site/blob/274e59de/extras/newtmgr/nmxact/index.html ---------------------------------------------------------------------- diff --git a/extras/newtmgr/nmxact/index.html b/extras/newtmgr/nmxact/index.html new file mode 100644 index 0000000..c58608a --- /dev/null +++ b/extras/newtmgr/nmxact/index.html @@ -0,0 +1,6 @@ +<html> + <head> + <meta name="go-import" content="mynewt.apache.org/newtmgr git https://git-wip-us.apache.org/repos/asf/incubator-mynewt-newtmgr.git"> + <meta http-equiv="refresh" content="0; url=/"> + </head> +</html> http://git-wip-us.apache.org/repos/asf/incubator-mynewt-site/blob/274e59de/mkdocs.yml ---------------------------------------------------------------------- diff --git a/mkdocs.yml b/mkdocs.yml index 5e36ac2..0cde65b 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -402,20 +402,20 @@ extra: Chapter 6 - Packaging it: 'Packages for distribution delineates the process of creating complete packages to load on your embedded device to get it up, connected, and ready for remote management.' events: event 1: + title: 'Sensors Expo' + description: 'Check out the booth and talk by Runtime to learn about Mynewt OS and its sensor framework.' + location: "McEnery Convention Center, San Jose, CA, USA" + date: '27-29 June, 2017' + event 2: title: 'ApacheIoT, ApacheCon North America' description: 'A new conference track that lays the vision, framework, and components for an IoT system. See more at <a href="http://us.apacheiot.org"> http://us.apacheiot.org</a>. Multiple talks will feature Apache Mynewt.' location: "InterContinental Miami, Miami, FL, USA" date: '16-18 May, 2017' - event 2: + event 3: title: 'IoTFuse: Conference 2017' - description: 'Presentation on managing devices running open source Operating Systems including Apache Mynewt.' + description: 'Presentation on building and managing devices running open source Operating Systems including Apache Mynewt.' location: "Minneapolis Convention Center, Minneapolis, MN, USA" date: '21 April, 2017' - event 3: - title: 'Bluetooth World' - description: 'Get to the heart of BLE support from Apache Mynewt at Exhibit Booth #11A.' - location: "Santa Clara Convention Center, Santa Clara, CA, USA" - date: '28-29 March, 2017' copyright: 'Apache Mynewt (incubating) is available under Apache License, version 2.0.'
