First I would like to acknowledge the work of those people who made the original blob a reality...
What have I changed in blob?
1. flash
Well, firstly, the flash memory handling has been updated to allow
for Atmel flash.
This means that a different command set is used for erasing and programming
the flash.
Here is the Atmel flash command set for AT40BV004, AT40BV004A, AT40BV4096,
AT40BV4096A;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Also, my system does not automatically erase before programming (since my kernel and ramdisk must live in the same flash sector). Erase is accomplished through a separate menu choice.
There are also 3 new subroutines in flash.c. These are as follows;
void flashwrite(const u32 address, u32 data)
This just writes the passed data to the passed address (to save time
worrying about casts and pointers)
const u32 flashread(const u32 address)
Reads and returns the content of the passed address
void IdentifyFlash(int type)
Returns the manufacturer code (type=0) and device code (type=1) of
the flash memory (but assumes it is Atmel flash all the same...).
2. Menu
This now has a few extra entries to;
- read the device and manufacturer code of the flash memory
- erase the entire flash memory device (apart from the boot block)
All in all, this probably won't work on a LART anymore due to my hacking,
but it is concevable that it is useful to
somebody else who's using Atmel flash.
For what it's worth, a zipfile is here which
contains those few files I've altered over and above the original blob2.02