問題タブ [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.
c - Cプリプロセッサを介してオフセットを定義する最良の方法
オフセットの自動生成に役立つマクロを定義したいと思います。このようなもの:
次のコードを生成する必要があります。
また
または(Cプリプロセッサを確実に使用することはできませんが、誰が知っているか;)
外部のawk/bash / ...スクリプトを実行せずに実行することは可能ですか?
KeilC51を使用しています
c - Stellaris でプログラム間をジャンプする方法
Stellaris LM3S1607 チップのブートローダーを開発中です。Keil MicroVision4 C コンパイラを使用しています。アイデアは、一方が他方を更新する 2 つの独立したファームウェアを作成することです。ファームウェア1で、ファームウェア2ファイルをダウンロードし、アドレス0x3200のフラッシュに書き込みます。ここまでは機能しています。また、データがフラッシュに正しく書き込まれていることも確認しました。今私は 2 つのアプリケーションをフラッシュします。1 つは私の uip ブート ローダーで、seoncd は私のメイン プロジェクトです。最初のプログラムから 0x3200 にある 2 番目のプログラムにジャンプする方法を知りたいです。
誰かが私がジャンプするのを手伝ってくれるなら、それは素晴らしいことです. ありがとう
arm - uvision(Keil)を使用してcortexm3でベクターテーブルを再配置し、開始アドレスを変更する方法は?
STM32F107 cortex m3 マイクロコントローラーを使用しています。プロジェクトには Keil uvision IDE を使用しています。開始場所で適切に実行されているアプリケーションがあります0x0800 0000
。開始場所を0x0800 4000
アプリケーションに変更すると、正しく動作しません。この関数を次のように使用して、ベクター テーブルの場所を変更しました。
つまりSCB->VTOR = 0x8004000
、この場所に変更されました。
しかし、この割り込みを行った後でも発生していません。このプロジェクトを機能させるために、さらに何かする必要がありますか?
debugging - デバッグ中に IDE に printf メッセージを表示する
デバイスがあり、デバッグ目的で printf 関数を使用してメッセージを IDE に送信したいと考えています。セットアップ:
ARM Cortex-M3 デバイス
ULINK2 インターフェース
uVision4 IDE
「Debug (printf) Viewer」でメッセージを表示できるようにするために、このリンクで利用可能な指示に従いました。まず、「retarget.c」ファイルを変更して、出力をITMインターフェイスにリダイレクトします。
次に、指示に従って、uVision4 で IMT を構成しました。
プロジェクトは正常にコンパイルされます。アプリケーションをデバイスにダウンロードし、uVision4 でデバッグ セッションを開始します。システムの初期化直後に、main 関数で簡単なメッセージを指定して printf を使用しようとしましたが、Debug Viewer は空のままです。「sendchar」関数にブレークポイントを配置しました。予想どおり、すべての行がヒットしていることがわかります。
ULINK2 と uVision4 で printf を使用して成功した人はいますか? Debug Viewer ウィンドウに出力が表示されない理由を知っている人はいますか?
アップデート
既存の ITM 関数を使用しようとした結果、より単純な "retarget.c" が作成されました。
それでも、Debug Viewer には出力が表示されません。printf 関数呼び出しをステップ オーバーすると、IDE の下部に "Trace: Data Overflow" が表示され、続いて "Trace: Communication Error" が表示されます。
embedded - Keil RealView uvision MDK IDE のライブラリ リターゲット ファイルおよび低レベル I/O ルーチン
Keil uvision IDE でプログラミングを始めたところです。Library Target FilesとLow Level I/O Routinesに関する Keil の公式ドキュメントを読んでいます。私のデバイスには、これらの機能の両方を実装する必要があるようです。ただし、開始方法がわかりません。誰かが私を正しい場所に向けることができますか?
私はおそらく怠惰な言い訳を探していますが、人気のあるデバイス用に一般的に実装されたファイルがあり、開発者がそれらを再度作成する必要はないと思いますか? 私が正しければ、それらのファイルはどこにありますか? 役立つ場合は、ARM Cortex M0+ デバイスである Freescale MKL05Z32VFM4 を使用しています。
c - 同じ名前ですが、c のケース変数と関数名が異なります
setlocal という名前の変数と void SetLocal(void) という名前の関数があります
C51 keil コンパイラを使用してコードをビルドすると、リンカで次のエラーが発生します。
「外部属性が公開に一致しません」
関数と変数に同じ名前を使用することはできませんか? 別のケースで?
c - 異なる引数リストを使用した関数ポインターの割り当て
このプログラムを考えてみましょう:
最終課題は C90 に準拠していますか?
Keil C51 v9.06 は警告なしでプログラムを受け入れますが、gcc は次のように文句を言います。
警告: 互換性のないポインター型からの代入
これが Keil コンパイラのバグなのか、それとも実際に C90 に準拠した対処方法なのかを知りたいです。
更新: C99 に関するこの回答によると、対応するキャストは合法です。ただし、関数ポインターを呼び出すと、未定義の動作が発生します。これは、割り当ても合法であることを意味しますか?
c++ - c_str() ライブラリ API で C++ ストリームを使用する方法。
こんにちは、私のコード スニペットは次のとおりです。
これは、画面に文字列を出力するためにのみ使用されます。C ++で行うように、インクリメントできる数値を出力する関数または手段が必要です
c - 32番目のビットの設定に関するコンパイラの警告
32ビットを設定しているときにコードにコンパイラの警告があります。コードは機能しますが、この警告は私を悩ませます。
コンパイラはKeilC、プロセッサは32ビットARMです。コードは以下の通りです
ここで、PINSEL0
は32ビットレジスタで、次のように定義されます。
次のようにPINSEL_AD15
定義されます。
私が受け取っている警告メッセージは次のとおりです。整数演算の結果が範囲外です
assembly - keil uvision 4 でアセンブリ コード (arm cortex m3) をシミュレートする
私はこのガイドを使用しましたARMコードのシミュレート アセンブリコード(arm 7リトルエンディアン)をシミュレートする方法を示し、完全にうまく機能します。デバイスを arm 7 リトル エンディアンから arm cortex m3 に変更したところ、次のエラーが発生しました。
問題は、プロジェクトにいくつかのスタートアップ ファイルがないことだと思います。この場合、どうすれば修正できますか?