問題タブ [keil]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
2 に答える
2636 参照

c - 組み込みKeilCでマルチスレッドはサポートされていますか?

KeilCコンパイラを使用してLM3S6965評価ボードに組み込みアプリケーションを開発しています。マルチスレッドの組み込みアプリケーションを作成するためのオプションはありますか?

0 投票する
4 に答える
3512 参照

c++ - リンカーは extern 関数の定義がどこにあるかをどのように認識しますか?

私はいくつかの投稿を読んで、extern がコンパイラに「この関数は存在しますが、そのコードは別の場所にあります。パニックにならないでください」と伝えていると結論付けました。しかし、リンカーは関数が定義されている場所をどのように認識しますか。

私のケース:- Keil uvision 4 に取り組んでいます。ヘッダー ファイル grlib.h があり、メイン関数は grlib_demo.c (grlib.h が含まれています) にあります。現在、Circle.c で定義され、grlib_demo.c で呼び出される関数 GrCircleDraw() があり、次のステートメントもあります。

extern void GrCircleDraw(すべての引数);

grlib.h で。私の質問は、Circle.c が grlib.h と grlib_demo.c に含まれていないため、リンカが GrCircleDraw() の定義がどこにあるかを知る方法です。

注:- ファイル grlib.h と Circle.c は同じフォルダーにあります。コードは正常に実行されます。

0 投票する
3 に答える
18234 参照

stm32 - Keil STM32 を使用してビルド中に未定義のシンボル SystemInit (startup_stm32f2xx.o から参照)

STM32F207VC コントローラーを使用しています。uvision4 IDE を使用しています。単純なコードをコンパイルしようとすると、エラー tst1.axf: Error: L6218E: Undefined symbol SystemInit (referred from startup_stm32f2xx.o) が表示されます。. プロジェクト ディレクトリに stm32f2x ファイルを配置しました。

しかし、それでも同じ問題です。

これを解決するのを手伝ってください。

ありがとう

0 投票する
3 に答える
15437 参照

c - C の sprintf() の代わりの関数はありますか? コンパイル後のコードサイズが大きすぎる

組み込みシステム (Cortex M3) の開発に取り組んでいます。デバイスからシリアル ポートにデータを送信する (PC 画面に表示する) ために、putchar() メソッドを使用していくつかの独自の関数を使用します。

integerまたはfloatを送信する場合は、sprintf() を使用してそれらを文字列に変換し、シリアル ポートに送信します。

問題は、私が Keil uVision IDE を使用していて、最大 32 KB の限定バージョンであることです。さまざまな関数で sprintf() を呼び出すたびに、コンパイル後のコードのサイズが大きくなりすぎる理由がわかりません。現在 32 KB を超えており、関数の一部を変更して、sprintf の代わりに別のものを使用する必要があるのではないかと考えています。

どんな手掛かり?

0 投票する
1 に答える
2865 参照

c++ - Keil uVision4 armcc: C++ 標準インクルードの使用

Keil uVision4 を使用して STM32F2 デバイスで開発しています。私は C++ を使用しようとしていますが、これは uVision ツールチェーンで提供されている armcc (間違っている場合は訂正してください) で使用できるはずです。しかし、uVision は標準の C++ インクルード方法を受け入れることを拒否します

動作しません

完璧に動作します。uVision 内で cstdint を開くと (右クリックしてドキュメントを開く)、ファイルが開かれますが、ヘッダー ファイルではなく、派手な色のない汎用ファイルとして開かれます。

私は何が欠けていますか?両方のファイルは同じフォルダ C:\Keil\ARM\ARMCC\include にあり、(--cpp を追加して) コンパイラに強制的に c++ を使用させるかどうかに違いはありません。uVision は末尾のないファイルをヘッダー ファイルとして受け入れることができないのですか?

編集:回答に応じて(お時間をいただきありがとうございます!):エラーメッセージは次のようになります。

その間

問題が何であるかを示します。ご協力ありがとうございました!

0 投票する
0 に答える
320 参照

eclipse - RTX カーネルの移植

に、カーネル プログラムと他のプログラムを含むプロジェクトがKEIL IDEありLPC2148ます。RTXここで、IDE を から に変更する必要がありKEILますEclipse。Eclipse GCC Compiler でコンパイルしようとすると、ファイルとファイルにエラーが表示RTX_Config.cRTX_Config.hれます。このプロジェクトを Eclipse IDE でコンパイルする解決策はありますか?

前もって感謝します。

0 投票する
1 に答える
1060 参照

eclipse - Eclipse IDE で GCC Compiler を使用して RTX カーネル ファイルをコンパイルする

LPC2148 の KEIL IDE には、ARM CC でコンパイルされた RTX カーネル プログラムと他のプログラムを含むプロジェクトがあります。次に、IDE を KEIL(ARM CC) から Eclipse(GCC) に変更する必要があります。Eclipse GCC Compiler でコンパイルしようとすると、RTX_Config.c および RTX_Config.h ファイルにエラーが表示されます。その他のファイルは、GCC コンパイラを使用して正常にコンパイルされます。ただし、RTXConfig.c ファイルには、GCC によってコンパイルされないコンパイラ固有のコードが含まれています。GCC コンパイラを使用して Eclipse IDE でこのプロジェクトをコンパイルするソリューションはありますか? 初心者なので、これで私を助けてください。前もって感謝します

irq 、 __swi 、 _ _task 、 __asm など、ARM CC (keil) で正常にコンパイルされるkeil 固有のキーワードがいくつかありますが、それを GCC コンパイラ (Eclipse) に移植しようとすると、このコンパイラはこれらのキーワードをコンパイルできず、エラーが表示されます。これらの keil 固有のキーワードを GCC Compiler でコンパイルする方法はありますか?

0 投票する
2 に答える
476 参照

c++ - Keil:仮想または保護されたデストラクタとヒープ

私はCortexM3用のARMツールセットでKeil4を使用しています(それが重要な場合でも)。私はこの単純なコードを試しました:

ローカル(メイン内)でDerivedのインスタンスを作成すると、すべてが正常になります。デバッグは機能し、プログラムサイズは約300バイトです。

Derivedの静的またはグローバルインスタンスを作成すると、プログラムサイズが最大1000バイト増加し、BKPT命令でデバッグセッションが停止します。

これは、ヒープサイズがデフォルト値(ゼロ)に設定されているためです。ヒープを追加すると、デバッグが機能し始めました。

デストラクタを保護しますが、仮想ではない場合、同じ動作になります。通常のメソッドを仮想化することはしませんでした。

だから、私の質問は:この状況でコンパイラがヒープを必要とする理由は何ですか?

Vtabは静的に作成され(チェックしました)、グローバルオブジェクトも静的である必要があります。動的割り当てが必要ない場合、ヒープ割り当てコード(およびヒープ自体のスペース)にさらに700バイトを浪費するのはちょっとばかげています。

(警告を防ぐためにデストラクタを仮想化しました。)

0 投票する
2 に答える
7771 参照

c - タイプ「uint8_t」の引数は、タイプ「uint8_t *」のパラメーターと互換性がありません

STM32F4-Discovery 用に Keil でUSB HID サンプル コードをコンパイルしようとしています。このコードにより、「USB HID デモンストレーター」と呼ばれるソフトウェアとの間でメッセージを送受信できます。

しかし、USBD_HID_DataOut機能に問題があります。この線:

USB_OTG_ReadPacket((USB_OTG_CORE_HANDLE*)pdev, *Buffer, HID_OUT_PACKET);

エラーが表示されます:

エラー #167: 型 "uint8_t" の引数は、型 "uint8_t *" のパラメーターと互換性がありません

の を抑制する*Buffer、コードはコンパイルされますが動作しないようです (受信したバッファ値は期待されるものと一致しませんが、おそらくそれについて間違っている可能性があります)。実際には の 2 番目の引数はUSB_OTG_ReadPacketポインタでなければならないので、このエラーが発生する理由がわかりません。

変数は次のBufferように定義されます。uint8_t Buffer[6];

それで、コンパイラに問題がありますか?最初に Atollic 用に作成されたので、このプロジェクト コードを Keil にコピーする特別な問題に対処する必要がありますか?

それとも単純にリンク先が間違っているのでしょうか?

0 投票する
2 に答える
3026 参照

c - Char[] を C の "Embedded" の文字列と比較する

文字列を分割して 2 つの部分になる 2 つの関数を作成しようとしました。最初の関数は文字列「Mode 1」を取得したい関数で、RX_IN_CHR_UART 変数の場合はシリアル ポートから「Mode 1 34」のようなデータを入力し、2 番目の関数は取得したい「34」

文字列「Mode 1」を取得するこの関数

そして、この関数は文字列「34」を取得します

関数のdop()使用を比較しようとすると、機能if(dop(RX_IN_CHR_UART)=="34")しません。

dop() を "34" と比較するには、この関数をどうすればよいですか?