From b92897252179e6aa2e92c5cbea7e067f19557b9c Mon Sep 17 00:00:00 2001 From: "Carl D. Roth" Date: Tue, 17 May 2016 19:20:58 -0700 Subject: [PATCH] Initialize /etc/fw_env.config from OnlPlatform data --- .../vendor-config-onl/src/bin/initubootenv | 3 ++ .../src/python/onl/uboot/InitUbootApp.py | 53 +++++++++++++++++++ .../src/python/onl/uboot/__init__.py | 3 ++ 3 files changed, 59 insertions(+) create mode 100755 packages/base/all/vendor-config-onl/src/bin/initubootenv create mode 100644 packages/base/all/vendor-config-onl/src/python/onl/uboot/InitUbootApp.py create mode 100644 packages/base/all/vendor-config-onl/src/python/onl/uboot/__init__.py diff --git a/packages/base/all/vendor-config-onl/src/bin/initubootenv b/packages/base/all/vendor-config-onl/src/bin/initubootenv new file mode 100755 index 00000000..e3b47ea1 --- /dev/null +++ b/packages/base/all/vendor-config-onl/src/bin/initubootenv @@ -0,0 +1,3 @@ +#!/usr/bin/python +from onl.uboot import InitUbootApp +InitUbootApp.main() diff --git a/packages/base/all/vendor-config-onl/src/python/onl/uboot/InitUbootApp.py b/packages/base/all/vendor-config-onl/src/python/onl/uboot/InitUbootApp.py new file mode 100644 index 00000000..1311d6bb --- /dev/null +++ b/packages/base/all/vendor-config-onl/src/python/onl/uboot/InitUbootApp.py @@ -0,0 +1,53 @@ +"""InitUbootApp.py + +Initialize the fw_env.config file + +See +https://developer.ridgerun.com/wiki/index.php/Setting_up_fw_printenv_to_modify_u-boot_environment_variables + +""" + +PATH = "/etc/fw_env.config" + +import sys +import onl.platform.current + +platform = onl.platform.current.OnlPlatform() + +d = platform.platform_config +if 'flat_image_tree' not in d: + raise ValueError("missing flat_image_tree section, probably not U-Boot") +d = d.get('loader', {}) +d = d.get('environment', []) +if not d: + raise ValueError("missing or empty loader.environment config") + +with open(PATH, "w") as fd: + fd.write("# device env_offset env_size sector_size sector_count\n") + for m in d: + + dev = m.get('device', None) + if not dev: + raise ValueError("missing device key in environment settings") + + off = m.get('env_offset', None) + if off is None: + raise ValueError("missing env_offset key in environment settings") + + sz = m.get('env_size', None) + if not sz: + raise ValueError("missing env_size key in environment settings") + + ssz = m.get('sector_size', None) + if not ssz: + raise ValueError("missing sector_size key in environment settings") + + ns = m.get('sector_count', None) + if ns is None: + ns = sz / ssz + if ns == 0: ns = 1 + + fd.write("%s 0x%x 0x%x 0x%x %d\n" + % (dev, off, sz, ssz, ns,)) + +sys.exit(0) diff --git a/packages/base/all/vendor-config-onl/src/python/onl/uboot/__init__.py b/packages/base/all/vendor-config-onl/src/python/onl/uboot/__init__.py new file mode 100644 index 00000000..9a2cd3e0 --- /dev/null +++ b/packages/base/all/vendor-config-onl/src/python/onl/uboot/__init__.py @@ -0,0 +1,3 @@ +"""__init__.py + +"""