zephyr: Bring in the Zephyr build
Add support for building mcuboot as a Zephyr application. This is
copied from the iotboot repo with some minor reorganization to work with
the mcuboot directory layout.
diff --git a/zephyr/include/flash_map/flash_map.h b/zephyr/include/flash_map/flash_map.h
new file mode 100644
index 0000000..c0c9489
--- /dev/null
+++ b/zephyr/include/flash_map/flash_map.h
@@ -0,0 +1,96 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+#ifndef H_UTIL_FLASH_MAP_
+#define H_UTIL_FLASH_MAP_
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/**
+ *
+ * Provides abstraction of flash regions for type of use.
+ * I.e. dude where's my image?
+ *
+ * System will contain a map which contains flash areas. Every
+ * region will contain flash identifier, offset within flash and length.
+ *
+ * 1. This system map could be in a file within filesystem (Initializer
+ * must know/figure out where the filesystem is at).
+ * 2. Map could be at fixed location for project (compiled to code)
+ * 3. Map could be at specific place in flash (put in place at mfg time).
+ *
+ * Note that the map you use must be valid for BSP it's for,
+ * match the linker scripts when platform executes from flash,
+ * and match the target offset specified in download script.
+ */
+#include <inttypes.h>
+
+struct flash_area {
+ uint8_t fa_id;
+ uint8_t fa_device_id;
+ uint16_t pad16;
+ uint32_t fa_off;
+ uint32_t fa_size;
+};
+
+extern const struct flash_area *flash_map;
+extern int flash_map_entries;
+
+/*
+ * Initializes flash map. Memory will be referenced by flash_map code
+ * from this on.
+ */
+void flash_map_init(void);
+
+/*
+ * Start using flash area.
+ */
+int flash_area_open(uint8_t id, const struct flash_area **);
+
+void flash_area_close(const struct flash_area *);
+
+/*
+ * Read/write/erase. Offset is relative from beginning of flash area.
+ */
+int flash_area_read(const struct flash_area *, uint32_t off, void *dst,
+ uint32_t len);
+int flash_area_write(const struct flash_area *, uint32_t off, const void *src,
+ uint32_t len);
+int flash_area_erase(const struct flash_area *, uint32_t off, uint32_t len);
+
+/*
+ * Alignment restriction for flash writes.
+ */
+uint8_t flash_area_align(const struct flash_area *);
+
+/*
+ * Given flash map index, return info about sectors within the area.
+ */
+int flash_area_to_sectors(int idx, int *cnt, struct flash_area *ret);
+
+int flash_area_id_from_image_slot(int slot);
+int flash_area_id_to_image_slot(int area_id);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* H_UTIL_FLASH_MAP_ */
diff --git a/zephyr/include/hal/hal_bsp.h b/zephyr/include/hal/hal_bsp.h
new file mode 100644
index 0000000..8b52f27
--- /dev/null
+++ b/zephyr/include/hal/hal_bsp.h
@@ -0,0 +1,79 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+#ifndef __HAL_BSP_H_
+#define __HAL_BSP_H_
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include <inttypes.h>
+
+/*
+ * Initializes BSP; registers flash_map with the system.
+ */
+void hal_bsp_init(void);
+
+/*
+ * Return pointer to flash device structure, given BSP specific
+ * flash id.
+ */
+struct hal_flash;
+const struct hal_flash *hal_bsp_flash_dev(uint8_t flash_id);
+
+/*
+ * Grows heap by given amount. XXX giving space back not implemented.
+ */
+void *_sbrk(int incr);
+
+/*
+ * Report which memory areas should be included inside a coredump.
+ */
+struct hal_bsp_mem_dump {
+ void *hbmd_start;
+ uint32_t hbmd_size;
+};
+
+const struct hal_bsp_mem_dump *hal_bsp_core_dump(int *area_cnt);
+
+/*
+ * Get unique HW identifier/serial number for platform.
+ * Returns the number of bytes filled in.
+ */
+#define HAL_BSP_MAX_ID_LEN 32
+int hal_bsp_hw_id(uint8_t *id, int max_len);
+
+#define HAL_BSP_POWER_ON (1)
+#define HAL_BSP_POWER_WFI (2)
+#define HAL_BSP_POWER_SLEEP (3)
+#define HAL_BSP_POWER_DEEP_SLEEP (4)
+#define HAL_BSP_POWER_OFF (5)
+#define HAL_BSP_POWER_PERUSER (128)
+
+int hal_bsp_power_state(int state);
+
+/* Returns priority of given interrupt number */
+uint32_t hal_bsp_get_nvic_priority(int irq_num, uint32_t pri);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/zephyr/include/hal/hal_flash.h b/zephyr/include/hal/hal_flash.h
new file mode 100644
index 0000000..2895479
--- /dev/null
+++ b/zephyr/include/hal/hal_flash.h
@@ -0,0 +1,43 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+#ifndef H_HAL_FLASH_
+#define H_HAL_FLASH_
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include <inttypes.h>
+
+int hal_flash_read(uint8_t flash_id, uint32_t address, void *dst,
+ uint32_t num_bytes);
+int hal_flash_write(uint8_t flash_id, uint32_t address, const void *src,
+ uint32_t num_bytes);
+int hal_flash_erase_sector(uint8_t flash_id, uint32_t sector_address);
+int hal_flash_erase(uint8_t flash_id, uint32_t address, uint32_t num_bytes);
+uint8_t hal_flash_align(uint8_t flash_id);
+int hal_flash_init(void);
+
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* H_HAL_FLASH_ */
diff --git a/zephyr/include/os/os.h b/zephyr/include/os/os.h
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/zephyr/include/os/os.h
diff --git a/zephyr/include/os/os_heap.h b/zephyr/include/os/os_heap.h
new file mode 100644
index 0000000..4413568
--- /dev/null
+++ b/zephyr/include/os/os_heap.h
@@ -0,0 +1,38 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+#ifndef H_OS_HEAP_
+#define H_OS_HEAP_
+
+#include <stddef.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+void *os_malloc(size_t size);
+void os_free(void *mem);
+void *os_realloc(void *ptr, size_t size);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
+
diff --git a/zephyr/include/os/os_malloc.h b/zephyr/include/os/os_malloc.h
new file mode 100644
index 0000000..32b72c2
--- /dev/null
+++ b/zephyr/include/os/os_malloc.h
@@ -0,0 +1,42 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+#ifndef H_OS_MALLOC_
+#define H_OS_MALLOC_
+
+#include "os/os_heap.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#undef malloc
+#define malloc os_malloc
+
+#undef free
+#define free os_free
+
+#undef realloc
+#define realloc os_realloc
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/zephyr/include/syscfg/syscfg.h b/zephyr/include/syscfg/syscfg.h
new file mode 100644
index 0000000..ad58eed
--- /dev/null
+++ b/zephyr/include/syscfg/syscfg.h
@@ -0,0 +1,6 @@
+#ifndef __SYSCFG_H__
+#define __SYSCFG_H__
+
+#define MYNEWT_VAL(x) (x)
+
+#endif /* __SYSCFG_H__ */
diff --git a/zephyr/include/sysflash/sysflash.h b/zephyr/include/sysflash/sysflash.h
new file mode 100644
index 0000000..e08f9eb
--- /dev/null
+++ b/zephyr/include/sysflash/sysflash.h
@@ -0,0 +1,10 @@
+/* Manual version of auto-generated version. */
+
+#ifndef __SYSFLASH_H__
+#define __SYSFLASH_H__
+
+#define FLASH_AREA_IMAGE_0 1
+#define FLASH_AREA_IMAGE_1 2
+#define FLASH_AREA_IMAGE_SCRATCH 3
+
+#endif /* __SYSFLASH_H__ */