[RFC] Re: TP link MR3220 status, boot from flash via u-boot question
Aleksandr Rybalko
ray at ddteam.net
Thu Mar 31 21:57:49 UTC 2011
On Thu, 31 Mar 2011 14:26:40 +0200
Milan Obuch <freebsd-mips at dino.sk> wrote:
> On Thu, 31 Mar 2011 18:39:36 +0800, Adrian Chadd <adrian at freebsd.org>
> wrote:
>
> > Hi,
> >
> > I've got freebsd working on the WR-1043ND which is a tplink 11n
> > router w/ uboot. I'll go find my notes and put them online, along
> > with a config file and whatever else is needed.
> >
>
> Hi,
> I am watching freebsd-wifi-build on googlecode and just noticed new
> config there... Is your 11n wifi already working too? I would be glad
> to compare your results with mine, so we could unify our efforts.
> Right now, kernel load from flash in u-boot is a show stopper for me,
> so if you could address this one first, it would help me really much.
Draft for wiki page 'Run from NOR flash with U-Boot'
Keywords: U-Boot, embedded
1. Ask U-Boot: "what do you support to boot?"
Normally, U-Boot use special image for kernel/ramfs packing. But we
need to know which compression support U-Boot that fleshed to our
target board.
First way:
use mkimage utility (/usr/ports/devel/u-boot) and make test
images for all supported by mkimage compression types.
<code>
mkimage -A ${TARGET} -O linux -T kernel \
-C ${COMPRESSION_TYPE} \
-a ${RAM_START_ADDRESS} \
-e ${RAM_START_ADDRESS} \
-n 'FreeBSD Kernel Image' \
-d SOME_SMALL_FILE_NAME \
test.uboot
</code>
Then for each file, do transfer to board and run from image with
`bootm' command. And check what U-Boot answer you, if answer like
"Unimplemented compression type ?", then you know :).
Second way:
>From running Linux or U-Boot get first 64k block from kernel partition
in flash.
Break your mkimage utility: avoid exit when we do "show info" (key -i)
CRC failed. And check compression type of 64k file we get from device.
Or just delete U-Boot image header from file
<code>
dd if=64k.file of=just_kern bs=64 skip=1
</code>
and check with file(1) utility
2. Create image
2.1. More canonical way, we have mkimage, gzip or bz2 and compiled
kernel, maybe kernel.bin also.
<code>
gzip --best --force vmlinux.bin
</code>
for ELF kernel:
<code>
mkimage -A mips -O linux -T kernel \
-C gzip \
-a ${LOAD_ADDRESS} \
-e ${START_ADDRESS} \
-n 'FreeBSD Kernel Image' \
-d kernel \
kernel.uboot
</code>
LOAD_ADDRESS - in most cases this is RAM base address
START_ADDRESS = LOAD_ADDRESS + ELF_HEADER_SIZE (0x1000 for ELF image)
for kernel.bin:
LOAD_ADDRESS = RAM_BASE_ADDRESS + 0x1000
START_ADDRESS = RAM_BASE_ADDRESS + 0x1000
Don't forget to check/change KERNLOADADDR of kernel config file.
KERNLOADADDR must be equal to START_ADDRESS.
2.2. Longest way, but have smallest footprint, used only if
U-Boot support LZMA.
Problem 1: Current version of mkimage from ports, don't support LZMA.
So we need new: http://my.ddteam.net/files/u-boot.new.tar.gz
Problem 2: Devices I know support only old LZMA.
I use LZMA 4.17.
Then mkimage, like in 2.2., but -C lzma.
3. Now we have kernel U-Boot image, so transfer it to device and try
with `bootm' command.
4. If all fine, write image to flash kernel partition.
Hope this help :)
>
> > I'll have to commit a dirty hack to the kernel config to let users
> > set the flash address to yank the ethernet MAC address from. Ew.
> >
>
> I've got most of my patches from Luiz (loos), maybe you are in contact
> already... I use already the same MAC as other firmwares do.
>
> Regards,
> Milan
> _______________________________________________
> freebsd-mips at freebsd.org mailing list
> http://lists.freebsd.org/mailman/listinfo/freebsd-mips
> To unsubscribe, send any mail to
> "freebsd-mips-unsubscribe at freebsd.org"
Wait for comments!
WBW
--
Aleksandr Rybalko <ray at ddteam.net>
More information about the freebsd-mips
mailing list