Jump to content

    

vladimir_orl

Участник
  • Content Count

    209
  • Joined

  • Last visited

Everything posted by vladimir_orl


  1. И в продолжение темы ещё один вопрос, если можно. Пишу на ассемблере в файле foo.asm: table_size .set 10000 ; define the constant .global _table_size ; make it global В сишном файле: extern int table_size; /*external ref */ #define TABLE_SIZE ((int) (&table_size)) Компилятор говорит: <Linking> undefined first referenced symbol in file --------- ---------------- table_size ./main.obj error #10234-D: unresolved symbols remain error #10010: errors encountered during linking; "asm2.out" not built Что это может быть?
  2. Да. По нулевому адресу есть что-то "EA001FFE". Это судя по всему, команда перехода, посмотрю, куда ведёт. И если можно подскажите команду перехода на смещение более 32 МБ. Она должна быть что-то вроде mov pc, #label ... label: ... Но компилер не принимает. Или опять не так?
  3. Вот командный код. /****************************************************************************/ /* DM368.cmd */ /* Copyright © 2012 Texas Instruments Incorporated */ /* Author: Rafael de Souza */ /* */ /* Description: This file is a sample linker command file that can be */ /* used for linking programs built with the C compiler and */ /* running the resulting .out file on an DM368 EVM. */ /* Use it as a guideline. You will want to */ /* change the memory layout to match your specific */ /* target system. You may want to change the allocation */ /* scheme according to the size of your program. */ /* */ /****************************************************************************/ MEMORY { ARM_IVT o = 0x00000000 l = 0x00001000 /* ARM IVT set 4kB */ ARM_IRAM0 o = 0x00001000 l = 0x00003000 /* ARM Instruction RAM0 - 16kB */ ARM_IRAM1 o = 0x00004000 l = 0x00004000 /* ARM Instruction RAM1 - 16kB */ ARM_IROM o = 0x00008000 l = 0x00004000 /* ARM Instruction ROM - 16kB */ ARM_DRAM0 o = 0x00010000 l = 0x00004000 /* ARM Data RAM0 - 16kB */ ARM_DRAM1 o = 0x00014000 l = 0x00004000 /* ARM Data RAM1 - 16kB */ ARM_DROM o = 0x00018000 l = 0x00004000 /* ARM Data ROM - 16kB */ ARM_METB o = 0x01BC0000 l = 0x00001000 /* ARM ETB Memory - 4kB */ ARM_RETB o = 0x01BC1000 l = 0x00000800 /* ARM ETB Registers - 2kB */ ARM_ICECRSH o = 0x01BC1800 l = 0x00000100 /* ARM IceCrusher - 256B */ ARM_CFGBUS o = 0x01C00000 l = 0x00400000 /* CFG Bus Peripherals - 4MB */ ARM_DAEMIF o = 0x02000000 l = 0x08000000 /* ASYNC EMIF Data - 128MB */ ARM_MJCPD o = 0x11F00000 l = 0x00020000 /* MJCP DMA Port - 128kB */ ARM_HDVICPD o = 0x12000000 l = 0x00080000 /* HDVICP DMA Port - 512kB */ ARM_RDDR o = 0x20000000 l = 0x00008000 /* DDR EMIF Control Registers - 32kB */ ARM_DDR o = 0x80000000 l = 0x10000000 /* DDR EMIF - 256MB */ } SECTIONS { .ivt > ARM_IVT .text > ARM_DDR .stack > ARM_DDR .bss > ARM_DDR .cio > ARM_DDR .const > ARM_DDR .data > ARM_DDR .switch > ARM_DDR .sysmem > ARM_DDR .far > ARM_DDR .args > ARM_DDR .ppinfo > ARM_DDR .ppdata > ARM_DDR /* TI-ABI sections */ .pinit > ARM_DDR .cinit > ARM_DDR /* EABI sections */ .binit > ARM_DDR .init_array > ARM_DDR .neardata > ARM_DDR .fardata > ARM_DDR .rodata > ARM_DDR .c6xabi.exidx > ARM_DDR .c6xabi.extab > ARM_DDR } Если смотреть бинарник, то по адресам с 0х80000000 (где сама программа) код есть, а с 0x00000000, где вектора перехода, ничего нет. И в мэпе функций тоже ничего.
  4. Вот стартап ; startup.s .ref start .ref undef .ref swi .ref pabt .ref dabt .ref irq .ref fiq .sect ".ivt" reset: b start undef: b undef swi: b swi pabt: b pabt dabt: b dabt nop irq: b irq fiq: b fiq .text Вот вывод: **** Build of configuration Debug for project asm2 **** C:\ti\ccsv5\utils\bin\gmake -k all 'Building file: ../main.c' 'Invoking: ARM Compiler' "C:/ti/ccsv5/tools/compiler/tms470_4.9.5/bin/cl470" -mv5e --code_state=32 --abi=eabi -me -g --include_path="C:/ti/ccsv5/tools/compiler/tms470_4.9.5/include" --define=dm368 --diag_warning=225 --display_error_number -k --asm_listing --preproc_with_compile --preproc_dependency="main.pp" "../main.c" "../main.c", line 12: warning #262-D: explicit type is missing ("int" assumed) "../main.c", line 38: warning #225-D: function declared implicitly "../main.c", line 78: warning #112-D: statement is unreachable "../main.c", line 111: warning #112-D: statement is unreachable "../main.c", line 81: warning #179-D: label "loop" was declared but never referenced 'Finished building: ../main.c' ' ' 'Building file: ../startup.s' 'Invoking: ARM Compiler' "C:/ti/ccsv5/tools/compiler/tms470_4.9.5/bin/cl470" -mv5e --code_state=32 --abi=eabi -me -g --include_path="C:/ti/ccsv5/tools/compiler/tms470_4.9.5/include" --define=dm368 --diag_warning=225 --display_error_number -k --asm_listing --preproc_with_compile --preproc_dependency="startup.pp" "../startup.s" 'Finished building: ../startup.s' ' ' 'Building target: asm2.out' 'Invoking: ARM Linker' "C:/ti/ccsv5/tools/compiler/tms470_4.9.5/bin/cl470" -mv5e --code_state=32 --abi=eabi -me -g --define=dm368 --diag_warning=225 --display_error_number -k --asm_listing -z --stack_size=0x800 -m"asm2.map" --heap_size=0x800 -i"C:/ti/ccsv5/tools/compiler/tms470_4.9.5/lib" -i"C:/ti/ccsv5/tools/compiler/tms470_4.9.5/include" --reread_libs --warn_sections --display_error_number --rom_model -o "asm2.out" "./startup.obj" "./main.obj" "./evmdm368_i2c.obj" "./evmdm368_gpio.obj" "./evmdm368_eeprom.obj" "./evmdm368.obj" -l"libc.a" "../DM368.cmd" <Linking> 'Finished building target: asm2.out' ' ' **** Build Finished **** Насколько я понял, линковщик просто не видит асм файл, хотя он добавлен в проект. То есть там ни в карте памяти ни в бинарнике этих джампов нет. Но собирает без ошибок, просто не добавляет эту таблицу переходов
  5. Здравствуйте, уважаемые участники форума. Имеется задача создания таблицы векторов прерываний (и ISR к ним) для процессора TI DM368. Пишу на CCS5. Насколько я понял, стартапный код пишется на ассемблере. Но он почему-то не хочет линковаться вместе с сишными файлами. Слышал, что надо его как-то объявить в мэйнике, либо настройках проекта, но как не знаю. Подскажите, если можно. И ещё вопрос. Скажите, если мы находимся в режиме user и у нас нет прерываний, то мы совсем не можем перейти в режим супервизора? Вручную меняю содержимое регистра CPSR с режима user на супервизора, он не принимает изменений. Что можно сделать? Если можно, подскажите хотя бы общую методологию, за конкретные ответы и примеры отдельный респект.
  6. Здравствуйте, уважаемые участники форума. Имеется задача создания таблицы векторов прерываний (и ISR к ним) для процессора TI DM368. Пишу на CCS5. Насколько я понял, стартапный код пишется на ассемблере. Но он почему-то не хочет линковаться вместе с сишными файлами. Слышал, что надо его как-то объявить в мэйнике, либо настройках проекта, но как не знаю. Подскажите, если можно. И ещё вопрос. Скажите, если мы находимся в режиме user и у нас нет прерываний, то мы совсем не можем перейти в режим супервизора? Вручную меняю содержимое регистра CPSR с режима user на супервизора, он не принимает изменений. Что можно сделать? Если можно, подскажите хотя бы общую методологию, за конкретные ответы и примеры отдельный респект.
  7. Здравствуйте. Если можно, объясните по шагам. К примеру, есть отладочная плата для DM368. Есть CCS5. Запускаем программу из NAND-памяти. Сами находимся в композере, в проекте, который присутствует в NAND. Если мы сейчас jtag попробуем подключить, композер пишет, что не может подключиться к плате, т.к. плата занята. Если мы запускаемся сразу со jtag-а, то пропадает "чистота эксперимента". Желательно бы запуститься с NAND-а, а потом уже взять jtag-ом под контроль, если так возможно. А что вы имели в виду под силовой периферией?
  8. Здравствуйте. А у Sauris есть возможность подключаться к уже работающей программе на ходу?
  9. Скажите, а можно ли подключиться JTAG ом к уже работающей программе?
  10. Большое спасибо. Так вот я и и пишу юбут. Под давинчи DM368. Тут ещё смотрю, правильно ли я бинарник делаю из out файла. Если можно, киньте ссылку на правильное пользование hex470.exe, в частности на опции -image, -fill, -zero, не совсем понял что это такое . Ещё один вопрос, если можно. В даташите по загрузке из NAND юбут может располагаться (как я понял) в блоках с 1 по 24, нумерация страниц при загрузке - с 0 для каждого блока. У меня в код композере нумерация страниц сквозная для всех блоков, количество страниц в блоке - 64. То есть, если мне надо расположить юбут в блоке 1, страница 1, я пишу у себя страницу 65?
  11. Посмотри даташит на м/с NANDа типа MT29F4G08AAA. Там написано. Там последовательная запись адреса, разбитого на части. Да, и если тема поднята, скажите, кто знает, по умолчанию SPARE область добавляется при чтении-записи или нет.
  12. Да, в тестовой программе работает. Скажите, пишут что размер страницы 2048+64. При загрузке страница считывается по 2048 или по 2048+64 байта?
  13. Здравствуйте, уважаемые форумчане. Скажите, если я хочу загрузиться из внешнего NANDа в ARM926 (TI DM368), какова должна быть последовательность действий? Я делаю так: 1) пишу программу на CCS5, выходной файл - prog.out 2) С помощью утилиты hex470.exe преобразую его в prog.b0 (бинарник) 3) JTAG-ом заливаю в NAND-память (тут сразу вопрос - по 2048 Б заливать, или по 2048+64Б ?). 4) Выставлением джамперов ставлю загрузку процессора с NAND. 5) Перезагрузка - и ничего на работает. 6) Слышал, что нужен uboot, но до него ещё, похоже, плыть и плыть.
  14. Да, я бы помого, но я только втыкаю в этот 368-й. И плата есть, а что-то не захватывает картинку.
  15. Здравствуйте. Имеем плату EVMDM368 и CCS5v2 + отладчик Sauris. Последнее время в процессе отладки компосер зависает со словами: "ARM9: Can't Single Step Target Program: (Error -2030 @ 0x2F964E88) Internal error: Access to unknown or invalid register was requested. Restart the application. If error persists, please report the error. (Emulation package 5.0.681.0)" И ещё иногда про ICECruser пишет и про настройку сигнала CLK. Посмотрел в настройках компосера - там нет таких настроек, настроек сауриса вообще не нашёл. Переустановка программ не помогла. Если просто заливаем программу и запускаем, всё работает. Подскажите, что можно сделать. "Появились планы поддержать отладку через наши эмуляторы из других сред разработки, а не только из TI CCS. Работа долгая и сложная, поэтому просьба не игнорировать данный опрос. Хотелось бы оценить, нужна ли эта работа вообще, и если нужна, с какой стороны начинать." Атмелы хорошо бы поддержать. Уж они то точно ходовые.
  16. А у меня SDH карточка при посылке sendOpCond подвисает. Даже не знаю, что делать. С SD всё нормально. // Идентификация карт MMC и SD Uint16 MMCSD_cardIdentification(MMCSD_ConfigData* config, Uint32* rca, MMCSD_cardStatusReg* cardStatus, Uint32 opTimeout){ Uint16 status; Uint16 cardReg[8]; Uint8 mmc = 1; if (status = MMCSD_goIdleState()) // Все карты в сброс return status; RESEND_CMD41: EVMDM368_waitusec(100000); // Для медленных карт status = MMCSD_appCmd(0); /* Send CMD55 with RCA = 0 */ if (status) status = MMC_sendOpCond(MMCSD_VDD_32_34, opTimeout); else { // Experimenting with the whole supported voltage range if (SD_sendOpCond(0x00ff8000, opTimeout)) goto RESEND_CMD41; mmc = 0; } ........ } А у меня SDH карточка при посылке sendOpCond подвисает. Даже не знаю, что делать. С SD всё нормально. // Идентификация карт MMC и SD Uint16 MMCSD_cardIdentification(MMCSD_ConfigData* config, Uint32* rca, MMCSD_cardStatusReg* cardStatus, Uint32 opTimeout){ Uint16 status; Uint16 cardReg[8]; Uint8 mmc = 1; if (status = MMCSD_goIdleState()) // Все карты в сброс return status; RESEND_CMD41: EVMDM368_waitusec(100000); // Для медленных карт status = MMCSD_appCmd(0); /* Send CMD55 with RCA = 0 */ if (status) status = MMC_sendOpCond(MMCSD_VDD_32_34, opTimeout); else { // Experimenting with the whole supported voltage range if (SD_sendOpCond(0x00ff8000, opTimeout)) goto RESEND_CMD41; mmc = 0; } ........ }
  17. Здравствуйте. Раздают, как я понял, не совсем бесплатно. Но цена, в принципе, не особо большая. Доставка долгая. Да, с бесплатным софтом у них туго.
  18. Здравствуйте, SAURIS GmbH. Вопрос, возможно, немного не в тему. Но, может быть, поможете. Есть плата DM368EVM. Есть CCS5.2. Есть примеры на плату под CCS3v3. В пятом композере провожу импорт старых проектов из 3-ей версии в 5-ю. Пишется, что конвертация прошла успешно. Однако сами проектные файлы создаются непонятно где, обнаружить их не удаётся. На сайте TI наткнулся на похожий вопрос, но поскольку там форум на английском, а общались , похоже, поляки, то англо-польский диалект я не осилил. Если можно, объясните, как сделать правильно, или киньте ссылку, если похожий вопрос уже поднимался.
  19. Здравствуйте. Может быть, поможете решить проблему. Есть плата DM368EVM. Есть CCS5.2. Есть примеры на плату под CCS3v3 (скачано с сайта TI). В пятом композере провожу импорт старых проектов из 3-ей версии в 5-ю. Пишется, что конвертация прошла успешно. Однако сами проектные файлы создаются непонятно где, обнаружить их не удаётся. На сайте TI наткнулся на похожий вопрос, но поскольку там форум на английском, а общались , похоже, поляки, то англо-польский диалект я не осилил. Если можно, объясните, как сделать правильно, или киньте ссылку, если похожий вопрос уже поднимался.
  20. Здравствуйте. Может быть, поможете решить проблему. Есть плата DM368EVM. Есть CCS5.2. Есть примеры на плату под CCS3v3 (скачано с сайта TI). В пятом композере провожу импорт старых проектов из 3-ей версии в 5-ю. Пишется, что конвертация прошла успешно. Однако сами проектные файлы создаются непонятно где, обнаружить их не удаётся. На сайте TI наткнулся на похожий вопрос, но поскольку там форум на английском, а общались , похоже, поляки, то англо-польский диалект я не осилил. Если можно, объясните, как сделать правильно, или киньте ссылку, если похожий вопрос уже поднимался.
  21. Здравствуйте. Может быть, поможете решить проблему. Есть плата DM368EVM. Есть CCS5.2. Есть примеры на плату под CCS3v3 (скачано с сайта TI). В пятом композере провожу импорт старых проектов из 3-ей версии в 5-ю. Пишется, что конвертация прошла успешно. Однако сами проектные файлы создаются непонятно где, обнаружить их не удаётся. На сайте TI наткнулся на похожий вопрос, но поскольку там форум на английском, а общались , похоже, поляки, то англо-польский диалект я не осилил. Если можно, объясните, как сделать правильно, или киньте ссылку, если похожий вопрос уже поднимался.
  22. Здравствуйте, SAURIS GmbH. Вопрос, возможно, немного не в тему. Но, может быть, поможете. Есть плата DM368EVM. Есть CCS5.2. Есть примеры на плату под CCS3v3. В пятом композере провожу импорт старых проектов из 3-ей версии в 5-ю. Пишется, что конвертация прошла успешно. Однако сами проектные файлы создаются непонятно где, обнаружить их не удаётся. На сайте TI наткнулся на похожий вопрос, но поскольку там форум на английском, а общались , похоже, поляки, то англо-польский диалект я не осилил. Если можно, объясните, как сделать правильно, или киньте ссылку, если похожий вопрос уже поднимался.
  23. Насколько я знаю, там под контраст отдельный аналоговый вход.
  24. Здравствуйте. Пришлите, если можно, ссылку на литературу по OMAP/DAVINCI. В даташитах как-то всё вскользь указано. Особенно про конфигурирование регистров. Почта vladimirostu@mail.ru. "OMAP/DAVINCI для чайников" нигде нет.