As for the offsets, there's a script in /etc, I think it was in /etc/init.d, named "functions" (with .sh suffix?) It contains the "offset wisdom":
MOVINAND_OFFSET_PARTITION=0 #0x00000000 Partition Map
MOVINAND_OFFSET_HEADER=1024 #0x00000400 DCD Header
MOVINAND_OFFSET_U_BOOT=3072 #0x00000C00 Boot Loader
MOVINAND_OFFSET_KERNEL=266240 #0x00041000 Linux Kernel
MOVINAND_OFFSET_ISISWF=3674112 #0x00381000 ISIS Waveform
MOVINAND_OFFSET_ROOTFS=3936256 #0x003C1000 Root filesystem
For ATK the hexadecimal offsets in the comments apply. Also, it shows the maximum kernel size, (3674112-266240=) 3407872 bytes.
The "root filesystem" offset is also the offset of partition 1.
I've successfully flashed kernels as well as a full root filesystem with ATK, the latter took about 2.5 hours. It can easily be checked if the kernel is running well by dropping into the rescue menu (hold ENTER pressed on boot). That user interface is coming from the initramfs, which is included in the kernel image.
As for charging, I don't really have a clue right now.
I will check the md5sum of yifanlu's kernel's uImage when I'm back home at my developing machine, on monday (CEST).