トランジスタ技術8、9月号にPICマイコン関連が連載されました。
デモ機を部品を買ってつくり、何とか記事の進行について行っています。9月号の第2章ADコンバータで躓きました。
8月初めに、上記ADコンバータを使用したデータ記録計はうまく動きました。ところが、9/21に同じことをやりましたら、"BUILD ALL"でエラーが発生するようになりました。従ってhexファイルは出来ません。
エラーメッセージを見ると下記のようになっていました。
***************************************************
THE MPLAB C30 license has expired.
pic30-coff-cc1.exe:warning:Options has been disabled due to expired license
***************************************************
***************************************************
D:\CQ\tr0709\projects\Logger\LOGGER.o(.text+0x6):In function 'main':
****************************************************
D:\CQ\tr0709\projects\Logger\LOGGER.c:136:undefined reference to 'BusyUART1'
BUILD FAILED:Sat Sep 22 17:44:20 2007
また8月号付録のCDのマイクロチップ・テクノロジー Cコンパイラ MPLAB C30 ver.3.0 Student Editionの項に次のことが書かれています。
『インストール日より60日間の使用制限があり、期限内は全ての機能が使用できます。60日を経過すると、コンパイラの最適化レベルが制限されます。そのためコードサイズが大きくなる場合がありますが、それ以外の制限はないので引き続き使用できます。』
この二つより考えますと、8月初めのADコンバータのBUILD時は最適化レベルが働きコードサイズが小さく、PIC30F2012に格納可能だったのが、9/21の同様操作時にはコードサイズが大きくなってしまったのでBUILD出来ない。但し、hexファイルはまだ出来ていない。
或いはOptions has been disabled due to expired licenseのために、今まで利用していたものが利用出来なくなってエラーになった。
PIC30F2013(PIC30F2012よりメモリサイズが大きい)にしなければいけないのでしょうか?まだダウンロードしていないので関係ない?
それともやり方が悪いのでしょうか?
以上よろしくご教示お願いいたします。
>warning:Options has been disabled due to expired license
警告:オプションはライセンス有用期限超過により無効になりました。
でwarningですから、そこでコンパイラが止まったわけではありません。
それよりは、
undefined reference to 'BusyUART1'
が致命的なリンクエラーです。
私のところで試しにコンパイルしてみましたが、
warning:Options has been disabled due to expired license
は出てますが、ちゃんと正常にBUILD SUCCEEDEDします。
リンク時にBusyUART1がライブラリに見つからないと言っていますので、何も修正していないならMPLABの環境が壊れているとか別の原因が考えられますね。今のところメモリが足らないとかの心配は無用です。
手順的にミスが無かったかもう一度確認してみてください。
質問者
お礼
早速のご返事有難うございました。もう一度最初からやってみます。
質問者
補足
すみませんトライが遅れまして。
結局まだだめです。
1.MPLABの最初の画面でLOGGER.Cを左クリックして、コンパイルすると成功します。
なおソースプログラムのディレクトリ構造は下記です。
C:\work\logger1\logger1\LOGGER.c
2.ところが、ProjectメニューよりBuild Allしますと、エラーになります。
Clean: Deleting intermediary and output files. Clean: Deleted file "C:\work\logger1\logger1\LOGGER.o". Clean: Done. Executing: "C:\Program Files\Microchip\MPLAB C30\bin\pic30-gcc.exe" -mcpu=30F2012 -c -x c "LOGGER.c" -o"LOGGER.o" -g -Wall Microchip MPLAB C30 License Manager Version v3.00 (Build Date Feb 28 2007). Copyright (c) 2005 Microchip Technology Inc. All rights reserved. The MPLAB C30 license has expired. pic30-coff-cc1.exe: warning: Options have been disabled due to expired license Executing: "C:\Program Files\Microchip\MPLAB C30\bin\pic30-gcc.exe" -Wl,"C:\work\logger1\logger1\LOGGER.o",-L"C:\Program Files\Microchip\MPLAB C30\lib",--script="C:\Program Files\Microchip\MPLAB C30\support\gld\p30f2012.gld",-o"mydspic1.cof",-Map="mydspic1.map",--report-mem Program Memory Usage section address length (PC units) length (bytes) (dec) ------- ------- ----------------- -------------------- .reset
以下部分省略
0x816 0x3ea (1002) Maximum dynamic memory (bytes): 0x3ea (1002) C:\work\logger1\logger1\LOGGER.o(.text+0x6): In function `main': C:\work\logger1\logger1\LOGGER.c:65: undefined reference to `CloseUART1' C:\work\logger1\logger1\LOGGER.o(.text+0xa):C:\work\logger1\logger1\LOGGER.c:67: undefined reference to `ConfigIntUART1' C:\work\logger1\logger1\LOGGER.o(.text+0x1e):C:\work\logger1\logger1\LOGGER.c:91: undefined reference to `OpenUART1' C:\work\logger1\logger1\LOGGER.o(.text+0x28):C:\work\logger1\logger1\LOGGER.c:99: undefined reference to `SetChanADC12' C:\work\logger1\logger1\LOGGER.o(.text+0x2c):C:\work\logger1\logger1\LOGGER.c:100: undefined reference to `ConfigIntADC12' C:\work\logger1\logger1\LOGGER.o(.text+0x54):C:\work\logger1\logger1\LOGGER.c:118: undefined reference to `OpenADC12' C:\work\logger1\logger1\LOGGER.o(.text+0x62):C:\work\logger1\logger1\LOGGER.c:124: undefined reference to `ReadUART1' C:\work\logger1\logger1\LOGGER.o(.text+0x68):C:\work\logger1\logger1\LOGGER.c:129: undefined reference to `BusyADC12' C:\work\logger1\logger1\LOGGER.o(.text+0x70):C:\work\logger1\logger1\LOGGER.c:131: undefined reference to `ReadADC12' C:\work\logger1\logger1\LOGGER.o(.text+0x7a):C:\work\logger1\logger1\LOGGER.c:133: undefined reference to `WriteUART1' C:\work\logger1\logger1\LOGGER.o(.text+0x7c):C:\work\logger1\logger1\LOGGER.c:134: undefined reference to `BusyUART1' C:\work\logger1\logger1\LOGGER.o(.text+0x8a):C:\work\logger1\logger1\LOGGER.c:135: undefined reference to `WriteUART1' C:\work\logger1\logger1\LOGGER.o(.text+0x8c):C:\work\logger1\logger1\LOGGER.c:136: undefined reference to `BusyUART1' BUILD FAILED: Sat Oct 06 10:55:02 2007
3.8月号のCQ\tr0708\の下にあるソースプログラムは全部BUILD に成功します。 \tr0709の下にあるソースプログラムが失敗するようです。
なおプロジェクトは8月号のとおり下記としています。
C:\work\mydspic1\mydspic1
上記tr0708のプログラムは、BUILDする時にC:\work\mydspic1\mydspic1
のディレクトリにコピーはしていません。
4. tr0709にあるプログラムがうまくリンクできていないようです。
MPLABおよびCコンパイラも再インストールしましたが一緒でした。
ただし一度、8/FにLOGGER.cは動きました。
どうしたらうまくリンクするようにできるのでしょうか?
初心者で申し訳有りませんが教えてください。
お礼
zwiさん有難うございました。おかげさまでLOGGERが動きました。本のとおりやっていて、動いている時は好いのですが、躓くと対処できませんでした。少しはCをしていましたので、LIBファイルも当然必要なのが解ります。但し、最初にいけてたのがなぜだめになったかが解りません。また本にもp30f2012.gldだけを追加する手順になっています。 トラブルの時にどうやって対処できるかが、実力有る無しの分かれ目ですね。これを題材にして勉強します。有難うございました。 解らない時はまた投稿しますのでよろしくお願いいたします。 以上