Learn Lua. I learn Lua pretty quick, by just fooling around with a 2D gaming engine call Love. Didn't take to long to learn how to code in Lua. I made a Breakout clone and code it in Lua. Check it out, you might like it.
It does, but I’m missing why you would get an advantage from not using the graphics subsystem.
Wouldn’t it be easier just to not do a copy and hit the gpios right from that frame the graphics processor sent out? The api is basically here it is, and you say I’m done. Similar to socket buffers.
shared vram -----> userland ram screenshot ----> format-converted screenshot ---> GPIO driver
Oh I see. Yeah don’t do it from userland. You could pass in the Gpios to the already present driver through the device tree and do the write out from the graphics driver. That’s a hack but it will work.
Similarly the same way the hdmi is exposed to the graphics driver you could write one that presents your thing. Then it should be straight forward to modify scaling and resolution.
Oh I see, it’s got hardware support tied in directly to the GPUs. https://www.kernel.org/doc/html/v4.14/gpu/vc4.html You should be able to configure that hcv thing to your proper size and get a pointer to its physical address for the vram.
Then ioremap that and you’ll have a kernel virtual address. Then just bit bang it out from that memory hacked right into that driver. You could probably do that in its interrupt context which saves you a lot of sync headaches.
I'd start with learning basic commands ls pwd mk rm touch more grep awk and their sub-commands. from there learn the vim text editor, on to shell scripting. I'd suggest this book before jumping into any forms or anything. I think lynda has some good programming tutorials revolving around python which may be helpful. someone once suggested this to get a better understanding of the system and how everything works together. Though I haven't reached that point yet.
Kali Linux: Is Kali Linux Right For You?
> As the distribution’s developers, you might expect us to recommend that everyone should be using Kali Linux. The fact of the matter is, however, that Kali is a Linux distribution specifically geared towards professional penetration testers and security specialists, and given its unique nature, it is NOT a recommended distribution if you’re unfamiliar with Linux or are looking for a general-purpose Linux desktop distribution for development, web design, gaming, etc.
Arch Linux: Why would I not want to use Arch? > You may not want to use Arch, if: > > - you do not have the ability/time/desire for a 'do-it-yourself' GNU/Linux distribution. > - you require support for an architecture other than x86_64. > - you take a strong stand on using a distribution which only provides free software as defined by GNU. > - you believe an operating system should configure itself, run out of the box, and include a complete default set of software and desktop environment on the installation media. > - you do not want a rolling release GNU/Linux distribution. > - you are happy with your current OS.
I am a complete GNU/Linux beginner. Should I use Arch? > If you are a beginner and want to use Arch, you must be willing to invest time into learning a new system, and accept that Arch is designed as a 'do-it-yourself' distribution; it is the user who assembles the system. > > Before asking for help, do your own independent research by Googling, searching the forum and the superb documentation provided by the Arch Wiki. There is a reason these resources were made available to you in the first place. Many thousands of volunteered hours have been spent compiling this excellent information.
This is the book I started with. Still a bit dry, but I refer back to it every now and again to refresh myself.
https://www.amazon.co.uk/Linux-Device-Drivers-Jonathan-Corbet/dp/0596005903/ref=sr_1_3?dchild=1&hvadid=80195728628459&hvbmt=bp&hvdev=c&hvqmt=p&keywords=linux+device+driver&qid=1619600423&s=books&sr=1-3
I've also started the long journey towards becoming a Linux systems developer so I'm in a pretty similar situation.
Of the 3 books you listed, I only know The Linux Programming Interface which is a book even Linus Torvalds' right hand, Koah-Hartman, recommends (indeed, he said so in an AMA here on Reddit a few months ago). So you can't go wrong with that one. I've started it already and it is a must. If you manage to get through its +1500 pages, you can definitely call yourself a Linux software developer.
Apart from this book, I can recommend you the following ones too based on my experience. Maybe some of them are not entirely dedicated to systems programming topics but they give a ton of useful information about the whole Linux ecosystem which I really enjoyed learning:
They use the hostap package containing hostapd for wifi Access Point configuration.
Iproute2 package to configure net interfaces through shell scripts, or C netlink sockets.
Dnsmasq for DHCP server.
https://wiki.linuxfoundation.org/networking/start
Iptables or nftables for firewall. Can have basic defaults + masquerade rule for outbound WAN interface.
Choose an init system. Scripts to startup all the different processes.
If you mean from ground up, usually board support development of u-boot (bootloader) and custom kernel supplied from a vendor of your SoC. Buildroot or yocto to build the firmware, select the drivers you need, package all those packages you need and init scripts.
Then also maybe a web server.
But yes openwrt documentation has everything https://openwrt.org/docs/start
There are many layers, but you could learn by building openwrt and putting it on a device.
I’ve been in a similar situation before because of a windows update destroying grub bootloader such that whenever I powered on the computer it would give me an error indicating the system could not find any suitable boot drive...
I ended up loading boot-repair-disk [1] onto a usb and booting from that. It takes you to a nearly blank desktop with the boot-repair [2] utility. From this window you have a few tabs of options with most of them being self-explanatory or search-able. There should be a way to to have it automatically detect bootable partitions and rewrite the grub bootloader.
[1] http://sourceforge.net/p/boot-repair-cd/home [2] https://help.ubuntu.com/community/Boot-Repair
He is saying to use an ide. Intergrated development environment.
You can use vim like an IDE (but it isn't an IDE) https://dev.to/allanmacgregor/vim-is-the-perfect-ide-e80
Really if you are just learning there are tools like this https://www.codeblocks.org/ which is a true IDE
Yes, look at module-loopback and module-null-sink
You can create them via:
pactl load-module module-loopback latency_msec=1 pactl load-module module-null-sink sink_name=my_null_sink sink_properties=device.description="My Null Sink"
Then mess around with them using pavucontrol
Most programs will refresh their configuration if you send a USR1 signal to it. But I think bspwm config is a script that can be run in the terminal when you need to refresh. So what you need to do is, run xrdrb to update the Xresources config, and run the bspwm config script to refresh everything.
If you just want to start programming, without any aim in mind, Python is a good general purpose and versatile language.
To run the code, you need an interpreter. How you get this will vary depending on your OS. On Linux and macOS, you just have to install it from the repository (it probably already is). On Windows, I would advise Anaconda
As far as the editor is concerned, it is a matter of taste, and lots of people love Vim (as do I), but you can (ans should) try out a few and decide what is good for you.
Regarding your last question: You install on your dev machine nodejs (and npm that's bundled with it), with npm you install @angular/cli
and typescript
(actual package names) with sudo npm install -g @angular/cli typescript
this install both packages globally instead of in your project. You can then create angular projects using the tutorials on angular.io. On your webserver you don't need to install any dependency as angular will compile everything to a couple of html, css and js files which containt everything the client will need.
I second /u/GreeneSam. For a short period in my job a few years ago I was forced to develop on a company laptop with 512GB ram. No problems encountered using Geany on Lubuntu.