You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@mynewt.apache.org by cc...@apache.org on 2016/10/10 21:11:31 UTC
[1/2] incubator-mynewt-core git commit: fs/nffs - Fix conversion from
flash->nffs_areas.
Repository: incubator-mynewt-core
Updated Branches:
refs/heads/develop d0d87ab75 -> 11bdddf85
fs/nffs - Fix conversion from flash->nffs_areas.
Project: http://git-wip-us.apache.org/repos/asf/incubator-mynewt-core/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-mynewt-core/commit/11bdddf8
Tree: http://git-wip-us.apache.org/repos/asf/incubator-mynewt-core/tree/11bdddf8
Diff: http://git-wip-us.apache.org/repos/asf/incubator-mynewt-core/diff/11bdddf8
Branch: refs/heads/develop
Commit: 11bdddf8514915355b8158bb1826b219186fac74
Parents: bd99cef
Author: Christopher Collins <cc...@apache.org>
Authored: Mon Oct 10 14:10:58 2016 -0700
Committer: Christopher Collins <cc...@apache.org>
Committed: Mon Oct 10 14:11:28 2016 -0700
----------------------------------------------------------------------
fs/nffs/src/nffs_misc.c | 11 ++++++-----
hw/bsp/native/syscfg.yml | 2 ++
2 files changed, 8 insertions(+), 5 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-mynewt-core/blob/11bdddf8/fs/nffs/src/nffs_misc.c
----------------------------------------------------------------------
diff --git a/fs/nffs/src/nffs_misc.c b/fs/nffs/src/nffs_misc.c
index 09fbc12..9f399af 100644
--- a/fs/nffs/src/nffs_misc.c
+++ b/fs/nffs/src/nffs_misc.c
@@ -451,7 +451,7 @@ nffs_misc_ready(void)
* to a region.
*/
int
-nffs_misc_desc_from_flash_area(int idx, int *cnt, struct nffs_area_desc *nad)
+nffs_misc_desc_from_flash_area(int id, int *cnt, struct nffs_area_desc *nad)
{
int i, j;
const struct hal_flash *hf;
@@ -460,15 +460,16 @@ nffs_misc_desc_from_flash_area(int idx, int *cnt, struct nffs_area_desc *nad)
int first_idx, last_idx;
uint32_t start, size;
uint32_t min_size;
+ int rc;
- if (!flash_map || idx >= flash_map_entries) {
- return -1;
- }
first_idx = last_idx = -1;
max_cnt = *cnt;
*cnt = 0;
- fa = &flash_map[idx];
+ rc = flash_area_open(id, &fa);
+ if (rc != 0) {
+ return -1;
+ }
hf = bsp_flash_dev(fa->fa_device_id);
for (i = 0; i < hf->hf_sector_cnt; i++) {
http://git-wip-us.apache.org/repos/asf/incubator-mynewt-core/blob/11bdddf8/hw/bsp/native/syscfg.yml
----------------------------------------------------------------------
diff --git a/hw/bsp/native/syscfg.yml b/hw/bsp/native/syscfg.yml
new file mode 100644
index 0000000..d648bb0
--- /dev/null
+++ b/hw/bsp/native/syscfg.yml
@@ -0,0 +1,2 @@
+syscfg.vals:
+ NFFS_FLASH_AREA: FLASH_AREA_NFFS
[2/2] incubator-mynewt-core git commit: Move split_mode from
boot/split to boot/bootutil.
Posted by cc...@apache.org.
Move split_mode from boot/split to boot/bootutil.
To allow the split status to be reported in the generic "image list"
command, non-split-images and split-images alike need access to the
current split mode. Non-split-images don't have access to the
boot/split library, but they have access to bootutil.
Project: http://git-wip-us.apache.org/repos/asf/incubator-mynewt-core/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-mynewt-core/commit/bd99cef5
Tree: http://git-wip-us.apache.org/repos/asf/incubator-mynewt-core/tree/bd99cef5
Diff: http://git-wip-us.apache.org/repos/asf/incubator-mynewt-core/diff/bd99cef5
Branch: refs/heads/develop
Commit: bd99cef58e523d1ba66d46d6ff2405d2a14c3732
Parents: d0d87ab
Author: Christopher Collins <cc...@apache.org>
Authored: Mon Oct 10 13:32:36 2016 -0700
Committer: Christopher Collins <cc...@apache.org>
Committed: Mon Oct 10 14:11:28 2016 -0700
----------------------------------------------------------------------
boot/bootutil/include/bootutil/bootutil_misc.h | 13 ++++++
boot/bootutil/pkg.yml | 1 +
boot/bootutil/src/bootutil_misc.c | 19 +++++++++
boot/bootutil/src/loader.c | 1 -
boot/split/include/split/split.h | 7 ----
boot/split/include/split/split_priv.h | 38 -----------------
boot/split/src/split.c | 14 +++----
boot/split/src/split_config.c | 46 ++++++++++++---------
boot/split/src/split_netmgr.c | 13 ++----
boot/split/src/split_priv.h | 40 ++++++++++++++++++
10 files changed, 108 insertions(+), 84 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-mynewt-core/blob/bd99cef5/boot/bootutil/include/bootutil/bootutil_misc.h
----------------------------------------------------------------------
diff --git a/boot/bootutil/include/bootutil/bootutil_misc.h b/boot/bootutil/include/bootutil/bootutil_misc.h
index 3df048e..ead86d5 100644
--- a/boot/bootutil/include/bootutil/bootutil_misc.h
+++ b/boot/bootutil/include/bootutil/bootutil_misc.h
@@ -20,10 +20,20 @@
#ifndef __BOOTUTIL_MISC_H_
#define __BOOTUTIL_MISC_H_
+#include <inttypes.h>
+
#ifdef __cplusplus
extern "C" {
#endif
+typedef enum {
+ SPLIT_NONE = 0,
+ SPLIT_TEST,
+ SPLIT_RUN,
+} boot_split_mode_t;
+
+extern int8_t boot_split_mode;
+
int boot_vect_read_test(int *slot);
int boot_vect_read_main(int *slot);
int boot_vect_write_test(int slot);
@@ -31,6 +41,9 @@ int boot_vect_write_main(void);
void boot_set_image_slot_split(void);
+boot_split_mode_t boot_split_mode_get(void);
+int boot_split_mode_set(boot_split_mode_t split_mode);
+
#ifdef __cplusplus
}
#endif
http://git-wip-us.apache.org/repos/asf/incubator-mynewt-core/blob/bd99cef5/boot/bootutil/pkg.yml
----------------------------------------------------------------------
diff --git a/boot/bootutil/pkg.yml b/boot/bootutil/pkg.yml
index 060898e..ca9dbf7 100644
--- a/boot/bootutil/pkg.yml
+++ b/boot/bootutil/pkg.yml
@@ -29,4 +29,5 @@ pkg.deps:
- hw/hal
- crypto/mbedtls
- kernel/os
+ - sys/defs
- sys/flash_map
http://git-wip-us.apache.org/repos/asf/incubator-mynewt-core/blob/bd99cef5/boot/bootutil/src/bootutil_misc.c
----------------------------------------------------------------------
diff --git a/boot/bootutil/src/bootutil_misc.c b/boot/bootutil/src/bootutil_misc.c
index 8440159..9f7d055 100644
--- a/boot/bootutil/src/bootutil_misc.c
+++ b/boot/bootutil/src/bootutil_misc.c
@@ -23,6 +23,7 @@
#include "syscfg/syscfg.h"
#include "sysflash/sysflash.h"
+#include "defs/error.h"
#include "hal/hal_bsp.h"
#include "hal/hal_flash.h"
#include "flash_map/flash_map.h"
@@ -33,6 +34,7 @@
#include "bootutil_priv.h"
int boot_current_slot;
+int8_t boot_split_mode;
/*
* Read the image trailer from a given slot.
@@ -330,3 +332,20 @@ boot_set_image_slot_split(void)
{
boot_current_slot = 1;
}
+
+boot_split_mode_t
+boot_split_mode_get(void)
+{
+ return boot_split_mode;
+}
+
+int
+boot_split_mode_set(boot_split_mode_t split_mode)
+{
+ if (split_mode < 0 || split_mode > SPLIT_RUN) {
+ return EINVAL;
+ }
+
+ boot_split_mode = split_mode;
+ return 0;
+}
http://git-wip-us.apache.org/repos/asf/incubator-mynewt-core/blob/bd99cef5/boot/bootutil/src/loader.c
----------------------------------------------------------------------
diff --git a/boot/bootutil/src/loader.c b/boot/bootutil/src/loader.c
index 8a8045c..b3bfde8 100644
--- a/boot/bootutil/src/loader.c
+++ b/boot/bootutil/src/loader.c
@@ -49,7 +49,6 @@ static struct boot_status boot_state;
static int boot_erase_area(int area_idx, uint32_t sz);
static uint32_t boot_copy_sz(int max_idx, int *cnt);
-
int
boot_build_request(struct boot_req *preq, int area_descriptor_max)
{
http://git-wip-us.apache.org/repos/asf/incubator-mynewt-core/blob/bd99cef5/boot/split/include/split/split.h
----------------------------------------------------------------------
diff --git a/boot/split/include/split/split.h b/boot/split/include/split/split.h
index ede0f28..ac90ced 100644
--- a/boot/split/include/split/split.h
+++ b/boot/split/include/split/split.h
@@ -27,13 +27,6 @@ extern "C" {
#define SPLIT_NMGR_OP_SPLIT 0
typedef enum {
- SPLIT_NONE,
- SPLIT_TEST,
- SPLIT_RUN,
-} split_mode_t;
-
-
-typedef enum {
SPLIT_INVALID,
SPLIT_NOT_MATCHING,
SPLIT_MATCHING,
http://git-wip-us.apache.org/repos/asf/incubator-mynewt-core/blob/bd99cef5/boot/split/include/split/split_priv.h
----------------------------------------------------------------------
diff --git a/boot/split/include/split/split_priv.h b/boot/split/include/split/split_priv.h
deleted file mode 100644
index d051587..0000000
--- a/boot/split/include/split/split_priv.h
+++ /dev/null
@@ -1,38 +0,0 @@
-/**
- * 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 SPLIT_PRIV_H
-#define SPLIT_PRIV_H
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-int split_conf_init(void);
-int split_nmgr_register(void);
-int split_read_split(split_mode_t *split);
-int split_write_split(split_mode_t mode);
-split_status_t split_check_status(void);
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* SPLIT_PRIV_H */
-
http://git-wip-us.apache.org/repos/asf/incubator-mynewt-core/blob/bd99cef5/boot/split/src/split.c
----------------------------------------------------------------------
diff --git a/boot/split/src/split.c b/boot/split/src/split.c
index 8b91256..e3ae1c6 100644
--- a/boot/split/src/split.c
+++ b/boot/split/src/split.c
@@ -23,7 +23,7 @@
#include "bootutil/loader.h"
#include "imgmgr/imgmgr.h"
#include "split/split.h"
-#include "split/split_priv.h"
+#include "split_priv.h"
#define LOADER_IMAGE_SLOT 0
#define SPLIT_IMAGE_SLOT 1
@@ -68,23 +68,19 @@ split_check_status(void)
int
split_app_go(void **entry, int toboot)
{
- split_mode_t split;
+ boot_split_mode_t split_mode;
int rc;
if (toboot) {
- /* if we can't read this, then we don't boot an app */
- rc = split_read_split(&split);
- if(rc) {
- return -1;
- }
+ split_mode = boot_split_mode_get();
/* if we are told not to, then we don't boot an app */
- if (split == SPLIT_NONE) {
+ if (split_mode == SPLIT_NONE) {
return -1;
}
/* if this is a one-time test, reset the split mode */
- if (split == SPLIT_TEST) {
+ if (split_mode == SPLIT_TEST) {
split_write_split(SPLIT_NONE);
}
}
http://git-wip-us.apache.org/repos/asf/incubator-mynewt-core/blob/bd99cef5/boot/split/src/split_config.c
----------------------------------------------------------------------
diff --git a/boot/split/src/split_config.c b/boot/split/src/split_config.c
index 57332da..a8f9cfa 100644
--- a/boot/split/src/split_config.c
+++ b/boot/split/src/split_config.c
@@ -3,13 +3,12 @@
#include <string.h>
#include <config/config.h>
#include <split/split.h>
-#include <split/split_priv.h>
+#include <split_priv.h>
#define LOADER_IMAGE_SLOT 0
#define SPLIT_IMAGE_SLOT 1
#define SPLIT_TOTAL_IMAGES 2
-
static char *split_conf_get(int argc, char **argv, char *buf, int max_len);
static int split_conf_set(int argc, char **argv, char *val);
static int split_conf_commit(void);
@@ -17,14 +16,12 @@ static int split_conf_export(void (*func)(char *name, char *val), enum conf_expo
static struct conf_handler split_conf_handler = {
.ch_name = "split",
- .ch_get =split_conf_get,
+ .ch_get = split_conf_get,
.ch_set = split_conf_set,
.ch_commit = split_conf_commit,
.ch_export = split_conf_export
};
-static int8_t split_status;
-
int
split_conf_init(void)
{
@@ -39,9 +36,12 @@ split_conf_init(void)
static char *
split_conf_get(int argc, char **argv, char *buf, int max_len)
{
+ boot_split_mode_t split_mode;
+
if (argc == 1) {
if (!strcmp(argv[0], "status")) {
- return conf_str_from_value(CONF_INT8, &split_status, buf, max_len);
+ split_mode = boot_split_mode_get();
+ return conf_str_from_value(CONF_INT8, &split_mode, buf, max_len);
}
}
return NULL;
@@ -50,9 +50,18 @@ split_conf_get(int argc, char **argv, char *buf, int max_len)
static int
split_conf_set(int argc, char **argv, char *val)
{
+ boot_split_mode_t split_mode;
+ int rc;
+
if (argc == 1) {
if (!strcmp(argv[0], "status")) {
- return CONF_VALUE_SET(val, CONF_INT8, split_status);
+ split_mode = boot_split_mode_get();
+ rc = CONF_VALUE_SET(val, CONF_INT8, split_mode);
+ if (rc != 0) {
+ return rc;
+ }
+
+ boot_split_mode_set(split_mode);
}
}
return -1;
@@ -67,29 +76,28 @@ split_conf_commit(void)
static int
split_conf_export(void (*func)(char *name, char *val), enum conf_export_tgt tgt)
{
+ boot_split_mode_t split_mode;
char buf[4];
- conf_str_from_value(CONF_INT8, &split_status, buf, sizeof(buf));
+ split_mode = boot_split_mode_get();
+ conf_str_from_value(CONF_INT8, &split_mode, buf, sizeof(buf));
func("split/status", buf);
return 0;
}
int
-split_read_split(split_mode_t *split)
+split_write_split(boot_split_mode_t split_mode)
{
- *split = (split_mode_t) split_status;
- return 0;
-}
+ char str[CONF_STR_FROM_BYTES_LEN(sizeof(boot_split_mode_t))];
+ int rc;
-int
-split_write_split(split_mode_t split)
-{
- char str[CONF_STR_FROM_BYTES_LEN(sizeof(split_mode_t))];
+ rc = boot_split_mode_set(split_mode);
+ if (rc != 0) {
+ return rc;
+ }
- split_status = (int8_t) split;
- if (!conf_str_from_value(CONF_INT8, &split_status, str, sizeof(str))) {
+ if (!conf_str_from_value(CONF_INT8, &split_mode, str, sizeof(str))) {
return -1;
}
return conf_save_one("split/status", str);
}
-
http://git-wip-us.apache.org/repos/asf/incubator-mynewt-core/blob/bd99cef5/boot/split/src/split_netmgr.c
----------------------------------------------------------------------
diff --git a/boot/split/src/split_netmgr.c b/boot/split/src/split_netmgr.c
index 4ac9b4b..fa65ad7 100644
--- a/boot/split/src/split_netmgr.c
+++ b/boot/split/src/split_netmgr.c
@@ -22,7 +22,7 @@
#include <bootutil/bootutil_misc.h>
#include <bootutil/image.h>
#include <split/split.h>
-#include <split/split_priv.h>
+#include <split_priv.h>
static int imgr_splitapp_read(struct mgmt_jbuf *njb);
@@ -53,9 +53,7 @@ split_nmgr_register(void)
int
imgr_splitapp_read(struct mgmt_jbuf *njb)
{
- int rc;
int x;
- split_mode_t split;
struct json_encoder *enc;
struct json_value jv;
@@ -63,12 +61,7 @@ imgr_splitapp_read(struct mgmt_jbuf *njb)
json_encode_object_start(enc);
- rc = split_read_split(&split);
- if (!rc) {
- x = split;
- } else {
- x = SPLIT_NONE;
- }
+ x = boot_split_mode_get();
JSON_VALUE_INT(&jv, x)
json_encode_object_entry(enc, "splitMode", &jv);
@@ -127,7 +120,7 @@ imgr_splitapp_write(struct mgmt_jbuf *njb)
goto err;
}
- rc = split_write_split((split_mode_t) split_mode);
+ rc = split_write_split(split_mode);
if (rc) {
rc = MGMT_ERR_EINVAL;
goto err;
http://git-wip-us.apache.org/repos/asf/incubator-mynewt-core/blob/bd99cef5/boot/split/src/split_priv.h
----------------------------------------------------------------------
diff --git a/boot/split/src/split_priv.h b/boot/split/src/split_priv.h
new file mode 100644
index 0000000..2c9706d
--- /dev/null
+++ b/boot/split/src/split_priv.h
@@ -0,0 +1,40 @@
+/**
+ * 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 SPLIT_PRIV_H
+#define SPLIT_PRIV_H
+
+#include "bootutil/bootutil_misc.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+int split_conf_init(void);
+int split_nmgr_register(void);
+int split_read_split(boot_split_mode_t *split);
+int split_write_split(boot_split_mode_t mode);
+split_status_t split_check_status(void);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* SPLIT_PRIV_H */
+