There’s a school of thought that says that to fully understand something, you need to build it yourself. OK, we’re not sure it’s really a school of thought, but that describes a heck of a lot of projects around these parts.
[Tim] aka [mitxela] wrote kiloboot partly because he wanted an Ethernet-capable Trivial File Transfer Protocol (TFTP) bootloader for an ATMega-powered project, and partly because he wanted to understand the Internet. See, if you’re writing a bootloader, you’ve got a limited amount of space and no device drivers or libraries of any kind to fall back on, so you’re going to learn your topic of choice the hard way.
[Tim]’s writeup of the odyssey of cramming so much into 1,000 bytes of code is fantastic. While explaining the Internet takes significantly more space than the Ethernet-capable bootloader itself, we’d wager that you’ll enjoy the compressed overview of UDP, IP, TFTP, and AVR bootloader wizardry as much as we did. And yes, at the end of the day, you’ve also got an Internet-flashable Arduino, which is just what the doctor ordered if you’re building a simple wired IoT device and you get tired of running down to the basement to upload new firmware.
Oh, and in case you hadn’t noticed, cramming an Ethernet bootloader into 1 kB is amazing.
Speaking of bootloaders, if you’re building an I2C slave device out of an ATtiny85¸ you’ll want to check out this bootloader that runs on the tiny chip.
DARN: Dynamic Algorithm Recursive Networks?
Oh man! His hardware page!
(drool!)
https://mitxela.com/projects/hardware
Useless. Not sharing anything except Yt videos. No schematics, no code, little explanations. Even the forum is pretty useless
Can you please link to where you’ve done it better? For everyone’s reference?
It would be a silent place if people could only comment on things they have done better.
After looking through the projects that interested me I’ve come to the conclusion that you should complain about a specific project or ask a question here.
https://github.com/mitxela
I’d say rather than school of thought, it’s a natural law. If you can’t build it, you don’t understand it. If you try to build it, you’ll inevitably discover you didn’t quite understand it.
B^)
And even then only building it is not always enough to fully understand it. Software is a pretty good example of this. To fully understand something you should be able to break it.
When my daughter was a toddler she broke a lot of electronics, I don’t think she learned anything about how they worked.
B^)
Ha ha !! Indeed. A fool can destroy something, it takes skill and energy to build. A lot of criticism falls into the same category.
Also, if you can build it, doesn’t necessarily means you understand it.
:o)
… or that they will come! ????
LOL, also famous for the Mandela effect:
https://www.youtube.com/watch?v=o3c_pJ_CLJQ
:o)
If you build it from scratch on your own with nothing but manufacturer’s datasheet, app notes etc, then you’ll learn a lot more *even* when you fail. Having to bridge the gap yourself from nothing to coming up with a design is great learning. It is a lot cheaper than a course in school.
That is an impressive write up as well as the proof that determination can get you places; however, my reaction to a problem like that would be “F… That, I’ll use an ESP8266 with OTA updates”.
I must say though that it is articles like this that make me look at tasks such as this one, that seem and are complex, as achievable challenges.
“There’s a school of thought that says that to fully understand something, you need to build it yourself.”
Genetic engineering is going to be SO MUCH fun.
I am tempted to grumble about the 1K challenge, but I won’t — though it doesn’t appeal to me. The sort of coding tricks and skills involved in that sort of thing just aren’t what I want to hone in my skill set. But I only complain if it is an artificial restriction (like shuffling a deck of cards with one hand tied behind your back). If you actually must cram your code into 1K and there is no way around it, that is a different bag of worms. In the case of AVR, just say no and get an ARM.
Get an ARM with Ethernet peripheral.
Here’s the deal: the limited-resources challenges push people to do more with less, which in many cases inspires creativity. And really, the word “challenge” is in the name.
Some people climb Mt Everest. Some people run 26.2 miles, only to end up (futility!) right where they started. Don’t get me started on golf — there has to be a more efficient way to put balls in holes.
(Some people enjoy challenges. Humans!)
But really. Have a look at the 1 Square Inch or 1 kB challenge results. There is a fantastic density of great projects that came out of them. If you’re willing to go meta with me — pretend that the goal was to add to the universe’s supply of awesome, useful, open projects. Imposing the constraints seems to have fooled a bunch of people into doing great work, and enjoying themselves along the way. It’s more productive than running marathons, anyway.
Articles like this one are why I still read Hackaday. Well done (again!), Elliot!
It wasn’t me! [Tim] kept writing me e-mails (ok, one) until I wrote it up. :)
a) nice bootloader
b) by god that is a horribly wrong description of how the bottom layers of the internet work
Reminds me of a 3kB DHCP/TFTP bootloader (4kB if you include Optiboot and the stage 1 bootloader / flasher) I wrote for the Etherten (ATMega32 + W5100) a few years ago. It looks like they didn’t implement DHCP – probably because it wouldn’t have fit in the 1kB required.