《ZDS2023_Anas_nashif_Nine_years_in_the_making_zephyr.pdf》由会员分享,可在线阅读,更多相关《ZDS2023_Anas_nashif_Nine_years_in_the_making_zephyr.pdf(23页珍藏版)》请在三个皮匠报告上搜索。
1、9 Years in the Making,the Story of Zephyr,Starting with Commit Nr.1Anas Nashif,Principal Software Engineer,Intel Corp.20232Introduction The Zephyr Project was started by Intel in 2014 and publicly launched as a Linux Foundation project in 2016,with Synopsys,NXP,and Wind River.Primary goals of the Ze
2、phyr Project:Adoption by silicon vendors and the embedded community while,embracing the open-source and open eco-system vision of founding members.The creation of a unified and a sustainable open eco-system while providing value to firmware developers running on different ISAs and using different OS
3、 environments.Goals have been achieved with majority of silicon vendors adopting Zephyr,products launched with Zephyr,and an ever increasing and vibrant community.The Zephyr Project was ranked among the top“Critical Open-Source Projects”list by Google.3The Zephyr Project in Numbers*Project Started20
4、14Project Went Public2016Commits 80kContributors1,647Targets and Platforms 500Architectures(ISA)13Releases40Pull Requests 40kClosed Issues11,217Open Issues376Lines of Code(C)1MioLTS Releases2*as of 06/20234First Commit?5SMPGithubHow we got here.200020202020212021Pre zephyrZephy
5、rificationLaunch2014Unified KernelCmakeNIOS2RISCVSPARCXtensaMIPSNative IP StackBT ControllerDevice TreeMMU/MPUUserspaceWestLTS1Project announced at an internal event Intel20222022LTS2“First Commit”Previous“First Commit”Windriver Rocket6we go further back7 Commercial version of Zephyr launched by Win
6、d River November 2015 A lock-step downstream version of Zephyr,takes care of the OS configuration and hardware integration withWind River Helix App Cloudfor a streamlined development experience.Wind River Rocket8SMPGithubThe Early Days of Zephyr200020202020212021Pre zephyrZephy
7、rificationLaunch2014Unified KernelCmakeNIOS2RISCVSPARCXtensaMIPSNative IP StackBT ControllerDevice TreeMMU/MPUUserspaceWestLTS1Project announced at an internal event Intel20222022LTS2“First Commit”Previous“First Commit”Windriver Rocket9 By the release in 2016(v1.0.0),we were at approx.7000 commits F
8、irst Commit in current Zephyr tree was 2200 commits in(Squashed into 1 single commit)What happened exactly before the release?General Cleanup Readying for open-source Build System Overhaul Kconfig Kbuild Device Model De-feature:Remove unwanted features Add support for launch hardware,implement first
9、 APIs and drivers Figure out name and licenseProgress towards open-sourcing and Launch10 Apache 2 license was NOT the first choice Zephyr was originally BSD licensed Potential project partners requested other licensesLicense ConsiderationsFinally released publicly as an Apache 2 licensed project11Ma
10、ny choices for a project nameIn hindsight,we should have picked another name1214Board Support at Launch in February 2016Arduino 101FRDM-K64fArduino DueIntel Galileo15SMPGithubDeveloping and RTOS for EVERYONE200020202020212021Pre zephyrZephyrificationLaunch2014Unified KernelCmak
11、eNIOS2RISCVSPARCXtensaMIPSNative IP StackBT ControllerDevice TreeMMU/MPUUserspaceWestLTS1Project announced at an internal event Intel20222022LTS2“First Commit”Previous“First Commit”Windriver Rocket16 Build System Initially Custom(Makefile based)Then Kbuild for a while And finally,Cmake Networking:Co
12、ntiki stack to Native implementation Kernel:Move from Nano and Micros kernels to the Unified Kernel Review System:Move from Gerrit to Github Continuous Integration:Move from Shippable to Github ActionsMajor Transitions and Transformation of the project17Problems with dual-kernel model:Non-intuitive
13、nature of the nanokernel/microkernel splitDouble-context switch affecting kernel performance(speed and footprint)Duplication of object types between the nanokernel and microkernelSystem initialization running in the idle taskThe unified kernelmade the nanokernel pre-emptible thread awareunified fibe
14、rs and tasks as one type of threads by dropping the Microkernel serverallowed cooperative threads to operate on all types of objectsclarified duplicated object typescreated a new,more streamlined API,without any loss of functionalityMoving from dual-kernel model to the Unified Kernel18SMPGithubAdopt
15、ion,Products and a self-sustaining Eco System 200020202020212021Pre zephyrZephyrificationLaunch2014Unified KernelCmakeNIOS2RISCVSPARCXtensaMIPSNative IP StackBT ControllerDevice TreeMMU/MPUUserspaceWestLTS1Project announced at an internal event Intel20222022LTS2“First Commit”Pr
16、evious“First Commit”Windriver Rocket19Where we started.Arduino 101FRDM-K64fArduino DueIntel Galileo20And now21Healthy Eco System and Community Growth02,0004,0006,0008,00010,00012,00014,00016,0002000212022IntelMembers/Communitycommits0050060070080002,0004,0006,0008,00
17、010,00012,00014,00016,0002000212022CommitsContributorscontributorscommits22Evolving and Self-Sustaining Open Eco-SystemProjectMembersUsersVendors By those who need a feature:Adding support for own hardware and platforms.Implement generic and cross platform features.By collabora
18、ting on major features:Collaboration is the most efficient path to get features done.Most code development is based on collaboration.By contracting 3rd parties or other project members to implement a feature:In cases where someone does not have the resource,contracting is the best option.Or by askin
19、g a vendor for a new feature or for Zephyr support:Users asking tool vendors to support Zephyr Users asking for support commercial compilers,etc.Getting Things DoneGetting Things Done23 Maintain project health and scale up to support growing userbase,contributors and members Focus on user and developer experience Ease migration between releases Maintain a stable and a rich API Continue to aggressively pursue project safety and security goals Encourage and enable more users and products to use LTS Focus on and Release third LTS in 2024Looking Forward24Thank You