реклама на сайте
подробности

 
 
> ADSP-21160 и malloc, куда разместит указатель?
PoDoNoK
сообщение Jan 5 2006, 13:01
Сообщение #1





Группа: Новичок
Сообщений: 10
Регистрация: 13-10-05
Из: Москва
Пользователь №: 9 584



Здравствуйте!
Пришлось перелезать с 2181 на 21160 и возникает куча вопросов.
В среде VDSP 2.0 SHARK появилось очень многое. Например карта памяти (*.LDF)
Теперь, возникает простейшая задача, нужно разместить в памяти массив и с ним работать долгое время. Достался мне в наследство проект со статическими адресами. Теперь меня интересует, когда я пишу нечто:

double* v=(double *)malloc(KOL_ANGLE*urr[URR_KKD]);

, где он разместит переменную v?

Привожу листинг LDF файла:
Код
ARCHITECTURE(ADSP-21160)

// ADSP-21160 Memory Map:
//   ------------------------------------------------
//   Internal memory  0x0000 0000 to 0x000f ffff
//   ------------------------------------------------
//                    0x0000 0000 to 0x0000 0?ff  IOP Regs
//                    0x0000 0?00 to 0x0001 ffff  (reserved)
//           Block 0  0x0002 0000 to 0x0002 7fff  Long Word (64) Addresses
//           Block 1  0x0002 8000 to 0x0002 ffff  Long Word (64) Addresses
//                    0x0003 0000 to 0x0003 ffff  (reserved)
//           Block 0  0x0004 0000 to 0x0004 ffff  Normal Word (32/48) Addresses
//           Block 1  0x0005 0000 to 0x0005 ffff  Normal Word (32/48) Addresses
//                    0x0006 0000 to 0x0007 ffff  (reserved)
//           Block 0  0x0008 0000 to 0x0009 ffff  Short Word (16) Addresses
//           Block 1  0x000a 0000 to 0x000b ffff  Short Word (16) Addresses
//                    0x000c 0000 to 0x000f ffff  (reserved)
//   ------------------------------------------------
//   Multiproc memory 0x0010 0000 to 0x007f ffff
//   ------------------------------------------------
//                    0x0010 0000 to 0x001f ffff  Hammerhead ID=001 Internal memory
//                    0x0020 0000 to 0x002f ffff  Hammerhead ID=010 Internal memory
//                    0x0030 0000 to 0x003f ffff  Hammerhead ID=011 Internal memory
//                    0x0040 0000 to 0x004f ffff  Hammerhead ID=100 Internal memory
//                    0x0050 0000 to 0x005f ffff  Hammerhead ID=101 Internal memory
//                    0x0060 0000 to 0x006f ffff  Hammerhead ID=110 Internal memory
//                    0x0070 0000 to 0x007f ffff  Hammerhead ID=all Internal memory
//   ------------------------------------------------
//   External memory  0x0080 0000 to 0xffff ffff
//   ------------------------------------------------
//

SEARCH_DIR( $ADI_DSP\211xx\lib )

$LIBRARIES = system.dlb, libdsp160.dlb, lib160.dlb, libc160.dlb, libio160_32.dlb , libsdsp1.dlb, libsdsp2.dlb, libsdsp3.dlb;

$OBJECTS =  $COMMAND_LINE_OBJECTS;

MEMORY
{
    seg_rth  { TYPE(PM RAM) START(0x00040000) END(0x000400ff) WIDTH(48) }
    seg_init { TYPE(PM RAM) START(0x00040100) END(0x000401FF) WIDTH(48) }
    seg_pmco { TYPE(PM RAM) START(0x00040200) END(0x00049000) WIDTH(48) }
    seg_pmda { TYPE(PM RAM) START(0x0004e800) END(0x0004f3df) WIDTH(32) }
    seg_pm_cfdn_um{ TYPE(PM RAM) START(0x0004F3E0) END(0x0004F3FF) WIDTH(32) }
    seg_pm_cfdn { TYPE(PM RAM) START(0x0004F400) END(0x0004F5FF) WIDTH(32) }
    seg_pm_bs { TYPE(PM RAM) START(0x0004F600) END(0x0004F7FF) WIDTH(32) }
                seg_idat { TYPE(PM RAM) START(0x0004f800) END(0x0004ffff) WIDTH(32) }
                seg_in   { TYPE(DM RAM) START(0x00051000) END(0x000517ff) WIDTH(32) }
                seg_rdat { TYPE(DM RAM) START(0x00051800) END(0x00051bff) WIDTH(32) }
    seg_dm_isr { TYPE(DM RAM) START(0x00054000) END(0x00054000) WIDTH(32) }
    seg_dm_cmd { TYPE(DM RAM) START(0x00054001) END(0x00054001) WIDTH(32) }
    seg_dm_state { TYPE(DM RAM) START(0x00054002) END(0x00054002) WIDTH(32) }
    seg_dm_source{ TYPE(DM RAM) START(0x00054003) END(0x00054003) WIDTH(32) }
    seg_dm_link_buf{ TYPE(DM RAM) START(0x00054004) END(0x00054004) WIDTH(32) }
    seg_dm_recieve_ack{ TYPE(DM RAM) START(0x00054005) END(0x00054005) WIDTH(32) }
    seg_dm_urr { TYPE(DM RAM) START(0x00054006) END(0x00054041) WIDTH(32) }
    seg_dm_akkr { TYPE(DM RAM) START(0x00054042) END(0x00054061) WIDTH(32) }
    seg_dm_aksr { TYPE(DM RAM) START(0x00054062) END(0x00054071) WIDTH(32) }
    seg_dm_upor { TYPE(DM RAM) START(0x00054072) END(0x000540B1) WIDTH(32) }
    seg_dm_apap { TYPE(DM RAM) START(0x000540B2) END(0x000540F1) WIDTH(32) }
    seg_dm_warning_excess { TYPE(DM RAM) START(0x000540F2) END(0x000540F2) WIDTH(32) }
    seg_dm_link_r{ TYPE(DM RAM) START(0x000545F3) END(0x000545F3) WIDTH(32) }
    seg_dm_adr_buf{ TYPE(DM RAM) START(0x000545F4) END(0x000545F4) WIDTH(32) }
    seg_dmda { TYPE(DM RAM) START(0x000545F5) END(0x00055FFF) WIDTH(32) }
    seg_twid { TYPE(DM RAM) START(0x00056000) END(0x00056fff) WIDTH(32) }
    seg_heap { TYPE(DM RAM) START(0x0005c000) END(0x0005dfff) WIDTH(32) }
    seg_addition { TYPE(DM RAM) START(0x0005e000) END(0x0005efff) WIDTH(32) }
    seg_stak { TYPE(DM RAM) START(0x0005f000) END(0x0005ffff) WIDTH(32) }
}

PROCESSOR p0
{
    LINK_AGAINST( $COMMAND_LINE_LINK_AGAINST)
    OUTPUT( $COMMAND_LINE_OUTPUT_FILE )

    SECTIONS
    {
        // .text output section
        seg_rth
        {
            INPUT_SECTIONS( $OBJECTS(seg_rth) $LIBRARIES(seg_rth))
        } >seg_rth

        seg_init
        {
            INPUT_SECTIONS( $OBJECTS(seg_init) $LIBRARIES(seg_init))
        } >seg_init

        seg_pmco
        {
            INPUT_SECTIONS( $OBJECTS(seg_pmco) $LIBRARIES(seg_pmco))
        } >seg_pmco

        seg_addition
        {
            INPUT_SECTIONS( $OBJECTS(seg_addition) $LIBRARIES(seg_addition))
        } > seg_addition


        seg_pmda
        {
            INPUT_SECTIONS( $OBJECTS(seg_pmda) $LIBRARIES(seg_pmda))
        } >seg_pmda

        seg_pm_cfdn
        {
            INPUT_SECTIONS( $OBJECTS(seg_pm_cfdn) $LIBRARIES(seg_pm_cfdn))
        } >seg_pm_cfdn

        seg_pm_cfdn_um
        {
            INPUT_SECTIONS( $OBJECTS(seg_pm_cfdn_um) $LIBRARIES(seg_pm_cfdn_um))
        } >seg_pm_cfdn_um

        seg_pm_bs
        {
            INPUT_SECTIONS( $OBJECTS(seg_pm_bs) $LIBRARIES(seg_pm_bs))
        } >seg_pm_bs


        seg_dm_isr
        {
            INPUT_SECTIONS( $OBJECTS(seg_dm_isr) $LIBRARIES(seg_dm_isr))
        } > seg_dm_isr

        seg_dm_cmd
        {
            INPUT_SECTIONS( $OBJECTS(seg_dm_cmd) $LIBRARIES(seg_dm_cmd))
        } > seg_dm_cmd

        seg_dm_state
        {
            INPUT_SECTIONS( $OBJECTS(seg_dm_state) $LIBRARIES(seg_dm_state))
        } > seg_dm_state

        seg_dm_source
        {
            INPUT_SECTIONS( $OBJECTS(seg_dm_source) $LIBRARIES(seg_dm_source))
        } > seg_dm_source

        seg_dm_link_buf
        {
            INPUT_SECTIONS( $OBJECTS(seg_dm_link_buf) $LIBRARIES(seg_dm_link_buf))
        } > seg_dm_link_buf

        seg_dm_link_r
        {
            INPUT_SECTIONS( $OBJECTS(seg_dm_link_r) $LIBRARIES(seg_dm_link_r))
        } > seg_dm_link_r

        seg_dm_adr_buf
        {
            INPUT_SECTIONS( $OBJECTS(seg_dm_adr_buf) $LIBRARIES(seg_dm_adr_buf))
        } > seg_dm_adr_buf

        seg_dm_recieve_ack
        {
            INPUT_SECTIONS( $OBJECTS(seg_dm_recieve_ack) $LIBRARIES(seg_dm_recieve_ack))
        } > seg_dm_recieve_ack

        seg_dm_urr
        {
            INPUT_SECTIONS( $OBJECTS(seg_dm_urr) $LIBRARIES(seg_dm_urr))
        } > seg_dm_urr

        seg_dm_akkr
        {
            INPUT_SECTIONS( $OBJECTS(seg_dm_akkr) $LIBRARIES(seg_dm_akkr))
        } > seg_dm_akkr

        seg_dm_aksr
        {
            INPUT_SECTIONS( $OBJECTS(seg_dm_aksr) $LIBRARIES(seg_dm_aksr))
        } > seg_dm_aksr

        seg_dm_upor
        {
            INPUT_SECTIONS( $OBJECTS(seg_dm_upor) $LIBRARIES(seg_dm_upor))
        } > seg_dm_upor

        seg_dm_apap
        {
            INPUT_SECTIONS( $OBJECTS(seg_dm_apap) $LIBRARIES(seg_dm_apap))
        } > seg_dm_apap

        seg_dm_warning_excess
        {
            INPUT_SECTIONS( $OBJECTS(seg_dm_warning_excess) $LIBRARIES(seg_dm_warning_excess))
        } > seg_dm_warning_excess


            seg_dmda
        {
            INPUT_SECTIONS( $OBJECTS(seg_dmda) $LIBRARIES(seg_dmda))
        } > seg_dmda

        seg_twid
        {
            INPUT_SECTIONS( $OBJECTS(seg_twid) $LIBRARIES(seg_twid))
        } > seg_twid

        seg_in
        {
            INPUT_SECTIONS( $OBJECTS(seg_in) $LIBRARIES(seg_in))
        } > seg_in

        seg_rdat
        {
            INPUT_SECTIONS( $OBJECTS(seg_rdat) $LIBRARIES(seg_rdat))
        } > seg_rdat

        seg_idat
        {
            INPUT_SECTIONS( $OBJECTS(seg_idat) $LIBRARIES(seg_idat))
        } > seg_idat

        stackseg
        {

            // allocate a stack for the application
            ldf_stack_space = .;
            ldf_stack_length = MEMORY_SIZEOF(seg_stak);
        } > seg_stak

        heap
        {
            // allocate a heap for the application
            ldf_heap_space = .;
            ldf_heap_end = ldf_heap_space + MEMORY_SIZEOF(seg_heap) - 1;
            ldf_heap_length = ldf_heap_end - ldf_heap_space;        
        } > seg_heap
    }
}



Я конечно могу писать в статические адреса, но не хочется так делать...........
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
olefil
сообщение Jan 8 2006, 14:37
Сообщение #2


Частый гость
**

Группа: Свой
Сообщений: 146
Регистрация: 8-12-04
Пользователь №: 1 407



На счет того, что не компилится это зря у меня с 2-ки даже в 4-ке работет. А вообще malloc как впринципе и new все в heap кладет, если сами алтернативный heap не сделали.
Go to the top of the page
 
+Quote Post
PoDoNoK
сообщение Jan 9 2006, 07:57
Сообщение #3





Группа: Новичок
Сообщений: 10
Регистрация: 13-10-05
Из: Москва
Пользователь №: 9 584



Цитата(olefil @ Jan 8 2006, 17:37) *
А вообще malloc как впринципе и new все в heap кладет, если сами алтернативный heap не сделали.

Хмммм.... и локальной и глобальной делал переменную, но кладёт он её исключительно в seg_dmda. Альтернативный хиип не делал, карта памяти представленна выше.
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 19th July 2025 - 14:41
Рейтинг@Mail.ru


Страница сгенерированна за 0.01466 секунд с 7
ELECTRONIX ©2004-2016