Hello mynewt community,

I am new to mynewt , and at this point I have just managed to get mynewt 
running on an Arduino M0 Pro, with an attached pushbutton on one GPIO and an 
LED with resistor attached on another GPIO pin. My first test program just 
monitors the button and turns the LED on whenever the switch is closed. And 
that all works fine. I also have another supported board that I will be 
introducing to mynewt soon.

My first impressions are very positive. I think I understand what you are 
trying to create with this platform and it's great. Thanks for building this!

I'd like to also add that I think the mynewt documentation is really excellent 
in general and I feel I have very quickly been able to absorb a good 
introduction to the platform and get my hands dirty. Thank you!

At this point I'd like to make a couple of suggestions based on my initial 
experience.

I found it very difficult to determine the appropriate integer to pass to the 
code to identify a particular GPIO pin on my hardware. I Googled for it without 
success. Eventually I went to the source code and found this file in my project 
"repos/mynewt_arduino_zero/hw/mcu/atmel/samd21xx/src/hal_gpio.c". That file has 
a comment that attempts to clarify the numeric mapping, but I was unable to 
follow what it was saying. Eventually after hours of hunting I gave up and 
resorted to trial and error and I was able to identify the integers to pass for 
a handful of the GPIO pins. I found this experience to be pretty frustrating.

I think I understand that this comment buried deep in the code is where I was 
expected to get the information I needed. However, it was difficult to find, 
and when found I did not think it did a very good job of conveying the 
information that any developer will require to use mynewt on this board to 
access GPIO pins. I'd like to identify this as a weakness in both usability and 
documentation for mynewt that I hope the community will consider addressing.

To be more specific about what I think is missing, I believe any developer 
coming to the mynewt platform with a supported board will want to know what pin 
number to use in the code for a particular physical pin on the board. I think 
only the MCU pins are known in mynewt (never the board pins -- okay) and one 
must consult the schematic to find the board pin corresponding to the desired 
MCU pin (okay). However, it's not really the MCU pins that mynewt knows about. 
Mynewt only knows about raw integers that are mapped in some ad-hoc way on each 
board, such that a new mynewt developer will need to search the code to 
discover and then comprehend that mapping before they can target a specific MCU 
pin.

In my opinion, it would be much more helpful if:
1. the mynewt MCU support code could expose symbolic names for MCU pins (e.g., 
for Cortex M0: PA0, PB0, ...) that could be used in the code so developers 
would not need to dig through mynewt board support code to discover and 
comprehend those numeric mappings, and
2. the mynewt board support code could offer a 
board-silkscreen-pin-number-to-MCU-pin-number mapping (and perhaps define names 
based on the board silkscreen).

I think these changes would make a huge improvement to the mynewt developer 
experience. I also believe there would be very little coding work required for 
the above, and the information required would be well known by anyone writing 
the MCU support code and the board support code.

Thanks again for this project and all the good documentation,

Glen.

Reply via email to