использование сторонних библиотек

amorphis
Offline
Зарегистрирован: 02.09.2017

Решил освоить ардуину, купил комплект, поставил IDE почитал мануал и прилагаемые примеры. Всё просто, понятно. Но как только начал разбирать чужие готовые проекты (надо ж учиться у старших), так сразу понимание моё и закончилось

В тексте скетча идет обращение к незнакомой функции. Её нет в списке встроенных функций, нет во всех *.h установленых в системе вместе с IDE. В конце концов я нашел эту функцию вот тут:

http://asf.atmel.com/docs/3.27.3/sam4e/html/group__sam__drivers__dacc__group.html

В связи с чем есть два вопроса:

1) Каким образом эта библиотека подключается к счетчу? Откуда IDE знает, что эта функция содержится в какой-то там библиотеке и откуда IDE знает, где эту библиотеку скачать и прилинковать к проекту?

2) Где посмотреть все такие "самоподключаемые" библиотеки, их описание?

 

Волшебник
Offline
Зарегистрирован: 22.12.2016

Файлы для ардуино дуе ставятся не в иде, а отдельно, поищите.

Компилёр кормится из платформ.тхт, что-то типа

'# Compile c files

recipe.c.o.pattern="{compiler.path}{compiler.c.cmd}" {compiler.c.flags} -mmcu={build.mcu} -DF_CPU={build.f_cpu} -DARDUINO={runtime.ide.version} -DARDUINO_{build.board} -DARDUINO_ARCH_{build.arch} {compiler.c.extra_flags} {build.extra_flags} {includes} "{source_file}" -o "{object_file}"
'
Я обычно ставлю галочку в опциях самой ИДЕ печатать ворнинги и дебаги, там удобно смотреть где какой паз к файлу и какие ошибки с подробностями.
amorphis
Offline
Зарегистрирован: 02.09.2017

А что конкретно искать? *.h/*.c больше на диске нигде нет. Только в потрохах каталога, куда установлен ide ардуины. Я ставил только IDE. Ещё скачал 1 файл - скетч с примером. Но тем не менее пример успешно компилируется.

platform.txt с похожей строкой есть в ./hardware/arduino/avr/ Это всё, очевидно, какие-то макросы, но какое они имеют отношение к моему вопросу я не понимаю.

Сейчас проверю - будет ли успешна компиляция при отключенной интернете. Есла "да", то несомненно эта библиотека физически находится где-то на моей машине. Но я её не вижу.

Клапауций 112
Клапауций 112 аватар
Offline
Зарегистрирован: 01.03.2017

amorphis пишет:

В тексте скетча идет обращение к незнакомой функции.

ну, и где текст скетча?

amorphis
Offline
Зарегистрирован: 02.09.2017

Нашёл что-то.

Оказалось, что в /mydocs/... еще полгига всякого добра запичужено.

Клапауций 112
Клапауций 112 аватар
Offline
Зарегистрирован: 01.03.2017

amorphis пишет:

Нашёл что-то.

Оказалось, что в /mydocs/... еще полгига всякого добра запичужено.

ты текст скетча опубликуешь или будешь продолжать играться тут хрустальными шарами?

amorphis
Offline
Зарегистрирован: 02.09.2017
  pmc_enable_periph_clk (DACC_INTERFACE_ID) ; // run!
  dacc_reset(DACC);
  dacc_set_transfer_mode(DACC, 0);
  dacc_set_analog_control(DACC, DACC_ACR_IBCTLCH0(0x02) | DACC_ACR_IBCTLCH1(0x02) | DACC_ACR_IBCTLDACCORE(0x01));

Вот кусок.

Да, объект DACC тоже нигде не объявлен, похоже что это глобальный и объявлен в библиотеке.

Клапауций 112
Клапауций 112 аватар
Offline
Зарегистрирован: 01.03.2017

amorphis пишет:

  pmc_enable_periph_clk (DACC_INTERFACE_ID) ; // run!
  dacc_reset(DACC);
  dacc_set_transfer_mode(DACC, 0);
  dacc_set_analog_control(DACC, DACC_ACR_IBCTLCH0(0x02) | DACC_ACR_IBCTLCH1(0x02) | DACC_ACR_IBCTLDACCORE(0x01));

Вот кусок.

Да, объект DACC тоже нигде не объявлен, похоже что это глобальный и объявлен в библиотеке.

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

*настоятельно рекомендую ещё раз прекратить епать мосг форумчанам.

Волшебник
Offline
Зарегистрирован: 22.12.2016

amorphis пишет:

А что конкретно искать? *.h/*.c больше на диске нигде нет. Только в потрохах каталога, куда установлен ide ардуины. Я ставил только IDE. Ещё скачал 1 файл - скетч с примером. Но тем не менее пример успешно компилируется.

В ИДЕ нет поддержки Дуе, она ставится дополнительно через боард манагер. Т.е. скетч не должен компилироваться вообще, если не проапгрейдить.  Атмеловская  версия asf (правильно - CMSIS) библа для кортексов в ардуино включена не вся, счас не помню, но ДМА там кажется нету и PDC, вобщем бардак. Да и сама библа просто обёртки, где нормально, а некоторых функций нет или криво. Иногда можно использовать чтоб время сэкономить, а иногда без прямого доступа к регистрам никак

amorphis
Offline
Зарегистрирован: 02.09.2017

Да пожалуйста. Это не моя генияльная поделка, я вообще ничего еще не сделал. 

Искомый кусок в файле funcs.h

https://drive.google.com/open?id=0B9VaQla9LbZrWEdNQ2hIZjRvUUE

Только я не хочу углубляться в разбор этого _скетча_.

Я хочу понять как работать с библиотеками.

amorphis
Offline
Зарегистрирован: 02.09.2017

Это да, у меня due и я добавлял его именно через boards manafer, как в мануале велено Поддержка due добавлена.

Меня как бе сильно напрягяет наличие в проекте каких-то необъявленных глобалов, явным образом не подключенных, но тем не менее доступных либов и т.п.

Похоже, что тут глубоко нырять надо. Короче говоря - man что?

Клапауций 112
Клапауций 112 аватар
Offline
Зарегистрирован: 01.03.2017

amorphis пишет:

Я хочу понять как работать с библиотеками.

хочешь понять - опубликуй непонятный тебе код сюда.

Волшебник
Offline
Зарегистрирован: 22.12.2016

Чего то не договариваешь, то ставил только ИДЕ, то добавлял поддержку Дуе. Борда Дуе создаёт отдельный фолдер, на линухе ардуино15.

А код генератора писан мной, где-то в инете выкладывал года 3 назад. 

amorphis
Offline
Зарегистрирован: 02.09.2017

Скачал инсталл ИДЕ с сайта Установил. Всё. Больше я ничего не скачивал и никакой отдельный софт специальным обьразом не устанавливал

В настройках IDE в boards manager включил подержку Due. Я не в курсе как эта самая поддержка реально вклчилась и что при этом произошло в системе. Если ИДЕ для этого что-то скачал и тихонько устагновил, то мне про это ничего не известно.

"А код генератора писан мной"

Бывают же совпадения! Волшебник, укажите на конкретный мануал pls! Что прочитать чтобы в этом разобраться?

amorphis
Offline
Зарегистрирован: 02.09.2017

Клапауций 112 пишет:

хочешь понять - опубликуй непонятный тебе код сюда.

Вот я так и знал. Я не хочу углубляться в анализ конкретного _кода_.  Я хочу разобраться в логике работы самой системы. Понять почему в коде - в любом вообще - можно использорвать непойми откуда взявшиеся функции, откуда они взялись и какие там еще есть.

Что там еще есть, какие еще либы, что они реализают? Где на это мануалы? Что к какому железу подходит?

И я вовсе не расчитываю, что мне просто здесь дадут ответ. Это толстую книжку написать в ответ придется. Но где-то эе эти описания есть?

Волшебник
Offline
Зарегистрирован: 22.12.2016

Мануала нету, дата шит один -);  SAM3X8A,   в и-нете скачать можно фри. Не давно выяснил, дата шит как и софт тоже апгрейдится, версии что постарше могут оказаться поинформативнее. Или версии на похожие процы из SAM3xxx SAM4xxx могут пролить свет на неосвещённые в дата шите места.

Смотрите какой регистр проставить надо, потом есть ли какая -нить обёртка в ардуино15 для этого, и есть ли есть - пользуетесь, если нет - пишите в тот регистр напрямую

Клапауций 112
Клапауций 112 аватар
Offline
Зарегистрирован: 01.03.2017

amorphis пишет:

Я не хочу углубляться в анализ конкретного _кода_.  

не хочешь, тогда иди найух.

amorphis
Offline
Зарегистрирован: 02.09.2017

Последняя страница детектива оказалась на китайском. (ц)

SAM3X8A - это модель мелкопроца. Due, если верить arduino.cc, сделан на SAM3X8E, datasheets на него есть, например http://www.datasheetspdf.com/PDF/SAM3X8E/845730/1 или тут http://www.microchip.com/wwwproducts/en/ATsam3x8e  2015 Atmel Corporation. / Rev.: Atmel-11057C-ATARM-SAM3X-SAM3A-Datasheet_23-Mar-15. Это достоачно свежее?

Это полезно, хотя и раз в 10 больше, чем я переварю. 

Только мы, видимо, про разные вещи говорим. Я пытаюсь разобраться с логикой работы IDE и компайлера.

1. Откуда и на основании каких настройек IDE и/или директив в коде скетча компайлер подсасывает либы, в частности ту либу, в которой реализована функция dacc_reset()?

2. Как посмотреть какие _там_ еще есть либы и что они умеют?

 

andriano
andriano аватар
Offline
Зарегистрирован: 20.06.2015

amorphis пишет:

Скачал инсталл ИДЕ с сайта Установил. Всё. Больше я ничего не скачивал и никакой отдельный софт специальным обьразом не устанавливал

В настройках IDE в boards manager включил подержку Due. Я не в курсе как эта самая поддержка реально вклчилась и что при этом произошло в системе. Если ИДЕ для этого что-то скачал и тихонько устагновил, то мне про это ничего не известно.

amorphis пишет:

Вот я так и знал. Я не хочу углубляться в анализ конкретного _кода_.  Я хочу разобраться в логике работы самой системы. Понять почему в коде - в любом вообще - можно использорвать непойми откуда взявшиеся функции, откуда они взялись и какие там еще есть.

Чтобы разобраться в том, о чем сказано во второй цитате (в логике работы IDE), Вам никак не обойтись без отчетливого понимания того, что написано в первой (где и что Вы установили - IDE делает только то, что ее просят и отсебятиной не занимается).

 

PS. Честно говоря, меня тожен шокирует, что саму IDE можно установить, просто распаковав из архива в удобное сесто, а аддоны она мало того, что ставит сама, так еще и туда, куда ей самой взбредет в голову, вместо того, чтобы, на худой конец положить новые рядом со старыми.

amorphis
Offline
Зарегистрирован: 02.09.2017

andriano пишет:
Вам никак не обойтись без отчетливого понимания того, что написано в первой (где и что Вы установили - IDE делает только то, что ее просят и отсебятиной не занимается)

Боюсь, что это так. Можете порекомендовать по этому вопросу что-либо конкретное - книжку, онлайн справку и т.п.? На arduino.cc я пока не нашел детальный описаний внутренней логики IDE. 

andriano
andriano аватар
Offline
Зарегистрирован: 20.06.2015

amorphis пишет:

На arduino.cc я пока не нашел детальный описаний внутренней логики IDE. 

Я тоже.

Но я уже привык к тому, что документирование открытых проектов, мягко говоря, оставляет желать лучшего. Так что остаются руки, голова и удобный файлменеджер.

Волшебник
Offline
Зарегистрирован: 22.12.2016

Ответ был в #1, перечитайте. Если для особо одарённых, то кликаем 'файл->преференцес->' в самой ардуино ИДЕ, верхний меню-бар. Ставим Галочки на 'show verbose output during' компилэйшин И аплоад.    И не будет детских вопросов, ардуина Сама говорит какой файл где берёт и чего в нём не так если что. С номером строки.

Пример

--НоНаме--Softvari/arduino-1.8.3/arduino-builder -dump-prefs -logger=machine -hardware --НоНаме--Softvari/arduino-1.8.3/hardware -hardware --НоНаме--.arduino15/packages -tools --НоНаме--Softvari/arduino-1.8.3/tools-builder -tools --НоНаме--Softvari/arduino-1.8.3/hardware/tools/avr -tools --НоНаме--.arduino15/packages -built-in-libraries --НоНаме--Softvari/arduino-1.8.3/libraries -libraries --НоНаме--sketchbook/libraries -fqbn=arduino:sam:arduino_due_x_dbg -ide-version=10803 -build-path /tmp/arduino_build_616515 -warnings=all -build-cache /tmp/arduino_cache_510308 -prefs=build.warn_data_percentage=75 -prefs=runtime.tools.bossac.path=--НоНаме--.arduino15/packages/arduino/tools/bossac/1.6.1-arduino -prefs=runtime.tools.arm-none-eabi-gcc.path=--НоНаме--.arduino15/packages/arduino/tools/arm-none-eabi-gcc/4.8.3-2014q1 -verbose --НоНаме--sketchbook/DUE/dac/Timer_Dac_Pdc_2a/Timer_Dac_Pdc_2a.ino
--НоНаме--Softvari/arduino-1.8.3/arduino-builder -compile -logger=machine -hardware --НоНаме--Softvari/arduino-1.8.3/hardware -hardware --НоНаме--.arduino15/packages -tools --НоНаме--Softvari/arduino-1.8.3/tools-builder -tools --НоНаме--Softvari/arduino-1.8.3/hardware/tools/avr -tools --НоНаме--.arduino15/packages -built-in-libraries --НоНаме--Softvari/arduino-1.8.3/libraries -libraries --НоНаме--sketchbook/libraries -fqbn=arduino:sam:arduino_due_x_dbg -ide-version=10803 -build-path /tmp/arduino_build_616515 -warnings=all -build-cache /tmp/arduino_cache_510308 -prefs=build.warn_data_percentage=75 -prefs=runtime.tools.bossac.path=--НоНаме--.arduino15/packages/arduino/tools/bossac/1.6.1-arduino -prefs=runtime.tools.arm-none-eabi-gcc.path=--НоНаме--.arduino15/packages/arduino/tools/arm-none-eabi-gcc/4.8.3-2014q1 -verbose --НоНаме--sketchbook/DUE/dac/Timer_Dac_Pdc_2a/Timer_Dac_Pdc_2a.ino
 
??????????????????????????????
Using board 'arduino_due_x_dbg' from platform in folder: --НоНаме--.arduino15/packages/arduino/hardware/sam/1.6.11
 
????????????????????????????????
Using core 'arduino' from platform in folder: --НоНаме--.arduino15/packages/arduino/hardware/sam/1.6.11
 
?????????????????????????????????
 
Detecting libraries used...
 
??????????????????????????
 
"--НоНаме--.arduino15/packages/arduino/tools/arm-none-eabi-gcc/4.8.3-2014q1/bin/arm-none-eabi-g++" -c -g -Os -w -std=gnu++11 -ffunction-sections -fdata-sections -nostdlib -fno-threadsafe-statics --param max-inline-insns-single=500 -fno-rtti -fno-exceptions -Dprintf=iprintf  -w -x c++ -E -CC -mcpu=cortex-m3 -mthumb -DF_CPU=84000000L -DARDUINO=10803 -DARDUINO_SAM_DUE -DARDUINO_ARCH_SAM  -D__SAM3X8E__ -mthumb -DUSB_VID=0x2341 -DUSB_PID=0x003e -DUSBCON '-DUSB_MANUFACTURER="Arduino LLC"' '-DUSB_PRODUCT="Arduino Due"' "-I--НоНаме--.arduino15/packages/arduino/hardware/sam/1.6.11/system/libsam" "-I--НоНаме--.arduino15/packages/arduino/hardware/sam/1.6.11/system/CMSIS/CMSIS/Include/" "-I--НоНаме--.arduino15/packages/arduino/hardware/sam/1.6.11/system/CMSIS/Device/ATMEL/" "-I--НоНаме--.arduino15/packages/arduino/hardware/sam/1.6.11/cores/arduino" "-I--НоНаме--.arduino15/packages/arduino/hardware/sam/1.6.11/variants/arduino_due_x" "/tmp/arduino_build_616515/sketch/Timer_Dac_Pdc_2a.ino.cpp" -o "/dev/null"
Generating function prototypes...
"--НоНаме--.arduino15/packages/arduino/tools/arm-none-eabi-gcc/4.8.3-2014q1/bin/arm-none-eabi-g++" -c -g -Os -w -std=gnu++11 -ffunction-sections -fdata-sections -nostdlib -fno-threadsafe-statics --param max-inline-insns-single=500 -fno-rtti -fno-exceptions -Dprintf=iprintf  -w -x c++ -E -CC -mcpu=cortex-m3 -mthumb -DF_CPU=84000000L -DARDUINO=10803 -DARDUINO_SAM_DUE -DARDUINO_ARCH_SAM  -D__SAM3X8E__ -mthumb -DUSB_VID=0x2341 -DUSB_PID=0x003e -DUSBCON '-DUSB_MANUFACTURER="Arduino LLC"' '-DUSB_PRODUCT="Arduino Due"' "-I--НоНаме--.arduino15/packages/arduino/hardware/sam/1.6.11/system/libsam" "-I--НоНаме--.arduino15/packages/arduino/hardware/sam/1.6.11/system/CMSIS/CMSIS/Include/" "-I--НоНаме--.arduino15/packages/arduino/hardware/sam/1.6.11/system/CMSIS/Device/ATMEL/" "-I--НоНаме--.arduino15/packages/arduino/hardware/sam/1.6.11/cores/arduino" "-I--НоНаме--.arduino15/packages/arduino/hardware/sam/1.6.11/variants/arduino_due_x" "/tmp/arduino_build_616515/sketch/Timer_Dac_Pdc_2a.ino.cpp" -o "/tmp/arduino_build_616515/preproc/ctags_target_for_gcc_minus_e.cpp"
"--НоНаме--Softvari/arduino-1.8.3/tools-builder/ctags/5.8-arduino11/ctags" -u --language-force=c++ -f - --c++-kinds=svpf --fields=KSTtzns --line-directives "/tmp/arduino_build_616515/preproc/ctags_target_for_gcc_minus_e.cpp"
Compiling sketch...
"--НоНаме--.arduino15/packages/arduino/tools/arm-none-eabi-gcc/4.8.3-2014q1/bin/arm-none-eabi-g++" -c -g -Os -Wall -Wextra -std=gnu++11 -ffunction-sections -fdata-sections -nostdlib -fno-threadsafe-statics --param max-inline-insns-single=500 -fno-rtti -fno-exceptions -Dprintf=iprintf -MMD -mcpu=cortex-m3 -mthumb -DF_CPU=84000000L -DARDUINO=10803 -DARDUINO_SAM_DUE -DARDUINO_ARCH_SAM  -D__SAM3X8E__ -mthumb -DUSB_VID=0x2341 -DUSB_PID=0x003e -DUSBCON '-DUSB_MANUFACTURER="Arduino LLC"' '-DUSB_PRODUCT="Arduino Due"' "-I--НоНаме--.arduino15/packages/arduino/hardware/sam/1.6.11/system/libsam" "-I--НоНаме--.arduino15/packages/arduino/hardware/sam/1.6.11/system/CMSIS/CMSIS/Include/" "-I--НоНаме--.arduino15/packages/arduino/hardware/sam/1.6.11/system/CMSIS/Device/ATMEL/" "-I--НоНаме--.arduino15/packages/arduino/hardware/sam/1.6.11/cores/arduino" "-I--НоНаме--.arduino15/packages/arduino/hardware/sam/1.6.11/variants/arduino_due_x" "/tmp/arduino_build_616515/sketch/Timer_Dac_Pdc_2a.ino.cpp" -o "/tmp/arduino_build_616515/sketch/Timer_Dac_Pdc_2a.ino.cpp.o"
Compiling libraries...
Compiling core...
"--НоНаме--.arduino15/packages/arduino/tools/arm-none-eabi-gcc/4.8.3-2014q1/bin/arm-none-eabi-g++" -c -g -Os -Wall -Wextra -std=gnu++11 -ffunction-sections -fdata-sections -nostdlib -fno-threadsafe-statics --param max-inline-insns-single=500 -fno-rtti -fno-exceptions -Dprintf=iprintf -MMD -mcpu=cortex-m3 -mthumb -DF_CPU=84000000L -DARDUINO=10803 -DARDUINO_SAM_DUE -DARDUINO_ARCH_SAM  -D__SAM3X8E__ -mthumb -DUSB_VID=0x2341 -DUSB_PID=0x003e -DUSBCON '-DUSB_MANUFACTURER="Arduino LLC"' '-DUSB_PRODUCT="Arduino Due"' "-I--НоНаме--.arduino15/packages/arduino/hardware/sam/1.6.11/system/libsam" "-I--НоНаме--.arduino15/packages/arduino/hardware/sam/1.6.11/system/CMSIS/CMSIS/Include/" "-I--НоНаме--.arduino15/packages/arduino/hardware/sam/1.6.11/system/CMSIS/Device/ATMEL/" "-I--НоНаме--.arduino15/packages/arduino/hardware/sam/1.6.11/cores/arduino" "-I--НоНаме--.arduino15/packages/arduino/hardware/sam/1.6.11/variants/arduino_due_x" "--НоНаме--.arduino15/packages/arduino/hardware/sam/1.6.11/variants/arduino_due_x/variant.cpp" -o "/tmp/arduino_build_616515/core/variant.cpp.o"
"--НоНаме--.arduino15/packages/arduino/tools/arm-none-eabi-gcc/4.8.3-2014q1/bin/arm-none-eabi-gcc" -c -g -x assembler-with-cpp -MMD -mcpu=cortex-m3 -mthumb -DF_CPU=84000000L -DARDUINO=10803 -DARDUINO_SAM_DUE -DARDUINO_ARCH_SAM  -D__SAM3X8E__ -mthumb -DUSB_VID=0x2341 -DUSB_PID=0x003e -DUSBCON '-DUSB_MANUFACTURER="Arduino LLC"' '-DUSB_PRODUCT="Arduino Due"' "-I--НоНаме--.arduino15/packages/arduino/hardware/sam/1.6.11/system/libsam" "-I--НоНаме--.arduino15/packages/arduino/hardware/sam/1.6.11/system/CMSIS/CMSIS/Include/" "-I--НоНаме--.arduino15/packages/arduino/hardware/sam/1.6.11/system/CMSIS/Device/ATMEL/" "-I--НоНаме--.arduino15/packages/arduino/hardware/sam/1.6.11/cores/arduino" "-I--НоНаме--.arduino15/packages/arduino/hardware/sam/1.6.11/variants/arduino_due_x" "--НоНаме--.arduino15/packages/arduino/hardware/sam/1.6.11/cores/arduino/wiring_pulse_asm.S" -o "/tmp/arduino_build_616515/core/wiring_pulse_asm.S.o"
"--НоНаме--.arduino15/packages/arduino/tools/arm-none-eabi-gcc/4.8.3-2014q1/bin/arm-none-eabi-gcc" -c -g -Os -Wall -Wextra -std=gnu11 -ffunction-sections -fdata-sections -nostdlib --param max-inline-insns-single=500 -Dprintf=iprintf -MMD -mcpu=cortex-m3 -mthumb -DF_CPU=84000000L -DARDUINO=10803 -DARDUINO_SAM_DUE -DARDUINO_ARCH_SAM  -D__SAM3X8E__ -mthumb -DUSB_VID=0x2341 -DUSB_PID=0x003e -DUSBCON '-DUSB_MANUFACTURER="Arduino LLC"' '-DUSB_PRODUCT="Arduino Due"' "-I--НоНаме--.arduino15/packages/arduino/hardware/sam/1.6.11/system/libsam" "-I--НоНаме--.arduino15/packages/arduino/hardware/sam/1.6.11/system/CMSIS/CMSIS/Include/" "-I--НоНаме--.arduino15/packages/arduino/hardware/sam/1.6.11/system/CMSIS/Device/ATMEL/" "-I--НоНаме--.arduino15/packages/arduino/hardware/sam/1.6.11/cores/arduino" "-I--НоНаме--.arduino15/packages/arduino/hardware/sam/1.6.11/variants/arduino_due_x" "--НоНаме--.arduino15/packages/arduino/hardware/sam/1.6.11/cores/arduino/WInterrupts.c" -o "/tmp/arduino_build_616515/core/WInterrupts.c.o"