Interni pameti AM3358

Jaroslav Buchta jaroslav.buchta na hascomp.cz
Pátek Květen 15 17:51:03 CEST 2015


Uz je to dele co jsem se tim zabyval ale ty RAM pameti jsou na ruznych 
sbernicich, procesor ma pristup do obou ale nektere periferie myslim jen 
do jedne. Taky cache je myslim funkcni jen pro jednu. Taky Open OCD 
debugger mel pristup jen do jedne.
Dokumentace k temhle procesorum je ale lahudka, ze, neco podstatneho 
najit v te hromade textu... ;-)

Dne 15. 5. 2015 v 17:34 Pavel Hudeček napsal(a):
> Je to kap. 2.1 ARM Cortex-A8 Memory Map.
> Tučná ROM by měla být na adrese 0x40000000 s délkou 128+48 kB
>
> Tak díky Davidovi jsem se podíval do cmd od bootloaderu a tam ty RAMky mají deklarované dohromady jako jednu o velikosti 127 kB. Tím méně je mi pak jasné, proč v tom DS rozlišují "SRAM internal" a "L3 OCMC0".
>
> A aby to bylo zajímavější, tak Demo ve Starterwaru zase hned ze začátku vezme data z DDR a hodí do té "SRAM internal". Potom ovšem neudělá nic dalšího, co by tam převedlo běh programu.
>
> Takže napřed je tu boot.cmd:
>
> -stack  0x0008                             /* SOFTWARE STACK SIZE           */
> -heap   0x2000                             /* HEAP AREA SIZE                */
> -e Entry
> --diag_suppress=10063
>
> MEMORY {
>          IRAM_MEM        : org = 0x402F0400  len = 0x1FBFF            /* RAM */
> }
>
> SECTIONS {
>      .init    : {
>                   bl_init.obj (.text)
>                 } load > 0x402F0400
>
>      .text    : load > IRAM_MEM              /* CODE                         */
>      .data    : load > IRAM_MEM              /* INITIALIZED GLOBAL AND STATIC VARIABLES. */
>      .bss     : load > IRAM_MEM              /* UNINITIALIZED OR ZERO INITIALIZED */
>                                              /* GLOBAL & STATIC VARIABLES.   */
>                      RUN_START(bss_start)
>                      RUN_END(bss_end)
>      .const   : load > IRAM_MEM              /* GLOBAL CONSTANTS             */
>      .cinit   : load > IRAM_MEM
>      .stack   : load > 0x4030FFF0            /* SOFTWARE SYSTEM STACK        */
> }
> ---------------------------
> Pak bootloader a main v něm na závěr udělá:
>
> appEntry = (void (*)(void)) 0x80000000;
> (*appEntry)();
>
> ---------------------------
> Nyní přichází na řadu demo.cmd:
>
> -stack  0x0008                             /* SOFTWARE STACK SIZE           */
> -heap   0x2000                             /* HEAP AREA SIZE                */
> -e Entry
> --diag_suppress=10063
>
> MEMORY {
>          INT_MEM        : org = 0x40300000  len = 0x000FFFF           /* RAM */
>          DDR_MEM        : org = 0x80000000  len = 0x7FFFFFF           /* RAM */
> }
>
> SECTIONS {
>      .text:Entry : load > 0x80000000
>
>      GROUP {
>           IRAM_CODE : { }
>           IRAM_DATA : { }
>      }load=DDR_MEM, run=INT_MEM, START(iram_start), SIZE(iram_size), RUN_START(relocstart)
>
>      .text    : load > DDR_MEM              /* CODE                          */
>      .data    : load > DDR_MEM              /* INITIALIZED GLOBAL AND STATIC VARIABLES */
>      .bss     : type = NOLOAD               /* UNINITIALIZED OR ZERO INITIAILZED */
>                                             /* GLOBAL AND STATIC VARIABLES  */
>                      RUN_START(bss_start)
>                      RUN_END(bss_end)
>      .const   : load > DDR_MEM              /* GLOBAL CONSTANTS              */
>      .stack   : load > 0x87FFFFF0           /* SOFTWARE SYSTEM STACK         */
> }
> Zde mě poněkud překvapil -stack  0x0008: Není to málo?
> V mém projektu jsem to změnil na 10485760 a .stack:load jsem změnil na 0x90000000-10485760-8 (bez těch -8 byl kupodivu error) a heap jsem zvětšil na 104857600, tedy 100M (mám 256 MB DDR)
> ---------------------------
> A pak je main v demoMain.c a v něm:
>
> /* Relocate the required section to internal RAM */
> memcpy((void *)(&relocstart), (const void *)(&iram_start), (unsigned int)(&iram_size));
>
> ---------------------------
> Ale pak prostě main pokračuje dál a nikde nic, co by předalo řízení do té INT_MEM. Jsem z toho zmaten.
>
> PH
>
> Od: Jan Waclawek
> Tu je tucna ROM z ktorej to bootuje (mimochodom, pripojena rovnako ako ta
> "SRAM internal". Este by ma neprekvapilo, kebyze je v tej internej SRAM
> umiestnovany stack.
>
> PS. u datasheetov je dobrym zvykom uvadzat reviziu a neodkazovat sa na
> cisla stran ale na mena kapitol, tabuliek apod. - ja tu mam spruh73K, a na
> str.168 akurat konci obsah.
>
> ----- Original Message ---------------
>> Jestli se nemylim, tak ta interni RAM se pouziva k nahrani a spusteni
>> sekundarniho bootloaderu. Ten teprve inicializuje DDR, nahrava
>> (...dlouhou baremetal) aplikaci do DDR a pak ji spousti.
>> .d.
>>
>> Pavel Hudeček  writes:
>>> V DS od AM3358 (konkrétně ve spruh73 na straně 168) jsou  v Memory map uvedeny:
>>>
>>> SRAM internal 402F0400-402FFFFF
>>> L3 OCMC0     40300000-4030_FFFF
>>>
>>> Logicky bych očekával, ľe první poloľka je normální RAM pro běľné pouľití a s tím druhým to bude nějaké jiné. Ale ve Starterwaru mají cmd, ve kterém je:
>>>
>>> MEMORY {
>>>     INT_MEM: org = 0x40300000  len = 0x000FFFF           /* RAM */
>>>     DDR_MEM: org = 0x80000000  len = 0x7FFFFFF           /* RAM */
>>> }
>>> a o té první nic
>>>
>>> Kdyľ udělám nový projekt, je v něm AM3358.cmd a ten obsahuje:
>>>      SRAM:     o = 0x402F0400  l = 0x0000FC00  /* 64kB internal SRAM */
>>>      L3OCMC0:  o = 0x40300000  l = 0x00010000  /* 64kB L3 OCMC SRAM */
>>>      M3SHUMEM: o = 0x44D00000  l = 0x00004000  /* 16kB M3 Shared Unified Code Space */
>>>      M3SHDMEM: o = 0x44D80000  l = 0x00002000  /* 8kB M3 Shared Data Memory */
>>>      DDR0:     o = 0x80000000  l = 0x40000000  /* 1GB external DDR Bank 0 */
>>>
>>> a dále v SECTIONS vąe vyuľívá L3OCMC0
>>>
>>> Jak to s tím tedy je? K čemu slouľí ta "SRAM internal"?
> _______________________________________________
> HW-list mailing list  -  sponsored by www.HW.cz
> Hw-list na list.hw.cz
> http://list.hw.cz/mailman/listinfo/hw-list


---
This email has been checked for viruses by Avast antivirus software.
http://www.avast.com



Další informace o konferenci Hw-list