|
Как скормить ASM модуль Visual Studio? |
|
|
|
May 27 2012, 21:10
|
Частый гость
 
Группа: Свой
Сообщений: 91
Регистрация: 26-01-06
Пользователь №: 13 668

|
Hi, All! Собираю проект для Toradex Colibri (ARMV4I) под MS Visual Studio 2008. В основном, все хорошо, но проект содержит один модуль на асме с парой функций, который masm, входящий в состав VS, отказывается компилировать. Изначально проект был под Embedded VC++ (это, собс-но, пример от Toradex). Как его перетащить под Visual Studio? MASM, вообще, инструкции от ARM понимает, и как ему это указать? Или надо использовать какой-то внешний ассемблер (какой)?
|
|
|
|
|
 |
Ответов
|
May 28 2012, 17:48
|
Частый гость
 
Группа: Участник
Сообщений: 108
Регистрация: 8-09-05
Пользователь №: 8 384

|
Цитата(sz36 @ May 28 2012, 01:10)  Hi, All! Собираю проект для Toradex Colibri (ARMV4I) под MS Visual Studio 2008. В основном, все хорошо, но проект содержит один модуль на асме с парой функций, который masm, входящий в состав VS, отказывается компилировать. Изначально проект был под Embedded VC++ (это, собс-но, пример от Toradex). Как его перетащить под Visual Studio? MASM, вообще, инструкции от ARM понимает, и как ему это указать? Или надо использовать какой-то внешний ассемблер (какой)? Работал с этим модулем и под EVC и под VS. Проблем при переходе с EVC++ в студию 2005 не было, только нюансы. Само собой, что ассемблер под ARM в студии имеется, если студия умеет собирать проекты под WinCE. В чем собственно проблема? Вы под какую собираете? Colibri SDK установили в студии?
|
|
|
|
|
May 28 2012, 21:02
|
Частый гость
 
Группа: Свой
Сообщений: 91
Регистрация: 26-01-06
Пользователь №: 13 668

|
Цитата(SBE @ May 28 2012, 21:48)  В чем собственно проблема? Вы под какую собираете? Colibri SDK установили в студии? С ассемблером я вроде уже разобрался (нужно было .rules файл создать для armasm.exe, который в другой папке наличествует). Colibri SDK, ес-но, установлен. Теперь другая проблема - ассемблерный модуль компилируется, но линкер не видит функций, которые в нем определены. Можно как-нибудь посмотреть, что есть в obj-файле? Hex-редактор показывает, что имена эти в объектнике есть, а линкер, мерзавец, не находит. А не могли бы Вы прислать любой собирабельный проект под студию для ARM, в котором есть .с и .asm модули? А то я что-то в тупике, что ей еще надо
|
|
|
|
|
May 29 2012, 15:25
|
Частый гость
 
Группа: Участник
Сообщений: 108
Регистрация: 8-09-05
Пользователь №: 8 384

|
Цитата(sz36 @ May 29 2012, 01:02)  С ассемблером я вроде уже разобрался (нужно было .rules файл создать для armasm.exe, который в другой папке наличествует). Colibri SDK, ес-но, установлен. Теперь другая проблема - ассемблерный модуль компилируется, но линкер не видит функций, которые в нем определены. Можно как-нибудь посмотреть, что есть в obj-файле? Hex-редактор показывает, что имена эти в объектнике есть, а линкер, мерзавец, не находит.
А не могли бы Вы прислать любой собирабельный проект под студию для ARM, в котором есть .с и .asm модули? А то я что-то в тупике, что ей еще надо Ранее ассемблером не пользовался, без надобности. Попробовал, без особых проблем, если rules корректно прописать, или ручками Custom Biuld настроить. obj-файл смотрится тулзой dumpbin.exe. Линкер не видит потому, что или совсем не ищет объектник или ищет не там (например в rules указан не тот путь, должно быть типа Ouput = "$(IntDir)\$(InputName).obj"), или asm-файл не экспортирует нужные символы (смотрится dumpbin или листингом asm), или С-файл импортирует что-то другое (например, декорированные имена с++  ). Любопытно, откуда ассемблерный файл для такой платформы. Неужто от Toradex? Для такого класса устройств даже в BSP asm файлов наперечет. А уж на пользовательском уровне они крайне редко могут быть действительно нужны.
|
|
|
|
|
May 29 2012, 15:39
|
Частый гость
 
Группа: Свой
Сообщений: 91
Регистрация: 26-01-06
Пользователь №: 13 668

|
Цитата(SBE @ May 29 2012, 19:25)  obj-файл смотрится тулзой dumpbin.exe. Спасибо, попробую. Пока вышел из положения скомпилировав asm-модуль в статическую либу под EVC++, и подцепив ее к проекту на MSVS. Во всяком случае, компилируется, но на устр-ве еще не проверял. Цитата(SBE @ May 29 2012, 19:25)  Любопытно, откуда ассемблерный файл для такой платформы. Неужто от Toradex? Ага. Там фунции типа IRQEnable, IRQDisable, GetCPUId и т.п.
|
|
|
|
|
May 29 2012, 16:05
|
Частый гость
 
Группа: Участник
Сообщений: 108
Регистрация: 8-09-05
Пользователь №: 8 384

|
Цитата(sz36 @ May 29 2012, 19:39)  Ага. Там фунции типа IRQEnable, IRQDisable, GetCPUId и т.п. Хм. Эти функции были в библиотечных файлах (IntLib.lib, CoProcLib.lib, MapRegLib.lib), исходников к ним не было, и что-то сомневаюсь что они на ассемблере, ибо незачем. Без проблем использовал их в VS проектах. Не ткнете откуда ассемблер, может что-то у Торадекса изменилось и пропустил.
|
|
|
|
|
May 29 2012, 18:11
|
Частый гость
 
Группа: Свой
Сообщений: 91
Регистрация: 26-01-06
Пользователь №: 13 668

|
Цитата(SBE @ May 29 2012, 20:05)  Хм. Эти функции были в библиотечных файлах (IntLib.lib, CoProcLib.lib, MapRegLib.lib), исходников к ним не было, и что-то сомневаюсь что они на ассемблере Мамой клянус! :-) Я ассемблер для АРМ не знаю, но вот, к примеру, кусочек кода Код IRQDisable PROC mrs r0, cpsr orr r0, r0, #0x80 msr cpsr_c, r0 mov pc,lr ENDP Цитата(SBE @ May 29 2012, 20:05)  Не ткнете откуда ассемблер, может что-то у Торадекса изменилось и пропустил. Мы купили у них пример работы с VideoCapture, там все на С, но один модуль на ассемблере. Используются, собс-но, из этого модуля только 2 ф-ии - IRQDisable и IRQEnable
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|