inventor 0 18 февраля, 2016 Опубликовано 18 февраля, 2016 · Жалоба Моя программа не помещается в памяти на проце со 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 сервис правильно ? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
inventor 0 18 февраля, 2016 Опубликовано 18 февраля, 2016 · Жалоба ну что, никто с сс3200 дела не имел? тогда такой вопрос: возможно bootloader на нем восстановить или чип выкидывать надо а новый паять? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jcxz 243 19 февраля, 2016 Опубликовано 19 февраля, 2016 · Жалоба Ставлю Flash=1 в опциях линкера чтобы часто кода записалась в ROM с адресов Интересно - как это Вы умудрились что-то записать в ReadOnlyMemory ??? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
inventor 0 19 февраля, 2016 Опубликовано 19 февраля, 2016 · Жалоба Интересно - как это Вы умудрились что-то записать в ReadOnlyMemory ??? так как в даташите написано, там сказано как сделать так, чтобы driverlib оказалось в ROM Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
NULL 0 19 февраля, 2016 Опубликовано 19 февраля, 2016 · Жалоба там сказано как сделать так, чтобы 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. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
inventor 0 19 февраля, 2016 Опубликовано 19 февраля, 2016 · Жалоба Скорее всего там написано, как использовать 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 }; } Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
scifi 1 19 февраля, 2016 Опубликовано 19 февраля, 2016 · Жалоба получается что своими телодвидениями я мог loader загубить Не очень понятно как. Коль уж пишут "zero-wait-state ROM", значит это точно не флеш. То есть это mask ROM, а его никак не загубишь. Разве что молотком. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
McSava 0 19 февраля, 2016 Опубликовано 19 февраля, 2016 · Жалоба Если загрузчик не стартует, проверьте поднимается ли питание 1,2 В, и 1,9 В, которое делается внутренними преобразователями. Запускаются ли генераторы, 32 кГц и 40 МГц. Если их нет, то скорее всего проц на замену. По крайней мере у меня так было. Я доигрался с отсладкой, после чего проц перестал стартовать и прошиваться (не отвечает на запрос в UniFlash). Были варианты или спаленные преобразователи по цепям от FTDI или процессор. Оказалось процессор, который после перпайки - заработал. По-поводу восстановления loadera не скажу, так как не стали с этим возится. Может быть можно сформировать все питания внешними источниками и зашить его через JTAG, но этот вопрос скорее всего нужно на e2e.ti.com спрашивать. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
inventor 0 19 февраля, 2016 Опубликовано 19 февраля, 2016 · Жалоба Если загрузчик не стартует, проверьте поднимается ли питание 1,2 В, и 1,9 В, которое делается внутренними преобразователями. Запускаются ли генераторы, 32 кГц и 40 МГц. Если их нет, то скорее всего проц на замену. По крайней мере у меня так было. Я доигрался с отсладкой, после чего проц перестал стартовать и прошиваться (не отвечает на запрос в UniFlash). Были варианты или спаленные преобразователи по цепям от FTDI или процессор. Оказалось процессор, который после перпайки - заработал. По-поводу восстановления loadera не скажу, так как не стали с этим возится. Может быть можно сформировать все питания внешними источниками и зашить его через JTAG, но этот вопрос скорее всего нужно на e2e.ti.com спрашивать. именно такие симптомы. уже третий или 4-й проц так полетел. хилые они какие то Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться