mirror of
https://github.com/m3y54m/Embedded-Engineering-Roadmap.git
synced 2026-10-10 08:18:16 +03:00
docs: add resources for UWB, Profinet, LIN, MOST, FlexRay and the six soft skills
This commit is contained in:
@@ -228,6 +228,33 @@ Similar to other professions, embedded engineers require soft skills that can't
|
||||
- [📝 Soft Skills For Embedded Systems Software Developers](https://www.embeddedrelated.com/showarticle/1470.php)
|
||||
- [📝 10 Skills Every Embedded Engineer Should Have](https://medium.com/@lanceharvieruntime/10-skills-every-embedded-engineer-should-have-dcb867095b91)
|
||||
|
||||
#### 🔵 Communication Skills
|
||||
|
||||
- [🔗👶 Technical Writing Courses - Google for Developers](https://developers.google.com/tech-writing)
|
||||
|
||||
#### 🔵 Problem-Solving Skills & Critical Thinking
|
||||
|
||||
- [📘💎 Debugging: The 9 Indispensable Rules for Finding Even the Most Elusive Software and Hardware Problems - David J. Agans](https://debuggingrules.com/)
|
||||
- [📝 How to Solve It - Wikipedia](https://en.wikipedia.org/wiki/How_to_Solve_It)
|
||||
|
||||
#### 🔵 Teamwork & Collaborative Abilities
|
||||
|
||||
- [📝 How to Work Well on Teams - Software Engineering at Google](https://abseil.io/resources/swe-book/html/ch02.html)
|
||||
- [🔗 Atlassian Team Playbook](https://www.atlassian.com/team-playbook)
|
||||
|
||||
#### 🔵 Organizational & Time Management Skills
|
||||
|
||||
- [🔗 Getting Things Done® - David Allen's GTD® Methodology](https://gettingthingsdone.com/)
|
||||
|
||||
#### 🔵 Being Self-Driven and Independent
|
||||
|
||||
- [🎞️👶 Learning How to Learn - Coursera](https://www.coursera.org/learn/learning-how-to-learn)
|
||||
- [📝💎 Teach Yourself Programming in Ten Years - Peter Norvig](https://norvig.com/21-days.html)
|
||||
|
||||
#### 🔵 Adaptability & Patience
|
||||
|
||||
- [📘 Mindset: The New Psychology of Success - Carol S. Dweck](https://www.penguinrandomhouse.com/books/44330/mindset-by-carol-s-dweck-phd/)
|
||||
|
||||
_________________
|
||||
|
||||
### ✳️ Electronics
|
||||
@@ -759,6 +786,12 @@ Embedded systems often communicate with other devices or external systems via in
|
||||
|
||||
- [🎞️ What is Matter? Unifying IoT Devices for the Smart Home | Digi-Key Electronics](https://youtu.be/vJIEfih9bl0)
|
||||
|
||||
##### 🔶 UWB
|
||||
|
||||
- [📘👶 Ultra-Wideband For Dummies - Qorvo](https://www.qorvo.com/design-hub/ebooks/ultra-wideband-for-dummies)
|
||||
- [🔗 FiRa Consortium - Advancing Ultra-Wideband (UWB) Technology](https://www.firaconsortium.org/)
|
||||
- [📝 Ultra-wideband - Wikipedia](https://en.wikipedia.org/wiki/Ultra-wideband)
|
||||
|
||||
#### 🔵 Industrial Protocols
|
||||
|
||||
##### 🔶 Modbus
|
||||
@@ -776,6 +809,12 @@ Embedded systems often communicate with other devices or external systems via in
|
||||
|
||||
- [🎞️ Microchip University - An Introduction to EtherCAT®, EtherCAT P and the Microchip LAN925x family of Slave Controllers](https://mu.microchip.com/an-introduction-to-ethercat-ethercat-p-and-the-microchip-lan925x-family-of-slave-controllers)
|
||||
|
||||
##### 🔶 Profinet
|
||||
|
||||
- [🎞️👶 How PROFINET Works? A Beginner's Guide - PI North America](https://us.profinet.com/webinar/how-profinet-works-a-beginners-guide/)
|
||||
- [🎞️ PROFINET Video Series](https://www.profinet.com/profinet-explained/explanatory-videos)
|
||||
- [🔗 PROFINET University](https://profinetuniversity.com/)
|
||||
|
||||
##### 🔶 CoAP & MQTT
|
||||
|
||||
- [🎞️ #144 Internet Protocols: CoAP vs MQTT, Network Sniffing, and preparation for IKEA Tradfri Hacking](https://www.youtube.com/watch?v=pfG8uEDZj5g)
|
||||
@@ -827,6 +866,21 @@ Embedded systems often communicate with other devices or external systems via in
|
||||
- [🎞️ J1939 Explained - A Simple Intro [v2.0 | 2021]](https://www.youtube.com/watch?v=vlqxu9ojbHg)
|
||||
- [🎞️ Unified Diagnostic Services (UDS) Explained - A Simple Intro [2022]](https://www.youtube.com/watch?v=CV_B8tJgI5E)
|
||||
|
||||
##### 🔶 LIN
|
||||
|
||||
- [📝👶 LIN Bus Explained - A Simple Intro - CSS Electronics](https://www.csselectronics.com/pages/lin-bus-protocol-intro-basics)
|
||||
- [📝 Local Interconnect Network - Wikipedia](https://en.wikipedia.org/wiki/Local_Interconnect_Network)
|
||||
|
||||
##### 🔶 MOST
|
||||
|
||||
- [📝 MOST Bus - Wikipedia](https://en.wikipedia.org/wiki/MOST_(bus))
|
||||
- [🔗 MOST Cooperation - Specifications](https://www.mostcooperation.com/specifications/)
|
||||
|
||||
##### 🔶 FlexRay
|
||||
|
||||
- [📝 FlexRay Automotive Communication Bus Overview - NI](https://www.ni.com/en/shop/seamlessly-connect-to-third-party-devices-and-supervisory-system/flexray-automotive-communication-bus-overview.html)
|
||||
- [📝 FlexRay - Wikipedia](https://en.wikipedia.org/wiki/FlexRay)
|
||||
|
||||
#### 🔵 Network Protocols / Socket Programming
|
||||
|
||||
- [🎞️ Networking Fundamentals - Practical Networking (YouTube Playlist)](https://www.youtube.com/playlist?list=PLIFyRwBY_4bRLmKfP1KnZA6rZbRHtxmXi)
|
||||
|
||||
+14
-7
@@ -26,15 +26,12 @@ function topicIndex(topics) {
|
||||
|
||||
export function linkDiagram(map, data) {
|
||||
const index = topicIndex(data.topics);
|
||||
const softSkills = data.topics.find((t) => t.depth === 1 && key(t.title) === 'soft skills');
|
||||
// map.json "readme": map labels whose README heading is worded differently (or has no section of its own).
|
||||
const aliases = map.readme || {};
|
||||
const resolve = (text, areas = []) => {
|
||||
const resolve = (text) => {
|
||||
if (Object.hasOwn(aliases, text)) return [aliases[text]].flat().map((title) => index.get(key(title))).filter(Boolean);
|
||||
const topic = index.get(key(text));
|
||||
if (topic) return [topic];
|
||||
if (softSkills && areas.includes('SOFT SKILLS')) return [softSkills];
|
||||
return [];
|
||||
return topic ? [topic] : [];
|
||||
};
|
||||
|
||||
// A cluster's areas are those of the band it sits in; a group's are the areas all its clusters share.
|
||||
@@ -49,7 +46,7 @@ export function linkDiagram(map, data) {
|
||||
for (const [text, importance] of spec.topics) boxes.push({ text, importance, areas: band.areas, cluster, header: false });
|
||||
}
|
||||
}
|
||||
boxes.forEach((b, i) => Object.assign(b, { id: `box-${i}`, topics: resolve(b.text, b.areas) }));
|
||||
boxes.forEach((b, i) => Object.assign(b, { id: `box-${i}`, topics: resolve(b.text) }));
|
||||
const regions = Object.entries(map.groups).map(([name, clusters]) => {
|
||||
const areas = AREA_ORDER.filter((a) => clusters.every((c) => (clusterAreas.get(c) || []).includes(a)));
|
||||
return { name, clusters, areas, topics: resolve(name) };
|
||||
@@ -74,8 +71,18 @@ export function linkDiagram(map, data) {
|
||||
for (const area of region.areas) if (!t.areas.includes(area)) t.areas.push(area);
|
||||
}
|
||||
}
|
||||
// Subtopics that are not drawn in the diagram inherit the areas of their closest drawn ancestor.
|
||||
// Subtopics that are not drawn in the diagram inherit the areas of their closest drawn ancestor;
|
||||
// a topic that is not drawn itself but has drawn subtopics (Soft Skills) takes theirs.
|
||||
const fromChildren = new Map();
|
||||
for (const t of data.topics) {
|
||||
if (!t.areas.length) continue;
|
||||
for (let p = t.parent; p; p = p.parent) {
|
||||
if (!fromChildren.has(p)) fromChildren.set(p, new Set());
|
||||
for (const area of t.areas) fromChildren.get(p).add(area);
|
||||
}
|
||||
}
|
||||
for (const t of data.topics) {
|
||||
if (!t.areas.length && fromChildren.has(t)) t.areas = [...fromChildren.get(t)];
|
||||
if (!t.areas.length) for (let p = t.parent; p && !t.areas.length; p = p.parent) t.areas = [...(p.areas || [])];
|
||||
t.areas.sort((a, b) => AREA_ORDER.indexOf(a) - AREA_ORDER.indexOf(b));
|
||||
}
|
||||
|
||||
+1
-6
@@ -498,11 +498,6 @@
|
||||
"Basic Math & Calculus": ["Basic Calculus"],
|
||||
"SDLC Models": ["Software Development Life Cycle (SDLC) Models"],
|
||||
"Version Control": ["Version Control Systems"],
|
||||
"AUTOSAR": ["AUTOSAR Architecture"],
|
||||
"Profinet": ["Industrial Protocols"],
|
||||
"LIN": ["Automotive Protocols"],
|
||||
"MOST": ["Automotive Protocols"],
|
||||
"FlexRay": ["Automotive Protocols"],
|
||||
"UWB": ["Wireless Protocols"]
|
||||
"AUTOSAR": ["AUTOSAR Architecture"]
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user