Date   

nRF52840 memory layout

Christoph Schramm
 

Dear All,

 

maybe I’m reading it wrong, but in all nRF52840-related DTS files, the memory layout ends at 524,288 bytes and I wonder why. That wastes the other 50% of the available storage. Is there any reason to not change

 

storage_partition: partition@7a000 {
   label = "storage";
   reg = <0x0007a000 0x00006000>;
};

 

to

 

storage_partition: partition@7a000 {
   label = "storage";
   reg = <0x0007a000 0x00086000>;
};

 

So that the memory layout ends at 0x0010 0000 (last documented block in nRF52’s SDK Memory Layout Document).

 

Please advise.

 

Thanks,

Chris


Re: West not installing; Alternative ways to install? #west

Birch Jr, Johnnie L <johnnie.l.birch.jr@...>
 

Hi Marc,

 

Just seeing this, thanks for the follow-up. I think this question of how much material to provide for auxiliary tools and dependencies is a probably a tough one. I think with pip/python, corrupting this installation is pretty easy … multiple versions stashed in different places, multiple tools for installing packages, like you said … everything works like magic until it doesn’t. I am not sure how much more pip material would have been useful for me here but if it included a section on common issues that matched mine then obviously that would have been helpful. In general what is truly invaluable when getting are forums like this where there is a lot of activity and folks are reading and responding helping to build a knowledge base that you can search.

 

Johnnie

 

From: Herbert, Marc
Sent: Tuesday, February 19, 2019 11:11 AM
To: Birch Jr, Johnnie L <johnnie.l.birch.jr@...>; Marti Bolivar <marti@...>
Cc: users@...
Subject: Re: [Zephyr-users] West not installing; Alternative ways to install? #west

 

Hi,

 

   I think the current Getting Started guide really underestimates the importance of "pip[3]".

 

The zephyr repo has about 100 Python scripts now and counting and pip plays an incredibly crucial role in "Getting Started", it's like magic... until something breaks. Then it's like: "What was this pip thing again and what did it change on my system? Wait, *all that*?" Happened to me and apparently Johnnie too.

 

On Linux the interactions between Python packages installed by the Operating System vs the --user ones installed in ~/.local/bin can be especially fun, e.g. https://lwn.net/Articles/591421/

 

Reading the current https://docs.zephyrproject.org/latest/getting_started/getting_started.html from the start, the very first mention of pip for Windows and MacOS is:

 

Bootstrap west

Install the bootstrapper for Zephyr’s command-line tool, West (Zephyr’s meta-tool) in a shell or cmd.exe prompt:

# Linux

pip3 install --user west

 

# macOS and Windows

pip3 install west

 

... and then a forward-reference to installing more dependencies with pip. Not a word about what pip even is; into the deep end. Of course pip can easily be Googled, however one purpose of a Getting Started guide is IMHO to explain the bare minimum about every new critical thing without having to research it.

 

To avoid the forward reference and give pip a bit more of the credit it deserves, I think most things pip should be in a new, short but very first "PIP" section, in the main page and before anything about west considering west needs pip. This new and "true" PIP section can then have a very short introduction briefly describing what is and emphasizing how important it is and a link to its (good!) home page https://pip.pypa.io/en/stable/ in case something goes wrong. Such a "promotion" would hopefully encourage new users to pay a bit more attention to pip and for instance not dismiss any warning from it.

 

The slimmed down "Python Dependencies" section found later could then be downgraded to a one-line subsection of "Set Up a tool[chain]".

 

My 2 cents while I still remember about my "getting started" experience - this sort of experience tends to fade away very quickly :-)

 

Marc

 

 

From: <users@...> on behalf of "Birch Jr, Johnnie L" <johnnie.l.birch.jr@...>
Date: Sunday, 17 February 2019 at 12:01
To: Marti Bolivar <marti@...>
Cc: "users@..." <users@...>
Subject: Re: [Zephyr-users] West not installing; Alternative ways to install? #west

 

Hi Marti, all,

 

Thanks for the reply. There was something corrupt related to my pip/python install. Seems multiple versions of pip3 were found where version check at the command line would show version 3.5.2 while printing the version from a python statement would show 19.0.2. Ultimately I used some combination of commands using easy_install3 to get it installed instead of using pip.

 

Thanks,
Johnnie

 

From: Marti Bolivar [mailto:marti@...]
Sent: Friday, February 15, 2019 6:39 PM
To: Birch Jr, Johnnie L <johnnie.l.birch.jr@...>
Cc: users@...
Subject: Re: [Zephyr-users] West not installing; Alternative ways to install? #west

 

Hi Johnnie,

 

You can run "pip3 show -f west" to see where west was installed. Please make sure that is on your PATH. On Linux that is likely to be ~/.local/bin or so.

 

Marti

On Fri, Feb 15, 2019, 7:23 PM <johnnie.l.birch.jr@... wrote:

Hi All,

Getting started with zephyr, wanting to flash on an arduino 101 board for some experimentation. My host system is Mint 18.1 based on Ubuntu 16.04. I've followed steps to install the SDK and I assume that is installed correctly. Now I am following steps to install west from here: https://docs.zephyrproject.org/latest/getting_started/getting_started.html#get-the-source-code  but this step:

# Linux
pip3 install --user west


does not seem to do what it is intended. It leads to what looks like a successful install: 

jlb6740@yshou-mint:~$ pip3 install --user west
Collecting west
  Using cached https://files.pythonhosted.org/packages/7d/f7/228d4ba20feb2e2041abb2892b459e3bb7ddbfff28cc5963fb3787c92c46/west-0.5.4-py3-none-any.whl
Collecting colorama (from west)
  Using cached https://files.pythonhosted.org/packages/4f/a6/728666f39bfff1719fc94c481890b2106837da9318031f71a8424b662e12/colorama-0.4.1-py2.py3-none-any.whl
Collecting pykwalify (from west)
  Using cached https://files.pythonhosted.org/packages/36/9f/612de8ca540bd24d604f544248c4c46e9db76f6ea5eb75fb4244da6ebbf0/pykwalify-1.7.0-py2.py3-none-any.whl
Collecting PyYAML (from west)
Collecting python-dateutil>=2.4.2 (from pykwalify->west)
  Using cached https://files.pythonhosted.org/packages/41/17/c62faccbfbd163c7f57f3844689e3a78bae1f403648a6afb1d0866d87fbb/python_dateutil-2.8.0-py2.py3-none-any.whl
Collecting docopt>=0.6.2 (from pykwalify->west)
Collecting six>=1.5 (from python-dateutil>=2.4.2->pykwalify->west)
  Using cached https://files.pythonhosted.org/packages/73/fb/00a976f728d0d1fecfe898238ce23f502a721c0ac0ecfedb80e0d88c64e9/six-1.12.0-py2.py3-none-any.whl
Installing collected packages: colorama, six, python-dateutil, docopt, PyYAML, pykwalify, west
Successfully installed PyYAML-3.13 colorama-0.4.1 docopt-0.6.2 pykwalify-1.7.0 python-dateutil-2.8.0 six-1.10.0 west-0.5.4
You are using pip version 8.1.1, however version 19.0.2 is available.
You should consider upgrading via the 'pip install --upgrade pip' command.
jlb6740@yshou-mint:~$ westcos-tool ^C
jlb6740@yshou-mint:~/Downloads$ west --version
No command 'west' found, did you mean:
 Command 'test' from package 'coreutils' (main)
west: command not found
jlb6740@yshou-mint:~/Downloads$ 

 

but there is no "west" file to execute on my path. At the website for west the install command is slightly different:

pip3 install west


But again, nothing is found on my path. I tried to install the whl file, I also tried to install with sudo but nothing has given me an executable to move on to the next steps:

west init zephyrproject
cd zephyrproject
west update


What are some alternative ways to installing this west script? Even the "Using Zephyr with west" page seems to imply I will want it for flashing and debugging later so I assume this is not a step I should skip.

Thanks,
Johnnie

 

 


RFC: Changing the `west build` command-line interface

Carles Cufi
 

Hi there,

As you know, west now allows users to build Zephyr applications with it, and many among us have started making use of this new functionality.

The signature for `west build` currently reads (and has done so from its introduction):

usage: west build [-h] [-b BOARD] [-s SOURCE_DIR] [-d BUILD_DIR] [-t TARGET]
[-c] [-f]
[cmake_opt [cmake_opt ...]]

Which means that, in order to specify the source directory (i.e. the sample that you want to build) you either invoke `west build` directly from it or you use the `-s` optional argument like so:

west build -b reel_board -s samples/hello_world

Since we anticipate `west build` to be widely used in the future, I am proposing a change whereby the source directory would be specified as the first optional argument:

west build -b reel_board samples/hello_world

to save some typing and also to be consistent with CMake, which is invoked automatically by west when required.

The new signature would look like:

usage: west build [-h] [-b BOARD] [-d BUILD_DIR]
[-t TARGET] [-c] [-f] [source_dir]
-- [cmake_opt [cmake_opt ...]]

This has a few implications worth discussing:

1. The change is not entirely backwards-compatible but we have kept the `-s` option (as a hidden one) in order to break as few existing scripts as possible
2. `west build` allows you to pass on additional arguments to CMake. Before this change, those were all and any positional arguments present in the invocation line. Now however, the first positional argument is always treated as the source directory, unless a `--` separator is present, in which case the source directory is assumed as implicit (CWD) and all arguments after `--` are treated as CMake options to be passed on to it.

Additional information can be found in the PR and its review comments:
https://github.com/zephyrproject-rtos/zephyr/pull/13635

Please add your feedback in the PR and let us know what you think of the proposed change.

Thanks,

Carles


Re: mcumgr: How to calculate hash of image under Linux #nrf52840

Marti Bolivar <marti@...>
 

Hi Phil,

It doesn't have to be TLV index 0. You need to use the "type" in each type/length/value (TLV) datum to find the hash TLV in the image binary.


I don't use mcumgr very much, just mcuboot, so I can't help you much with the "image list" output. I suggest you investigate your binary images - e.g. using the script I sent or some other means as you prefer - to compare values in the mcumgr output with what's in your image.


Hope this helps,
Marti


On Mon, Mar 4, 2019, 3:49 AM Phil Hipp <finke@...> wrote:
Hey Marti,

thanks for your reply. So in my understanding the value of TLV 0 is the hash that will be displayed using "Image list", isn't it?

Best

Philipp


96Boards GPIO standard names?

Mani Sadhasivam
 



---------- Forwarded message ---------
From: Mani Sadhasivam <manivannanece23@...>
Date: Tue, 5 Mar, 2019, 12:11 AM
Subject: Re: [Zephyr-users] 96Boards GPIO standard names?
To: Lawrence King <lawrence.king@...>


Hi Lawrence, 

On Mon, 4 Mar, 2019, 10:43 PM Lawrence King <lawrence.king@... wrote:

I have been writing code for a peripheral board that plugs into a Nitrogen or any other 96Boards compliant board (with 40-pin Low Speed connector) running Zephyr. I was trying to code use of the GPIOs in a way that would work for all compliant boards without adding custom definitions.

 

The 96Boards IOT specification nicely describes the I/O connector and the features on the connector. For example GPIO-A is on Pin 23 of the connector. Unfortunately each board uses different chipset GPIOs to drive the pin on the connector. If I had a symbolic name for the connector GPIO pin (for example GPIO_96B_A_CONTROLLER and GPIO_96B_A_PIN) that mapped to the chipset GPIIO pin,  then my code would work (after  recompile with the appropriate BOARD=96B_xxx) across all of the compliant boards with no change to the source code.

 

Right now with the Nitrogen board I have created a set of defines based on reading the schematic, but of course these will not work with the next chip I use I will have to wrap the defines with #if BOARD==96B_xxx .

 

It is possible that you already have these definitions, but I didn’t manage to find them.


I know that there is a similar implementation done for arduino connector and we need to come up with something similar for 96Boards connectors (refer nucleo_f401re board). This came up before as well as we have several mezzanines also supported in Zephyr.

I will create a github issue for tracking this and we'll continue logging the progress.

Thanks, 
Mani

 

I realize that Zephyr supports many boards with many form factors and this would only solve the issue for a few boards.

 

Lawrence King

Principal Developer

Connected Transport Market Unit

https://www.Irdeto.com

+1(416)627-7302

 

1  2 - linkedin  3 - instagram  4 - youtube  6 - facebook  7

            

CONFIDENTIAL: This e-mail and any attachments are confidential and intended solely for the use of the individual(s) to whom it is addressed. It can contain proprietary confidential information and be subject to legal privilege and/or subject to a non-disclosure Agreement. Unauthorized use, disclosure or copying is strictly prohibited. If you are not the/an addressee and are in possession of this e-mail, please delete the message and notify us immediately. Please consider the environment before printing this e-mail. Thank you.

 

 

 


96Boards GPIO standard names?

Lawrence King
 

I have been writing code for a peripheral board that plugs into a Nitrogen or any other 96Boards compliant board (with 40-pin Low Speed connector) running Zephyr. I was trying to code use of the GPIOs in a way that would work for all compliant boards without adding custom definitions.

 

The 96Boards IOT specification nicely describes the I/O connector and the features on the connector. For example GPIO-A is on Pin 23 of the connector. Unfortunately each board uses different chipset GPIOs to drive the pin on the connector. If I had a symbolic name for the connector GPIO pin (for example GPIO_96B_A_CONTROLLER and GPIO_96B_A_PIN) that mapped to the chipset GPIIO pin,  then my code would work (after  recompile with the appropriate BOARD=96B_xxx) across all of the compliant boards with no change to the source code.

 

Right now with the Nitrogen board I have created a set of defines based on reading the schematic, but of course these will not work with the next chip I use I will have to wrap the defines with #if BOARD==96B_xxx .

 

It is possible that you already have these definitions, but I didn’t manage to find them.

 

I realize that Zephyr supports many boards with many form factors and this would only solve the issue for a few boards.

 

Lawrence King

Principal Developer

Connected Transport Market Unit

https://www.Irdeto.com

+1(416)627-7302

 

1  2 - linkedin  3 - instagram  4 - youtube  6 - facebook  7

            

CONFIDENTIAL: This e-mail and any attachments are confidential and intended solely for the use of the individual(s) to whom it is addressed. It can contain proprietary confidential information and be subject to legal privilege and/or subject to a non-disclosure Agreement. Unauthorized use, disclosure or copying is strictly prohibited. If you are not the/an addressee and are in possession of this e-mail, please delete the message and notify us immediately. Please consider the environment before printing this e-mail. Thank you.

 

 

 


Re: mcumgr: How to calculate hash of image under Linux #nrf52840

Phil Hipp
 

Hey Marti,

thanks for your reply. So in my understanding the value of TLV 0 is the hash that will be displayed using "Image list", isn't it?

Best

Philipp


Re: mcumgr: How to calculate hash of image under Linux #nrf52840

Marti Bolivar <marti@...>
 

Hi Phil,

If you mean the hash of the image header and body, that is available
as the value for the IMAGE_TLV_SHA256 key type in your signed image's
TLV area (see https://mcuboot.com/mcuboot/design.html for details on
the structure of the image and what the TLV area is if you are not yet
familiar with these).

As to how to extract that easily, I'm not aware of any upstream tools
for this which work on both .bin and .hex files, but I wrote a quick
hack a long time ago which I use for quick analysis of signed .bin
files; you may find it useful:

https://gist.github.com/mbolivar/285309cca792f746d6c698f56941041a

Example usage and output which shows how it includes the values of the
IMAGE_TLV_SHA256 for a sample image:

$ analyze-mcuboot-img.py zephyr.signed.bin
ImageHeader(magic=OK/0x96F3B83D, load_addr=IGNORED/0x00000000,
hdr_size=0x0200, img_size=13688/0x00003578, flags=0x00000000,
version="0.0.0-build0")
Initial image bytes:
68 05 00 20 c1 dc 00 00 21 dd 00 00 4d db 00 00 4d db 00 00
TLVInfo(magic=OK/0x6907, tlv_size=336)
TLV 0: TLVHeader(type=IMAGE_TLV_SHA256/0x10, len=32)
f0 45 a4 21 db 56 c0 fb 6a d6 64 70 69 ec d3 74 d7 25 4d 4b e7 ee cf
77 93 98 43 d0 ce 99 6f a2
TLV 1: TLVHeader(type=IMAGE_TLV_KEYHASH/0x01, len=32)
fc 57 01 dc 61 35 e1 32 38 47 bd c4 0f 04 d2 e5 be e5 83 3b 23 c2 9f
93 59 3d 00 01 8c fa 99 94
TLV 2: TLVHeader(type=IMAGE_TLV_RSA2048_PSS/0x20, len=256)

Above, "f0 45 a4 21 db 56 c0 fb 6a d6 64 70 69 ec d3 74 d7 25 4d 4b e7
ee cf 77 93 98 43 d0 ce 99 6f a2" is a hexdump of the hash.

Hope this helps,
Marti

On Tue, Feb 26, 2019 at 4:45 AM Phil Hipp <finke@...> wrote:

Hi,

I want to write a script under Linux for automatic FOTA using mcumgr. I need the hash of the image file for the update step "image test", but I can't figure out how to calculate the correct hash needed in this step. Can anybody help me here and provide the correct command to achieve this?

Best

Philipp


Re: 98B_Nitrogen Settings flash area

Lawrence King
 

Just my bad luck 😉, I checked out the master branch about 8 hours before you checked in the changes. Thanks for fixing this so others don’t have the same problem.

 

A nice to have feature would be having the Settings storage manager create an error message that there was no storage partition instead of wiping out the code partition.

 

Lawrence King

Principal Developer

+1(416)627-7302

 

From: Michael Scott <mike@...>
Sent: Wednesday, February 27, 2019 11:46 AM
To: Lawrence King <lawrence.king@...>; users@...
Subject: Re: [Zephyr-users] 98B_Nitrogen Settings flash area

 

Hi Lawrence,

On 2/27/19 8:39 AM, Lawrence King wrote:

Dear All:

 

I am having a little problem starting the Settings on a nRF52 device. Ideally 8 blocks of flash memory should be reserved for the settings FCB, I ‘think’ this is what is configured by default but it appears that the entire flash is being erased when the Settings storage is initialized. This of course wipes out the program in flash…

 

When I dig into the device tree file for the Nitrogen board (zephyr/boards/arm/96b_nitrogen/96b_nitrogen.dts) there is no storage partition defined. If I look at the sparkfun nrf52 board (zephyr/boards/arm/nrf52_sparkfun/nrf52_sparkfun.dts) or the adafruit feather board (zephyr/tmp/boards/arm/nrf52_adafruit_feather/nrf52_adafruit_feather.dts) they have storage partitions defined.

 

I copied the flash0 portion of the sparkfun device tree into the Nitrogen device tree and it now gets past the storage_init without scrubbing the entire device.

 

Is this an ‘bug’ in the Nitrogen dts file, or are you expecting the user to overlay the dts to patch this?

This was fixed recently in master branch:

https://github.com/zephyrproject-rtos/zephyr/commit/7f4eb00f47d4e16ff6d7a9a1800343c49f7c0e31

- Mike

 

Lawrence King

Principal Developer

Connected Transport Market Unit

https://www.Irdeto.com

+1(416)627-7302

 

1  2 -
                linkedin  3 -
                instagram  4 -
                youtube  6 -
                facebook  7

            

CONFIDENTIAL: This e-mail and any attachments are confidential and intended solely for the use of the individual(s) to whom it is addressed. It can contain proprietary confidential information and be subject to legal privilege and/or subject to a non-disclosure Agreement. Unauthorized use, disclosure or copying is strictly prohibited. If you are not the/an addressee and are in possession of this e-mail, please delete the message and notify us immediately. Please consider the environment before printing this e-mail. Thank you.

 

 

 

-- 
Michael Scott
Embedded Software Engineer at Foundries.io
"microPlatforms™ for Connected Products"
E: mike@...
W: https://www.foundries.io


Re: 98B_Nitrogen Settings flash area

Michael Scott
 

Hi Lawrence,

On 2/27/19 8:39 AM, Lawrence King wrote:

Dear All:

 

I am having a little problem starting the Settings on a nRF52 device. Ideally 8 blocks of flash memory should be reserved for the settings FCB, I ‘think’ this is what is configured by default but it appears that the entire flash is being erased when the Settings storage is initialized. This of course wipes out the program in flash…

 

When I dig into the device tree file for the Nitrogen board (zephyr/boards/arm/96b_nitrogen/96b_nitrogen.dts) there is no storage partition defined. If I look at the sparkfun nrf52 board (zephyr/boards/arm/nrf52_sparkfun/nrf52_sparkfun.dts) or the adafruit feather board (zephyr/tmp/boards/arm/nrf52_adafruit_feather/nrf52_adafruit_feather.dts) they have storage partitions defined.

 

I copied the flash0 portion of the sparkfun device tree into the Nitrogen device tree and it now gets past the storage_init without scrubbing the entire device.

 

Is this an ‘bug’ in the Nitrogen dts file, or are you expecting the user to overlay the dts to patch this?

This was fixed recently in master branch:

https://github.com/zephyrproject-rtos/zephyr/commit/7f4eb00f47d4e16ff6d7a9a1800343c49f7c0e31

- Mike

 

Lawrence King

Principal Developer

Connected Transport Market Unit

https://www.Irdeto.com

+1(416)627-7302

 

1  2 -
                linkedin  3 -
                instagram  4 -
                youtube  6 -
                facebook  7

            

CONFIDENTIAL: This e-mail and any attachments are confidential and intended solely for the use of the individual(s) to whom it is addressed. It can contain proprietary confidential information and be subject to legal privilege and/or subject to a non-disclosure Agreement. Unauthorized use, disclosure or copying is strictly prohibited. If you are not the/an addressee and are in possession of this e-mail, please delete the message and notify us immediately. Please consider the environment before printing this e-mail. Thank you.

 

 

 

-- 
Michael Scott
Embedded Software Engineer at Foundries.io
"microPlatforms™ for Connected Products"
E: mike@...
W: https://www.foundries.io


98B_Nitrogen Settings flash area

Lawrence King
 

Dear All:

 

I am having a little problem starting the Settings on a nRF52 device. Ideally 8 blocks of flash memory should be reserved for the settings FCB, I ‘think’ this is what is configured by default but it appears that the entire flash is being erased when the Settings storage is initialized. This of course wipes out the program in flash…

 

When I dig into the device tree file for the Nitrogen board (zephyr/boards/arm/96b_nitrogen/96b_nitrogen.dts) there is no storage partition defined. If I look at the sparkfun nrf52 board (zephyr/boards/arm/nrf52_sparkfun/nrf52_sparkfun.dts) or the adafruit feather board (zephyr/tmp/boards/arm/nrf52_adafruit_feather/nrf52_adafruit_feather.dts) they have storage partitions defined.

 

I copied the flash0 portion of the sparkfun device tree into the Nitrogen device tree and it now gets past the storage_init without scrubbing the entire device.

 

Is this an ‘bug’ in the Nitrogen dts file, or are you expecting the user to overlay the dts to patch this?

 

Lawrence King

Principal Developer

Connected Transport Market Unit

https://www.Irdeto.com

+1(416)627-7302

 

1  2 - linkedin  3 - instagram  4 - youtube  6 - facebook  7

            

CONFIDENTIAL: This e-mail and any attachments are confidential and intended solely for the use of the individual(s) to whom it is addressed. It can contain proprietary confidential information and be subject to legal privilege and/or subject to a non-disclosure Agreement. Unauthorized use, disclosure or copying is strictly prohibited. If you are not the/an addressee and are in possession of this e-mail, please delete the message and notify us immediately. Please consider the environment before printing this e-mail. Thank you.

 

 

 


Zephyr Project Newsletter Q1 2019

Zephyr Project <taldrich@...>
 

Welcome to the Zephyr Project Newsletter! As the Zephyr community continues to expand and innovate we've added this quarterly update to the growing list of resources and tools available to our ecosystem to stay connected. In this first edition we are excited to bring you updates on what's in store for Zephyr OS in 2019, provide a glimpse into some of the work currently underway in the community and share ways you can get involved in the Zephyr Project. 

 

About the Zephyr Project
Get Zephyr OS

A Look Ahead to 2019: Zephyr Project Update

 

As a vendor neutral open source project we embrace transparency and responsiveness to the needs of the community. Based on feedback from our contributor community, Technical Steering Committee (TSC) and the Governing Board, the Zephyr Project has a number of exciting technical initiatives, announcements and events planned for 2019. All of which are based on our mission to build a best in breed real-time operating system (RTOS) for resource constrained environments built with functional safety and security in mind. This year watch for:

  • Zephyr OS 1.14 with Long-Term Support (LTS)
  • Functional Safety Certifications
  • Products Powered by Zephyr OS

For more information about the Zephyr Project's 2019 plans see Governing Board Chair Amy Occhialino's (Intelblog post discussing her goals for the project in 2019. 

To hear more from TSC Chairperson Anas Nashif (Intel) about the plans for Zephyr OS in 2019 and the focus on functional safety please view his presentation from OpenIoT Summit EU 2018. 

Events and Meetings

Zephyr Project at Embedded World 2019


The Zephyr Project is exhibiting at Embedded World 2019! Be sure to visit the Zephyr Project booth in Hall 4: Stand no. 4-170 to see technical demonstrations, learn about the latest products powered by Zephyr and meet the community behind the technology. Please see the Zephyr Blog for full information on the Zephyr presence at the show.

For the full list of events where the Zephyr Community will be present, please see our Events Page. To get your event listed on our website please contact the Zephyr Project.

Zephyr 1.14 with LTS is Coming Soon


The Zephyr Project is currently working towards its first long-term support (LTS) release of Zephyr OS in April 2019. Zephyr OS 1.14 will be supported for 2 years and is intended to give product makers and developers new features and functionality with added stability and regression risk reduction. To view the progress of Zephyr OS 1.14 visit our GitHub page.

If you would like to contribute to Zephyr OS 1.14 please consider fixing bugs, adding documentation or signing up to help maintain the subsystems, API's and drivers that matter to you by joining the TSC's weekly open calls.

Following this release the Zephyr Project will return to its traditional 12 week release cadence.
  
Get the Latest Release Now

Products Powered by Zephyr OS


Each week, new products powered by Zephyr OS are entering the market and providing unique and innovative examples of how this open source RTOS is making an impact. Product makers are increasingly choosing Zephyr OS because of the benefits it provides. Take a look at just a few examples of recent product launches using Zephyr OS. To get your Zephyr OS powered product or company listed please contact the Zephyr Project Marketing Team. 
 

Adero

Adero is a system of Bluetooth-enabled tags that communicate with one another and you. The system comes together in the Adero app where you can build your smart bags, track your tagged things, and create reminders to keep them all together. Read more here

Papyr by Electronut Labs

Powered by the Zephyr OS and Nordic’s nRF52840 SoC, Papyr is an ultra low power connected epaper display. It supports both Bluetooth LE (BLE5, BLE Mesh) and 802.15.4 (Thread, Zigbee) connectivity, and can be controlled via a mobile app. Read More about Papyr here

Mark 2 by ProGlove

This 'smart wearable' addresses critical barcode scanning problems and ensures greater efficiency, ergonomics, quality and process reliability. MARK 2 is designed for use in production, logistics and retail. Read more here. 

Zephyr Project includes a fully-qualified and production-ready Bluetooth LE stack


Thanks to leadership from Zephyr Project Platinum Member Nordic Semiconductor and Adero, the Zephyr Project now includes the world’s first open-source, fully-qualified, and production-ready Bluetooth LE stack. Nordic's qualification of the Bluetooth LE stack in Zephyr enables end-product makers  to launch Bluetooth products using the native Bluetooth LE support in the Zephyr RTOS. While Zephyr is not the only RTOS to include an open source Bluetooth LE Host or Link Layer, the Zephyr Bluetooth LE stack is the only one with all required components qualified and available as open source. A complete, qualified Bluetooth LE stack (consisting of a Host, Link Layer, and Physical layer) is needed to list an end product using Bluetooth technology. (Refer to the Zephyr Host QDID: 119517 and Link Layer QDID: 101395.)

Zephyr Project now supports over 150 boards!


View supported boards here. To add your board to the list please review the porting guide and contribution guide for more details. 
 

Zephyr Community Spotlight: Maureen Helm


The depth of technical expertise and dedication of the community is one of the many areas where Zephyr Project shines. In each newsletter Zephyr Project will showcase members of our TSC to highlight their contributions to the ecosystem and share their thoughts on key initiatives underway in the community. This edition we are proud to spotlight Maureen Helm, MCU Software Architect at NXP Semiconductors and Zephyr Project Maintainer, 
Maureen Helm (NXP) discussing vendor HALs in Zephyr OS at Embedded Linux Conference Europe.
 

Describe your role in the Zephyr Project and how you became involved?


I represent NXP in the TSC and maintain several areas of the tree, including the Arm architecture, sensor subsystem, and NXP SoCs, boards, and drivers. I got involved in the Zephyr Project early on when NXP (Freescale, at the time) was evaluating whether to join as a founding member. Although this was my first foray into collaborative open source, I was quickly sold, having personally experienced the pain of developing and maintaining an in-house proprietary RTOS.
 

Looking forward, what features or functionality are you the most excited about seeing/working on in Zephyr OS in 2019?


I’m looking forward to the continued expansion of connectivity features such as BLE and Zigbee, new security features with the introduction of Arm v8m devices, and richer development tools enabled by the new “west” meta-tool.


As a maintainer, what does your day to day participation in the project look like?


I aim to review pull requests in the morning, 1) to make sure it gets done every day, and 2) to take advantage of when the European community is still online. I then try to reserve the afternoon for development work and bug fixing. Meetings and other interruptions inevitably get in the way, but as a general rule it helps me to keep pull requests moving and still make time for writing code.
 

What are some of the most important qualities for a successful maintainer?


It’s important to give specific, actionable feedback, ask questions, and explain why you’re requesting changes. If you can’t articulate why you don’t like something and how it should be changed, then reconsider your feedback. This is, in a way, similar to writing good commit messages, because if you can’t articulate why you’re changing something, then maybe you shouldn’t be changing it.
 

What advice do you have for Zephyr Project contributors who may be considering becoming a maintainer?


Start joining the weekly TSC meeting, interact with the community on Slack/IRC and the mailing list, and start reviewing code. You don’t need to be a maintainer or employed by a member company to participate!
 

Is there anything else you would like to add?


I’m thrilled to see how far the Zephyr Project has come since it launched three years ago. We started with just four boards and a handful of contributors, and have grown to over 150 boards, 439 contributors, and 1000 forks! Thank you!

Get Involved


Zephyr Project is a diverse and inclusive community dedicated to building a vendor neutral ecosystem around Zephyr OS. We welcome contributions of all types as we build a truly open source RTOS to meet the needs of developers and users inventing, building and connecting the Internet of Things. Join us.
Join the Slack Channel
Contribute to Zephyr OS
Contact Us
Copyright © 2019 Zephyr Project, All rights reserved.

Our mailing address is:
1 Letterman Drive
Building D, Suite D4700
San Francisco, CA 94129
Phone/Fax: +1 415 723 9709
https://www.linuxfoundation.org/

Want to change how you receive these emails?
You can update your preferences or unsubscribe from this list.

 






This email was sent to users@...
why did I get this?    unsubscribe from this list    update subscription preferences
Zephyr Project · 1 Letterman Drive · Building D, Suite D4700 · San Francisco, CA 94129 · USA

Email Marketing Powered by Mailchimp


mcumgr: How to calculate hash of image under Linux #nrf52840

Phil Hipp
 

Hi,

I want to write a script under Linux for automatic FOTA using mcumgr. I need the hash of the image file for the update step "image test", but I can't figure out how to calculate the correct hash needed in this step. Can anybody help me here and provide the correct command to achieve this?

Best

Philipp


Re: How to do a wait for multiple events?

Stefan Jaritz
 

Thanks for the hint Carles,

I can poll for "k_queue" but not for a "k_msgq".  So it is not working in my case.

I like to use the "k_msgq" for storing ADC samples (it has the ringbuffer feature). Using a FiFO is not really an option. In comparison to the msgq I would need to implement a ringbuffer by my self.

For me it comes down to the general question: What data structures are the one to use when set up a system with constant sample frequency and processing/transmitting in between.

Stefan

On 22/02/2019 20:25, Cufi, Carles wrote:
Hi Stefan,

Take a look at k_poll:

https://docs.zephyrproject.org/latest/reference/kernel/other/polling.html

Regards,

Carles

On 22/02/2019, 16:40, "users@... on behalf of Stefan Jaritz" <users@... on behalf of stefan@...> wrote:

Hey ho,

It's Friday time and so it means play time with Zephyr! :)

Currently I am doing a demo, in which I generate different data
streams(queues) and signals(semaphores). The streams and signal should
be packed into messages. These messages having a simple protocol and
beeing piped out via bluetooth and uart. So it came into my mind, that
it would be nice to write an protocol thread, that became active when
data is put to an queue or an signal is set.

I know in some system you can put up and "wait for multiple
objects"/"poll for events"(libevent etc.). How can I do this in ZephyrOS?


To make it better understandable. I like to setup an example for
explanation. Lets assume that we have a simple system:


Our data sources:

button -> semaphore -> s1

ADC -> message queue -> m1

movement sensor -> message queue -> m2


All data sources running at different sample rates. Now I like to
define a protocol thread as an data sink:

void thread_sink(void) {

eventList = (s1, m1, m2)

while(1) {

ev = waitForOneEvent(eventList, K_FOREVER)

switch(ev) {

case s1:

...

case m1:

...

}

}

}


How would like a pseudo implementation looks like?

Kind regards!

Stefan






Re: How to do a wait for multiple events?

Carles Cufi
 

Hi Stefan,

Take a look at k_poll:

https://docs.zephyrproject.org/latest/reference/kernel/other/polling.html

Regards,

Carles

On 22/02/2019, 16:40, "users@... on behalf of Stefan Jaritz" <users@... on behalf of stefan@...> wrote:

Hey ho,

It's Friday time and so it means play time with Zephyr! :)

Currently I am doing a demo, in which I generate different data
streams(queues) and signals(semaphores). The streams and signal should
be packed into messages. These messages having a simple protocol and
beeing piped out via bluetooth and uart. So it came into my mind, that
it would be nice to write an protocol thread, that became active when
data is put to an queue or an signal is set.

I know in some system you can put up and "wait for multiple
objects"/"poll for events"(libevent etc.). How can I do this in ZephyrOS?


To make it better understandable. I like to setup an example for
explanation. Lets assume that we have a simple system:


Our data sources:

button -> semaphore -> s1

ADC -> message queue -> m1

movement sensor -> message queue -> m2


All data sources running at different sample rates. Now I like to
define a protocol thread as an data sink:

void thread_sink(void) {

eventList = (s1, m1, m2)

while(1) {

ev = waitForOneEvent(eventList, K_FOREVER)

switch(ev) {

case s1:

...

case m1:

...

}

}

}


How would like a pseudo implementation looks like?

Kind regards!

Stefan


How to do a wait for multiple events?

Stefan Jaritz
 

Hey ho,

It's Friday time and so it means play time with Zephyr! :)

Currently I am doing a demo, in which I generate different data streams(queues) and signals(semaphores). The streams and signal should be packed into messages. These messages having a simple protocol and beeing piped out via bluetooth and uart. So it came into my mind, that it would be nice to write an protocol thread, that became active when data is put to an queue or an signal is set.

I know in some system you can put up and "wait for multiple objects"/"poll for events"(libevent etc.).  How can I do this in ZephyrOS?


To make it better understandable. I like to setup an example for explanation. Lets assume that we have a simple system:


Our data sources:

button -> semaphore -> s1

ADC -> message queue -> m1

movement sensor -> message queue -> m2


All data sources running at different sample rates.  Now I like to define a protocol thread as an data sink:

void thread_sink(void) {

    eventList = (s1, m1, m2)

    while(1) {

        ev = waitForOneEvent(eventList, K_FOREVER)

        switch(ev) {

            case s1:

                ...

            case m1:

                ...

        }

    }

}


How would like a pseudo implementation looks like?

Kind regards!

Stefan


Re: Nitrogen - Bluetooth RFCOMM sample

Johan Hedberg
 

Hi Lawrence,

On 21 Feb 2019, at 20.50, Lawrence King <lawrence.king@...> wrote:
I am trying to get my Nitrogen board to act as a 'classic' RFCOMM device, then build my own parser to handle the serial commands and responses from the host. I couldn't find a sample for RFCOMM in the zephyr/samples/bluetooth directory (no mention of SPP either). At a high level I know I need start the Bluetooth services, initiate pairing, pair, and then transfer bytes back and forth. I looked through the APIs but I am a beginner at Bluetooth and the necessary sequences didn't jump out at me.

Is there a sample RFCOMM program I can use? Or a pointer to a list of the appropriate APIs and sequence to call them? Thanks
As far as I know, the Nitrogen only has a single-mode (LE-only) Bluetooth radio, whereas RFCOMM (and SPP) is a BR/EDR (Bluetooth Classic) protocol, so you won’t be able to use it on this board. In general, BR/EDR support in Zephyr (RFCOMM included) is on a fairly experimental level, mainly due to lack of boards with dual-mode (LE + BR/EDR) Bluetooth controllers.

Your options for getting data over an LE connection are to either use the Generic Attribute Profile (GATT) or then an L2CAP Connection-oriented Channel.

Johan


Nitrogen - Bluetooth RFCOMM sample

Lawrence King
 

I am trying to get my Nitrogen board to act as a 'classic' RFCOMM device, then build my own parser to handle the serial commands and responses from the host. I couldn't find a sample for RFCOMM in the zephyr/samples/bluetooth directory (no mention of SPP either). At a high level I know I need start the Bluetooth services, initiate pairing, pair, and then transfer bytes back and forth. I looked through the APIs but I am a beginner at Bluetooth and the necessary sequences didn't jump out at me.

Is there a sample RFCOMM program I can use? Or a pointer to a list of the appropriate APIs and sequence to call them? Thanks


hifive1 ble hci howto

alexander.2003@...
 

How can you get Bluetooth low energy working on the hifive1 using hci.


Re: West not installing; Alternative ways to install? #west

Marc Herbert
 

Hi,

 

   I think the current Getting Started guide really underestimates the importance of "pip[3]".

 

The zephyr repo has about 100 Python scripts now and counting and pip plays an incredibly crucial role in "Getting Started", it's like magic... until something breaks. Then it's like: "What was this pip thing again and what did it change on my system? Wait, *all that*?" Happened to me and apparently Johnnie too.

 

On Linux the interactions between Python packages installed by the Operating System vs the --user ones installed in ~/.local/bin can be especially fun, e.g. https://lwn.net/Articles/591421/

 

Reading the current https://docs.zephyrproject.org/latest/getting_started/getting_started.html from the start, the very first mention of pip for Windows and MacOS is:

 

Bootstrap west

Install the bootstrapper for Zephyr’s command-line tool, West (Zephyr’s meta-tool) in a shell or cmd.exe prompt:

# Linux

pip3 install --user west

 

# macOS and Windows

pip3 install west

 

... and then a forward-reference to installing more dependencies with pip. Not a word about what pip even is; into the deep end. Of course pip can easily be Googled, however one purpose of a Getting Started guide is IMHO to explain the bare minimum about every new critical thing without having to research it.

 

To avoid the forward reference and give pip a bit more of the credit it deserves, I think most things pip should be in a new, short but very first "PIP" section, in the main page and before anything about west considering west needs pip. This new and "true" PIP section can then have a very short introduction briefly describing what is and emphasizing how important it is and a link to its (good!) home page https://pip.pypa.io/en/stable/ in case something goes wrong. Such a "promotion" would hopefully encourage new users to pay a bit more attention to pip and for instance not dismiss any warning from it.

 

The slimmed down "Python Dependencies" section found later could then be downgraded to a one-line subsection of "Set Up a tool[chain]".

 

My 2 cents while I still remember about my "getting started" experience - this sort of experience tends to fade away very quickly :-)

 

Marc

 

 

From: <users@...> on behalf of "Birch Jr, Johnnie L" <johnnie.l.birch.jr@...>
Date: Sunday, 17 February 2019 at 12:01
To: Marti Bolivar <marti@...>
Cc: "users@..." <users@...>
Subject: Re: [Zephyr-users] West not installing; Alternative ways to install? #west

 

Hi Marti, all,

 

Thanks for the reply. There was something corrupt related to my pip/python install. Seems multiple versions of pip3 were found where version check at the command line would show version 3.5.2 while printing the version from a python statement would show 19.0.2. Ultimately I used some combination of commands using easy_install3 to get it installed instead of using pip.

 

Thanks,
Johnnie

 

From: Marti Bolivar [mailto:marti@...]
Sent: Friday, February 15, 2019 6:39 PM
To: Birch Jr, Johnnie L <johnnie.l.birch.jr@...>
Cc: users@...
Subject: Re: [Zephyr-users] West not installing; Alternative ways to install? #west

 

Hi Johnnie,

 

You can run "pip3 show -f west" to see where west was installed. Please make sure that is on your PATH. On Linux that is likely to be ~/.local/bin or so.

 

Marti

On Fri, Feb 15, 2019, 7:23 PM <johnnie.l.birch.jr@... wrote:

Hi All,

Getting started with zephyr, wanting to flash on an arduino 101 board for some experimentation. My host system is Mint 18.1 based on Ubuntu 16.04. I've followed steps to install the SDK and I assume that is installed correctly. Now I am following steps to install west from here: https://docs.zephyrproject.org/latest/getting_started/getting_started.html#get-the-source-code  but this step:

# Linux
pip3 install --user west


does not seem to do what it is intended. It leads to what looks like a successful install: 

jlb6740@yshou-mint:~$ pip3 install --user west
Collecting west
  Using cached https://files.pythonhosted.org/packages/7d/f7/228d4ba20feb2e2041abb2892b459e3bb7ddbfff28cc5963fb3787c92c46/west-0.5.4-py3-none-any.whl
Collecting colorama (from west)
  Using cached https://files.pythonhosted.org/packages/4f/a6/728666f39bfff1719fc94c481890b2106837da9318031f71a8424b662e12/colorama-0.4.1-py2.py3-none-any.whl
Collecting pykwalify (from west)
  Using cached https://files.pythonhosted.org/packages/36/9f/612de8ca540bd24d604f544248c4c46e9db76f6ea5eb75fb4244da6ebbf0/pykwalify-1.7.0-py2.py3-none-any.whl
Collecting PyYAML (from west)
Collecting python-dateutil>=2.4.2 (from pykwalify->west)
  Using cached https://files.pythonhosted.org/packages/41/17/c62faccbfbd163c7f57f3844689e3a78bae1f403648a6afb1d0866d87fbb/python_dateutil-2.8.0-py2.py3-none-any.whl
Collecting docopt>=0.6.2 (from pykwalify->west)
Collecting six>=1.5 (from python-dateutil>=2.4.2->pykwalify->west)
  Using cached https://files.pythonhosted.org/packages/73/fb/00a976f728d0d1fecfe898238ce23f502a721c0ac0ecfedb80e0d88c64e9/six-1.12.0-py2.py3-none-any.whl
Installing collected packages: colorama, six, python-dateutil, docopt, PyYAML, pykwalify, west
Successfully installed PyYAML-3.13 colorama-0.4.1 docopt-0.6.2 pykwalify-1.7.0 python-dateutil-2.8.0 six-1.10.0 west-0.5.4
You are using pip version 8.1.1, however version 19.0.2 is available.
You should consider upgrading via the 'pip install --upgrade pip' command.
jlb6740@yshou-mint:~$ westcos-tool ^C
jlb6740@yshou-mint:~/Downloads$ west --version
No command 'west' found, did you mean:
 Command 'test' from package 'coreutils' (main)
west: command not found
jlb6740@yshou-mint:~/Downloads$ 

 

but there is no "west" file to execute on my path. At the website for west the install command is slightly different:

pip3 install west


But again, nothing is found on my path. I tried to install the whl file, I also tried to install with sudo but nothing has given me an executable to move on to the next steps:

west init zephyrproject
cd zephyrproject
west update


What are some alternative ways to installing this west script? Even the "Using Zephyr with west" page seems to imply I will want it for flashing and debugging later so I assume this is not a step I should skip.

Thanks,
Johnnie

 

 

1781 - 1800 of 3111