-
Notifications
You must be signed in to change notification settings - Fork 222
VendorInfo strings should be separated #230
Comments
Just a question, could we have the situation that the HAL is being produced by company #1 whereas the CLR will be provided by another Company #2 ? Although this might be a rather exception to the rule. Therefore, I'd suggest to NOT remove that info AND fill them from a different source not being an existing one. Whether it is chosen to fill them equally is up to the situation, but at least you still have the possibility to provide different values for the info blocks. |
@piwi1263 CLR is provided by Microsoft, unlikely but possible that someone changes it. HAL can definitely be created by someone else, writing a new HAL is basically what we did with NETMF for STM32. So yes, agreed, both vendor info strings make sense, as long as they are settable individually. A HAL consists of a set of components (drivers). In practice, with our various solutions, we never found that a version number of that set makes any sense. Each component has its own version, and then the solution defines the actually used set of components. So the solution version is important - also for the MFUpdate mechanism. |
About the HAL, couldn't it be that a company makes a HAL for device #1, publishes it in f.e. January timeframe. Like Cerb 1.1/1.2 from GHI, so customers do buy it and make solutions based upon that. Now there is found an undocumented feature or an update to the hardware, with impact to the HW possibilities. Than you may want to know/check the version of the HW in the deployment because the new written SW does run on the new HW version 1.2 but does not run very well on HW version 1.1 (in this example). And GHI, there is nothing wrong with your HW, it's wunderfull HW to base solution upon. So you may want the possibility to version HAL. Maybe for completion stages of the HAL as well, you may want to publish in steps f.e. the 429 disco, start without the LCD stuff, since that ain't ready yet but that shouldn't hold up the customers from using the board without it. There are definitely more and better scenarios to think of, but I do think the version property does make sense to have it around. Probably not used very often but comes in handy when you need and have one avail. Since we have it already available it could be used. Of course it must be properly filled with meaningful info and if it will be used, time will tell, but having all 0xFF around is not very helpful IMHO. @smaillet-ms - isn't this related to #115 |
@piwi1263 This does appear to be along the same lines as #115
Any others we should think about? |
At least the ones already in the device capabilities, with not so much meaningful info. And reachable thru normal NetMf managed code. I'd settle for that what you propose. @cpfister, any additions from your side ? |
@piwi1263 We need to stop thinking of the HAL as one "thing". It is just a name for a bunch of drivers, each of which can evolve independently, and thus would need its own version number if deployed separately. |
I was thinking that the HAL/PAL firmware version was a "solution" specific version number since they can't be deployed independently (Well I suppose someone could figure out a way to do that, but i's not something standard at this point so any custom approach could have it's own interop support to check whatever it wanted) Technically that could also apply to the CLR but that makes writing portable components and libraries harder as you'd need to be able to discern the CLR runtime version from a vendor specific firmware build number somehow.... |
If HAL “version” and PAL “version” fully depend on the solution version, then they are not needed, only confusing. Which is the case, I think. However, the separate vendor strings are still relevant. Steve, please find attached the document describing how we are dealing with the various version infos etc. Maybe it helps. Making this topic simpler and more logical would be very much appreciated! We spent a long time on this document, to come up with the “minimal viable hack” given the existing properties and the requirements for robust remote firmware updates. Giving the CLR its own version number makes sense to me, or more precisely the CLR plus system libraries that are released (and thus versioned) by Microsoft as a whole. For example, the version 4.4. In contrast, the solutions for every board – even if they use this very same 4.4 code of Microsoft – can go through arbitrary version numbers. We actually decided to start with version 10.0.0.0 for all our solutions, to avoid the confusion of the older Mountaineer (and GHI and SecretLabs) firmware version numbers, which tried to stay close to the Microsoft release numbers, and obviously fail to do so. So as far as I can see, it boils down to solution version, CLR/system libraries version, and hardware version. For vendor infos, we need more strings, as the solution may come from Ingenuity Micro, the CLR from Microsoft, the PAL from Microsoft, the HAL components from Oberon, and the hardware from GHI Electronics. Of course, if HAL components were mixed from different vendors, then the latter would also become difficult. But this seems rare, and it is important for us to not become invisible in terms of marketing in systems that use our HAL components. |
PS |
From the mentioned document: From managed code in NETMF, version information can be accessed via class FirmwareVersion, property Instance, in assembly MFUpdate (MFUpdate.dll), namespace Microsoft.SPOT.MFUpdate, and corresponds to the following fields shown via MFDeploy, menu Target, Device Capabilities: FirmwareVersion.Instance.IsBigEndian: not available It would be great if the naming could be made consistent between managed code and native code (not OemName versus solutionVendorInfo). |
Also from the mentioned document: The following hardware-related HalSystemInfo fields are stored in the Config region of a NETMF board: Maybe it should be supported - on hardware where this is possible - to move at least some of these values to the actual hardware, out of the Config region. For example, the unique 96 bit ID of an STM32 microcontroller might be used as moduleSerialNumber. |
We will move this to 4.5, together with the Configuration sector redesign. |
http://netmf.codeplex.com/workitem/2438
In the firmware description of the Porting Kit (displayed by MFDeploy>Target>Device Capabilities), the values of the fields for
HalSystemInfo.halVendorInfo
and
ClrInfo.clrVendorInfo
are generated from the same string. Therefore, NETMF adopters cannot include their vendor information without overwriting the CLR vendor reference to Microsoft.
In this context, HalSystemInfo.halVersion is currently defined to be equal to ClrInfo.clrVersion. We would recommend to remove HalSystemInfo.halVersion, since its definition does not provide useful information.
The text was updated successfully, but these errors were encountered: