Actually, it's not really firmware in the EEPROM sense, but more part of the bootstrap system on the SD card.
This is a *good* thing as it makes it a lot harder to brick your Pi.
This guide is copied from pixelami's blog http://blog.pixelami.com/2012/06/raspberry-pi-firmware-update-for-debian-squeeze/.
I claim no credit for it and am just mirroring it to keep all my Pi information in one place.
Step 1: Install pre-requisites (ca-certificates and git-core)
sudo apt-get install ca-certificates
sudo apt-get install git-core
sudo apt-get install git-core
Step 2: Download rpi-update using wget and copy to /usr/bin and chmod it executable
#NOTE THAT THE LETTER AFTER THE CAPITAL B IS A CAPITAL O NOT A ZERO
sudo wget http://goo.gl/1BOfJ -O /usr/bin/rpi-update
sudo chmod +x /usr/bin/rpi-update
sudo wget http://goo.gl/1BOfJ -O /usr/bin/rpi-update
sudo chmod +x /usr/bin/rpi-update
Step 3: Run rpi-update
sudo rpi-update
Raspberry Pi firmware updater by Hexxeh, enhanced by AndrewS
Performing self-update
Autodetecting memory split
Using ARM/GPU memory split of 192MB/64MB
We're running for the first time
Setting up firmware (this will take a few minutes)
Using SoftFP libraries
/opt/vc/sbin/vcfiled: error while loading shared libraries: libvchiq_arm.so: cannot open shared object file: No such file or directory
If no errors appeared, your firmware was successfully setup
A reboot is needed to activate the new firmware
Raspberry Pi firmware updater by Hexxeh, enhanced by AndrewS
Performing self-update
Autodetecting memory split
Using ARM/GPU memory split of 192MB/64MB
We're running for the first time
Setting up firmware (this will take a few minutes)
Using SoftFP libraries
/opt/vc/sbin/vcfiled: error while loading shared libraries: libvchiq_arm.so: cannot open shared object file: No such file or directory
If no errors appeared, your firmware was successfully setup
A reboot is needed to activate the new firmware
Now according to pixelami, you need to run ldconfig and the rpi-update again to complete the update.
Step 4: Run ldconfig (updates links and cache for shared library objects) then re-run rpi-update
sudo ldconfig
sudo rpi-update
Raspberry Pi firmware updater by Hexxeh, enhanced by AndrewS
Performing self-update
Autodetecting memory split
Using ARM/GPU memory split of 192MB/64MB
Updating firmware (this will take a few minutes)
Your firmware is already up to date
sudo reboot
sudo rpi-update
Raspberry Pi firmware updater by Hexxeh, enhanced by AndrewS
Performing self-update
Autodetecting memory split
Using ARM/GPU memory split of 192MB/64MB
Updating firmware (this will take a few minutes)
Your firmware is already up to date
sudo reboot
NB: The rpi-update script updates the firmware, /boot/kernel.img, and /lib/modules
There are parameters that allow you to update just the firmware.
See https://github.com/Hexxeh/rpi-update for the manual on rpi-update