ド素人ですw。以前にGR-SAKURAのフォーラムで「8×8×8のLED-CUBEを作ったけど、うまく動かない」で助けて頂いた者です。
https://japan.renesasrulz.com/gr_user_forum_japanese/f/gr-sakura/3717/thread
同じLED-CUBEをとある事情で、SAKURA->秋月で買ったRX621ボードへの移植をしてます。(せっかくかわいいSAKURAボードは、他の用事に使おうかとw)
e2studioで作ってます。なんとかほぼ動くようになったのですが、sinを使ってる所でSAKURAとLEDの表示が違います…。
SAKURAの方のプログラムの該当部分は、
1 : void ripples(int times, int repeat)2 : {3 : int i,j,k,z;4 : float distance,ztemp;5 : clearData();
6 : for(k=0;k<=repeat;++k) {7 : for(i=0;i<=3;++i) {8 : for(j=0;j<=3;++j) {9 : distance=sqrt((3.5-(float)i)*(3.5-(float)i)+(3.5-(float)j)*(3.5-(float)j));10: ztemp=3.5+sin(distance/1.3+(float)k/3.14159)*3.5;11: z=(int)(ztemp+0.5);12: bitSet(dispData[z][i],j);13: bitSet(dispData[z][7-i],j);14: bitSet(dispData[z][i],7-j);15: bitSet(dispData[z][7-i],7-j);16: }17: }18: LEDDisp(times);19: clearData();20: }21: }
LED表示用配列の辺は見ないで頂いて(移植に伴いbitsetー>ビットシフトに変えてます)、9~11行目の式で、がじぇるねのwebコンパイラでビルドしたSAKURAと、e2studioでビルドしたRX621ボードとで、計算結果が異なる原因が何かあるでしょうか…?
sqrtとsinをsqrtfとsinfに変えてみたりとか、型指定を外してみたりとかしても、変わらない様です。
(printfで計算結果を確認しようとしたのですがうまくいかないので、ほんとに計算結果が違うかどうかは確認できていません…)
どなたかご助言頂けると助かります。
koheiさん、こんにちは。NoMaYです。> 「ド素人です」とお断りしたのにww。全然ズレた返答をしたらごめんなさいw。ああっ、ごめんなさい、でもちゃんとイイ感じでリプライされていると思いますよ。GR-SAKURAでは、printf出力(というかSerial.writeでしたっけ?)することは出来そうですか? それから、念の為、e2 studioのバージョンも教えて下さい。それが出来るのであれば、koheiさんの主たる関心事(たぶんデバッグ力の向上は対象外かな)と私の好奇心を鑑みて、ひとまず以下の手はどうかなと思いました。koheiさん・GR-SAKURAで値を出力して、その結果を投稿して頂く。(ripples関数のrepeat引数の値も。3にしとけば良いのかな?)私・くだんの関数をシミュレータで実行して、koheiさんの結果と突き合わせたものを投稿する。それで、私がそれを試すのに以下のファイルが欲しいのですが、zipファイルに固めて添付して投稿して頂けるとうれしいです。(リプライする時に Use rich formatting のところをクリックすると、ファイル添付が可能な画面モードになります。)欲しいファイル・プロジェクトフォルダにある .cproject というファイル
とりあえず、.cproject、サイズがそんなに大きくないので、そのまま添付しておきます。(添付の仕方が分からなかった…。これでいいのか、変な貼り付けですみません…)
repeatは、メインループからrepeat=250で呼び出してます。(sinの位相をずらしながら何回計算するかの繰り返し回数の指定です。)
<?xml version="1.0" encoding="UTF-8" standalone="no"?> <?fileVersion 4.0.0?><cproject storage_type_id="org.eclipse.cdt.core.XmlProjectDescriptionStorage"> <storageModule moduleId="org.eclipse.cdt.core.settings"> <cconfiguration id="com.renesas.cdt.managedbuild.renesas.ccrx.release.configuration.1315861637"> <storageModule buildSystemId="org.eclipse.cdt.managedbuilder.core.configurationDataProvider" id="com.renesas.cdt.managedbuild.renesas.ccrx.release.configuration.1315861637" moduleId="org.eclipse.cdt.core.settings" name="Release"> <externalSettings/> <extensions> <extension id="org.eclipse.cdt.core.PE" point="org.eclipse.cdt.core.BinaryParser"/> <extension id="org.eclipse.cdt.core.ELF" point="org.eclipse.cdt.core.BinaryParser"/> <extension id="org.eclipse.cdt.core.GmakeErrorParser" point="org.eclipse.cdt.core.ErrorParser"/> <extension id="com.renesas.cdt.managedbuild.renesas.core.RenesasCompilerAssemblerErrorParser" point="org.eclipse.cdt.core.ErrorParser"/> <extension id="com.renesas.cdt.managedbuild.core.buildRunnerErrorParser" point="org.eclipse.cdt.core.ErrorParser"/> </extensions> </storageModule> <storageModule moduleId="com.renesas.cdt.managedbuild.core.toolchainInfo"> <option id="toolchain.id" value="Renesas_RXC"/> <option id="toolchain.version" value="v3.02.00"/> </storageModule> <storageModule moduleId="cdtBuildSystem" version="4.0.0"> <configuration artifactExtension="mot" artifactName="${ProjName}" buildArtefactType="org.eclipse.cdt.build.core.buildArtefactType.exe" buildProperties="org.eclipse.cdt.build.core.buildArtefactType=org.eclipse.cdt.build.core.buildArtefactType.exe,org.eclipse.cdt.build.core.buildType=org.eclipse.cdt.build.core.buildType.debug" description="Release - No Debug" id="com.renesas.cdt.managedbuild.renesas.ccrx.release.configuration.1315861637" name="Release" parent="com.renesas.cdt.managedbuild.renesas.ccrx.release.configuration"> <folderInfo id="com.renesas.cdt.managedbuild.renesas.ccrx.release.configuration.1315861637." name="/" resourcePath=""> <toolChain id="com.renesas.cdt.managedbuild.renesas.ccrx.release.toolChain.505308947" name="Renesas CCRX Toolchain" superClass="com.renesas.cdt.managedbuild.renesas.ccrx.release.toolChain"> <targetPlatform archList="all" binaryParser="org.eclipse.cdt.core.ELF;org.eclipse.cdt.core.PE" id="com.renesas.cdt.managedbuild.renesas.ccrx.base.targetPlatform.734026637" osList="win32" superClass="com.renesas.cdt.managedbuild.renesas.ccrx.base.targetPlatform"/> <builder buildPath="${workspace_loc:/LEDCube}/Release" id="com.renesas.cdt.managedbuild.renesas.ccrx.base.builder.1673168716" keepEnvironmentInBuildfile="false" managedBuildOn="true" name="CCRX Builder" parallelBuildOn="true" parallelizationNumber="optimal" superClass="com.renesas.cdt.managedbuild.renesas.ccrx.base.builder"/> <tool id="com.renesas.cdt.managedbuild.renesas.ccrx.base.dsp.126780263" name="DSP Assembler" superClass="com.renesas.cdt.managedbuild.renesas.ccrx.base.dsp"> <option id="com.renesas.cdt.managedbuild.renesas.ccrx.dsp.option.endian.1239988445" name="出力するデータ値のエンディアン" superClass="com.renesas.cdt.managedbuild.renesas.ccrx.dsp.option.endian" useByScannerDiscovery="false" value="com.renesas.cdt.managedbuild.renesas.ccrx.dsp.option.endian.big" valueType="enumerated"/> </tool> <tool id="com.renesas.cdt.managedbuild.renesas.ccrx.base.common.2001634948" name="Common" superClass="com.renesas.cdt.managedbuild.renesas.ccrx.base.common"> <option id="com.renesas.cdt.managedbuild.renesas.ccrx.common.option.isa.1942759623" name="命令セット・アーキテクチャ" superClass="com.renesas.cdt.managedbuild.renesas.ccrx.common.option.isa" useByScannerDiscovery="false" value="com.renesas.cdt.managedbuild.renesas.ccrx.common.option.isa.rxv1" valueType="enumerated"/> <option id="com.renesas.cdt.managedbuild.renesas.ccrx.common.option.rxArchitecture.743507827" name="RX Architecture" superClass="com.renesas.cdt.managedbuild.renesas.ccrx.common.option.rxArchitecture" useByScannerDiscovery="false" value="rxv1" valueType="string"/> <option id="com.renesas.cdt.managedbuild.renesas.ccrx.common.option.floatIns.868098093" name="浮動小数点演算命令を使用する" superClass="com.renesas.cdt.managedbuild.renesas.ccrx.common.option.floatIns" useByScannerDiscovery="false" value="com.renesas.cdt.managedbuild.renesas.ccrx.common.option.floatIns.yes" valueType="enumerated"/> <option id="com.renesas.cdt.managedbuild.renesas.ccrx.common.option.hasFpu.1415189979" name="Has FPU" superClass="com.renesas.cdt.managedbuild.renesas.ccrx.common.option.hasFpu" useByScannerDiscovery="false" value="TRUE" valueType="string"/> <option id="com.renesas.cdt.managedbuild.renesas.ccrx.common.option.deviceName.752402493" name="Device Name" superClass="com.renesas.cdt.managedbuild.renesas.ccrx.common.option.deviceName" useByScannerDiscovery="false" value="R5F56218BxFP" valueType="string"/> <option id="com.renesas.cdt.managedbuild.renesas.ccrx.common.option.deviceHistory.1884691928" name="Device history" superClass="com.renesas.cdt.managedbuild.renesas.ccrx.common.option.deviceHistory" useByScannerDiscovery="false" value="non_init;R5F56218BxFP" valueType="string"/> <option id="com.renesas.cdt.managedbuild.renesas.ccrx.common.option.isaHistory.2043861359" name="ISA history" superClass="com.renesas.cdt.managedbuild.renesas.ccrx.common.option.isaHistory" useByScannerDiscovery="false" value="non_init;com.renesas.cdt.managedbuild.renesas.ccrx.common.option.isa.rxv1" valueType="string"/> <option id="com.renesas.cdt.managedbuild.renesas.ccrx.common.option.deviceCommand.342802759" name="Device Command" superClass="com.renesas.cdt.managedbuild.renesas.ccrx.common.option.deviceCommand" useByScannerDiscovery="false" value="R5F56218" valueType="string"/> <option id="com.renesas.cdt.managedbuild.renesas.ccrx.common.option.checkRtos.589338073" name="Check RTOS" superClass="com.renesas.cdt.managedbuild.renesas.ccrx.common.option.checkRtos" useByScannerDiscovery="false" value="unusedRtos" valueType="string"/> <option id="com.renesas.cdt.managedbuild.renesas.ccrx.common.option.hasDsp.444603907" name="Has DSP" superClass="com.renesas.cdt.managedbuild.renesas.ccrx.common.option.hasDsp" useByScannerDiscovery="false" value="false" valueType="string"/> <option id="com.renesas.cdt.managedbuild.renesas.ccrx.common.option.deviceFamily.938063402" name="Device Family" superClass="com.renesas.cdt.managedbuild.renesas.ccrx.common.option.deviceFamily" useByScannerDiscovery="false" value="RX621" valueType="string"/> </tool> <tool id="com.renesas.cdt.managedbuild.renesas.ccrx.base.compiler.881558903" name="Compiler" superClass="com.renesas.cdt.managedbuild.renesas.ccrx.base.compiler"> <option id="com.renesas.cdt.managedbuild.renesas.ccrx.compiler.option.fpu.1831180734" name="浮動小数点演算命令を使用する" superClass="com.renesas.cdt.managedbuild.renesas.ccrx.compiler.option.fpu" useByScannerDiscovery="false" value="com.renesas.cdt.managedbuild.renesas.ccrx.compiler.option.fpu.yes" valueType="enumerated"/> <option IS_BUILTIN_EMPTY="false" IS_VALUE_EMPTY="false" id="com.renesas.cdt.managedbuild.renesas.ccrx.compiler.option.include.734620466" name="インクルード・ファイルを検索するフォルダ" superClass="com.renesas.cdt.managedbuild.renesas.ccrx.compiler.option.include" valueType="includePath"> <listOptionValue builtIn="false" value="${TCINSTALL}/include"/> <listOptionValue builtIn="false" value="${ProjDirPath}/generate"/> </option> <option id="com.renesas.cdt.managedbuild.renesas.ccrx.compiler.option.debug.1634101600" name="デバッグ情報を出力する" superClass="com.renesas.cdt.managedbuild.renesas.ccrx.compiler.option.debug" useByScannerDiscovery="false" value="false" valueType="boolean"/> <option IS_BUILTIN_EMPTY="false" IS_VALUE_EMPTY="false" id="com.renesas.cdt.managedbuild.renesas.ccrx.compiler.option.userBefore.1366181642" name="追加するオプション(すべての指定オプションの前に追加)" superClass="com.renesas.cdt.managedbuild.renesas.ccrx.compiler.option.userBefore" useByScannerDiscovery="false" valueType="stringList"> <listOptionValue builtIn="false" value=""/> </option> <option IS_BUILTIN_EMPTY="false" IS_VALUE_EMPTY="false" id="com.renesas.cdt.managedbuild.renesas.ccrx.compiler.option.userAfter.1808712041" name="追加するオプション(すべての指定オプションの後ろに追加)" superClass="com.renesas.cdt.managedbuild.renesas.ccrx.compiler.option.userAfter" useByScannerDiscovery="false" valueType="stringList"> <listOptionValue builtIn="false" value=""/> </option> <option id="com.renesas.cdt.managedbuild.renesas.ccrx.compiler.option.inputCharCode.2028166327" name="プログラムの文字コード" superClass="com.renesas.cdt.managedbuild.renesas.ccrx.compiler.option.inputCharCode" useByScannerDiscovery="false" value="com.renesas.cdt.managedbuild.renesas.ccrx.compiler.option.inputCharCode.utf8" valueType="enumerated"/> <option id="com.renesas.cdt.managedbuild.renesas.ccrx.compiler.option.outcode.572303613" name="出力する文字コード" superClass="com.renesas.cdt.managedbuild.renesas.ccrx.compiler.option.outcode" useByScannerDiscovery="false" value="com.renesas.cdt.managedbuild.renesas.ccrx.compiler.option.outcode.utf8" valueType="enumerated"/> <option id="com.renesas.cdt.managedbuild.renesas.ccrx.compiler.option.asmPath.1813327638" name="アセンブリ・ソース・ファイルを出力する" superClass="com.renesas.cdt.managedbuild.renesas.ccrx.compiler.option.asmPath" useByScannerDiscovery="false" value="true" valueType="boolean"/> <option id="com.renesas.cdt.managedbuild.renesas.ccrx.compiler.option.outputPreprocessed.1799308880" name="プリプロセッサ展開後のソース・ファイルを出力する" superClass="com.renesas.cdt.managedbuild.renesas.ccrx.compiler.option.outputPreprocessed" useByScannerDiscovery="false" value="true" valueType="boolean"/> <option id="com.renesas.cdt.managedbuild.renesas.ccrx.compiler.option.listfile.353648125" name="リスト・ファイルを出力する" superClass="com.renesas.cdt.managedbuild.renesas.ccrx.compiler.option.listfile" useByScannerDiscovery="false" value="true" valueType="boolean"/> <option id="com.renesas.cdt.managedbuild.renesas.ccrx.compiler.option.listfileFeatures.792493456" name="出力方法" superClass="com.renesas.cdt.managedbuild.renesas.ccrx.compiler.option.listfileFeatures" useByScannerDiscovery="false" value="com.renesas.cdt.managedbuild.renesas.ccrx.compiler.option.listfileFeatures.all" valueType="enumerated"/> <option id="com.renesas.cdt.managedbuild.renesas.ccrx.compiler.option.showSource.1079210508" name="C/C++ソースを出力する" superClass="com.renesas.cdt.managedbuild.renesas.ccrx.compiler.option.showSource" useByScannerDiscovery="false" value="true" valueType="boolean"/> <option id="com.renesas.cdt.managedbuild.renesas.ccrx.compiler.option.showConditionals.1773237446" name="条件アセンブルで条件が偽となる行も含めて出力する" superClass="com.renesas.cdt.managedbuild.renesas.ccrx.compiler.option.showConditionals" useByScannerDiscovery="false" value="true" valueType="boolean"/> <option id="com.renesas.cdt.managedbuild.renesas.ccrx.compiler.option.showDefinitions.2112486876" name=".DEFINEで置き換える以前の情報を出力する" superClass="com.renesas.cdt.managedbuild.renesas.ccrx.compiler.option.showDefinitions" useByScannerDiscovery="false" value="true" valueType="boolean"/> <option id="com.renesas.cdt.managedbuild.renesas.ccrx.compiler.option.showExpansions.782048419" name="アセンブラマクロ記述展開行を出力する" superClass="com.renesas.cdt.managedbuild.renesas.ccrx.compiler.option.showExpansions" useByScannerDiscovery="false" value="true" valueType="boolean"/> <inputType id="com.renesas.cdt.managedbuild.renesas.ccrx.compiler.gcc.inputType.1560209202" name="Compiler Input C" superClass="com.renesas.cdt.managedbuild.renesas.ccrx.compiler.gcc.inputType"/> <inputType id="com.renesas.cdt.managedbuild.renesas.ccrx.compiler.gpp.inputType.243433090" name="Compiler Input CPP" superClass="com.renesas.cdt.managedbuild.renesas.ccrx.compiler.gpp.inputType"/> </tool> <tool id="com.renesas.cdt.managedbuild.renesas.ccrx.base.assembler.1263186685" name="Assembler" superClass="com.renesas.cdt.managedbuild.renesas.ccrx.base.assembler"> <option id="com.renesas.cdt.managedbuild.renesas.ccrx.assembler.option.debug.2016113663" name="デバッグ情報を出力する" superClass="com.renesas.cdt.managedbuild.renesas.ccrx.assembler.option.debug" useByScannerDiscovery="false" value="false" valueType="boolean"/> <option IS_BUILTIN_EMPTY="false" IS_VALUE_EMPTY="false" id="com.renesas.cdt.managedbuild.renesas.ccrx.assembler.option.userBefore.989937417" name="追加するオプション(すべての指定オプションの前に追加)" superClass="com.renesas.cdt.managedbuild.renesas.ccrx.assembler.option.userBefore" useByScannerDiscovery="false" valueType="stringList"> <listOptionValue builtIn="false" value=""/> </option> <option IS_BUILTIN_EMPTY="false" IS_VALUE_EMPTY="false" id="com.renesas.cdt.managedbuild.renesas.ccrx.assembler.option.userAfter.1238703252" name="追加するオプション(すべての指定オプションの後ろに追加) " superClass="com.renesas.cdt.managedbuild.renesas.ccrx.assembler.option.userAfter" useByScannerDiscovery="false" valueType="stringList"> <listOptionValue builtIn="false" value=""/> </option> <option id="com.renesas.cdt.managedbuild.renesas.ccrx.assembler.option.characterCode.327224015" name="プログラムの文字コード" superClass="com.renesas.cdt.managedbuild.renesas.ccrx.assembler.option.characterCode" useByScannerDiscovery="false" value="com.renesas.cdt.managedbuild.renesas.ccrx.assembler.option.characterCode.utf8" valueType="enumerated"/> <option id="com.renesas.cdt.managedbuild.renesas.ccrx.assembler.option.listfile.1683240137" name="リスト・ファイルを出力する" superClass="com.renesas.cdt.managedbuild.renesas.ccrx.assembler.option.listfile" useByScannerDiscovery="false" value="true" valueType="boolean"/> <option id="com.renesas.cdt.managedbuild.renesas.ccrx.assembler.option.specifyListfile.1478210560" name="リスト・ファイルの内容" superClass="com.renesas.cdt.managedbuild.renesas.ccrx.assembler.option.specifyListfile" useByScannerDiscovery="false" value="com.renesas.cdt.managedbuild.renesas.ccrx.assembler.option.specifyListfile.all" valueType="enumerated"/> <option id="com.renesas.cdt.managedbuild.renesas.ccrx.assembler.option.showCondition.350924429" name="条件アセンブルで偽となった行を出力する" superClass="com.renesas.cdt.managedbuild.renesas.ccrx.assembler.option.showCondition" useByScannerDiscovery="false" value="true" valueType="boolean"/> <option id="com.renesas.cdt.managedbuild.renesas.ccrx.assembler.option.showDefinitions.1407135253" name=".DEFINEで置き換える以前の情報を出力する" superClass="com.renesas.cdt.managedbuild.renesas.ccrx.assembler.option.showDefinitions" useByScannerDiscovery="false" value="true" valueType="boolean"/> <option id="com.renesas.cdt.managedbuild.renesas.ccrx.assembler.option.showExpansions.273911866" name="アセンブラマクロ記述展開行を出力する	" superClass="com.renesas.cdt.managedbuild.renesas.ccrx.assembler.option.showExpansions" useByScannerDiscovery="false" value="true" valueType="boolean"/> <inputType id="com.renesas.cdt.managedbuild.renesas.ccrx.assembler.inputType.804647412" name="Assembler InputType" superClass="com.renesas.cdt.managedbuild.renesas.ccrx.assembler.inputType"/> </tool> <tool id="com.renesas.cdt.managedbuild.renesas.ccrx.base.linker.1611947179" name="Linker" superClass="com.renesas.cdt.managedbuild.renesas.ccrx.base.linker"> <option id="com.renesas.cdt.managedbuild.renesas.ccrx.linker.option.debug.1205453297" name="デバッグ情報を出力する" superClass="com.renesas.cdt.managedbuild.renesas.ccrx.linker.option.debug" useByScannerDiscovery="false" value="com.renesas.cdt.managedbuild.renesas.ccrx.linker.option.debug.no" valueType="enumerated"/> <option IS_BUILTIN_EMPTY="false" IS_VALUE_EMPTY="false" id="com.renesas.cdt.managedbuild.renesas.ccrx.linker.option.rom.2026837141" name="ROMからRAMへマップするセクション" superClass="com.renesas.cdt.managedbuild.renesas.ccrx.linker.option.rom" useByScannerDiscovery="false" valueType="stringList"> <listOptionValue builtIn="false" value="D=R"/> <listOptionValue builtIn="false" value="D_1=R_1"/> <listOptionValue builtIn="false" value="D_2=R_2"/> </option> <option id="com.renesas.cdt.managedbuild.renesas.ccrx.linker.option.linkerSection.1747870969" name="セクション" superClass="com.renesas.cdt.managedbuild.renesas.ccrx.linker.option.linkerSection" useByScannerDiscovery="false" value="SU,SI,B_1,R_1,B_2,R_2,B,R/04,PResetPRG,C_1,C_2,C,C$*,D*,W*,L,PIntPRG,P/0FFF80000,FIXEDVECT/0FFFFFF80" valueType="string"/> <option IS_BUILTIN_EMPTY="false" IS_VALUE_EMPTY="false" id="com.renesas.cdt.managedbuild.renesas.ccrx.linker.option.userBefore.830794015" name="追加するオプション(すべての指定オプションの前に追加)" superClass="com.renesas.cdt.managedbuild.renesas.ccrx.linker.option.userBefore" useByScannerDiscovery="false" valueType="stringList"> <listOptionValue builtIn="false" value=""/> </option> <option IS_BUILTIN_EMPTY="false" IS_VALUE_EMPTY="false" id="com.renesas.cdt.managedbuild.renesas.ccrx.linker.option.userAfter.734542454" name="追加するオプション(すべての指定オプションの後ろに追加)" superClass="com.renesas.cdt.managedbuild.renesas.ccrx.linker.option.userAfter" useByScannerDiscovery="false" valueType="stringList"> <listOptionValue builtIn="false" value=""/> </option> <option id="com.renesas.cdt.managedbuild.renesas.ccrx.linker.option.checkSection.848076416" name="セクションの割り付けアドレスをチェックする" superClass="com.renesas.cdt.managedbuild.renesas.ccrx.linker.option.checkSection" useByScannerDiscovery="false" value="true" valueType="boolean"/> <option id="com.renesas.cdt.managedbuild.renesas.ccrx.linker.option.memoryType.761130672" name="アドレス範囲指定方法" superClass="com.renesas.cdt.managedbuild.renesas.ccrx.linker.option.memoryType" useByScannerDiscovery="false" value="com.renesas.cdt.managedbuild.renesas.ccrx.linker.option.memoryType.autoSpecify" valueType="enumerated"/> <option IS_BUILTIN_EMPTY="false" IS_VALUE_EMPTY="false" id="com.renesas.cdt.managedbuild.renesas.ccrx.linker.option.noneLinkageOrderList.1870100520" name="(リンク順序のリスト)" superClass="com.renesas.cdt.managedbuild.renesas.ccrx.linker.option.noneLinkageOrderList" valueType="stringList"> <listOptionValue builtIn="false" value="".\generate\dbsct.obj""/> <listOptionValue builtIn="false" value="".\generate\hwsetup.obj""/> <listOptionValue builtIn="false" value="".\generate\intprg.obj""/> <listOptionValue builtIn="false" value="".\generate\resetprg.obj""/> <listOptionValue builtIn="false" value="".\generate\sbrk.obj""/> <listOptionValue builtIn="false" value="".\generate\vecttbl.obj""/> <listOptionValue builtIn="false" value="".\src\LEDCube.obj""/> <listOptionValue builtIn="false" value="".\LEDCube.lib""/> </option> </tool> <tool id="com.renesas.cdt.managedbuild.renesas.ccrx.base.librarian.1101845936" name="Library Generator" superClass="com.renesas.cdt.managedbuild.renesas.ccrx.base.librarian"> <option id="com.renesas.cdt.managedbuild.renesas.ccrx.librarian.option.fpu.951280425" name="浮動小数点演算命令を使用する" superClass="com.renesas.cdt.managedbuild.renesas.ccrx.librarian.option.fpu" useByScannerDiscovery="false" value="com.renesas.cdt.managedbuild.renesas.ccrx.librarian.option.fpu.yes" valueType="enumerated"/> <option IS_BUILTIN_EMPTY="false" IS_VALUE_EMPTY="false" id="com.renesas.cdt.managedbuild.renesas.ccrx.librarian.option.userBefore.1188340518" name="追加するオプション(すべての指定オプションの前に追加)" superClass="com.renesas.cdt.managedbuild.renesas.ccrx.librarian.option.userBefore" useByScannerDiscovery="false" valueType="stringList"> <listOptionValue builtIn="false" value=""/> </option> <option IS_BUILTIN_EMPTY="false" IS_VALUE_EMPTY="false" id="com.renesas.cdt.managedbuild.renesas.ccrx.librarian.option.userAfter.724003180" name="追加するオプション(すべての指定オプションの後ろに追加)" superClass="com.renesas.cdt.managedbuild.renesas.ccrx.librarian.option.userAfter" useByScannerDiscovery="false" valueType="stringList"> <listOptionValue builtIn="false" value=""/> </option> <option id="com.renesas.cdt.managedbuild.renesas.ccrx.librarian.option.headMath.173975464" name="math.h(C89/C99):数値計算用ライブラリ" superClass="com.renesas.cdt.managedbuild.renesas.ccrx.librarian.option.headMath" useByScannerDiscovery="false" value="true" valueType="boolean"/> <option id="com.renesas.cdt.managedbuild.renesas.ccrx.librarian.option.lang.200719040" name="C言語標準ライブラリ関数の構成" superClass="com.renesas.cdt.managedbuild.renesas.ccrx.librarian.option.lang" useByScannerDiscovery="false" value="com.renesas.cdt.managedbuild.renesas.ccrx.librarian.option.lang.c99" valueType="enumerated"/> <option id="com.renesas.cdt.managedbuild.renesas.ccrx.librarian.option.headMathf.1398468535" name="mathf.h(C89/C99):数値計算用ライブラリ(float型関数)" superClass="com.renesas.cdt.managedbuild.renesas.ccrx.librarian.option.headMathf" useByScannerDiscovery="false" value="true" valueType="boolean"/> </tool> <tool id="com.renesas.cdt.managedbuild.renesas.ccrx.base.converter.88816712" name="Converter" superClass="com.renesas.cdt.managedbuild.renesas.ccrx.base.converter"> <option IS_BUILTIN_EMPTY="false" IS_VALUE_EMPTY="false" id="com.renesas.cdt.managedbuild.renesas.ccrx.converter.option.userBefore.910115603" name="追加するオプション(すべての指定オプションの前に追加)" superClass="com.renesas.cdt.managedbuild.renesas.ccrx.converter.option.userBefore" useByScannerDiscovery="false" valueType="stringList"> <listOptionValue builtIn="false" value=""/> </option> <option IS_BUILTIN_EMPTY="false" IS_VALUE_EMPTY="false" id="com.renesas.cdt.managedbuild.renesas.ccrx.converter.option.userAfter.981257079" name="追加するオプション(すべての指定オプションの後ろに追加)" superClass="com.renesas.cdt.managedbuild.renesas.ccrx.converter.option.userAfter" useByScannerDiscovery="false" valueType="stringList"> <listOptionValue builtIn="false" value=""/> </option> <option id="com.renesas.cdt.managedbuild.renesas.ccrx.converter.option.outputHexFile.659619451" name="ロード・モジュール・コンバータを実行する" superClass="com.renesas.cdt.managedbuild.renesas.ccrx.converter.option.outputHexFile" useByScannerDiscovery="false" value="true" valueType="boolean"/> </tool> <tool id="com.renesas.cdt.managedbuild.renesas.ccrx.base.rtosConfig.99823154" name="RTOS Configurator" superClass="com.renesas.cdt.managedbuild.renesas.ccrx.base.rtosConfig"/> </toolChain> </folderInfo> <sourceEntries> <entry flags="VALUE_WORKSPACE_PATH" kind="sourcePath" name="src"/> <entry excluding="lowlvl.src|lowsrc.c" flags="VALUE_WORKSPACE_PATH" kind="sourcePath" name="generate"/> </sourceEntries> </configuration> </storageModule> <storageModule moduleId="org.eclipse.cdt.core.externalSettings"/> </cconfiguration> </storageModule> <storageModule moduleId="cdtBuildSystem" version="4.0.0"> <project id="LEDCube.com.renesas.cdt.managedbuild.renesas.ccrx.projectType.1387087214" name="実行可能" projectType="com.renesas.cdt.managedbuild.renesas.ccrx.projectType"/> </storageModule> <storageModule moduleId="scannerConfiguration"> <autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId=""/> </storageModule> <storageModule moduleId="org.eclipse.cdt.core.LanguageSettingsProviders"/> <storageModule moduleId="refreshScope"/> <storageModule moduleId="org.eclipse.cdt.make.core.buildtargets"/> </cproject>
ちょっとハードルが高いけど、もっと単純なサンプルプログラムにしてアセンブル結果を解読したら、何か分かるかしら…。あいや、math.hが展開されたところは解読できないや…。
今日の午後は、へろへろで本業のおもちゃ修理に行ってたので、Res遅くてすみません。アンド、返信切れ切れですみません。
lstファイル、テキストで109kBもあって結構な行数なので、多分「ripple()はここ」と思う個所を張り付けておきます。
000008DC _ripples: .STACK _ripples=48 ; 599 ; 600 void ripples(int times, int repeat) 000008DC 6E6D PUSHM R6-R13 000008DE 60C0 SUB #0CH, R0 000008E0 A081 MOV.L R1, 08H[R0] 000008E2 EF21 MOV.L R2, R1 000008E4 A009 MOV.L R1, 04H[R0] ; 601 { ; 602 int i,j,k,z; ; 603 float distance,ztemp; ; 604 clearData(); 000008E6 39rrrr W BSR _clearData 000008E9 6601 MOV.L #00000000H, R1 000008EB E301 MOV.L R1, [R0] 000008ED FBD2rrrrrrrr MOV.L #_dispData, R13 000008F3 FBC200006040 MOV.L #40600000H, R12 000008F9 L237: ; bb97 ; 605 ; 606 for(k=0;k<=repeat;++k) { 000008F9 EC01 MOV.L [R0], R1 000008FB 06850101 CMP 04H[R0].L, R1 000008FF 2Brr * BGT L243 38rrrr 00000904 L238: ; bb81.thread.preheader 00000904 EC01 MOV.L [R0], R1 00000906 71DB07 ADD #07H, R13, R11 00000909 FC471A ITOF R1, R10 0000090C FD724AD00F4940 FDIV #40490FD0H, R10 00000913 6609 MOV.L #00000000H, R9 00000915 L239: ; bb81.thread ; 607 for(i=0;i<=3;++i) { ; 608 for(j=0;j<=3;++j) { 00000915 FC479E ITOF R9, R14 00000918 EFC8 MOV.L R12, R8 0000091A FC83E8 FSUB R14, R8 0000091D FC8F88 FMUL R8, R8 00000920 6607 MOV.L #00000000H, R7 00000922 6676 MOV.L #00000007H, R6 00000924 L240: ; bb2 ; 609 distance=sqrt((3.5-(float)i)*(3.5-(float)i)+(3.5-(float)j)*(3.5-(float)j)); 00000924 FC477E ITOF R7, R14 00000927 EFC1 MOV.L R12, R1 00000929 FC83E1 FSUB R14, R1 0000092C FC8F11 FMUL R1, R1 0000092F FC8B81 FADD R8, R1 00000932 05rrrrrr A BSR _sqrt ; 610 ztemp=3.5+sin(distance/1.3+(float)k/3.14159)*3.5; 00000936 FD72416666A63F FDIV #3FA66666H, R1 0000093D FC8BA1 FADD R10, R1 00000940 05rrrrrr A BSR _sin 00000944 FD723100006040 FMUL #40600000H, R1 0000094B FD722100006040 FADD #40600000H, R1 ; 611 z=(int)(ztemp+0.5); 00000952 FD72210000003F FADD #3F000000H, R1 00000959 FC971E FTOI R1, R14 ; 612 ; 613 // distance=sqrt((3.5-i)*(3.5-i)+(3.5-j)*(3.5-j)); ; 614 // ztemp=3.5+sin(distance/1.3+k/3.14159)*3.5; ; 615 // z=(int)(ztemp+0.5); ; 616 dispData[z][i] |= 1<<j; 0000095C 6C3E SHLL #03H, R14 0000095E FF2FE9 ADD R14, R9, R15 00000961 FECFD5 MOVU.B [R15,R13], R5 00000964 FC6357 BSET R7, R5 00000967 FE0FD5 MOV.B R5, [R15,R13] ; 617 dispData[z][7-i] |= 1<<j; 0000096A FECBE5 MOVU.B [R11,R14], R5 0000096D FC6357 BSET R7, R5 00000970 FE0BE5 MOV.B R5, [R11,R14] ; 618 dispData[z][i] |= 1<<(7-j); 00000973 FECFD5 MOVU.B [R15,R13], R5 00000976 6217 ADD #01H, R7 00000978 FC6356 BSET R6, R5 0000097B FE0FD5 MOV.B R5, [R15,R13] ; 619 dispData[z][7-i] |= 1<<(7-j); 0000097E FECBEF MOVU.B [R11,R14], R15 00000981 FC63F6 BSET R6, R15 00000984 FE0BEF MOV.B R15, [R11,R14] 00000987 6016 SUB #01H, R6 00000989 6147 CMP #04H, R7 0000098B 21rr BNE L240 0000098D L241: ; bb85 0000098D 6219 ADD #01H, R9 0000098F 601B SUB #01H, R11 00000991 6149 CMP #04H, R9 00000993 21rr BNE L239 00000995 L242: ; bb93 ; 620 } ; 621 } ; 622 LEDDisp(times); 00000995 A881 MOV.L 08H[R0], R1 00000997 39rrrr W BSR _LEDDisp ; 623 clearData(); 0000099A 39rrrr W BSR _clearData 0000099D EC01 MOV.L [R0], R1 0000099F 6211 ADD #01H, R1 000009A1 E301 MOV.L R1, [R0] 000009A3 38rrrr W BRA L237 000009A6 L243: ; return ; 624 } ; 625 }
自分で解読するべきなのですが、ちょっと根性と知識が足りません…w。とりあえず貼らせて頂きます。