[yocto] TUNE_PKGARCH for Microblaze

Sipke Vriend sipke.vriend at xilinx.com
Tue Mar 26 17:45:17 PDT 2013


Thanks Mark!

That information has been very useful. Looks like some python code will be 
the way we need to go.

>I think it's a good idea to have some standard tunes with functionality that is 
>reasonable for a testable demo environment.  If the developers want to tailor it 
>further, they should be able to either by manually selecting the features or 
>creating a custom tune file.
>
>This was the intent when the original tune system was introduced.  There was no 
>way we would know every possible combination, so making a way the developer 
>could specify it was the best answer we could come up with.  The TUNE_FEATURES 
>adds the ability for the compiler and other packages to dynamically switch based 
>on whatever the developer has configured.  It can be used for blacklisting code, 
>changing optimizations, etc.

Agreed, we intend to have a 'full' and 'lite' as standard tunes for the user to work 
with and build on as required.

Regards
Sipke


On Wednesday, 27 March 2013 5:19 AM, Mark Hatle wrote:
>
>On 3/26/13 1:12 AM, Sipke Vriend wrote:
>> Hi all,
>>
>> With help from Khem's email we have been able to perform 'some' sanity
>> checking against the microblaze architecture.
>>
>> The TUNECONFLICTS assist us in ensuring conflicting features are flagged during
>> the bitbake sanity check, however because Microblaze's features are
>> independently configurable, we would like to do some additional 'sanity
>> checking'.
>>
>> Using a hierarchical method of features, like in arm, is not really viable for
>> Microblaze, so if there are alternate existing ways we would like to use them
>> rather than creating localised bb classes to do this for us.
>>
>> 1. Is there a way similar to TUNECONFLICTS for "paired" features, i.e. if one
>>     feature exists another must also?
>>     (Certain microblaze versions must have a set of features if a particular
>>     feature is enabled).
>
>The values in the conflicts can be adjusted programatically.  It may be what you 
>need in this case.  Use inline python such as:
>
>TUNECONFLICTS[foo] = "${@bb.utils.contains("TUNE_FEATURES", "some_feature", 
>"conflict_if_set", "conflict_if_not_set", d)}"
>
>> 2. Is there a way to define that certain features must exist, other than
>>     defining multiple machines   (e.g. in endian case we would like to ensure one
>>     of them is picked)?
>
>You can add a bit of python code that can again use the contains item.  The code 
>may need to be in a custom class though to execute.
>
>python() {
>     if <your arch selected>:
>         if <no endian selected>:
>             bb.fatal("You must select an endian")
>}
>
>> 3. Additionally (or instead of 1 and 2) is there a way we can introduce/append a
>>     'sanity check' into the bitbake layer model - i.e. inform bitbake to
>>     run 'our complex sanity' check?
>
>See above.. it will require a custom class.. you can make your tunes/arch file 
>include the class using INHERIT += "your_class.bbclass".
>
>> As a continuation from my last email, the following is a list of possible Microblaze
>> architecture features, which can be supplied in the machine and/or local.conf
>> file. Lack of  a hardware feature means the soft version is used.
>>
>> big-endian/little-endian
>> vXXX where XXX is a microblaze version (like v830)
>> barrel-shift
>> multiply-high multiply-low
>> pattern-compare
>> reorder
>> divide-hard
>> fpu-hard fpu-hard-extended
>>
>> Additionally we plan to modify the package name slightly, e.g.
>> microblazeel-v840-bs-ml-div-fe-cmp-re
>> microblazeel-v830-bs-mh
>> microblazeel-v830
>
>I think it's a good idea to have some standard tunes with functionality that is 
>reasonable for a testable demo environment.  If the developers want to tailor it 
>further, they should be able to either by manually selecting the features or 
>creating a custom tune file.
>
>This was the intent when the original tune system was introduced.  There was no 
>way we would know every possible combination, so making a way the developer 
>could specify it was the best answer we could come up with.  The TUNE_FEATURES 
>adds the ability for the compiler and other packages to dynamically switch based 
>on whatever the developer has configured.  It can be used for blacklisting code, 
>changing optimizations, etc.
>
>--Mark
>
>> Regards
>> Sipke
>>
>>> On Mar 20, 2013, at 4:44 PM, Khem Raj <mailto:raj.khem at gmail.com> wrote:
>>>
>>>
>>> On Mar 19, 2013, at 9:08 PM, Sipke Vriend <sipke.vriend at xilinx.com> wrote:
>>>
>>>
>>> Hi all,
>>>
>>> We are seeking some feedback regarding common practices for defining TUNE_PKGARCH within Yocto.
>>>
>>>
>>> usually its dictated by architecture, ABI and other processor features. the current tune files have good ways to express the relationships
>>> you would translate the below table into set of TUNE_FEATURES and define PACKAGE_EXTRA_ARCHS if you need to express compatibility between different tunes
>>>
>>> Look at arm tunes they are the best examples of complexity
>>>
>>>
>>> We need to define a unique TUNE_PKGARCH for the possible configuration of Microblaze architecture.
>>> Our proposal is short unique string for each HW feature which is enabled in Microblaze.
>>>
>>> For 'extensive hardware usage' architecture, this would result in something like:
>>> mbebv730-bs-mh-div-fb-cmp
>>> mbebv840-bs-mh-div-fb-cmp-re
>>> mbelv840-bs-ml-div-fe-cmp-re
>>> and for architecture with no 'hardware usage':
>>> mbebv730
>>> mbebv840
>>> mbelv840
>>>
>>> The table below details the unique strings and their relation to compiler and hardware flags, and a couple of versions of Microblaze architecture.
>>> (If this table does not show cleanly switch to fixed width font)
>>> -------------------
>>> String Compiler Flag        Hardware Flag         CPU versions
>>>        -mcpu=vX.YY.Z                              v7.30.a v8.40.a
>>>
>>> mbel   -mlittle-endian      C_ENDIANNESS (LITTLE) -       o
>>> mbeb   -mbig-endian         C_ENDIANNESS (BIG)    x       o
>>>
>>> bs     -mxl-barrel-shift    C_USE_BARREL          o       o
>>>
>>> ml     -mnoxl-soft-mul      C_USE_HW_MUL (MUL32)  o       o
>>> mh     -mxl-multiply-high   C_USE_HW_MUL (MUL64)  o       o
>>>
>>> div    -mnoxl-soft-div      C_USE_DIV             o       o
>>>
>>> fb     -mhard-float         C_USE_FPU (BASIC)     o       o
>>> fe     -mxl-float-convert   C_USE_FPU (EXTENDED)  o       o
>>> fe     -mxl-float-sqrt      C_USE_FPU (EXTENDED)  o       o
>>>
>>> cmp   -mxl-pattern-compare  C_USE_PCMP_INSTR      o       o
>>>
>>> re    -mxl-reorder          C_USE_REORDER_INSTR   -       o
>>>
>>> Where '-' means unavailable 'x' is only option and 'o' is optional.
>>> -------------------
>>>
>>>
>>>
>>> you can express this with TUNECONFLICTS and TUNEVALID
>>>
>>> and may be create heirarchy of tune files which builds upon common tunings.
>>>
>>>
>>> Note the table rows have hardware feature 'groupings', which means only one of 
>>> the strings should be present within the TUNE_PKGARCH. For example the Floating Point 
>>> Unit hardware feature can be defined by either fb (for basic mode) or fe (for extended mode).
>>>
>>> Regards
>>> Sipke
>>>
>>>
>>>
>>>
>>> _______________________________________________
>>> yocto mailing list
>>> yocto at yoctoproject.org
>>> https://lists.yoctoproject.org/listinfo/yocto
>>>
>>>
>>
>>
>> _______________________________________________
>> yocto mailing list
>> yocto at yoctoproject.org
>> https://lists.yoctoproject.org/listinfo/yocto
>>
>
>_______________________________________________
>yocto mailing list
>yocto at yoctoproject.org
>https://lists.yoctoproject.org/listinfo/yocto
>
>





More information about the yocto mailing list