Перейти к содержанию
    

Использование ROM на TI CC3200

Моя программа не помещается в памяти на проце со 128 кб памяти

хочу часть функций из driverlib перетащить во внутренний ROM

компилятор IAR (часто файла линкера)

 

// Define a region for the on-chip flash.

define region FLASH = mem:[from 0x01000000 to 0x0100FFFF];

 

в Programmer's guide раздел 6 ROM service

делаю как там написано - ставлю директивы:

TARGET_IS_CC3200

CC3200_ES_1_2_1=0 чтобы использовать проц со 128 к байт памяти минус 16 кб на loader

заодно в опциях линкера ставлю генерацию MAP файла

после генерации сморю ничего не поменялось - все функции и константы остались в RAM

Ставлю Flash=1 в опциях линкера чтобы часто кода записалась в ROM с адресов

в линкерной мап файле - есть, часто функций там прописалась, однако загрузить не могу - ошибка линкера

далее сморю в документации - ROM начинается с адреса 0x000000 а не с 0x01000000

подумал - ошибка, исправил на 0, перекомпилировал,

но снова загрущить не могу.

Вернул все назад, чтобы попробовать запистать все в RAM? откомпилировал, пытаюсь загрузить - ошибка загрузки

вероятно каким то образом переписал loader

Вообще, его можно вернуть или надо проц новый паять

и как вообще использовать ROM сервис правильно ?

 

 

 

 

 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

ну что, никто с сс3200 дела не имел?

тогда такой вопрос: возможно bootloader на нем восстановить или чип выкидывать надо а новый паять?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Ставлю Flash=1 в опциях линкера чтобы часто кода записалась в ROM с адресов

Интересно - как это Вы умудрились что-то записать в ReadOnlyMemory ???

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Интересно - как это Вы умудрились что-то записать в ReadOnlyMemory ???

так как в даташите написано,

там сказано как сделать так, чтобы driverlib оказалось в ROM

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

там сказано как сделать так, чтобы driverlib оказалось в ROM

 

Скорее всего там написано, как использовать driverlib, уже лежащую в ROM.

А оказывается оно там на заводе.

 

Собственно:

5.8.2.2 ROM

The internal zero-wait-state ROM of the CC3200 device is at address 0x0000 0000 of the device memory

and programmed with the following components:

• Bootloader

• Peripheral driver library (DriverLib) release for product-specific peripherals and interfaces

 

И далее:

The DriverLib APIs in ROM can be called by applications to reduce flash memory requirements and free

the flash memory to be used for other purposes.

 

Т.е. с целью минимизирование использования флеши, можно использовать DriverLib из ROM, используя соответствующие API.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Скорее всего там написано, как использовать driverlib, уже лежащую в ROM.

А оказывается оно там на заводе.

 

Собственно:

5.8.2.2 ROM

The internal zero-wait-state ROM of the CC3200 device is at address 0x0000 0000 of the device memory

and programmed with the following components:

• Bootloader

• Peripheral driver library (DriverLib) release for product-specific peripherals and interfaces

 

И далее:

The DriverLib APIs in ROM can be called by applications to reduce flash memory requirements and free

the flash memory to be used for other purposes.

 

Т.е. с целью минимизирование использования флеши, можно использовать DriverLib из ROM, используя соответствующие API.

Спасиб, я понял.

накололся...

получается что своими телодвидениями я мог loader загубить,

у меня еще пара вопросов:

1) возможно loader восставновить ?

2) что за адреса в linker файле, который идут вместе с IAR ?

 

//
// Define a memory region that covers the entire 4 GB addressable space of the
// processor.
//
define memory mem with size = 4G;

//
// Define a region for the on-chip flash.
//
define region FLASH = mem:[from 0x01000000 to 0x0100FFFF];

//
// Define a region for the on-chip SRAM.
// SRAM size of 240KB for CC3200 ES 1.33 device
define region SRAM = mem:[from 0x20004000 to 0x2003C000];

//
// Define a block for the heap.  The size should be set to something other
// than zero if things in the C library that require the heap are used.
//
define block HEAP with alignment = 8, size = 0x00008000 { };
keep {readonly section .cmdtbl};
define block CmdTbl {section .cmdtbl };

//
// Indicate that the noinit values should be left alone.  This includes the
// stack, which if initialized will destroy the return address from the
// initialization code, causing the processor to branch to zero and fault.
//
do not initialize { section .noinit };

define block CSTACK with alignment = 8, size = 0x800 { section .stack };
do not initialize { section .stack};
place at end of SRAM { block CSTACK };

//-----------------------------------------------------------
initialize by copy { readwrite };
//-----------------------------------------------------------

//
// Place the interrupt vectors at the start of flash.
// Define Flash = 0 if application doesn't use Flash memory
// else define Flash = 1 
//

if (!isdefinedsymbol(Flash))
{
//-----------------------------------------------------------
place at start of SRAM { readonly section .intvec };
//-----------------------------------------------------------

//
// Place the remainder of the read-only items into flash.
//
place in SRAM { readonly };

//
// Place the RAM vector table at the start of SRAM.
//

//-----------------------------------------------------------
place in SRAM { section VTABLE };
//------------------------------------------------------------

//
// Place all read/write items into SRAM.
//

place in SRAM { block CmdTbl };
place in SRAM { readwrite, block HEAP };
}
else if (!Flash)
{
//-----------------------------------------------------------
place at start of SRAM { readonly section .intvec };
//-----------------------------------------------------------

//
// Place the remainder of the read-only items into flash.
//
place in SRAM { readonly };

//
// Place the RAM vector table at the start of SRAM.
//

//-----------------------------------------------------------
place in SRAM { section VTABLE };
//------------------------------------------------------------

//
// Place all read/write items into SRAM.
//

place in SRAM { block CmdTbl };
place in SRAM { readwrite, block HEAP };
}
else
{
 //-----------------------------------------------------------
 place at start of FLASH { readonly section .intvec };
 //-----------------------------------------------------------

 //
 // Place the remainder of the read-only items into flash.
 //
 place in FLASH { readonly };
 place in FLASH { block CmdTbl };

 //
 // Place the RAM vector table at the start of SRAM.
 //

 //-----------------------------------------------------------
 place in SRAM { section VTABLE };
 //------------------------------------------------------------

 //
 // Place all read/write items into SRAM.
 //
 place in SRAM { readwrite, block HEAP };
}

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

получается что своими телодвидениями я мог loader загубить

Не очень понятно как. Коль уж пишут "zero-wait-state ROM", значит это точно не флеш. То есть это mask ROM, а его никак не загубишь. Разве что молотком.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Если загрузчик не стартует, проверьте поднимается ли питание 1,2 В, и 1,9 В, которое делается внутренними преобразователями.

Запускаются ли генераторы, 32 кГц и 40 МГц.

Если их нет, то скорее всего проц на замену. По крайней мере у меня так было. Я доигрался с отсладкой, после чего проц перестал стартовать и прошиваться (не отвечает на запрос в UniFlash).

Были варианты или спаленные преобразователи по цепям от FTDI или процессор. Оказалось процессор, который после перпайки - заработал.

 

По-поводу восстановления loadera не скажу, так как не стали с этим возится. Может быть можно сформировать все питания внешними источниками и зашить его через JTAG, но этот вопрос скорее всего нужно на e2e.ti.com спрашивать.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Если загрузчик не стартует, проверьте поднимается ли питание 1,2 В, и 1,9 В, которое делается внутренними преобразователями.

Запускаются ли генераторы, 32 кГц и 40 МГц.

Если их нет, то скорее всего проц на замену. По крайней мере у меня так было. Я доигрался с отсладкой, после чего проц перестал стартовать и прошиваться (не отвечает на запрос в UniFlash).

Были варианты или спаленные преобразователи по цепям от FTDI или процессор. Оказалось процессор, который после перпайки - заработал.

 

По-поводу восстановления loadera не скажу, так как не стали с этим возится. Может быть можно сформировать все питания внешними источниками и зашить его через JTAG, но этот вопрос скорее всего нужно на e2e.ti.com спрашивать.

именно такие симптомы.

уже третий или 4-й проц так полетел.

хилые они какие то

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...