Re: FW: [users] TCP/IP support in network IP stack
Paul Duffy <paduffy@...>
Could MQTT-SN work for you?
toggle quoted messageShow quoted text
On 3/30/2016 4:53 AM, Mahendravarman rajarao wrote:
Thanks a lot for the reply
|
|
Sanity check and test cases
Yannis Damigos
Hi all,
a quick question regarding sanity check and test cases. I modified the test-fifo test case reducing the amount of memory statically allocated for fibers' stack. This permits the test_nano to compile on boards like nucleo-f103rb and arduino 101 sss. I run the sanitycheck script: ./scripts/sanitycheck --inline-logs --all -T ./tests/kernel/test_fifo/ and all the tests passes: Cleaning output directory /home/xekarfwtos/projects/zephyr/sanity-out Selecting all possible platforms per test case Building testcase defconfigs... 25 tests selected, 3 tests discarded due to filters total complete: 25/ 25 failed: 0 25 of 25 tests passed with 0 warnings in 95 seconds Is it safe to submit the patch to gerrit or should I first test it on real hardware (I do not own any of the platforms)? best regards, Yannis
|
|
Re: FW: [users] TCP/IP support in network IP stack
Mahendravarman rajarao <mahendravarman.rajarao@...>
Thanks a lot for the reply
If TCP support to the network stack is provided then Can I use the MQTT client library to make support for MQTT ? Can you please tell me when can I expect the TCP support to network stack ? Thanks again
|
|
Re: RFC: extend sanitycheck testcase filtering expressiveness
Wang, Jing J
QA test suite actually has similar requirement for test case filtering by expression. We took a lightweight approach, directly use "python expression" instead of creating a new one. The benefit of "python expression" is, the expression can be parsed by python eval() function directly. Thus, below filter expression is naturally supported with a small code snippets.
toggle quoted messageShow quoted text
@tag_exp('soc not in ["quark_se", "quark_d2000"]') def test_xxxx(self): Rgds jwang
-----Original Message-----
From: Dmitriy Korovkin [mailto:dmitriy.korovkin(a)windriver.com] Sent: Tuesday, March 29, 2016 4:23 AM To: Boie, Andrew P <andrew.p.boie(a)intel.com> Cc: devel(a)lists.zephyrproject.org Subject: [devel] Re: RFC: extend sanitycheck testcase filtering expressiveness On Fri, 25 Mar 2016, Boie, Andrew P wrote: Proposed solution:I see nothing bad in the proposal. Implementation details:I would refrain from copying PLY into the source tree for the following reasons: - Support. Updating the library, which is not the part of the project may be a headache. - Licensing. There may be issues with distributing with Zephyr the code that we have not developed. - Importing. In case of side projects that, for instance, run all sanity_chk projects on real hardware, using sanity_chk combined with additional library may create problems. - Distributions. Ubuntu has PLY 3.4 as a part of the distribution. As you have mentioned, Fedora has it as well. Regards, /Dmitriy
|
|
Re: FW: [users] TCP/IP support in network IP stack
Jukka Rissanen
On Tue, 2016-03-29 at 15:30 +0000, Mahendravarman Rajarao (RBEI/EAA3)
wrote: HiYes, TCP is not supported right now. Yes, I am currently working on adding TCP support to the network stack. Cheers, Jukka
|
|
k64 rgb-led kernel module
Idupsle <idupsle@...>
Hello everybody,
I recently wanted to have a more fun with the k64 and wrote a little kernel module. I don't know, if it is needed for the real kernel and if the structure is right. But if anyone is interested in it... here! Eg: #include <drivers/k64_rgb.h> rgb_set_color(0); // set red rgb_set_color(1); // set green rgb_set_color(2); // set blue rgb_set_color(3); // set yellow rgb_set_color(4); // set cyan rgb_set_color(5); // set magenta rgb_set_color(6); // set white rgb_set_color(7); // set off diff --git a/drivers/gpio/Kconfig.k64 b/drivers/gpio/Kconfig.k64 index 8854f73..837855a 100644 --- a/drivers/gpio/Kconfig.k64 +++ b/drivers/gpio/Kconfig.k64 @@ -136,4 +136,10 @@ config GPIO_K64_PORTE_PRI help K64 Port E IRQ priority +config GPIO_K64_RGB_LED + bool "Freeschale K64-based board LED-RGB driver" + depends on GPIO_K64 && CONFIG_PINMUX_DEV_FRDM_K64F + default n + help + K64 Ports for RGB LED. endif # GPIO_K64 diff --git a/drivers/gpio/Makefile b/drivers/gpio/Makefile index f34c0ce..61a815a 100644 --- a/drivers/gpio/Makefile +++ b/drivers/gpio/Makefile @@ -8,4 +8,6 @@ obj-$(CONFIG_GPIO_SCH) += gpio_sch.o obj-$(CONFIG_GPIO_QMSI) += gpio_qmsi.o obj-$(CONFIG_GPIO_ATMEL_SAM3) += gpio_atmel_sam3.o obj-$(CONFIG_GPIO_K64) += gpio_k64.o +obj-$(CONFIG_GPIO_K64_RGB_LED) += k64_rgb.o obj-$(CONFIG_GPIO_STM32) += gpio_stm32.o + diff --git a/drivers/gpio/k64_rgb.c b/drivers/gpio/k64_rgb.c new file mode 100644 index 0000000..06df03d --- /dev/null +++ b/drivers/gpio/k64_rgb.c @@ -0,0 +1,93 @@ +#ifdef CONFIG_GPIO_K64_RGB_LED + +#include <errno.h> + +#include <nanokernel.h> +#include <device.h> +#include <init.h> +#include <gpio.h> +#include <sys_io.h> +#include <soc.h> + +#include <pinmux/frdm_k64f/pinmux_k64.h> + +#include "gpio_k64.h" +#include "k64_rgb.h" + +void k64_rgb_set_red(uint8_t value) +{ + if (value) { + sys_set_bit((GPIO_K64_B_BASE_ADDR + +GPIO_K64_DIR_OFFSET), + K64_PIN_RED%K64_PINMUX_NUM_PINS); + } else { + sys_clear_bit((GPIO_K64_B_BASE_ADDR + +GPIO_K64_DIR_OFFSET), + K64_PIN_RED%K64_PINMUX_NUM_PINS); + } +} +void k64_rgb_set_blue(uint8_t value) +{ + if (value) { + sys_set_bit((GPIO_K64_B_BASE_ADDR + +GPIO_K64_DIR_OFFSET), + K64_PIN_BLUE%K64_PINMUX_NUM_PINS); + } else { + sys_clear_bit((GPIO_K64_B_BASE_ADDR + +GPIO_K64_DIR_OFFSET), + K64_PIN_BLUE%K64_PINMUX_NUM_PINS); + } +} +void k64_rgb_set_green(uint8_t value) +{ + if (value) { + sys_set_bit((GPIO_K64_E_BASE_ADDR + +GPIO_K64_DIR_OFFSET), + K64_PIN_GREEN%K64_PINMUX_NUM_PINS); + } else { + sys_clear_bit((GPIO_K64_E_BASE_ADDR + +GPIO_K64_DIR_OFFSET), + K64_PIN_GREEN%K64_PINMUX_NUM_PINS); + } +} + +void k64_rgb_set(uint8_t r, uint8_t g, uint8_t b) +{ + k64_rgb_set_red(0); + k64_rgb_set_blue(0); + k64_rgb_set_green(0); + if (r) + k64_rgb_set_red(1); + if (g) + k64_rgb_set_blue(1); + if (b) + k64_rgb_set_green(1); +} +int rgb_set_color(uint8_t color) +{ + + if (color > 7) return 1; + switch(color) + { + case K64_RGB_RED: k64_rgb_set(1, 0, 0); + break; + case K64_RGB_GREEN: k64_rgb_set(0, 1, 0); + break; + case K64_RGB_BLUE: k64_rgb_set(0, 0, 1); + break; + case K64_RGB_YELLOW: k64_rgb_set(1, 1, 0); + break; + case K64_RGB_CYAN: k64_rgb_set(0, 1, 1); + break; + case K64_RGB_MAGENTA: k64_rgb_set(1, 0, 1); + break; + case K64_RGB_WHITE: k64_rgb_set(1, 1, 1); + break; + case K64_RGB_OFF: k64_rgb_set(0, 0, 0); + break; + } + return 0; +} + +#endif + diff --git a/drivers/pinmux/frdm_k64f/pinmux_board_frdm_k64f.c b/drivers/pinmux/frdm_k64f/pinmux_board_frdm_k64f.c index 9717ef5..9c39b0e 100644 --- a/drivers/pinmux/frdm_k64f/pinmux_board_frdm_k64f.c +++ b/drivers/pinmux/frdm_k64f/pinmux_board_frdm_k64f.c @@ -38,11 +38,16 @@ * Since the K64 MCU configures these pins for JTAG/SWD signaling at reset, * they should only be re-configured if the debug interface is not used. */ +#ifdef CONFIG_GPIO_K64_RGB_LED +#define LED_RGB_PINS 3 +#else +#define LED_RGB_PINS 0 +#endif #ifndef CONFIG_PRESERVE_JTAG_IO_PINS -#define NUM_DFLT_PINS_SET 22 +#define NUM_DFLT_PINS_SET 22 + LED_RGB_PINS #else -#define NUM_DFLT_PINS_SET (22 - 3) +#define NUM_DFLT_PINS_SET (22 - 3) + LED_RGB_PINS #endif /* @@ -58,6 +63,10 @@ struct pin_config mux_config[NUM_DFLT_PINS_SET] = { #ifndef CONFIG_PRESERVE_JTAG_IO_PINS { K64_PIN_PTA1, K64_PINMUX_FUNC_GPIO }, #endif +#ifdef CONFIG_GPIO_K64_RGB_LED + { K64_PIN_PTB21, K64_PINMUX_FUNC_GPIO }, + { K64_PIN_PTB22, K64_PINMUX_FUNC_GPIO }, +#endif { K64_PIN_PTB23, K64_PINMUX_FUNC_GPIO }, #ifndef CONFIG_PRESERVE_JTAG_IO_PINS { K64_PIN_PTA2, K64_PINMUX_FUNC_GPIO }, @@ -76,6 +85,9 @@ struct pin_config mux_config[NUM_DFLT_PINS_SET] = { { K64_PIN_PTE25, (K64_PINMUX_ALT_5 | K64_PINMUX_OPEN_DRN_ENABLE) }, /* I2C0_SCL */ { K64_PIN_PTE24, (K64_PINMUX_ALT_5 | K64_PINMUX_OPEN_DRN_ENABLE) }, +#ifdef CONFIG_GPIO_K64_RGB_LED + { K64_PIN_PTE26, K64_PINMUX_FUNC_GPIO }, +#endif { K64_PIN_PTB2, K64_PINMUX_FUNC_ANALOG }, /* ADC0_SE12/Analog In 0 */ { K64_PIN_PTB3, K64_PINMUX_FUNC_ANALOG }, /* ADC0_SE13/Analog In 1 */ { K64_PIN_PTB10, K64_PINMUX_FUNC_ANALOG }, /* ADC1_SE14/Analog In 2 */ diff --git a/drivers/pinmux/frdm_k64f/pinmux_k64.h b/drivers/pinmux/frdm_k64f/pinmux_k64.h index ca40c14..bc30e25 100644 --- a/drivers/pinmux/frdm_k64f/pinmux_k64.h +++ b/drivers/pinmux/frdm_k64f/pinmux_k64.h @@ -280,6 +280,12 @@ #define K64_PIN_PTE30 158 #define K64_PIN_PTE31 159 +#ifdef CONFIG_GPIO_K64_RGB_LED +#define K64_PIN_RED 54 +#define K64_PIN_GREEN 154 +#define K64_PIN_BLUE 53 +#endif + int _fsl_k64_set_pin(uint32_t pin_id, uint32_t func); int _fsl_k64_get_pin(uint32_t pin_id, uint32_t *func); diff --git a/include/drivers/k64_rgb.h b/include/drivers/k64_rgb.h new file mode 100644 index 0000000..de63ae6 --- /dev/null +++ b/include/drivers/k64_rgb.h @@ -0,0 +1,39 @@ +#ifndef _K64RGB_H +#define _K64RGB_H + +#ifdef __cplusplus +extern "C" { +#endif + + +#ifdef CONFIG_GPIO_K64_RGB_LED +//#include "gpio_k64.h" +#include <gpio.h> + + +/* Available color slsections */ +#define K64_RGB_RED 0 +#define K64_RGB_GREEN 1 +#define K64_RGB_BLUE 2 +#define K64_RGB_YELLOW 3 +#define K64_RGB_CYAN 4 +#define K64_RGB_MAGENTA 5 +#define K64_RGB_WHITE 6 +#define K64_RGB_OFF 7 + + +extern int rgb_set_color(uint8_t color); +//{ +// return k64_rgb_set_color(color); +//} + + + + +#endif /* CONFIG_GPIO_K64_RGB */ + +#ifdef __cplusplus +} +#endif + +#endif /* _K64RGB_H */
|
|
FW: [users] TCP/IP support in network IP stack
Mahendravarman Rajarao (RBEI/EAA3) <Mahendravarman.Rajarao@...>
Hi
Under Zephyr RTOS net/ip/net_core.c, Support for IPPROTO_UDP is available and Support for IPPROTO_TCP is mentioned as not yet supported Does it mean the Zephyr RTOS network stack has support only for UDP and there is no support for TCP/IP? Any plans on support for TCP/IP on network stack ?
|
|
Re: RFC: extend sanitycheck testcase filtering expressiveness
Nashif, Anas
On 28 Mar 2016, at 17:04, Boie, Andrew P <andrew.p.boie(a)intel.com> wrote:Beside the issue above, the proposal looks good to me and will definitely improve and expand the coverage. Lets find a way to make this work without adding the parser into the tree please. Thanks, Anas
|
|
Re: RFC: extend sanitycheck testcase filtering expressiveness
Boie, Andrew P
On Mon, 2016-03-28 at 16:23 -0400, Dmitriy Korovkin wrote:
I would refrain from copying PLY into the source tree for theYeah I'll take it out of the patch series. I've asked Juro to look into including it into the Zephyr SDK, which is where we typically put our dependent packages. If that doesn't work out we would just have to add 'sudo dnf install python3-ply' (or equivalent) to the workstation setup. Andrew
|
|
Cortex-M0 porting status? (was: Re: Re: STM32F103x port)
Anderson Lizardo <anderson.lizardo@...>
Hi Anas,
On Fri, Feb 26, 2016 at 4:52 PM, Nashif, Anas <anas.nashif(a)intel.com> wrote: Any updates on the Cortex-M0 porting effort? Is there any public codeOn Feb 26, 2016, at 11:08, Maciek Borzecki <maciek.borzecki(a)gmail.com> wrote: (even WIP) to look at? Best Regards, -- Anderson Lizardo
|
|
Re: RFC: extend sanitycheck testcase filtering expressiveness
Dmitriy Korovkin
On Fri, 25 Mar 2016, Boie, Andrew P wrote:
Proposed solution:I see nothing bad in the proposal. Implementation details:I would refrain from copying PLY into the source tree for the following reasons: - Support. Updating the library, which is not the part of the project may be a headache. - Licensing. There may be issues with distributing with Zephyr the code that we have not developed. - Importing. In case of side projects that, for instance, run all sanity_chk projects on real hardware, using sanity_chk combined with additional library may create problems. - Distributions. Ubuntu has PLY 3.4 as a part of the distribution. As you have mentioned, Fedora has it as well. Regards, /Dmitriy
|
|
RFC: remove microkernel Task IRQs from Zephyr
Boie, Andrew P
Problem statement:
The current implementation of Microkernel Task IRQs has a hard dependency on dynamic interrupts, which we also want to remove from Zephyr. Although the mechanism could be redesigned to use static IRQs, the value it provides to the kernel is dubious. It's very simple with other APIs to have a driver that needs this functionality to create their own task and have it wait on a kevent_t which the driver ISR releases. Historically, when Zephyr used to have a user/kernel space separation, Task IRQs were used for user space processes to register with an IRQ coupled with MMIO mapping routines. We don't have user space any more. We'd rather not continue to maintain this thing. Solution: Remove microkernel task IRQs and leave the uncommon use-cases where they would be needed as a (simple) exercise for the application or driver developer.
|
|
Re: Help for tests/benchmark/latency_measure run failed on Arduino Due board.
Li, Min A <min.a.li@...>
Hi Rodger,
toggle quoted messageShow quoted text
You can first have a try without "TEST=max" option. Besides this, gdb can be used to debug this issue after disabled the other successful indicators. Regards Min
-----Original Message-----
From: Rodger Lin [mailto:caritas(a)163.com] Sent: Monday, March 28, 2016 2:40 PM To: devel(a)lists.zephyrproject.org Subject: [devel] Help for tests/benchmark/latency_measure run failed on Arduino Due board. I built the test code at "tests/benchmark/latency_measure/microkernel" . It runs well using the qemu mode. I want to try it on Arduino Due board, built it using: make TEST=max BOARD=arduino_due After the program runs on the Arduino Due board. I got the "failure" with some error items. Here is the result: |-----------------------------------------------------------------------------| | Nanokernel Latency Benchmark | |-----------------------------------------------------------------------------| | tcs = timer clock cycles: 1 tcs is 11 nsec | |-----------------------------------------------------------------------------| | 1- Measure time to switch from fiber to ISR execution | | switching time is 156 tcs = 1857 nsec | |-----------------------------------------------------------------------------| | 2- Measure time to switch from ISR back to interrupted fiber | | switching time is 117 tcs = 1392 nsec | |-----------------------------------------------------------------------------| | 3- Measure time from ISR to executing a different fiber (rescheduled) | | switching time is 367 tcs = 4369 nsec | |-----------------------------------------------------------------------------| | 4- Measure average context switch time between fibers | | Error: tick occurred | |-----------------------------------------------------------------------------| | 5- Measure average time to lock then unlock interrupts | | Error: tick occurred | |-----------------------------------------------------------------------------| |-----------------------------------------------------------------------------| | Microkernel Latency Benchmark | |-----------------------------------------------------------------------------| | tcs = timer clock cycles: 1 tcs is 11 nsec | |-----------------------------------------------------------------------------| | 1- Measure time to switch from ISR to back to interrupted task | | switching time is 119 tcs = 1416 nsec | |-----------------------------------------------------------------------------| | 2- Measure time from ISR to executing a different task (rescheduled) | | switch time is 694 tcs = 8261 nsec | |-----------------------------------------------------------------------------| | 3- Measure average time to signal a sema then test that sema | | Average semaphore signal time 0 tcs = 0 nsec | | Average semaphore test time 0 tcs = 0 nsec | |-----------------------------------------------------------------------------| | 4- Measure average time to lock a mutex then unlock that mutex | | Average time to lock the mutex 504056 tcs = 6000668 nsec | | Average time to unlock the mutex 587911 tcs = 6998948 nsec | |-----------------------------------------------------------------------------| | 5- Measure average context switch time between tasks using (task_yield) | | Error: tick occurred | |-----------------------------------------------------------------------------| | E N D | |-----------------------------------------------------------------------------| =================================================================== PROJECT EXECUTION FAILED
|
|
Help for tests/benchmark/latency_measure run failed on Arduino Due board.
Rodger Lin
I built the test code at "tests/benchmark/latency_measure/microkernel" . It runs well using the qemu mode.
I want to try it on Arduino Due board, built it using: make TEST=max BOARD=arduino_due After the program runs on the Arduino Due board. I got the "failure" with some error items. Here is the result: |-----------------------------------------------------------------------------| | Nanokernel Latency Benchmark | |-----------------------------------------------------------------------------| | tcs = timer clock cycles: 1 tcs is 11 nsec | |-----------------------------------------------------------------------------| | 1- Measure time to switch from fiber to ISR execution | | switching time is 156 tcs = 1857 nsec | |-----------------------------------------------------------------------------| | 2- Measure time to switch from ISR back to interrupted fiber | | switching time is 117 tcs = 1392 nsec | |-----------------------------------------------------------------------------| | 3- Measure time from ISR to executing a different fiber (rescheduled) | | switching time is 367 tcs = 4369 nsec | |-----------------------------------------------------------------------------| | 4- Measure average context switch time between fibers | | Error: tick occurred | |-----------------------------------------------------------------------------| | 5- Measure average time to lock then unlock interrupts | | Error: tick occurred | |-----------------------------------------------------------------------------| |-----------------------------------------------------------------------------| | Microkernel Latency Benchmark | |-----------------------------------------------------------------------------| | tcs = timer clock cycles: 1 tcs is 11 nsec | |-----------------------------------------------------------------------------| | 1- Measure time to switch from ISR to back to interrupted task | | switching time is 119 tcs = 1416 nsec | |-----------------------------------------------------------------------------| | 2- Measure time from ISR to executing a different task (rescheduled) | | switch time is 694 tcs = 8261 nsec | |-----------------------------------------------------------------------------| | 3- Measure average time to signal a sema then test that sema | | Average semaphore signal time 0 tcs = 0 nsec | | Average semaphore test time 0 tcs = 0 nsec | |-----------------------------------------------------------------------------| | 4- Measure average time to lock a mutex then unlock that mutex | | Average time to lock the mutex 504056 tcs = 6000668 nsec | | Average time to unlock the mutex 587911 tcs = 6998948 nsec | |-----------------------------------------------------------------------------| | 5- Measure average context switch time between tasks using (task_yield) | | Error: tick occurred | |-----------------------------------------------------------------------------| | E N D | |-----------------------------------------------------------------------------| =================================================================== PROJECT EXECUTION FAILED
|
|
Zephyr 1.2.0-rc1 tagged
Nashif, Anas
Hi,
Zephyr v1.2.0-rc1 has been tagged, merge window for major features is now closed. We are targeting a release of v1.2.0 end of this week. Below you will find the changes since v1.1.0. Regards, Anas Anas Nashif (22): samples/tests: remove old message about standard security sanitychecks: skip early_sleep test Revert "microkernel: Add support for *_sleep() during initialization" Revert "sanitychecks: skip early_sleep test" Revert "tests: Add test for microkernel early sleep functionality" pinmux: do not depend on GPIO kernel: fix boot banner option kconfig: remove optional flag for boards kconfig: move ARM bootloader options to bootloader menu kconfig: add power management options into a menu kconfig: remove redundant EVENT_LOGGER option kconfig: move IAMCU option under processor capabilities kconfig: Do not put architecture in the title build: support multiple defconfigs per board ia32: compile with soft-float when using IAMCU ABI qemu_x86_iamcu: remove board and use defconfig from qemu_x86 kconfig: move kernel options close together kconfig: reorg ARM options and make things consistent watchdog: use instance name instead of variable sensors: Convert return codes to errno.h samples: w25q80bl: configure sample with correct board Zephyr 1.2.0-rc1 Andre Guedes (26): rtc: Fix Kconfig samples: uart: Test irq-based APIs Remove unused macro UART_IOAPIC_FLAGS uart: Introduce QMSI shim driver uart: qmsi: Add baud rate configuration support uart: qmsi: Support for line control and driver command uart: qmsi: Add support for IRQ APIs samples: Add STTS751 sample application pinmux: Change returning type from pinmux.h APIs device: Redefine DEV_* error codes drivers: Replace DEV_OK by 0 drivers: Replace DEV_FAIL by -EIO drivers: Replace DEV_INVALID_OP by -ENOTSUP drivers: Replace DEV_INVALID_CONF by -EINVAL drivers: Replace DEV_USED by -EBUSY drivers: Replace DEV_NO_ACCESS by -EACCES drivers: Replace DEV_NO_SUPPORT by -ENODEV drivers: Replace DEV_NOT_CONFIG by -EPERM drivers: Fix documentation from remaining APIs drivers: qmsi: Fix gpio, i2c and wdt for D2000 uart: Enable QMSI driver for Quark D2000 device: Deprecate DEV_* error codes arch: Convert returning codes to errno.h test: Convert returning code to errno.h counter: Fix returning code gpio: Fix returning code from stm32 driver Andrei Emeltchenko (37): drivers/nble: Implement NBLE GATT discover response Bluetooth: Increment start handle with next discovery drivers/nble: Update RPC to Nordic BLE chip drivers/nble: Remove unneeded forward declaration drivers/nble: Rearrange header includes drivers/nble: Rename gatt_discover to gatt_private Bluetooth: Fix compare logic in ATT read rsp drivers/nble: Implement GATT read request Bluetooth/shell: Print handle in hex instead of decimal Bluetooth/shell: Clear subscription on gatt_unsubscribe() Bluetooth/sample: Fix exit after first indication sent drivers/nble: Implement GATT write request drivers/nble: Implement GATT write without response drivers/nble: Implement GATT subscribe drivers/nble: Update RPC to Nordic BLE drivers/nble: Correct debug print statement drivers/nble: Use hexadecimal format specifier drivers/nble: Implement on_nble_gap_start_advertise_rsp() drivers/nble: Implement bt_gatt_indicate() drivers/nble: Return -ENOTCONN when LE connection not exist drivers/nble: Fix using UUID for GATT discover drivers/nble: Implement bt_conn_security() drivers/nble: Add skeleton for handling SM events drivers/nble: Implement bt_conn_auth_cb_register() drivers/nble: Refactor DM configuration drivers/nble: Implement on_nble_gap_sm_passkey_display_evt() drivers/nble: Implement LE stop advertising drivers/nble: Implement passkey entry event drivers/nble: Update RPC to Nordic BLE firmware drivers/nble: Update valid advertise parameters drivers/nble: Check firmware version for compatibility drivers/nble: Implement common response drivers/nble: Move local bdaddr to nble structure drivers/nble: Move auth callback to nble struct drivers/nble: Re-enable advertising on disconnect Bluetooth: Dereference NULL pointer after check Bluetooth: Fix using uninitialized value Andrew Boie (15): arm: move irq_vector_table to common location arm: remove SW_ISR_TABLE_STATIC_CUSTOM arm: don't build sw_isr_table if disabled arc: move vector and sw isr table to core code arc: remove SW_ISR_TABLE_STATIC_CUSTOM arc: remove CONFIG_SW_ISR_TABLE_BSP ipm: add demo code for inter-processor mailboxes ipm: correct prototype for ipm_send iamcu: fix -fstack-protector qemu_x86_iamcu: new board for QEMU with IAMCU ABI HACK: qemu: change e_machine for IAMCU binaries sanitycheck: enable qemu_x86_iamcu and prefer it over qemu_x86 app_kernel: fix test case scaling sanitycheck: allow N platforms per arch to be run sanitycheck: don't require arch.ini blocks for every platform Arkadiusz Lichwa (17): Bluetooth: Cleanup dependency build for LE/BREDR Bluetooth: BR/EDR: Add pairing mode flag Bluetooth: BR/EDR: Group interfaces in conn.c Bluetooth: BR/EDR: Reuse link key if available Bluetooth: BR/EDR: Mark P-192 EC link key as AUTHENTICATED Bluetooth: BR/EDR: Validate remote requirements Bluetooth: BR/EDR: Reply to IO Capability request Bluetooth: BR/EDR: Handle User Confirmation Request event Bluetooth: BR/EDR: Check security on SSP authentication Bluetooth: BR/EDR: Set user mode flag on User Confirmation event Bluetooth: BR/EDR: Handle User Passkey Notify event Bluetooth: BR/EDR: Handle User Passkey Entry event Bluetooth: BR/EDR: Set user mode flag on User Passkey Entry Bluetooth: BR/EDR: Add no-bond keys flag Bluetooth: Fix checkpatch error/warnings Bluetooth: BR/EDR: Fix storing legacy link key Bluetooth: BR/EDR: Refactor link key notify handler Baohong Liu (6): drivers: framework for a generic flash driver drivers: WinBond SPI flash support boards: arduino_101 : Enable SPI Flash API: Add public counter API drivers: Quark AON counter and timer support samples: A test app for quark Always-on counter and timer Benjamin Walsh (2): doc: enforce 8-char tabs and 80-column width in coding standards Revert "arch: arm: set the architecture via Kconfig" Bogdan Davidoaia (7): sensor: add slope threshold and duration attributes sensor: move driver specific options to separate Kconfig files sensor: add driver for BMA280 accelerometer sensor: add isl29035 light sensor sensor: add driver for SHT3xD sensors sensor: add driver for HDC1008 temperature and humidity sensor sensor: add driver for LIS3DH accelerometer Dan Kalowsky (1): arch: arm: move nmi to common location Daniel Leung (33): i2c: i2c_atmel_sam3: tweak the transfer flow for NACK and STOP i2c: i2c_atmel_sam3: meet minimum timing requirements samples: an app to use the APDS9960 RGB and Gesture sensor uart: serial_ns16550: exclude driver data variables under #ifdef uart: add ISR callback mechanism for UART drivers doc: arduino_due: explain how to build the bossac tool ... boards: make individual boards dependent on SoC selections arch/x86: hide CPU family Kconfig options arch/x86: limit floating point kconfig options to supported CPUs arch: move kconfig SoC selection to top level boards: add a menu surrounding board Kconfig drivers/shared_irq: fix kconfig hierarchy drivers/gpio_dw: fix kconfig dependencies arm/fsl_frdm_k64f: fix kconfig hierarchy serial: minor kconfig semantic changes gpio: restructure Kconfig options i2c: restructure kconfig options spi: restructure kconfig options pwm: restructure Kconfig options aio: put driver kconfigs under submenus clock_control/quark_se: fix default kconfig dependencies clock_control/stm32f10x: move kconfigs into its submenu adc: move each driver kconfig options into submenus drivers: bluetooth: nble: restructures Bluetooth Kconfig options arm/fsl_frdm_k64f: remove kconfig default "n" for PWM kconfig: add a debug option to print defaults in menuconfig kconfig: prefer default values that are defined later kconfig: untangle ordering and dependencies kconfig: add conditions to device init priority defaults serial/k20: remove base addr, irq and clk freq from kconfig serial/stellaris: remove base addr, irq and clk freq from kconfig frdm_k64f: gpio: pinmux: remove base addr and irq from kconfig spi/k64: remove SoC specific SPI constants from kconfig Dmitriy Korovkin (7): x86: Fix cache flush code dependencies Kconfig: CPU_MIGHT_SUPPORT_CLFLUSH removal. microkernel: Add support for *_sleep() during initialization tests: Add test for microkernel early sleep functionality kernel: Combine nano_timers and nano_timeouts microkernel: Add support for *_sleep() during initialization tests: Add test for microkernel early sleep functionality Genaro Saucedo Tejada (5): Fix typo on windows set up documentation. doc: Remove SDK specific version numbers. sys_log: Adds the common log API header sys_log: Grove driver update to new logging API kernel_event_logger: wrong parameters order on macro definition Grzegorz Kolodziejczyk (3): Bluetooth: tester: Add initial support for l2cap service Bluetooth: tester: Add support for get supported l2cap commands Bluetooth: tester: Add LE scan type flags and support Iván Briano (1): libc-hooks: Provide the 'open()' syscall Jeff Blais (9): arm: add generic memory-mapped I/O routines for Cortex-M arm: Freescale K64 GPIO driver pinmux: Expand the pin function/mode parameter size arm: Freescale K64/FRDM-K64F Pinmux support arm: Add GPIO interrupt/callback support for K64F pwm: add 'set_phase' API arm: K64F Pulse Width Modulation (PWM) support arm: config settings for frdm_k64f internal clock dividers arm: K64 SPI module driver Jithu Joseph (2): memory_pool_heap: malloc/free access over a heap memory pool memory_pool: Refactor code into a helper function Johan Hedberg (14): flash: Use size_t & void * for the read/write parameters flash: Reorder data & len parameters libc: Move ssize_t definition to sys/types.h libc: Add off_t definition flash: Use off_t for offset parameters Bluetooth: Fix print format for 4-byte opcodes Bluetooth: Take advantage of hci_cmd_done() helper Bluetooth: Call HCI_Reset synchronously to catch errors Bluetooth: Add definition for vendor event code Bluetooth: Move stack analysis helper to a global location Bluetooth: Kconfig: Add missing BLUETOOTH_STACK_HCI dependencies drivers/nble: Fix validation of advertising parameters Bluetooth: Move extern "C" declaration to right place Bluetooth: Clarify code comment Juan Manuel Cruz (12): debug: kernel's object tracing api debug: sanity test for kernel object tracing debug: expose thread monitor in object tracing header debug: object tracing sanity test includes thread monitor. debug: thread monitor allow to access more thread information debug: adds object tracing capability to nano stack debug: adds object tracing capability to ring buffers debug: adds object tracing capability to microkernel events debug: adds object tracing capability to microkernel timers debug: add debug tracing support for task initialization debug: add task tracing to sanity test debug: fixes issue on debug tracing for pool struct Jukka Rissanen (36): net: 802.15.4: Do not print anything when packet is discarded net: contiki: Fix debug prints for ICMPv6 echo request and reply net: contiki: Print prefix information properly when debugging net: contiki: Fix ICMPv6 error message debug print cc2520: Generate a mac address in the driver net: apps: Common routines used in qemu testing net: apps: Change echo-server to use common testing header file net: apps: Change echo-client to use common testing header file net: tinydtls: Fix compile error if IPv4 was activated net: User must provide storage for local IP address net: coap: Fix compilation error net: apps: Fix the loopback test application net: apps: User can set the loopback test count net: apps: Fix connectivity between echo-server and client net: apps: Change dtls-server to use common testing header file net: apps: Change dtls-client to use common testing header file net: Kconfig debug option for debugging received and sent data net: Allow user to activate 802.15.4 6lowpan frag debug net: Allow user to activate 6lowpan compression debug net: Allow user to activate 802.15.4 MAC layer debugging net: Allow user to activate 802.15.4 packet framing debug net: Add debug configuration for 802.15.4 network driver net: contiki: Fix debug prints in MAC layer files net: 802.15.4: User can select desired RDC plugin net: rpl: Enable debugging via Kconfig net: rpl: Fix compile error if ICMPv6 debugging is activated net: rpl: Enable RPL ICMPv6 packet debugging via Kconfig net: rpl: Enable objective function debugging via Kconfig net: rpl: Enable timer debugging via Kconfig net: rpl: Print the IPv6 prefix value when checking it net: 6lowpan: Fix debug prints in compression and fragmentation net: 6lowpan: Add more sanity checks in compression code net: coap: Debug print was missing a parameter net: 6lowpan: Check packet size before accepting fragment net: contiki: Check IPv6 extension header length sys_log: User can prevent extra newline to be printed Laurentiu Palcu (1): spi: dw: arc: add delay between writing DR strobe bit and reading FIFO Leona Cook (9): doc: Edit microkernel_mutexes.rst; add ReST syntax, clarifications. doc: Edit microkernel_fifos for consistent .rst style and formatting. doc: Edit nanokernel_tasks for consistency and ReST :dfn: syntax doc: Edit microkernel_pipes for ReST syntax, readability, grammar doc: Edit microkernel_task_irqs.rst for consistency in styling. doc: Edit nanokernel_fibers for doc structure with rst, grammar doc: Edit nanokernel_timers for proper ReST syntax, grammar, etc. doc: Edit nanokernel_synchronization section doc: Edit microkerenel_mailboxes for ReST syntax, content flow, readability Luiz Augusto von Dentz (17): Bluetooth: L2CAP: Handle of Reject command Bluetooth: ATT: Handle Confirmations Bluetooth: GATT: Add bt_gatt_indicate Bluetooth: L2CAP: Add more descriptive documentation Bluetooth: Add indication support for peripheral sample Bluetooth: IPSP: Add missing primary service Bluetooth: IPSS: Move sample service to gatt Bluetooth: IPSS: Only register extra services if necessary Bluetooth: GAP: Add service sample Bluetooth: Fix header documentation of GATT service samples Bluetooth: ATT: Notify if a disconnect happen while a request is pending Bluetooth: peripheral_esp: Add support for using NBLE driver Bluetooth: Make application samples to use GAP Service sample Bluetooth: HRS: Add service sample Bluetooth: DIS: Add service sample Bluetooth: BAS: Add service sample Bluetooth: CTS: Add service sample Maciek Borzecki (33): clock_control/Kconfig: fix quark_se dependencies drivers/adc: fix QMSI ADC config options dependency pwm: fix K64 PWM config options dependencies st_stm32/stm32f1: introduce STM32F1x SoC family clock_control/Kconfig: move quark_se entries to separate file clock_control: extend API with clock rate query operation clock_control/stm32f10x: introduce driver for STM32F10x RCC pinmux/stm32: add common driver for STM32 pinmux gpio/stm32: add common driver for STM32 GPIO soc/stm32f1/gpio: implement GPIO support soc/stm32f1/pinmux: implement STM32 pinmux integration serial/stm32: add driver for STM32 UART boards/stm32_mini_a15: add new board samples/drivers/disco: add 'disco' sample program boards/nucleo_f103rb: add new board soc/stm32f1: add IRQ numbers listing serial/stm32: add support for IRQ APIs interupt_controller/stm32_exti: driver for STM32 EXTI controller gpio/stm32: GPIO input with interrupts soc/stm32f1: AFIO registers mapping soc/stm32f1/gpio: implement MCU specific GPIO input interrupt integration watchdog/iwdg_stm32: add driver for STM32 Independent Watchdog (IWDG) samples/button: button input example soc/stm32f1: add embedded flash registers mapping clock_control/stm32f1: HSE support and PLL configuration cleanup arm: access svc instruction using halfword load in svc_handler boards/stm32_mimi_a15: enable 72MHz system clock by default boards/nucleo_f103rb: enable 72MHz system clock by default boards/nucleo_f103rb: default to 115200 for USART2 speed boards/stm32_mini_a15: default to 115200 for USART1 speed benchmark/latency: support for Cortex-M targets benchmark/latency: reduce RAM requirements gpio/stm32: fix build Mariusz Skamra (4): Bluetooth: tester: Refactor adding attributes to the GATT database Bluetooth: tester: Return BTP error if requested unknown attr ID Bluetooth: tester: Refactor Set Value command handler Bluetooth: Fix validation of advertising parameters Murtaza Alexandru (5): sensor: add common magnetometer enum values sensor: add driver for BMC150 magnetometer sensor: add magnetometer generic polling sample sensor: add full-scale attribute sensor: add driver for LSM9DS0 gyroscope Pawel Wodnicki (1): doc: Edit gerrit_practices to correct command to install a precommit hook Peter Mitsis (1): printf: Limit width modifier to [0..MAXFLD] Ramesh Thomas (2): power_mgmt: Make names consistent with new RFC power_mgmt: Add device power management support Ravi kumar Veeramally (7): net: apps: Add qemu support without monitor tool net: coap: Use correct network buffer in registration net: apps: Update CoAP apps to use net_testing header file net: apps: Add prj_qemu.conf files for dtls apps net: apps: Move Makefile.ipstack to common folder net: contiki: Enable uip packet queue debugging via Kconfig net: contiki: Improve uip_packetqueue debug statements Roger Lendenmann (1): Bluetooth: Fix latency versus timeout check Sergio Rodriguez (3): pwm: QMSI PWM driver adc: QMSI ADC driver aio: QMSI analog comparator driver Shaul Triebitz (2): pci: Fix PCI header initialization net: contiki: Fix application layer data offset Simon Desfarges (3): arc_timer: fix wrong programmed limit when entering idle arc_timer: fix tickless idle arc_timer: assert that counter always lower than limit Szymon Janc (19): Bluetooth: SMP: Add support for debug ECDH keys Fix uart_pipe_send documentation Bluetooth: Use bt_auth_cancel for pairing cancel Bluetooth: Add HCI defines for BR/EDR discovery Bluetooth: Kconfig: Fix max HCI event length if BR/EDR is enabled Bluetooth: Add HCI commands definitions for BR/EDR connections Bluetooth: Add support for outgoing BR/EDR connections boards: Fix override of HPET timer interrupt trigger Bluetooth: shell: Add support for outgoing BR/EDR connections Bluetooth: Fix HCI EIR event definition Bluetooth: Add name resolving HCI commands definitions Bluetooth: Build keys support if BR/EDR is enabled Bluetooth: Compile only required parts of keys support Bluetooth: Provide more config options to init sample Bluetooth: shell: Make cmd_gatt_mread static Bluetooth: Add initial support for BR/EDR discovery Bluetooth: Add support for notifying of BR/EDR inquiry results Bluetooth: shell: Add support for BR/EDR discovery Bluetooth: Add support for resolving BR/EDR names Tomasz Bursztyka (2): drivers: gpio: Align the style all over the drivers include: misc: Add a utility macro to generate a bit mask Vinicius Costa Gomes (18): pinmux: Fix using wrong variable name pinmux: Convert return codes to errno.h k64f: Fix indentation in the K64F pinmux driver k64f: Move pinmux specific code to pinmux.c pinmux: Move the Arduino 101 board to the pinmux model pinmux: Move the Arduino Due board to the pinmux model k64f: Fix mixing GPIO and pinmux concepts pinmux: Move the Galileo board to the pinmux model pinmux: Move the Freescale FRDM K64F board to the pinmux model pinmux: Move the Quark D2000 board to the pinmux model pinmux: Move the Quark SE devboard to the pinmux model pinmux_dev: Add the pinmux_dev driver for Atmel SAM3X pinmux_dev: Add driver for Freescale FRDM K64F pinmux_dev: Add driver for Galileo board pinmux_dev: Add Quark MCU generic driver pinmux_dev: Add driver using QMSI library pinmux: Move STM32 boards to the pinmux model pinmux_dev: Adds the STM32 pinmux dev driver Vlad Dogaru (8): Introduce new sensor API Add infrastructure for sensor drivers sensor: Add driver for MCP9808 temperature sensor samples: Add sample app for MCP9808 sensor sensor: Add threshold trigger support for MCP9808 sensor: Add sx9500 SAR proximity driver samples: Add sample app for sx9500 sensor driver sensor: add driver for BMP280 Vlad Lungu (4): net: 802.15.4: Make MAC driver configurable, select nullmac as default net: contiki: Initialize uip_last_tx_status(mbuf) before use net: contiki: move neighbor_list to struct l2_buf net: contiki: Fix net_buf lifecycle Yannis Damigos (6): samples:philosophers:Reformated 80-column width, 80-chars tabs drivers: gpio: Move STM32 gpio driver under its own submenu drivers: gpio: Make K64 gpio submenu available only for K64 soc drivers: pwm: Make K64 pwm submenu available only for K64 soc drivers: spi: Make K64 spi submenu available only for K64 soc drivers: pinmux: Restructure kconfig options d0u9 (1): zephyr-env.sh: Add a note to indicate the required version of zsh Kconfig | 2 +- Kconfig.zephyr | 10 + Makefile | 5 +- Makefile.inc | 2 +- arch/Kconfig | 24 +- arch/arc/Kconfig | 34 +- arch/arc/core/Makefile | 3 + arch/arc/core/irq_vector_table.c | 53 + arch/arc/core/offsets/offsets.c | 4 +- arch/arc/core/sw_isr_table.S | 64 ++ arch/arc/core/thread.c | 7 + arch/arc/include/nano_private.h | 15 +- arch/arc/soc/quark_se_ss/Kbuild | 2 - arch/arc/soc/quark_se_ss/Kconfig | 225 ---- arch/arc/soc/quark_se_ss/Kconfig.defconfig | 261 +++++ arch/arc/soc/quark_se_ss/Kconfig.soc | 1 + arch/arc/soc/quark_se_ss/irq_vector_table.c | 53 - arch/arc/soc/quark_se_ss/soc_config.c | 4 +- arch/arc/soc/quark_se_ss/sw_isr_table.S | 64 -- arch/arm/Kconfig | 64 +- arch/arm/Makefile | 6 - arch/arm/core/cortex_m/Kconfig | 39 +- arch/arm/core/cortex_m/Makefile | 6 +- arch/arm/core/cortex_m/irq_vector_table.c | 53 + arch/arm/core/cortex_m/nmi_on_reset.S | 39 + arch/arm/core/cpu_idle.S | 6 +- arch/arm/core/isr_wrapper.S | 4 +- arch/arm/core/offsets/offsets.c | 4 +- arch/arm/core/swap.S | 2 +- arch/arm/core/thread.c | 8 + arch/arm/include/nano_private.h | 17 +- arch/arm/soc/atmel_sam3/Kbuild | 4 +- arch/arm/soc/atmel_sam3/Kconfig | 105 +- arch/arm/soc/atmel_sam3/Kconfig.defconfig | 116 ++ arch/arm/soc/atmel_sam3/Kconfig.soc | 1 + arch/arm/soc/atmel_sam3/Makefile | 3 +- arch/arm/soc/atmel_sam3/irq_vector_table.c | 69 -- arch/arm/soc/atmel_sam3/nmi_on_reset.S | 39 - arch/arm/soc/atmel_sam3/soc.c | 7 +- arch/arm/soc/fsl_frdm_k64f/Kbuild | 3 - arch/arm/soc/fsl_frdm_k64f/Kconfig | 163 +-- arch/arm/soc/fsl_frdm_k64f/Kconfig.defconfig | 204 ++++ arch/arm/soc/fsl_frdm_k64f/Kconfig.soc | 1 + arch/arm/soc/fsl_frdm_k64f/Makefile | 4 +- arch/arm/soc/fsl_frdm_k64f/irq_vector_table.c | 84 -- arch/arm/soc/fsl_frdm_k64f/nmi_on_reset.S | 39 - arch/arm/soc/fsl_frdm_k64f/soc.c | 22 +- arch/arm/soc/fsl_frdm_k64f/soc.h | 74 ++ arch/arm/soc/fsl_frdm_k64f/soc_config.c | 13 +- arch/arm/soc/st_stm32/Kconfig | 23 + arch/arm/soc/st_stm32/Kconfig.defconfig | 1 + arch/arm/soc/st_stm32/Kconfig.soc | 25 + arch/arm/soc/st_stm32/stm32f1/Kbuild | 4 + .../soc/st_stm32/stm32f1/Kconfig.defconfig.family | 51 + .../st_stm32/stm32f1/Kconfig.defconfig.stm32f103rb | 31 + .../st_stm32/stm32f1/Kconfig.defconfig.stm32f103ve | 31 + arch/arm/soc/st_stm32/stm32f1/Kconfig.soc.family | 28 + arch/arm/soc/st_stm32/stm32f1/Makefile | 7 + arch/arm/soc/st_stm32/stm32f1/flash_registers.h | 61 ++ arch/arm/soc/st_stm32/stm32f1/gpio_registers.h | 115 ++ arch/arm/soc/st_stm32/stm32f1/linker.cmd | 19 + arch/arm/soc/st_stm32/stm32f1/rcc_registers.h | 123 +++ arch/arm/soc/st_stm32/stm32f1/soc.c | 66 ++ arch/arm/soc/st_stm32/stm32f1/soc.h | 92 ++ arch/arm/soc/st_stm32/stm32f1/soc_config.c | 102 ++ arch/arm/soc/st_stm32/stm32f1/soc_gpio.c | 200 ++++ arch/arm/soc/st_stm32/stm32f1/soc_irq.h | 105 ++ arch/arm/soc/st_stm32/stm32f1/soc_registers.h | 25 + arch/arm/soc/ti_lm3s6965/Kbuild | 3 - arch/arm/soc/ti_lm3s6965/Kconfig | 114 +- arch/arm/soc/ti_lm3s6965/Kconfig.defconfig | 95 ++ arch/arm/soc/ti_lm3s6965/Makefile | 3 +- arch/arm/soc/ti_lm3s6965/irq_vector_table.c | 84 -- arch/arm/soc/ti_lm3s6965/nmi_on_reset.S | 39 - arch/arm/soc/ti_lm3s6965/soc.c | 7 +- arch/arm/soc/ti_lm3s6965/soc.h | 14 + arch/arm/soc/ti_lm3s6965/soc_config.c | 2 +- arch/x86/Kconfig | 94 +- arch/x86/core/cache.c | 7 +- arch/x86/core/cache_s.S | 4 - arch/x86/core/crt0.S | 10 +- arch/x86/core/i386_sysV_abi/intstub.S | 14 +- arch/x86/core/i386_sysV_abi/thread.c | 8 + arch/x86/core/iamcu_abi/intstub.c | 12 +- arch/x86/core/iamcu_abi/swap.c | 7 +- arch/x86/core/offsets/offsets.c | 4 +- arch/x86/include/advidle.h | 134 --- arch/x86/include/nano_private.h | 16 +- arch/x86/soc/atom/Kconfig | 137 --- arch/x86/soc/atom/Kconfig.defconfig | 128 +++ arch/x86/soc/ia32/Kconfig | 137 --- arch/x86/soc/ia32/Kconfig.defconfig | 128 +++ arch/x86/soc/ia32/Kconfig.soc | 1 + arch/x86/soc/ia32/Makefile | 4 +- arch/x86/soc/quark_d2000/Kconfig | 250 ----- arch/x86/soc/quark_d2000/Kconfig.defconfig | 262 +++++ arch/x86/soc/quark_d2000/soc.h | 6 +- arch/x86/soc/quark_se/Kconfig | 370 +------ arch/x86/soc/quark_se/Kconfig.defconfig | 497 +++++++++ arch/x86/soc/quark_se/Kconfig.soc | 2 + arch/x86/soc/quark_se/soc.c | 8 +- arch/x86/soc/quark_se/soc.h | 8 - arch/x86/soc/quark_se/soc_config.c | 2 +- arch/x86/soc/quark_x1000/Kconfig | 364 ------- arch/x86/soc/quark_x1000/Kconfig.defconfig | 424 ++++++++ arch/x86/soc/quark_x1000/Kconfig.soc | 3 + boards/Kconfig | 3 +- boards/arduino_101/Kconfig | 32 - boards/arduino_101/Kconfig.board | 3 +- boards/arduino_101/Kconfig.defconfig | 49 + boards/arduino_101/Makefile | 1 - boards/arduino_101/pinmux.c | 367 ------- boards/arduino_101_sss/Kconfig | 7 - boards/arduino_101_sss/Kconfig.board | 3 +- boards/arduino_101_sss/Kconfig.defconfig | 7 + boards/arduino_due/Kconfig | 37 - boards/arduino_due/Kconfig.board | 3 +- boards/arduino_due/Kconfig.defconfig | 37 + boards/arduino_due/Makefile | 1 - boards/arduino_due/pinmux_due.c | 438 -------- boards/basic_cortex_m3/Kconfig | 7 - boards/basic_cortex_m3/Kconfig.board | 3 +- boards/basic_cortex_m3/Kconfig.defconfig | 7 + boards/basic_minuteia/Kconfig | 7 - boards/basic_minuteia/Kconfig.board | 3 +- boards/basic_minuteia/Kconfig.defconfig | 7 + boards/basic_minuteia/basic_atom_defconfig | 1 - boards/basic_minuteia/basic_minuteia_defconfig | 2 - boards/frdm_k64f/Kconfig | 13 - boards/frdm_k64f/Kconfig.board | 3 +- boards/frdm_k64f/Kconfig.defconfig | 13 + boards/frdm_k64f/frdm_k64f_defconfig | 1 + boards/galileo/Kconfig | 129 --- boards/galileo/Kconfig.board | 3 +- boards/galileo/Kconfig.defconfig | 162 +++ boards/galileo/Makefile | 1 - boards/galileo/galileo_pinmux.c | 784 -------------- boards/minnowboard/Kconfig | 7 - boards/minnowboard/Kconfig.board | 3 +- boards/minnowboard/Kconfig.defconfig | 7 + boards/minnowboard/minnowboard_defconfig | 1 - boards/nucleo_f103rb/Kconfig.board | 20 + boards/nucleo_f103rb/Kconfig.defconfig | 23 + boards/nucleo_f103rb/Makefile | 5 + boards/nucleo_f103rb/board.c | 16 + boards/nucleo_f103rb/board.h | 22 + boards/nucleo_f103rb/nucleo_f103rb_defconfig | 47 + boards/qemu_cortex_m3/Kconfig | 7 - boards/qemu_cortex_m3/Kconfig.board | 3 +- boards/qemu_cortex_m3/Kconfig.defconfig | 7 + boards/qemu_x86/Kconfig | 7 - boards/qemu_x86/Kconfig.board | 3 +- boards/qemu_x86/Kconfig.defconfig | 7 + boards/qemu_x86/qemu_x86_defconfig | 1 - boards/qemu_x86/qemu_x86_iamcu_defconfig | 20 + boards/quark_d2000_crb/Kconfig | 8 - boards/quark_d2000_crb/Kconfig.board | 3 +- boards/quark_d2000_crb/Kconfig.defconfig | 17 + boards/quark_d2000_crb/Makefile | 1 - boards/quark_d2000_crb/pinmux.c | 293 ----- boards/quark_se_devboard/Kconfig | 51 - boards/quark_se_devboard/Kconfig.board | 3 +- boards/quark_se_devboard/Kconfig.defconfig | 63 ++ boards/quark_se_devboard/Makefile | 1 - boards/quark_se_devboard/pinmux.c | 356 ------- boards/quark_se_sss_devboard/Kconfig | 7 - boards/quark_se_sss_devboard/Kconfig.board | 3 +- boards/quark_se_sss_devboard/Kconfig.defconfig | 7 + boards/stm32_mini_a15/Kconfig.board | 20 + boards/stm32_mini_a15/Kconfig.defconfig | 23 + boards/stm32_mini_a15/Makefile | 5 + boards/stm32_mini_a15/board.c | 15 + boards/stm32_mini_a15/board.h | 22 + boards/stm32_mini_a15/stm32_mini_a15_defconfig | 41 + doc/board/arduino_due.rst | 62 +- doc/collaboration/code/coding_style.rst | 8 +- doc/collaboration/code/gerrit_practices.rst | 7 +- doc/getting_started/installation_linux.rst | 26 +- doc/getting_started/installation_win.rst | 2 +- doc/kernel/microkernel/microkernel_fifos.rst | 51 +- doc/kernel/microkernel/microkernel_mailboxes.rst | 136 +-- doc/kernel/microkernel/microkernel_mutexes.rst | 107 +- doc/kernel/microkernel/microkernel_pipes.rst | 108 +- doc/kernel/microkernel/microkernel_task_irqs.rst | 83 +- doc/kernel/nanokernel/nanokernel_fibers.rst | 112 +- .../nanokernel/nanokernel_synchronization.rst | 38 +- doc/kernel/nanokernel/nanokernel_tasks.rst | 40 +- doc/kernel/nanokernel/nanokernel_timers.rst | 59 +- drivers/802.15.4/cc2520.c | 28 +- drivers/802.15.4/cc2520_arch.h | 2 +- drivers/Kconfig | 6 +- drivers/Makefile | 4 + drivers/adc/Kconfig | 88 +- drivers/adc/Makefile | 3 + drivers/adc/adc_dw.c | 4 +- drivers/adc/adc_qmsi.c | 285 +++++ drivers/adc/adc_ti_adc108s102.c | 16 +- drivers/aio/Kconfig | 31 +- drivers/aio/Makefile | 3 + drivers/aio/aio_dw_comparator.c | 21 +- drivers/aio/aio_qmsi_comparator.c | 192 ++++ drivers/bluetooth/Kconfig | 43 +- drivers/bluetooth/h4.c | 11 +- drivers/bluetooth/h5.c | 15 +- drivers/clock_control/Kconfig | 53 +- drivers/clock_control/Kconfig.quark_se | 72 ++ drivers/clock_control/Kconfig.stm32f10x | 124 +++ drivers/clock_control/Makefile | 1 + drivers/clock_control/quark_se_clock_control.c | 9 +- drivers/clock_control/stm32f10x_clock.c | 329 ++++++ drivers/console/Kconfig | 28 - drivers/console/ipm_console_receiver.c | 8 +- drivers/console/ipm_console_sender.c | 6 +- drivers/console/ram_console.c | 2 +- drivers/console/uart_console.c | 11 +- drivers/console/uart_pipe.c | 8 +- drivers/counter/Kconfig | 65 ++ drivers/counter/Makefile | 4 + drivers/counter/counter_qmsi_aon.c | 70 ++ drivers/counter/counter_qmsi_aonpt.c | 146 +++ drivers/ethernet/eth_dw.c | 4 +- drivers/flash/Kconfig | 84 ++ drivers/flash/Makefile | 1 + drivers/flash/spi_flash_w25qxxdv.c | 375 +++++++ drivers/flash/spi_flash_w25qxxdv.h | 35 + drivers/flash/spi_flash_w25qxxdv_defs.h | 127 +++ drivers/gpio/Kconfig | 672 +----------- drivers/gpio/Kconfig.atmel_sam3 | 24 +- drivers/gpio/Kconfig.dw | 292 +++++ drivers/gpio/Kconfig.k64 | 139 +++ drivers/gpio/Kconfig.mmio | 164 +++ drivers/gpio/Kconfig.pcal9535a | 155 +++ drivers/gpio/Kconfig.qmsi | 77 ++ drivers/gpio/Kconfig.sch | 87 ++ drivers/gpio/Kconfig.stm32 | 55 + drivers/gpio/Makefile | 2 + drivers/gpio/gpio_atmel_sam3.c | 70 +- drivers/gpio/gpio_dw.c | 73 +- drivers/gpio/gpio_k64.c | 432 ++++++++ drivers/gpio/gpio_k64.h | 53 + drivers/gpio/gpio_mmio.c | 81 +- drivers/gpio/gpio_mmio.h | 14 +- drivers/gpio/gpio_pcal9535a.c | 102 +- drivers/gpio/gpio_pcal9535a.h | 2 +- drivers/gpio/gpio_qmsi.c | 76 +- drivers/gpio/gpio_sch.c | 62 +- drivers/gpio/gpio_stm32.c | 274 +++++ drivers/gpio/gpio_stm32.h | 95 ++ drivers/grove/Kconfig | 22 +- drivers/grove/lcd_rgb.c | 43 +- drivers/i2c/Kconfig | 278 +---- drivers/i2c/Kconfig.atmel_sam3 | 24 +- drivers/i2c/Kconfig.dw | 193 ++++ drivers/i2c/Kconfig.qmsi | 68 ++ drivers/i2c/Kconfig.quark_se_ss | 80 ++ drivers/i2c/i2c_atmel_sam3.c | 140 ++- drivers/i2c/i2c_dw.c | 44 +- drivers/i2c/i2c_qmsi.c | 32 +- drivers/i2c/i2c_quark_se_ss.c | 37 +- drivers/interrupt_controller/Kconfig | 3 + drivers/interrupt_controller/Kconfig.stm32 | 75 ++ drivers/interrupt_controller/Makefile | 2 + drivers/interrupt_controller/exti_stm32.c | 281 +++++ drivers/interrupt_controller/exti_stm32.h | 88 ++ drivers/ipm/ipm_quark_se.c | 4 +- drivers/nble/Kconfig | 19 +- drivers/nble/conn.c | 68 +- drivers/nble/conn_internal.h | 2 +- drivers/nble/gap.c | 324 +++++- drivers/nble/gap_internal.h | 808 ++++---------- drivers/nble/gatt.c | 719 ++++++++++++- drivers/nble/gatt_internal.h | 481 ++------- drivers/nble/rpc_deserialize.c | 5 +- drivers/nble/rpc_functions_to_ble_core.h | 42 +- drivers/nble/rpc_functions_to_quark.h | 33 +- drivers/nble/rpc_serialize.c | 5 +- drivers/nble/stubs.c | 3 + drivers/nble/uart.c | 14 +- drivers/pci/pci_interface.c | 2 +- drivers/pinmux/Kconfig | 19 +- drivers/pinmux/Kconfig.k64 | 64 ++ drivers/pinmux/Kconfig.stm32 | 33 + drivers/pinmux/Makefile | 16 + drivers/pinmux/dev/Kconfig | 77 ++ drivers/pinmux/dev/Makefile | 12 + drivers/pinmux/dev/pinmux_dev_atmel_sam3x.c | 133 +++ drivers/pinmux/dev/pinmux_dev_frdm_k64f.c | 58 + drivers/pinmux/dev/pinmux_dev_galileo.c | 109 ++ drivers/pinmux/dev/pinmux_dev_qmsi.c | 77 ++ drivers/pinmux/dev/pinmux_dev_quark_mcu.c | 143 +++ drivers/pinmux/dev/pinmux_dev_stm32.c | 87 ++ drivers/pinmux/frdm_k64f/pinmux_board_frdm_k64f.c | 99 ++ drivers/pinmux/frdm_k64f/pinmux_k64.c | 164 +++ drivers/pinmux/frdm_k64f/pinmux_k64.h | 288 +++++ drivers/pinmux/galileo/pinmux_board_galileo.c | 128 +++ drivers/pinmux/galileo/pinmux_galileo.c | 594 +++++++++++ drivers/pinmux/galileo/pinmux_galileo.h | 46 + drivers/pinmux/pinmux.h | 4 +- .../pinmux/quark_mcu/pinmux_board_arduino_101.c | 169 +++ .../quark_mcu/pinmux_board_quark_d2000_crb.c | 111 ++ .../pinmux/quark_mcu/pinmux_board_quark_se_dev.c | 154 +++ drivers/pinmux/quark_mcu/pinmux_quark_mcu.h | 73 ++ drivers/pinmux/sam3x/pinmux_board_arduino_due.c | 304 ++++++ drivers/pinmux/stm32/pinmux_board_nucleo_f103rb.c | 51 + drivers/pinmux/stm32/pinmux_board_stm32_mini_a15.c | 51 + drivers/pinmux/stm32/pinmux_stm32.c | 108 ++ drivers/pinmux/stm32/pinmux_stm32.h | 290 +++++ drivers/pinmux/stm32/pinmux_stm32f1.h | 34 + drivers/pwm/Kconfig | 75 +- drivers/pwm/Kconfig.dw | 52 + drivers/pwm/Kconfig.k64 | 509 +++++++++ drivers/pwm/Kconfig.pca9685 | 69 ++ drivers/pwm/Kconfig.qmsi | 44 + drivers/pwm/Makefile | 4 + drivers/pwm/pwm_dw.c | 26 +- drivers/pwm/pwm_k64_ftm.c | 902 ++++++++++++++++ drivers/pwm/pwm_k64_ftm.h | 185 ++++ drivers/pwm/pwm_pca9685.c | 28 +- drivers/pwm/pwm_pca9685.h | 2 +- drivers/pwm/pwm_qmsi.c | 178 ++++ drivers/rtc/Kconfig | 1 - drivers/rtc/rtc_dw.c | 6 +- drivers/rtc/rtc_qmsi.c | 10 +- drivers/sensor/Kconfig | 65 ++ drivers/sensor/Kconfig.bma280 | 201 ++++ drivers/sensor/Kconfig.bmc150_magn | 151 +++ drivers/sensor/Kconfig.bmp280 | 132 +++ drivers/sensor/Kconfig.hdc1008 | 101 ++ drivers/sensor/Kconfig.isl29035 | 225 ++++ drivers/sensor/Kconfig.lis3dh | 229 ++++ drivers/sensor/Kconfig.lsm9ds0_gyro | 158 +++ drivers/sensor/Kconfig.mcp9808 | 101 ++ drivers/sensor/Kconfig.sht3xd | 186 ++++ drivers/sensor/Kconfig.sx9500 | 109 ++ drivers/sensor/Makefile | 20 + drivers/sensor/sensor.c | 57 + drivers/sensor/sensor_bma280.c | 217 ++++ drivers/sensor/sensor_bma280.h | 177 ++++ drivers/sensor/sensor_bma280_trigger.c | 255 +++++ drivers/sensor/sensor_bmc150_magn.c | 769 ++++++++++++++ drivers/sensor/sensor_bmc150_magn.h | 174 +++ drivers/sensor/sensor_bmp280.c | 236 +++++ drivers/sensor/sensor_bmp280.h | 120 +++ drivers/sensor/sensor_hdc1008.c | 144 +++ drivers/sensor/sensor_hdc1008.h | 43 + drivers/sensor/sensor_isl29035.c | 202 ++++ drivers/sensor/sensor_isl29035.h | 159 +++ drivers/sensor/sensor_isl29035_trigger.c | 178 ++++ drivers/sensor/sensor_lis3dh.c | 171 +++ drivers/sensor/sensor_lis3dh.h | 138 +++ drivers/sensor/sensor_lis3dh_trigger.c | 140 +++ drivers/sensor/sensor_lsm9ds0_gyro.c | 487 +++++++++ drivers/sensor/sensor_lsm9ds0_gyro.h | 258 +++++ drivers/sensor/sensor_mcp9808.c | 116 ++ drivers/sensor/sensor_mcp9808.h | 102 ++ drivers/sensor/sensor_mcp9808_trigger.c | 203 ++++ drivers/sensor/sensor_sht3xd.c | 207 ++++ drivers/sensor/sensor_sht3xd.h | 124 +++ drivers/sensor/sensor_sht3xd_trigger.c | 235 ++++ drivers/sensor/sensor_sx9500.c | 194 ++++ drivers/sensor/sensor_sx9500.h | 83 ++ drivers/sensor/sensor_sx9500_trigger.c | 166 +++ drivers/serial/Kconfig | 10 +- drivers/serial/Kconfig.atmel_sam3 | 2 +- drivers/serial/Kconfig.k20 | 120 --- drivers/serial/Kconfig.qmsi | 67 ++ drivers/serial/Kconfig.stellaris | 77 +- drivers/serial/Kconfig.stm32 | 122 +++ drivers/serial/Makefile | 5 + drivers/serial/uart_atmel_sam3.c | 4 +- drivers/serial/uart_k20.c | 164 ++- drivers/serial/uart_k20.h | 26 + drivers/serial/uart_ns16550.c | 111 +- drivers/serial/uart_nsim.c | 8 +- drivers/serial/uart_qmsi.c | 383 +++++++ drivers/serial/uart_stellaris.c | 119 ++- drivers/serial/uart_stellaris.h | 26 + drivers/serial/uart_stm32.c | 444 ++++++++ drivers/serial/uart_stm32.h | 169 +++ drivers/shared_irq/Kconfig | 4 +- drivers/shared_irq/shared_irq.c | 14 +- drivers/spi/Kconfig | 480 +-------- drivers/spi/Kconfig.dw | 237 +++++ drivers/spi/Kconfig.intel | 189 ++++ drivers/spi/Kconfig.k64 | 93 ++ drivers/spi/Kconfig.qmsi | 113 ++ drivers/spi/Makefile | 1 + drivers/spi/spi_dw.c | 24 +- drivers/spi/spi_dw_quark_se_ss_regs.h | 1 + drivers/spi/spi_intel.c | 20 +- drivers/spi/spi_k64.c | 1117 ++++++++++++++++++++ drivers/spi/spi_k64_priv.h | 173 +++ drivers/spi/spi_qmsi.c | 18 +- drivers/timer/arcv2_timer0.c | 32 +- drivers/timer/cortex_m_systick.c | 12 +- drivers/timer/sys_clock_init.c | 2 +- drivers/watchdog/Kconfig | 2 + drivers/watchdog/Kconfig.stm32 | 64 ++ drivers/watchdog/Makefile | 1 + drivers/watchdog/iwdg_stm32.c | 124 +++ drivers/watchdog/iwdg_stm32.h | 86 ++ drivers/watchdog/wdt_dw.c | 6 +- drivers/watchdog/wdt_qmsi.c | 4 +- include/adc.h | 2 +- include/arch/arm/arch.h | 2 + include/arch/arm/cortex_m/nmi.h | 33 + include/arch/arm/cortex_m/sys_io.h | 60 ++ include/bluetooth/bluetooth.h | 64 ++ include/bluetooth/conn.h | 51 +- include/bluetooth/driver.h | 10 +- include/bluetooth/gatt.h | 39 + include/bluetooth/hci.h | 131 +++ include/bluetooth/l2cap.h | 20 +- include/clock_control.h | 31 +- include/counter.h | 141 +++ include/device.h | 183 +++- include/display/grove_lcd.h | 2 +- .../drivers/clock_control/stm32_clock_control.h | 28 + .../drivers/clock_control/stm32f1_clock_control.h | 62 ++ include/drivers/console/uart_console.h | 2 - include/drivers/console/uart_pipe.h | 11 +- include/drivers/spi/spi_k64.h | 78 ++ include/flash.h | 133 +++ include/gpio.h | 29 - include/i2c.h | 20 +- include/init.h | 6 + include/ipm.h | 2 +- include/microkernel/base_api.h | 31 +- include/microkernel/memory_pool.h | 30 + include/microkernel/ticks.h | 7 +- include/misc/debug/object_tracing.h | 106 ++ include/misc/debug/object_tracing_common.h | 143 +++ include/misc/kernel_event_logger.h | 4 +- include/misc/ring_buffer.h | 6 + include/misc/stack.h | 73 ++ include/misc/sys_log.h | 204 ++++ include/misc/util.h | 2 + include/nanokernel.h | 98 +- include/net/l2_buf.h | 8 + include/net/net_socket.h | 6 +- include/pinmux.h | 20 +- include/power.h | 145 +++ include/pwm.h | 73 +- include/sensor.h | 346 ++++++ include/spi.h | 32 +- include/sys_clock.h | 1 - include/uart.h | 52 +- kernel/Kconfig | 91 +- kernel/microkernel/Kconfig | 11 +- kernel/microkernel/include/micro_private.h | 1 + kernel/microkernel/include/micro_private_types.h | 11 +- kernel/microkernel/k_idle.c | 52 +- kernel/microkernel/k_memory_pool.c | 110 +- kernel/microkernel/k_task.c | 12 +- kernel/microkernel/k_ticker.c | 15 +- kernel/microkernel/k_timer.c | 21 +- kernel/nanokernel/Kconfig | 7 + kernel/nanokernel/Makefile | 4 +- kernel/nanokernel/device.c | 18 + kernel/nanokernel/idle.c | 30 +- kernel/nanokernel/include/timeout_q.h | 101 +- kernel/nanokernel/include/wait_q.h | 15 +- kernel/nanokernel/nano_fifo.c | 3 +- kernel/nanokernel/nano_init.c | 8 +- kernel/nanokernel/nano_lifo.c | 3 +- kernel/nanokernel/nano_sema.c | 3 +- kernel/nanokernel/nano_sleep.c | 6 +- kernel/nanokernel/nano_stack.c | 2 + kernel/nanokernel/nano_sys_clock.c | 40 +- kernel/nanokernel/nano_timer.c | 264 +++-- lib/libc/minimal/include/bits/ssize_t.h | 35 - lib/libc/minimal/include/sys/types.h | 30 +- lib/libc/minimal/source/stdout/prf.c | 9 +- lib/libc/newlib/libc-hooks.c | 5 + misc/Kconfig | 82 ++ net/bluetooth/Kconfig | 49 +- net/bluetooth/Makefile | 5 +- net/bluetooth/att.c | 15 +- net/bluetooth/conn.c | 533 ++++++++-- net/bluetooth/conn_internal.h | 10 +- net/bluetooth/gatt.c | 118 ++- net/bluetooth/hci_core.c | 676 +++++++++++- net/bluetooth/hci_core.h | 8 +- net/bluetooth/keys.c | 37 +- net/bluetooth/keys.h | 12 +- net/bluetooth/l2cap.c | 26 +- net/bluetooth/smp.c | 108 +- net/bluetooth/smp.h | 2 +- net/bluetooth/smp_null.c | 4 + net/bluetooth/stack.h | 73 -- net/ip/Kconfig | 53 + net/ip/Kconfig.debug | 77 ++ net/ip/Makefile | 17 +- net/ip/contiki/contiki-conf.h | 9 + net/ip/contiki/ip/tcpip.c | 4 +- net/ip/contiki/ip/uip-packetqueue.c | 11 +- net/ip/contiki/ipv6/uip-ds6.c | 4 +- net/ip/contiki/ipv6/uip-icmp6.c | 12 +- net/ip/contiki/ipv6/uip6.c | 6 + net/ip/contiki/mac/csma.c | 18 +- net/ip/contiki/mac/framer-802154.c | 22 +- net/ip/contiki/mac/framer-nullmac.c | 19 +- net/ip/contiki/mac/handler-802154.c | 4 +- net/ip/contiki/mac/nullrdc.c | 6 +- net/ip/contiki/mac/sicslowmac/sicslowmac.c | 25 +- net/ip/contiki/os/sys/timer.c | 13 +- net/ip/contiki/rpl/rpl-dag.c | 7 +- net/ip/contiki/rpl/rpl-ext-header.c | 4 +- net/ip/contiki/rpl/rpl-icmp6.c | 9 +- net/ip/contiki/rpl/rpl-mrhof.c | 4 +- net/ip/contiki/rpl/rpl-of0.c | 4 +- net/ip/contiki/rpl/rpl-timers.c | 4 +- net/ip/contiki/rpl/rpl.c | 4 +- net/ip/contiki/sicslowpan/sicslowpan_compression.c | 35 +- .../contiki/sicslowpan/sicslowpan_fragmentation.c | 69 +- net/ip/er-coap/er-coap-context.c | 4 +- net/ip/er-coap/er-coap-engine.c | 2 +- net/ip/er-coap/er-coap-observe-client.c | 2 +- net/ip/ip_buf.c | 6 +- net/ip/l2_buf.c | 3 + net/ip/net_context.c | 21 +- net/ip/net_core.c | 9 +- net/ip/net_driver_15_4.c | 11 +- net/ip/tinydtls/dtls.c | 2 +- samples/bluetooth/beacon/prj_nble.conf | 2 + samples/bluetooth/gatt/bas.c | 81 ++ samples/bluetooth/gatt/bas.h | 22 + samples/bluetooth/gatt/cts.c | 122 +++ samples/bluetooth/gatt/cts.h | 22 + samples/bluetooth/gatt/dis.c | 72 ++ samples/bluetooth/gatt/dis.h | 21 + samples/bluetooth/gatt/gap.c | 71 ++ samples/bluetooth/gatt/gap.h | 21 + samples/bluetooth/gatt/hrs.c | 93 ++ samples/bluetooth/gatt/hrs.h | 22 + samples/bluetooth/gatt/ipss.c | 268 +++++ samples/bluetooth/gatt/ipss.h | 23 + samples/bluetooth/ipsp/src/Makefile | 3 +- samples/bluetooth/ipsp/src/ipss.c | 260 ----- samples/bluetooth/ipsp/src/ipss.h | 21 - samples/bluetooth/ipsp/src/main.c | 2 +- samples/bluetooth/peripheral/prj_nble.conf | 2 + samples/bluetooth/peripheral/src/Makefile | 5 +- samples/bluetooth/peripheral/src/main.c | 272 +---- samples/bluetooth/peripheral_csc/src/Makefile | 4 +- samples/bluetooth/peripheral_csc/src/main.c | 115 +- samples/bluetooth/peripheral_dis/prj.conf | 1 + samples/bluetooth/peripheral_dis/src/Makefile | 4 +- samples/bluetooth/peripheral_dis/src/main.c | 45 +- samples/bluetooth/peripheral_esp/Makefile | 2 +- samples/bluetooth/peripheral_esp/README | 4 + samples/bluetooth/peripheral_esp/prj_nble.conf | 6 + samples/bluetooth/peripheral_esp/src/Makefile | 4 +- samples/bluetooth/peripheral_esp/src/main.c | 97 +- samples/bluetooth/peripheral_esp/testcase.ini | 8 + samples/bluetooth/peripheral_hr/prj_nble.conf | 2 + samples/bluetooth/peripheral_hr/src/Makefile | 5 +- samples/bluetooth/peripheral_hr/src/main.c | 165 +-- samples/bluetooth/peripheral_sc_only/src/Makefile | 4 +- samples/bluetooth/peripheral_sc_only/src/main.c | 34 +- .../cpp_synchronization/microkernel/prj_x86.conf | 1 - samples/cpp_synchronization/nanokernel/prj.conf | 1 - samples/drivers/adc/src/adc.c | 2 +- samples/drivers/aon_counter/Makefile | 5 + samples/drivers/aon_counter/aon.config | 6 + samples/drivers/aon_counter/readme.txt | 101 ++ samples/drivers/aon_counter/src/Makefile | 1 + samples/drivers/aon_counter/src/main.c | 166 +++ samples/drivers/aon_counter/testcase.ini | 5 + samples/drivers/button/Makefile | 6 + samples/drivers/button/README.txt | 41 + samples/drivers/button/prj.conf | 1 + samples/drivers/button/prj.mdef | 5 + samples/drivers/button/src/Makefile | 1 + samples/drivers/button/src/main.c | 64 ++ samples/drivers/disco/Makefile | 6 + samples/drivers/disco/README.txt | 42 + samples/drivers/disco/prj.conf | 1 + samples/drivers/disco/prj.mdef | 5 + samples/drivers/disco/src/Makefile | 1 + samples/drivers/disco/src/main.c | 49 + samples/drivers/i2c_fujitsu_fram/src/main.c | 8 +- samples/drivers/i2c_lsm9ds0/src/main.c | 8 +- samples/drivers/i2c_stts751/Makefile | 6 + samples/drivers/i2c_stts751/README | 7 + samples/drivers/i2c_stts751/prj.conf | 1 + samples/drivers/i2c_stts751/src/Makefile | 1 + samples/drivers/i2c_stts751/src/main.c | 93 ++ samples/drivers/sensor_apds9960/Makefile | 6 + samples/drivers/sensor_apds9960/prj_arc.conf | 8 + samples/drivers/sensor_apds9960/src/Makefile | 1 + samples/drivers/sensor_apds9960/src/main.c | 283 +++++ samples/drivers/sensor_apds9960/testcase.ini | 6 + samples/drivers/spi_test/src/spi.c | 4 + samples/drivers/uart/prj.config | 1 + samples/drivers/uart/src/main.c | 70 +- samples/drivers/w25q80bl/Makefile | 2 +- samples/drivers/w25q80bl/README | 6 + samples/drivers/w25q80bl/prj.conf | 2 + samples/drivers/w25q80bl/src/main.c | 14 +- samples/drivers/watchdog/src/main.c | 4 +- samples/hello_world/microkernel/prj.conf | 1 - samples/ipm/ipm_demo_arc/Makefile | 6 + samples/ipm/ipm_demo_arc/prj.conf | 10 + samples/ipm/ipm_demo_arc/prj.mdef | 11 + samples/ipm/ipm_demo_arc/src/Makefile | 5 + samples/ipm/ipm_demo_arc/src/hello.c | 102 ++ samples/ipm/ipm_demo_lmt/Makefile | 6 + samples/ipm/ipm_demo_lmt/prj.conf | 9 + samples/ipm/ipm_demo_lmt/prj.mdef | 13 + samples/ipm/ipm_demo_lmt/src/Makefile | 5 + samples/ipm/ipm_demo_lmt/src/hello.c | 143 +++ .../kernel_event_logger/microkernel/prj_arm.conf | 2 +- .../kernel_event_logger/microkernel/prj_x86.conf | 2 +- samples/net/coap_observe_client/Makefile | 9 +- samples/net/coap_observe_client/prj_802154.conf | 12 + samples/net/coap_observe_client/prj_arm.conf | 11 - samples/net/coap_observe_client/prj_slip.conf | 13 + samples/net/coap_observe_client/prj_x86.conf | 11 - samples/net/coap_observe_client/src/Makefile | 7 +- .../coap_observe_client/src/coap-observe-client.c | 76 +- samples/net/coap_server/Makefile | 6 +- samples/net/coap_server/prj_slip.conf | 2 + samples/net/coap_server/src/Makefile | 7 +- samples/net/coap_server/src/coap-server.c | 81 +- samples/net/common/Makefile.ipstack | 96 ++ samples/net/common/net_testing.h | 136 +++ samples/net/dtls_client/Makefile | 3 +- samples/net/dtls_client/prj_qemu.conf | 13 + samples/net/dtls_client/prj_slip.conf | 6 +- samples/net/dtls_client/src/Makefile | 5 + samples/net/dtls_client/src/dtls-client.c | 77 +- samples/net/dtls_server/Makefile | 6 +- samples/net/dtls_server/prj_qemu.conf | 13 + samples/net/dtls_server/prj_slip.conf | 4 +- samples/net/dtls_server/src/Makefile | 7 +- samples/net/dtls_server/src/dtls-server.c | 69 +- samples/net/echo_client/Makefile | 2 +- samples/net/echo_client/prj_qemu.conf | 2 + samples/net/echo_client/prj_slip.conf | 2 + samples/net/echo_client/src/Makefile | 7 +- samples/net/echo_client/src/echo-client.c | 93 +- samples/net/echo_server/Makefile | 2 +- samples/net/echo_server/Makefile.ipstack | 91 -- samples/net/echo_server/prj_qemu.conf | 2 + samples/net/echo_server/prj_slip.conf | 2 + samples/net/echo_server/src/Makefile | 7 +- samples/net/echo_server/src/echo-server.c | 95 +- samples/net/loopback_test/Makefile | 6 +- samples/net/loopback_test/prj.conf | 5 + samples/net/loopback_test/prj.mdef | 4 +- samples/net/loopback_test/prj_10000.conf | 6 + samples/net/loopback_test/prj_arm.conf | 3 - samples/net/loopback_test/prj_x86.conf | 3 - samples/net/loopback_test/src/network.c | 181 ++-- samples/nfc/nfc_hello/src/main.c | 8 +- samples/philosophers/microkernel/src/phil.h | 9 +- samples/philosophers/microkernel/src/phil_fiber.c | 17 +- samples/philosophers/microkernel/src/phil_task.c | 10 +- samples/power/power_hooks/prj.conf | 4 +- samples/power/power_hooks/src/main.c | 2 +- samples/power/power_mgr/README.txt | 17 +- samples/power/power_mgr/prj.conf | 6 +- samples/power/power_mgr/src/main.c | 102 +- samples/sensor/bmp280/Makefile | 5 + samples/sensor/bmp280/prj.conf | 11 + samples/sensor/bmp280/src/Makefile | 1 + samples/sensor/bmp280/src/main.c | 50 + samples/sensor/magn_polling/Makefile | 6 + samples/sensor/magn_polling/README.txt | 3 + samples/sensor/magn_polling/prj.conf | 13 + samples/sensor/magn_polling/src/Makefile | 1 + samples/sensor/magn_polling/src/main.c | 73 ++ samples/sensor/mcp9808/Makefile | 6 + samples/sensor/mcp9808/README.txt | 1 + samples/sensor/mcp9808/prj.conf | 14 + samples/sensor/mcp9808/src/Makefile | 1 + samples/sensor/mcp9808/src/main.c | 84 ++ samples/sensor/sx9500/Makefile | 6 + samples/sensor/sx9500/README.txt | 5 + samples/sensor/sx9500/prj.conf | 16 + samples/sensor/sx9500/src/Makefile | 1 + samples/sensor/sx9500/src/main.c | 93 ++ samples/synchronization/microkernel/prj.conf | 1 - scripts/kconfig/menu.c | 16 + scripts/kconfig/symbol.c | 29 + scripts/qemu-machine-hack.py | 11 + scripts/sanity_chk/arches/x86.ini | 5 +- scripts/sanitycheck | 58 +- scripts/sysgen | 56 +- tests/benchmark/app_kernel/Makefile | 12 +- tests/benchmark/app_kernel/prj_atom.conf | 13 - tests/benchmark/app_kernel/prj_fp.conf | 11 + tests/benchmark/app_kernel/prj_minuteia.conf | 6 - tests/benchmark/app_kernel/prj_no_fp.conf | 6 + tests/benchmark/boot_time/microkernel/Makefile | 1 + tests/benchmark/boot_time/nanokernel/Makefile | 1 + tests/benchmark/footprint/microkernel/README.txt | 3 - .../benchmark/footprint/microkernel/float/arm.conf | 2 +- .../benchmark/footprint/microkernel/float/x86.conf | 2 +- tests/benchmark/footprint/microkernel/max/arm.conf | 2 +- tests/benchmark/footprint/microkernel/max/x86.conf | 2 +- tests/benchmark/footprint/nanokernel/README.txt | 3 - .../benchmark/latency_measure/microkernel/prj.conf | 2 - .../benchmark/latency_measure/microkernel/prj.mdef | 4 +- .../microkernel/src/nano_ctx_switch.c | 2 +- .../latency_measure/microkernel/src/nano_int.c | 2 +- .../microkernel/src/nano_int_to_fiber.c | 2 +- .../microkernel/src/nano_int_to_fiber_sem.c | 2 +- .../microkernel/src/test_asm_inline_gcc.h | 20 +- .../latency_measure/microkernel/src/utils.c | 1 - .../benchmark/latency_measure/nanokernel/prj.conf | 2 - tests/benchmark/sys_kernel/microkernel/prj.conf | 2 - .../sys_kernel/nanokernel/prj_console.conf | 2 - tests/bluetooth/init/prj_0.conf | 2 + tests/bluetooth/init/prj_1.conf | 3 + tests/bluetooth/init/prj_10.conf | 9 + tests/bluetooth/init/prj_11.conf | 12 + tests/bluetooth/init/prj_12.conf | 11 + tests/bluetooth/init/prj_13.conf | 11 + tests/bluetooth/init/prj_14.conf | 7 + tests/bluetooth/init/prj_15.conf | 7 + tests/bluetooth/init/prj_16.conf | 8 + tests/bluetooth/init/prj_17.conf | 22 + tests/bluetooth/init/prj_18.conf | 4 + tests/bluetooth/init/prj_19.conf | 4 + tests/bluetooth/init/prj_2.conf | 3 + tests/bluetooth/init/prj_3.conf | 5 + tests/bluetooth/init/prj_4.conf | 4 + tests/bluetooth/init/prj_5.conf | 4 + tests/bluetooth/init/prj_6.conf | 5 + tests/bluetooth/init/prj_7.conf | 6 + tests/bluetooth/init/prj_8.conf | 7 + tests/bluetooth/init/prj_9.conf | 8 + tests/bluetooth/init/testcase.ini | 106 +- tests/bluetooth/shell/prj_nble.conf | 2 + tests/bluetooth/shell/src/Makefile | 3 +- tests/bluetooth/shell/src/main.c | 216 +++- tests/bluetooth/tester/btp_spec.txt | 1 + tests/bluetooth/tester/prj_nble.conf | 2 + tests/bluetooth/tester/src/Makefile | 2 +- tests/bluetooth/tester/src/bttester.c | 5 + tests/bluetooth/tester/src/bttester.h | 18 +- tests/bluetooth/tester/src/gap.c | 6 +- tests/bluetooth/tester/src/gatt.c | 469 ++++---- tests/bluetooth/tester/src/l2cap.c | 50 + tests/kernel/test_early_sleep/Makefile | 6 + tests/kernel/test_early_sleep/README.txt | 51 + tests/kernel/test_early_sleep/prj.conf | 1 + tests/kernel/test_early_sleep/prj.mdef | 10 + tests/kernel/test_early_sleep/src/Makefile | 3 + tests/kernel/test_early_sleep/src/early_sleep.c | 269 +++++ tests/kernel/test_early_sleep/testcase.ini | 2 + tests/kernel/test_ipm/src/ipm_dummy.c | 2 +- tests/kernel/test_obj_tracing/microkernel/Makefile | 6 + .../kernel/test_obj_tracing/microkernel/README.txt | 18 + tests/kernel/test_obj_tracing/microkernel/prj.mdef | 24 + .../test_obj_tracing/microkernel/prj_arm.conf | 2 + .../test_obj_tracing/microkernel/prj_x86.conf | 5 + .../test_obj_tracing/microkernel/src/Makefile | 3 + .../microkernel/src/object_monitor.c | 146 +++ .../kernel/test_obj_tracing/microkernel/src/phil.h | 18 + .../test_obj_tracing/microkernel/src/phil_fiber.c | 111 ++ .../test_obj_tracing/microkernel/src/phil_task.c | 75 ++ .../test_obj_tracing/microkernel/testcase.ini | 2 + tests/kernel/test_obj_tracing/nanokernel/Makefile | 6 + .../kernel/test_obj_tracing/nanokernel/README.txt | 18 + .../test_obj_tracing/nanokernel/prj_arc.conf | 2 + .../test_obj_tracing/nanokernel/prj_arm.conf | 2 + .../test_obj_tracing/nanokernel/prj_x86.conf | 5 + .../test_obj_tracing/nanokernel/testcase.ini | 2 + .../kernel/test_tickless/microkernel/prj_arm.conf | 2 +- .../kernel/test_tickless/microkernel/prj_x86.conf | 2 +- tests/kernel/test_xip/microkernel/prj.conf | 1 - tests/kernel/test_xip/nanokernel/prj_arm.conf | 1 - tests/kernel/test_xip/nanokernel/prj_x86.conf | 1 - zephyr-env.sh | 3 + 777 files changed, 37859 insertions(+), 12153 deletions(-)
|
|
RFC: Method for PM app to detect if any device is busy before deciding to use deep sleep policy
Thomas, Ramesh
Problem Statement:
-------------------------- Entering deep sleep states during pending device transactions can cause transaction inconsistencies. Why this is a problem: ----------------------------- When deep sleep state is entered, peripheral blocks are shutdown losing state. If a transfer was ongoing when the block was turned off then the state of the transaction would be left in an irrecoverably error state. e.g. if the SPI block loses power when a SPI flash write was happening, then parts of the flash memory would have been erased and written with incomplete data. When kernel idle task calls _sys_soc_suspend(), PM policy may decide to enter deep sleep and calls .suspend() functions of devices. If a device is busy at this point, one option for the driver is to return -EBUSY. However, if it is discovered that a device is busy, after having suspended several devices, then it could be suboptimal to roll back the already suspended devices, or spend time retrying to get the busy device to suspend. Due to kernel idling logic which involves timer expiry calculations that should not be interrupted, the kernel idle task disables interrupt before going to idle. Since _sys_soc_suspend() is called in this context with interrupts disabled, for it to block for too long, waiting for devices to free up, would be disruptive to system scheduling. What should be done: ------------------------------ A method for devices to register a busy state as follows:- a)A bit field array with one bit per device will be used to store the transaction status of each device. b) "device_get_busy_list()" API will be called by PM app to retrieve a pointer to the bit field array in (a) and use it to track device busy status. Based on the transaction status of devices, PM app can decide whether to enter deep sleep or any PM policy. c) Device drivers will call "device_set_busy(struct device*)" API to register beginning of a transaction that should not be interrupted by deep sleep. d) Device drivers will call "device_clear_busy(struct device*)" API to clear the busy status of the device.
|
|
RFC: extend sanitycheck testcase filtering expressiveness
Boie, Andrew P
Problem statement:
Test case filtering in sanitycheck's testcase.ini files allows sanitycheck to exclude certain test cases that are incompatible with particular architectures, boards, or the presence or absence of Kconfig options. The goal of this mechanism is to allow the testcases to scale up to many different boards without having to do constant gardening of the testcase configuration files. I imagine a future where Zephyr supports dozens, if not hundreds of microcontrollers and we want to ensure that we have good test coverage on all these boards. This is currently done in testcase.ini with the following directives: arch_whitelist = <list of arches, such as x86, arm, arc> Set of architectures that this test case should only be run for. arch_exclude = <list of arches, such as x86, arm, arc> Set of architectures that this test case should not run on. platform_whitelist = <list of platforms> Set of platforms that this test case should only be run for. platform_exclude = <list of platforms> Set of platforms that this test case should not run on. config_whitelist = <list of config options> Config options can either be config names like CONFIG_FOO which match if the configuration is defined to any value, or key/value pairs like CONFIG_FOO=bar which match if it is set to a specific value. May prepend a '!' to invert the match. This current scheme is less than ideal for several reasons, enumerated below: 1. config_whitelist is very limited in expressiveness. 1a. You cannot do numerical comparisons, for example I can't currently filter out a large footprint test by saying that CONFIG_RAM_SIZE must be equal to or greater than some value. You can only test for equality or if the config option is defined. This was somewhat vexing when trying to add the new nucleo_f103rb board to sanity checks as it has very little RAM. 1b. All the items in config_whitelist are ANDed together. You cannot specify boolean OR relationship, do any kind of grouping with parenthesis, or use NOT except on individual items. You can only do very simple stuff. 1c. There is no way to tie config_whitelist in with the current arch or platform. For example, test_tickless is currently improperly specified. The true semantics of the test is that it works on all x86, is unimplemented on ARC, and it supports two different SOC types on ARM: CONFIG_SOC_ATMEL_SAM3, CONFIG_SOC_FSL_FRDM_K64F Currently we have in its testcase.ini: [test] tags = core config_whitelist = !CONFIG_SOC_TI_LM3S6965_QEMU This currently only works for a few reasons that do not scale. * The test is automatically excluded on ARC because of no microkernel support (which may change in the future) * This test runs on all x86, because currently we exclude targets that have a particular SOC, which is a bad way to do it as you will need to keep adding more ARM SOCs to the list as they are introduced to the tree, such as SOC_STM32F103RB. If I instead expressed all the CONFIG_SOC_* on the ARM side that the test *is* compatible with, there's no way to tell it that it's also good to run on all X86. What we should be saying is something more like, "run on all x86 boards, or those ARM boards which have a particular SOC supported in the code". In the language developed for this proposal, we would have: filter = ARCH == "x86" or (ARCH == "arm" and (CONFIG_SOC_FSL_FRDM_K64F or CONFIG_SOC_ATMEL_SAM3)) 2. platform_whitelist or platform_exclude is the *worst* way to filter testcases, as it simply doesn't scale. You have to keep adding new boards to these lists as they are introduced to the Zephyr tree, which is not fun to manage in a hypothetical optimistic future where Zephyr takes off and we have dozens or even hundreds of supported boards in the tree. If possible, it's much better to filter on board *features* through config_whitelist, as these typically do not require more changes to the testcase.ini as more boards are added. For example, we have a lot of bluetooth tests which have a platform_whitelist with "arduino_101". This means the test will only run on that board. It may be better to indicate that the test can run on any Quark SE board with compatible Bluetooth hardware; on cursory inspection these tests seem to be specific to the bluetooth chip in use and not even the SOC. Proposed solution: We need a more expressive language for filtering test cases. I propose a simple boolean expression language with the following grammar: expression ::= expression "and" expression | expression "or" expression | "not" expression | "(" expression ")" | symbol "==" constant | symbol "!=" constant | symbol "<" number | symbol ">" number | symbol ">=" number | symbol "<=" number | symbol "in" list | symbol list ::= "[" list_contents "]" list_contents ::= constant | list_contents "," constant constant ::= number | string When symbols are encountered, they are looked up in an environment dictionary. In sanitycheck the environment will initially consist of: { ARCH : <architecture>, PLATFORM : <platform>, <all CONFIG_* key/value pairs in the test's generated defconfig> } We can later augment this with additional interesting metadata if we want. For example I was thinking of ways we could integrate some footprint information for large tests. For the case where expression ::= symbol it evaluates to true if the symbol is defined to a non-empty string. For all comparison operators, if the config symbol is undefined, it will be treated as a 0 (for > < >= <=) or an empty string "" (for == != in). For numerical comparisons it doesn't matter if the environment stores the value as an integer or string, it will be cast appropriately. Operator precedence, starting from lowest to highest: or (left associative) and (left associative) not (right associative) all comparison operators (non-associative) In testcase.ini the 'config_whitelist' directive will be removed and replaced with 'filter' directives containing one of these expressions. arch_whitelist, arch_exclude, platform_whitelist, platform_exclude are all syntactic sugar for these expressions. For instance arch_exclude = x86 arc Is the same as: filter = not ARCH in ["x86", "arc"] Implementation details: Writing a parser by hand is a pain and prone to bugs. The best way to do a language like this is to use a LR parser generator like lex/yacc. There exists an open source library called PLY which does lex/yacc for Python, it has been around for a long time and works very well: http://www.dabeaz.com/ply/index.html The sample implementation I have drops a copy of PLY directly in the Zephyr source tree since its license is compatible and this will result in the least pain for users as they won't have to do anything. If this is unacceptable we can either find a way to stick it in the SDK, or add it to the list of workstation dependencies (either have the user install with pip or their distribution's package manager. Fedora appears to have PLY installed by default). Except for the case mentioned above with test_tickless, I haven't yet gone through all the testcase.ini to ensure that the filtering done is optimal. However I do have an implementation of the language which can be looked at below: Add PLY sources to tree https://gerrit.zephyrproject.org/r/1075 Implement expression parser https://gerrit.zephyrproject.org/r/1076 Integrate expression parser into sanitycheck https://gerrit.zephyrproject.org/r/1077 Fix test_tickless filtering expression https://gerrit.zephyrproject.org/r/1078 In addition to sanitycheck it is hoped that the expression language could be generally useful for other scripts which need to do yes/no filtering based on values in an environment. -- Andrew Boie Staff Engineer - EOS Zephyr Intel Open Source Technology Center
|
|
Re: FRDM-K64 PWM BUS Fault
Maciek Borzecki <maciek.borzecki@...>
On Wed, Mar 23, 2016 at 4:01 PM, Anders Dam Kofoed <adk(a)accipio.dk> wrote:
Hi all,Full assembly listing in written to outdir/zephyr.lst. Having the address of instruction that trigger the fault, try looking it up in the listing and see if there's something obviously wrong. The assembly will be mixed with C, you can try a debug build to get an unoptimized version which should be a bit easier to look at . If nothing in particular stands out, you can always try gdb. --- -- Maciek Borzecki
|
|
Re: FRDM-K64 PWM BUS Fault
Kalowsky, Daniel <daniel.kalowsky@...>
I'd encourage you to file a JIRA/bug so that we can track this and get someone looking at it.
toggle quoted messageShow quoted text
-----Original Message-----
|
|
FRDM-K64 PWM BUS Fault
Anders Dam Kofoed <adk@...>
Hi all,
I am trying to use the PWM output on the K64 board. I have taken the sample/drivers/pwm_dw/src/main.c and modified it to use the CONFIG_PWM_K64_FTM_0_DEV_NAME and removed the CONFIG_PWM_DW=y from the prj.conf. Compiles without errors or warnings. Using the latest 0.75 SDK and zephyr-project code I get this on the terminal when running it: PWM demo app ***** BUS FAULT ***** Executing thread ID (thread): 0x20001b28 Faulting instruction address: 0x00000b78 Imprecise data bus error Fatal fault in task ! Aborting task. --- prj.conf: --- CONFIG_STDOUT_CONSOLE=y CONFIG_PRINTK=y CONFIG_NANO_TIMERS=y CONFIG_NANO_TIMEOUTS=y CONFIG_GPIO=y CONFIG_PWM=y --- CODE: --- #include <zephyr.h> #if defined(CONFIG_STDOUT_CONSOLE) #include <stdio.h> #define PRINT printf #else #include <misc/printk.h> #define PRINT printk #endif #include <device.h> #include <pwm.h> #include <sys_clock.h> /* about 1 ms */ #define MIN_PERIOD 32000 /* about 1 second */ #define MAX_PERIOD 32000000 #define SLEEPTICKS SECONDS(4) void main(void) { struct nano_timer timer; void *timer_data[1]; struct device *pwm_dev; uint32_t period; uint8_t dir; nano_timer_init(&timer, timer_data); PRINT("PWM demo app\n"); pwm_dev = device_get_binding(CONFIG_PWM_K64_FTM_0_DEV_NAME); if (!pwm_dev) { PRINT("Cannot find %s!\n", CONFIG_PWM_K64_FTM_0_DEV_NAME); } period = MAX_PERIOD; dir = 0; while (1) { pwm_pin_set_values(pwm_dev, 0, period, period); //pwm_pin_set_duty_cycle(pwm_dev, 0, 40); if (dir) { period *= 2; if (period > MAX_PERIOD) { dir = 0; period = MAX_PERIOD; } } else { period /= 2; if (period < MIN_PERIOD) { dir = 1; period = MIN_PERIOD; } } nano_timer_start(&timer, SLEEPTICKS); nano_timer_test(&timer, TICKS_UNLIMITED); } } I have found another way to do what I want so no rush. Just wanted to state that it's not working. Kind regards Anders Dam Kofoed
|
|