Quantcast
Channel: Cemetech
Viewing all articles
Browse latest Browse all 75338

Electronics/Hardware Development :: Flash A13 Android Dev Board NAND

$
0
0
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:
/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!


Viewing all articles
Browse latest Browse all 75338

Trending Articles