Software Development for Embedded Multi-core Systems A Practical Guide Using Embedded Intel Architecture