DanielM skrev: ↑24 januari 2021, 12:18:54
En nyfiken fråga! När ni jobbar som systemutvecklare, använder ni er av GitHub, Youtube, Google eller färdiga exemplarer?
Eller tittar ni direkt i datablandet och sedan knackar C kod som det vore bara ettor och nollor?
Jag måste alltid titta på vad andra gör, sedan modifiera efter mina behov.
Jag skulle aldrig kunna utveckla något eget från grunden.
GitHub: Det förekommer.
Youtube: I princip aldrig.
Google: Ständigt
Färdiga exempel: Ibland (Exempelvis kan man ju hitta sådant på Github)
Datablad och knacka kod: I princip alltid. Även om man hittar ett lib, så behöver man i regel dubbelkolla saker i databladet osv.
Det beror helt på vad som finns, man väljer ju den mest passande vägen för att lösa varje problem.
Om man hittar något färdigt mjukvarubibliotek som löser uppgiften, och passar bra i övrigt, är det såklart lämpligt att använda det. Men de flesta gånger är inte detta fallet. Antingen finns inget bibliotek, eller så är det stort och klumpigt, eller så fungerar det dåligt eller passar dåligt in i mitt projekt, eller något helt annat.
Då är databladet i regel den huvudsakliga källan till information, så skriver man sin egen kod för att styra hårdvaran till det man vill.
Sen tenderar man springa på allehanda problem på vägen, då blir det i princip alltid Google. Men man hittar ju inga fullständiga systemlösningar på Google, utan bara (ofta) lösningar på väldigt specifika problem som kan finnas i många tillämpningar.
DanielM skrev: ↑24 januari 2021, 13:26:22
Låt oss säga att jag vill återgå till det där ethernet-chippet jag pratade om.
Utan att förstå hur chippet fungerar, så börjar jag alltid med inkopplingen. Men det kanske är här jag styper. Jag vet inte hur chippet fungerar, och därmed kan jag inte använda det?
Förstå hur det fungerar kan ju ha väldigt olika innebörd.
Man får ju ta ett problem i taget. Till att börja med måste man förstå övergripande vad komponenten gör för någonting, för att ha en aning om vad man gör. Sen måste man förstå de *interface* som komponenten tillhandahåller. Till att börja med då rent elektriskt.
Och om sådant finns, kan man kolla på lite exempelapplikationer. Dels i komponentens dokumentation, och dels i processorns dokumentation. Så kan man oftast få ihop det mesta. De detaljer som är otydliga eller kanske skiljer mellan processor och PHY i detta fall, får man förkovra sig lite i för att förstå och bestämma vilket som fungerar bäst i just ditt fall.
När man fått ihop hårdvaran kommer nästa del att förstå, det är mjukvaran.
Då får man antingen hitta ett färdigt lib som gör en stor del av uppgiften, då kanske det räcker att kolla vissa småsaker i databladet för att göra eventuella justeringar i libbet eller hur man initierar libbet. Eller så får man djupdyka i dokumentation och skriva allt ifrån grunden (eller en kombination av de båda).
Man måste ju alltid ha 100% koll på hur varje detalj fungerar, men lite övergripande koll på de olika interfacen är viktigt. Och än mindre behöver man veta hur sakerna fungerar *innan* man börjar jobba med dem. Det man inte vet får man ta reda på när det behövs.