Author: swivelgames
Subject: Flash A13 Android Dev Board NAND
Posted: 02 Feb 2013 06:33:07 pm (GMT -5)
Hey guys,
I learned the hard way never to buy a dev board without first looking at its resources to make sure they have adequate documentation and support.
All that aside, I was hoping someone would be able to help me flash the NAND on the board. There are a couple avenues that I have taken, but I've gotten stuck right before completion each time. I have an image to flash, and access to the board via my 32-bit Linux PC.
The board that I have is the Olimex A13-OLinuXino-WiFi.
Here's the different methods I've attempted:
Using ADB
This is what I'm most familiar with. The only place I'm stuck is finding out what block to flash the image to.
From what I've heard...
Code:
But, I have no clue if that applies to all A13's.
My assumption is to run the following code, but... that's what it is... an assumption. Anyone able to shed some light on this?
Code:
Using LiveSuit
LiveSuit is the toolset that AllWinner released for their A1X SoCs... the problem is it seems like they only have a Windows or 64-bit Linux version. Since I'm only on 32-bit Linux, I obviously can't compile it. I've searched everywhere for a 32-bit version
Using sunxi-tools
LiveSuit utilizes sunxi-tools to flash the board. However... I can't for the life of me find any documentation surrounding it or any type of process around how to flash the board. It's all a mystery. There are two tools that I have been told to look at: nand-part and fel*. nand-part is a tool to manage the NAND partitions, while fel is a tool for writing directly to the NAND (specifying blocks, start and size).
NAND Map Memory
Code:
Is it a safe assumption that these correspond with the blocks in /dev/block/?
As in, /dev/block/nanda = bootloader, /dev/block/nadab = env?
Using awutil
A new one! AllWinner Utilities has a tool called `awflash` which is supposed to be comparable to LiveSuit and flashes using the same method. The only problem is I can't get it to compile.
Code:
Anyone able to help me out with any of these methods? You would think with four options there would be SOME sort of resource or documentation out there to help me out. But, you know...
Any help would be appreciated!
Subject: Flash A13 Android Dev Board NAND
Posted: 02 Feb 2013 06:33:07 pm (GMT -5)
Hey guys,
I learned the hard way never to buy a dev board without first looking at its resources to make sure they have adequate documentation and support.
All that aside, I was hoping someone would be able to help me flash the NAND on the board. There are a couple avenues that I have taken, but I've gotten stuck right before completion each time. I have an image to flash, and access to the board via my 32-bit Linux PC.
The board that I have is the Olimex A13-OLinuXino-WiFi.
Here's the different methods I've attempted:
Using ADB
This is what I'm most familiar with. The only place I'm stuck is finding out what block to flash the image to.
From what I've heard...
Code:
/dev/block/nanda bootloader
/dev/block/nandc boot
/dev/block/nandg recovery
But, I have no clue if that applies to all A13's.
My assumption is to run the following code, but... that's what it is... an assumption. Anyone able to shed some light on this?
Code:
cat /sdcard/imagefile.img > /dev/block/nand<1?>
sync; sync; sync
echo -n boot | busybox dd of=/dev/block/nand<2?> count=1 conv=sync; sync
Using LiveSuit
LiveSuit is the toolset that AllWinner released for their A1X SoCs... the problem is it seems like they only have a Windows or 64-bit Linux version. Since I'm only on 32-bit Linux, I obviously can't compile it. I've searched everywhere for a 32-bit version
Using sunxi-tools
LiveSuit utilizes sunxi-tools to flash the board. However... I can't for the life of me find any documentation surrounding it or any type of process around how to flash the board. It's all a mystery. There are two tools that I have been told to look at: nand-part and fel*. nand-part is a tool to manage the NAND partitions, while fel is a tool for writing directly to the NAND (specifying blocks, start and size).
NAND Map Memory
Code:
-name- -start- -size-
bootloader : 100000 1000000
env : 1100000 200000
boot : 1300000 2000000
system : 3300000 10000000
data : 13300000 20000000
misc : 33300000 100000
recovery : 33400000 2000000
cache : 35400000 10000000
UDISK : 45400000 a8400000
Is it a safe assumption that these correspond with the blocks in /dev/block/?
As in, /dev/block/nanda = bootloader, /dev/block/nadab = env?
Using awutil
A new one! AllWinner Utilities has a tool called `awflash` which is supposed to be comparable to LiveSuit and flashes using the same method. The only problem is I can't get it to compile.
Code:
swivel-mac:awflash swivelgames$ make -k awflash
cc -I/Developer/Platforms/.de650d.245/.de650d.244/SDKs/iPhoneSimulator4.1.sdk/usr/include/pcap/ -L/usr/local/lib -Wall -o awflash awflash.c -lusb
awflash.c:67: error: expected =, ,, ;, asm or __attribute__ before * token
awflash.c:114: warning: struct usb_dev_handle declared inside parameter list
awflash.c:114: warning: its scope is only this definition or declaration, which is probably not what you want
awflash.c: In function fex_xfer:
awflash.c:137: warning: implicit declaration of function usb_bulk_write
awflash.c:144: warning: implicit declaration of function usb_bulk_read
awflash.c: At top level:
awflash.c:172: warning: struct usb_dev_handle declared inside parameter list
awflash.c: In function fex_command:
awflash.c:174: warning: passing argument 1 of fex_xfer from incompatible pointer type
awflash.c:182: warning: passing argument 1 of fex_xfer from incompatible pointer type
awflash.c:199: warning: passing argument 1 of fex_xfer from incompatible pointer type
awflash.c:209: warning: passing argument 1 of fex_xfer from incompatible pointer type
awflash.c:221: warning: passing argument 1 of fex_xfer from incompatible pointer type
awflash.c:230: warning: passing argument 1 of fex_xfer from incompatible pointer type
awflash.c:240: warning: passing argument 1 of fex_xfer from incompatible pointer type
awflash.c:245: warning: passing argument 1 of fex_xfer from incompatible pointer type
awflash.c:257: warning: passing argument 1 of fex_xfer from incompatible pointer type
awflash.c:274: warning: passing argument 1 of fex_xfer from incompatible pointer type
awflash.c:280: warning: passing argument 1 of fex_xfer from incompatible pointer type
awflash.c:296: warning: passing argument 1 of fex_xfer from incompatible pointer type
awflash.c: In function main:
awflash.c:358: warning: implicit declaration of function usb_init
awflash.c:360: warning: implicit declaration of function usb_set_debug
awflash.c:362: warning: implicit declaration of function locate_device
awflash.c:362: warning: assignment makes pointer from integer without a cast
awflash.c:367: warning: implicit declaration of function usb_set_configuration
awflash.c:371: warning: implicit declaration of function usb_claim_interface
awflash.c:375: warning: implicit declaration of function usb_set_altinterface
awflash.c:417: warning: passing argument 1 of fex_xfer from incompatible pointer type
awflash.c:420: warning: passing argument 1 of fex_xfer from incompatible pointer type
awflash.c:423: warning: passing argument 1 of fex_xfer from incompatible pointer type
make: *** [awflash] Error 1
Anyone able to help me out with any of these methods? You would think with four options there would be SOME sort of resource or documentation out there to help me out. But, you know...
Any help would be appreciated!