Forum: Digitale Signalverarbeitung / DSP / Machine Learning Blackfin (537-STAMP, 537-EZKIT) - uCLinux in Flash schreiben


von Robert (Gast)


Lesenswert?

Hallo Blackfin-Kenner!

Ich habe hier zwei Blackfin-Boards mit dem 537 liegen (STAMP und EZKIT) 
die ich gerne in einem ersten Schritt einfach mit einem fertigen 
uCLinux-Image versorgen würde.

Habe es per serieller Schnittstelle geschafft ein fertiges uBoot-Image 
serial aufzuspielen und zu flashen, sprich ich kann nun im Bootmode 0 
starten. Dann per TFTP ein fertiges Image (sowohl 
uImage-537-stamp-2008R1.5-RC3 (komprimiert) als auch 
linux-537-stamp-2008R1.5-RC3.bin) an 0x1000000 laden und per bootm bzw. 
bootelf starten.

Was nicht geht ist: Das Image irgendwie in den Flash zu schreiben um das 
Board standalone nutzen zu können! Auf blackfin.uclinux.org und auch per 
google finde ich dazu nichts! Auch das "spraaa0a.pdf" von TI nutzt mir 
nichts da ich die verwendeten Befehle nicht im Image habe. Sind die 
fertigen Images wirklich nur als "remote"-Images brauchbar?

Würde mich riesig über eine kleine Hilfestellung freuen wie ich die 
Dinger mit einem uCLinux und funktionierendem Dateisystem ausstatte!

Danke!

Gruß
Robert

von hmk (Gast)


Lesenswert?

hasse den Flash auch geunlocked?
In u-boot mal "help unlock" eingeben ;)

von Robert (Gast)


Lesenswert?

Hallo!

Den Schreibschutz musste ich ja schon zum schreiben des u-Boot aufheben 
(protect all off). Mir ist unklar wie es dann weitergeht? Installiere 
ich das Linux-Image mittels U-Boot (cp.b etc.) oder mittels eines im 
Speicher gebooteten Linux (nandflash etc. - was aber scheinbar in den 
Images nicht enthalten ist). Woher weiß ich welche Partition ich in 
welchen Flash-Bereich schreiben soll/darf?

Gruß
Robert

von Strubi (Gast)


Lesenswert?

Hi Robert,

Das uImage-* knallst Du ab der Adresse $addr (siehe unten) ins Flash. 
Nand-Flashes sind eine andere Geschichte.
Das wird dann per 'bootm $(addr)' vom bootscript "flashboot" (siehe 
obige header-Datei) gebootet.
Das uImage ist ein komplettes Ramdisk-Image. Darin ist das Kernel und 
root file system enthalten (komprimiert).
Die Frage nach $addr: u-boot belegt inkl. environment normalerweise 
0x40000 Bytes (siehe 'update'-script im obigen config header).
Also solltest Du so weiterkommen (nach protect off):

bfin> cp.b $(geladenes image) 0x20040000 $(filesize)
bfin> bootm 0x20040000

(Checken, ob filesize auch beim TFTP richtig gesetzt wird)

Falls Du root-FS auf dem Flash im JFFS2-Format haben willst, musst Du 
vmImage (kernel) und rootfs.jffs2 getrennt erzeugen, wie auch die 
bootargs  und fuer dein Board die Flash-Partitionstabelle anpassen 
(linux-2.6.x/arch/blackfin/mach-bf537/boards/stamp.c). Wie das geht, 
sollte unter docs.blackfin.uclinux.org (auf englisch) beschrieben sein.

Gruss,

- Strubi

von Robert (Gast)


Lesenswert?

Hallo Strubi,

vielen Dank für Deine Hilfe. Habe versucht die von Dir angegebenen 
Schritte nachzuvollziehen, leider kommt es zu einer Fehlermeldung:
1
bfin> flinfo
2
3
Bank # 1: CFI conformant FLASH (16 x 16)  Size: 4 MB in 67 Sectors
4
 Erase timeout 16384 ms, write timeout 1 ms, buffer write timeout 1 ms, buffer size 1
5
  Sector Start Addresses:
6
    20000000      20004000      20006000      20008000      20010000
7
    20020000      20030000      20040000      20050000      20060000
8
    20070000      20080000      20090000      200A0000      200B0000
9
    200C0000      200D0000      200E0000      200F0000      20100000
10
    20110000      20120000      20130000      20140000      20150000
11
    20160000      20170000      20180000      20190000      201A0000
12
    201B0000      201C0000      201D0000      201E0000      201F0000
13
    20200000      20210000      20220000      20230000      20240000
14
    20250000      20260000      20270000      20280000      20290000
15
    202A0000      202B0000      202C0000      202D0000      202E0000
16
    202F0000      20300000      20310000      20320000      20330000
17
    20340000      20350000      20360000      20370000      20380000
18
    20390000      203A0000      203B0000      203C0000      203D0000
19
    203E0000      203F0000
20
bfin> tftp 0x1000000 uImage-bf537-stamp-2008R1.5-RC3
21
Using Blackfin EMAC device
22
TFTP from server 192.168.178.33; our IP address is 192.168.178.51
23
Filename 'uImage-bf537-stamp-2008R1.5-RC3'.
24
Load address: 0x1000000
25
Loading: #################################################################
26
         #################################################################
27
         #################################################################
28
         #################################################################
29
         #################################################################
30
         #################################################################
31
         #################################################################
32
         #################################################################
33
         #################################################################
34
         #################################################################
35
         #################################################################
36
         #################################################################
37
         ##############################################
38
done
39
Bytes transferred = 4228798 (4086be hex)
40
bfin>protect off all
41
Un-Protect Flash Bank # 1
42
................................................................... done
43
bfin> cp.b 0x1000000 0x20040000 $(filesize)
44
Copy to Flash... Outside available Flash

Hast du eine Idee woran das liegen könnte? Das Image ist ja angeblich 
extra für das Board - kann es sein dass ich trotzdem zu wenig Flash 
habe?

Wenn ich Dirch richtig verstehe komme ich nur durch 
Modifikationen/Selbstkompilieren zu einem Linux mit persistentem 
Dateisystem? Ist dieser "Wunsch" für Leute die mit den Blackfins 
arbeiten ungewüöhnlich oder warum wird dies nicht auf zig Internetseiten 
erklärt bzw. mit den Images unterstützt?

Gruß
Robert

von Strubi (Gast)


Lesenswert?

Hi Robert,

hmm. Das ist etwas pfui - das Image ist in der Tat zu gross fuer die 4MB 
des Parallel-Flash. Irgendwer hat sich da entweder nichts bei gedacht, 
oder es gibt ein alternatives uImage binary fuer die uebliche 
Flash-Groesse (sollte auf jeden Fall unter 2.5 MB liegen), oder ich bin 
punkto etwas anderes bloed oder blind :-)
Zur letzteren Frage: Die von blackfin.uclinux.org vertretene Politik 
ist, um die Kosten niedrig zu halten: Do it yourself. Deswegen werden 
ev. nicht alle Releases gleich gruendlich auf Anwendbarkeit getestet, 
sondern vom User erwartet, dass er sich sein System selber konfiguriert 
und baut. Im Endeffekt kommt man beim Produktdesign darum ja auch nicht 
herum.
Fuer alle moeglichen Wunschkonfigurationen die Images zu bauen und zu 
testen waere ein supporttechnischer Killer. Drum eben die 
docs.blackfin.uclinux.org, wo im Prinzip alles beschrieben steht.

Probier sonst mal einen 'snapshot' von:

http://blackfin.uclinux.org/gf/project/uclinux-dist/frs


Gruss,

- Strubi

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.