New student job september, best way to learn how to write kernel drivers, C++ & OpenGL and Pulse audio

I'm going to preface this with saying I'm finishing up my 3rd year of a comp sci degree, I'm comfortable programming in C and C++, familiar with Linux (no wizzard but I do use it as a daily driver and I worked as a sysadmin) but am by no means an expert.

As the title says I'm starting a student job (4 month) and I'll be working with one of these 3 things.

Linux kernel drivers, likely for embedded hardware
OpenGL + C++ w/ Visual Studio (its a GUI application/dashboard)
Pulse audio and Linux audio processing and mixing on said embeded hardware

I have a month off aug 5 - sep 5, with nothing to do. How should I go about learning these? What are some good resources for these topics? Can anyone proficient in these chime in?

any replies are appreciated.

Not sure about drivers & Pulse, but these are the best OpenGL resources I know:

https://learnopengl.com/

https://paroj.github.io/gltut/

Note that OpenGL differs quite a bit between versions, so make sure you know which version is relevant for you.

1 Like

I do not, I was just told "we have an openGL dashboard that we develop on visual studio, you may be working on that"

These are in no way exhaustive, but it might point you in the right direction for Linux drivers:

http://www.tldp.org/LDP/khg/HyperNews/get/devices/scsi.html

http://freesoftwaremagazine.com/articles/drivers_linux/

As far as pulse goes, I've got no experience with working on it.

Hope this helps!

1 Like

OpenGL 1 & 2 are seriously dated at this point. And given that GL4 is only an extension to GL3, v3 is probably the way to go.

Even in case they really end up using some ancient version you will still garner 3D graphics knowledge.

thank you! I'll check those links out!

@pFtpr Yea, I'm really pumped about this job since I could maybe leverage this OpenGL experience to get a game dev job at EA or Ubisoft (they are in my city) or maybe take this low level stuff roll with that.

OpenGL is rarely used in commercial games these days. But you will certainly learn a lot of concepts, both regarding software as well as knowledge about a GPU's internal workings.

Once you are comfortable with OpenGL I highly recommend reading through Unreal Engine 4's documentation, as Epic is very open about the engine's internal workings. There's also a lot of great Videos/Slides, mostly from Crytek, Epic & Naughty Dog. Plus there's this amazing walkthrough through Doom's renderpipeline: http://www.adriancourreges.com/blog/2016/09/09/doom-2016-graphics-study/

wow thanks!

but I will have to disagree with you over OpenGL being rarely used. Linux, Mac, iOS, and Android all use OpenGL.

Apple is moving away to Metal & Linux to Vulkan. You will notice that for both Linux and Mac there's only few games, most of which are bad ports from DirectX. DirectX is unfortunately the standard API right now.

Once you've seen some OpenGL you'll know why :wink:

1 Like

I got these links from a simple duckduckgo search and cursory look through the article.

I'm sure you could find more info the same way.

I say this not to come off as "don't waste my time" but to illustrate what a quick search can find.

It's going away though. I think that's what he was trying to say. The direction is away from OpenGL. Depending on what you're aiming for, it's perfectly fine.

Kernel programing for linux. So first recommendation, If you don't have have a working knowledge of C. I would start there. Second, linux man pages are your friend. There is a lot of old material out there and sometimes it right and most times it is not. Third, learn to read other people kernel code and drivers because every tutorial and example code will be for kernel version 2.6 and current version 4 something. Honestly, I have seen example code where it needs to be completely rewritten to work. This github has newer examples. This one also worked last time i checked. There is also a new book coming out in November. If you are doing embedded hardware this book might be better. i would really recommend running drivers on a vm because forgetting a line of code can cause a kernel panic and having you main working machine crash is not helpful. I would also suggest learning the different trace tool for linux ftrace, strace, stap, etc. If you don't know how to do remote debugging for a kernel and compile custom kernels I would look into those as well. Also I have never found a IDE that handles kernel programming well so auto complete of function, marco, structs, etc is out. Most importantly don't give up because you are going to wanting to bang your head on the wall after sometimes searching for hours and you don't get any good results. Also it is your "student" job they(hopefully won't except you to how to do much kernel programming coming in.

2 Likes

thanks for the tips!

and whil eit is a student job, I think the amount they're going to be paying me I think they assume I can figure it out quickly or have some knowledge :smiley:

Kernel driver development is useful for ioS^Wiot / cell phones / home routers / home automation ... anything not running x86 is probably running Linux and needs some kernel work done to get it going, including robots and stuff.

Also it's useful in the cloud with virtualization living in the kernel, and custom devices these companies attach to their servers.

Skills you learn are mostly transferrable to other embedded / close to hardware programing projects.


Game developers or wannabe game developers are a dime a dozen, unless you're really great at it, or have good people skills (benchmarked against actual people not just average devs) you're unlikely to make a good career out of it.


Audio/Video work is kind of a niche, people who do it all know each other and most do it as a side job, few are on it 100% of the time, it could be a good "in" to the industry if you're good at networking with people.

So when I took my Computer Graphics class this past few months, we used OpenGL. To get a better understanding of it my university has a deal with Lynda.com and it was beneficial to watch their series on OpenGL to get an idea of the basic stuff to do in OpenGL. I don't know about the other stuff, but check to see if your school has an agreement and you can use lynda.

1 Like