🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
C

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

Arduino

Arduinoは、AVRマイコン、単純なI/O(入出力)ポートを備えた基板、C言語を元としたArduinoのプログラム言語と、それを実装した統合開発環境から構成されたシステムです。

Q&A

解決済

2回答

1786閲覧

Arduino dueを用いて取得するデータ数を増やすとエラーが発生します

Yokkii

総合スコア2

C

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

Arduino

Arduinoは、AVRマイコン、単純なI/O(入出力)ポートを備えた基板、C言語を元としたArduinoのプログラム言語と、それを実装した統合開発環境から構成されたシステムです。

0グッド

0クリップ

投稿2021/01/29 02:45

編集2021/02/03 12:44

前提・実現したいこと

Arduinoを用いて2つのエンコーダが1パルス出力されたときの時間を計測しSDカードに保存しようとしています。

発生している問題・エラーメッセージ

ソースコードに書かれているようにそれぞれ10800個のデータを取得しよとすると問題なくコンパイルできるのですが、取得データ数の合計が23170個あたりを超えると「ボードArduino Due(Prpgraming Port)に対するコンパイル時にエラーが発生しました。」とエラーが発生します。

エラーメッセージ
ボードArduino Due(Prpgraming Port)に対するコンパイル時にエラーが発生しました

Arduino:1.8.13 (Windows 10), ボード:"Arduino Due (Programming Port)"

C:\Program Files (x86)\Arduino\arduino-builder -dump-prefs -logger=machine -hardware C:\Program Files (x86)\Arduino\hardware -hardware C:\Users\Owner\AppData\Local\Arduino15\packages -tools C:\Program Files (x86)\Arduino\tools-builder -tools C:\Program Files (x86)\Arduino\hardware\tools\avr -tools C:\Users\Owner\AppData\Local\Arduino15\packages -built-in-libraries C:\Program Files (x86)\Arduino\libraries -libraries C:\Users\Owner\Documents\Arduino\libraries -fqbn=arduino:sam:arduino_due_x_dbg -ide-version=10813 -build-path C:\Users\Owner\AppData\Local\Temp\arduino_build_438683 -warnings=all -build-cache C:\Users\Owner\AppData\Local\Temp\arduino_cache_519739 -prefs=build.warn_data_percentage=75 -prefs=runtime.tools.arm-none-eabi-gcc.path=C:\Users\Owner\AppData\Local\Arduino15\packages\arduino\tools\arm-none-eabi-gcc\4.8.3-2014q1 -prefs=runtime.tools.arm-none-eabi-gcc-4.8.3-2014q1.path=C:\Users\Owner\AppData\Local\Arduino15\packages\arduino\tools\arm-none-eabi-gcc\4.8.3-2014q1 -prefs=runtime.tools.bossac.path=C:\Users\Owner\AppData\Local\Arduino15\packages\arduino\tools\bossac\1.6.1-arduino -prefs=runtime.tools.bossac-1.6.1-arduino.path=C:\Users\Owner\AppData\Local\Arduino15\packages\arduino\tools\bossac\1.6.1-arduino -verbose C:\Users\Owner\Documents\Arduino\A_B_Z_2\A_B_Z_2.ino

省略

スケッチをコンパイルしています...

"C:\Users\Owner\AppData\Local\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 -MMD -mcpu=cortex-m3 -mthumb -DF_CPU=84000000L -DARDUINO=10813 -DARDUINO_SAM_DUE -DARDUINO_ARCH_SAM -D__SAM3X8E__ -mthumb -DUSB_VID=0x2341 -DUSB_PID=0x003e -DUSBCON "-DUSB_MANUFACTURER="Arduino LLC"" "-DUSB_PRODUCT="Arduino Due"" "-IC:\Users\Owner\AppData\Local\Arduino15\packages\arduino\hardware\sam\1.6.12\system/libsam" "-IC:\Users\Owner\AppData\Local\Arduino15\packages\arduino\hardware\sam\1.6.12\system/CMSIS/CMSIS/Include/" "-IC:\Users\Owner\AppData\Local\Arduino15\packages\arduino\hardware\sam\1.6.12\system/CMSIS/Device/ATMEL/" "-IC:\Users\Owner\AppData\Local\Arduino15\packages\arduino\hardware\sam\1.6.12\cores\arduino" "-IC:\Users\Owner\AppData\Local\Arduino15\packages\arduino\hardware\sam\1.6.12\variants\arduino_due_x" "-IC:\Program Files (x86)\Arduino\libraries\SD\src" "-IC:\Users\Owner\AppData\Local\Arduino15\packages\arduino\hardware\sam\1.6.12\libraries\SPI\src" "C:\Users\Owner\AppData\Local\Temp\arduino_build_438683\sketch\A_B_Z_2.ino.cpp" -o "C:\Users\Owner\AppData\Local\Temp\arduino_build_438683\sketch\A_B_Z_2.ino.cpp.o"

Compiling libraries...

Compiling library "SD"

以前コンパイルされたファイルを使用中:C:\Users\Owner\AppData\Local\Temp\arduino_build_438683\libraries\SD\SD.cpp.o

以前コンパイルされたファイルを使用中:C:\Users\Owner\AppData\Local\Temp\arduino_build_438683\libraries\SD\File.cpp.o

以前コンパイルされたファイルを使用中:C:\Users\Owner\AppData\Local\Temp\arduino_build_438683\libraries\SD\utility\SdVolume.cpp.o

以前コンパイルされたファイルを使用中:C:\Users\Owner\AppData\Local\Temp\arduino_build_438683\libraries\SD\utility\SdFile.cpp.o

以前コンパイルされたファイルを使用中:C:\Users\Owner\AppData\Local\Temp\arduino_build_438683\libraries\SD\utility\Sd2Card.cpp.o

Compiling library "SPI"

以前コンパイルされたファイルを使用中:C:\Users\Owner\AppData\Local\Temp\arduino_build_438683\libraries\SPI\SPI.cpp.o

Compiling core...

以前コンパイルされたファイルを使用中:C:\Users\Owner\AppData\Local\Temp\arduino_build_438683\core\variant.cpp.o

Using precompiled core: C:\Users\Owner\AppData\Local\Temp\arduino_cache_519739\core\core_arduino_sam_arduino_due_x_dbg_92af8bea7627d4af366837c6c94af8dd.a

Linking everything together...

"C:\Users\Owner\AppData\Local\Arduino15\packages\arduino\tools\arm-none-eabi-gcc\4.8.3-2014q1/bin/arm-none-eabi-gcc" -mcpu=cortex-m3 -mthumb -Os -Wl,--gc-sections "-TC:\Users\Owner\AppData\Local\Arduino15\packages\arduino\hardware\sam\1.6.12\variants\arduino_due_x/linker_scripts/gcc/flash.ld" "-Wl,-Map,C:\Users\Owner\AppData\Local\Temp\arduino_build_438683/A_B_Z_2.ino.map" -o "C:\Users\Owner\AppData\Local\Temp\arduino_build_438683/A_B_Z_2.ino.elf" "-LC:\Users\Owner\AppData\Local\Temp\arduino_build_438683" -Wl,--cref -Wl,--check-sections -Wl,--gc-sections -Wl,--entry=Reset_Handler -Wl,--unresolved-symbols=report-all -Wl,--warn-common -Wl,--warn-section-align -Wl,--start-group -u _sbrk -u link -u _close -u _fstat -u _isatty -u _lseek -u _read -u _write -u _exit -u kill -u _getpid "C:\Users\Owner\AppData\Local\Temp\arduino_build_438683\sketch\A_B_Z_2.ino.cpp.o" "C:\Users\Owner\AppData\Local\Temp\arduino_build_438683\libraries\SD\File.cpp.o" "C:\Users\Owner\AppData\Local\Temp\arduino_build_438683\libraries\SD\SD.cpp.o" "C:\Users\Owner\AppData\Local\Temp\arduino_build_438683\libraries\SD\utility\Sd2Card.cpp.o" "C:\Users\Owner\AppData\Local\Temp\arduino_build_438683\libraries\SD\utility\SdFile.cpp.o" "C:\Users\Owner\AppData\Local\Temp\arduino_build_438683\libraries\SD\utility\SdVolume.cpp.o" "C:\Users\Owner\AppData\Local\Temp\arduino_build_438683\libraries\SPI\SPI.cpp.o" "C:\Users\Owner\AppData\Local\Temp\arduino_build_438683\core\variant.cpp.o" "C:\Users\Owner\AppData\Local\Arduino15\packages\arduino\hardware\sam\1.6.12\variants\arduino_due_x/libsam_sam3x8e_gcc_rel.a" "C:\Users\Owner\AppData\Local\Temp\arduino_build_438683/..\arduino_cache_519739\core\core_arduino_sam_arduino_due_x_dbg_92af8bea7627d4af366837c6c94af8dd.a" -Wl,--end-group -lm -lgcc

c:/users/owner/appdata/local/arduino15/packages/arduino/tools/arm-none-eabi-gcc/4.8.3-2014q1/bin/../lib/gcc/arm-none-eabi/4.8.3/../../../../arm-none-eabi/bin/ld.exe: address 0x20088010 of C:\Users\Owner\AppData\Local\Temp\arduino_build_438683/A_B_Z_2.ino.elf section .bss' is not within region ram'

c:/users/owner/appdata/local/arduino15/packages/arduino/tools/arm-none-eabi-gcc/4.8.3-2014q1/bin/../lib/gcc/arm-none-eabi/4.8.3/../../../../arm-none-eabi/bin/ld.exe: address 0x20088010 of C:\Users\Owner\AppData\Local\Temp\arduino_build_438683/A_B_Z_2.ino.elf section .bss' is not within region ram'

c:/users/owner/appdata/local/arduino15/packages/arduino/tools/arm-none-eabi-gcc/4.8.3-2014q1/bin/../lib/gcc/arm-none-eabi/4.8.3/../../../../arm-none-eabi/bin/ld.exe: address 0x20088010 of C:\Users\Owner\AppData\Local\Temp\arduino_build_438683/A_B_Z_2.ino.elf section .bss' is not within region ram'

collect2.exe: error: ld returned 1 exit status

次のフォルダのライブラリSDバージョン1.2.4を使用中:C:\Program Files (x86)\Arduino\libraries\SD

次のフォルダのライブラリSPIバージョン1.0を使用中:C:\Users\Owner\AppData\Local\Arduino15\packages\arduino\hardware\sam\1.6.12\libraries\SPI

exit status 1

ボードArduino Due (Programming Port)に対するコンパイル時にエラーが発生しました。

該当のソースコード

ソースコード

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

static unsigned long t1[numa+3]={0}, t2[numb+3]={0},t3[numc+3]={0};
となっています。つまり、この部分で4*(numa+3)+4*(numb+3)+4*(numc+3)のメモリを確保しようとします。
numa,numbが例えば10000とするとおおよそ40000+40000で80KB。
20000ならその倍で160KB。
Arduino DUEのメモリ(RAM)が96KBですから、そんなの無理ですよ、ということです。(96KBもバンクになってるらしいけど、その辺の扱いは知らない)

投稿2021/01/29 03:03

thkana

総合スコア7703

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Yokkii

2021/01/29 03:35

回答していただきありがとうございます メモリについては考えていませんでした。 ひとつお聞きしたいのですが、それぞれのエンコーダのデータを10000個取得するときに必要なメモリを知ることはできますか?
thkana

2021/01/29 03:39

> それぞれのエンコーダのデータを10000個取得するときに必要なメモリ >> numa,numbが例えば10000とするとおおよそ40000+40000で80KB。 ということではなくてですか?
Yokkii

2021/01/29 04:02

1個のデータが4*1=4(バイト)でそれぞれ10000個データを取るとすると、4*10000+4*10000=80(キロバイト)ということですか?
Yokkii

2021/01/29 04:09

unsigned long型は4バイトの数値を格納するため、1個のデータの容量が4バイトということですか?
thkana

2021/01/29 04:27

どんなシステムでもunsigned longが4バイトという決まりはないのですが、少なくともArduino Dueではそういうことです。
Yokkii

2021/01/29 04:28

納得しました! ありがとうございます
guest

0

単純にメモリ不足ですね
もっとメモリ(RAM)容量がたくさんあるCPUを選びましょう

投稿2021/01/29 02:53

y_waiwai

総合スコア88038

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.36%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問