問題タブ [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.
scons - Keil コンパイラ/リンカーでの scons の使用
Keil C51 コンパイラと scons をビルド システムとして使用しようとしています。
私が抱えている最後の問題は、$SOURCES
カンマ区切りでリンカに出力する方法です。デフォルトでは、区切り文字としてスペースが使用されます。
SConstruct の関連部分は次のとおりです。
これで私は得る:
BL51.exe driver.obj flash.obj initialization.obj power.obj TO Outfile.omf
私が欲しいのは:
BL51.exe driver.obj,flash.obj,initialization.obj,power.obj TO Outfile.omf
$SOURCESは構築変数であり、コマンドラインへの出力方法を変更する方法が見つかりません。
誰?
arm - Keilarmstartup.sアセンブリコード
最小限のハードウェアをC言語で動作するように初期化するため、keilスタートアップアセンブリコードを理解しようとしています。私はこの行で立ち往生しています:
上記の行の意味は何ですか?具体的には、<>
シンボル?誰かが私がこの組み立て手順を理解するのを手伝ってください。
c - Arm #pragma anon_unions に相当する VisualStudio
Arm "#pragma anon_unions" により、以下が可能になります。
このコードを VisualStudio でコンパイルするためのアイデアはありますか?
c - 組み込み C で指定された初期化子を使用して構造体を初期化しています。「式が必要です」
構造体を初期化し、値を構造体変数に代入しようとしています。
私の構造体:
そして、変数を宣言して初期化しようとするときは、指定された初期化子を使用します。
組み込みプロジェクトに Keil µVision4 と ARM C コンパイラを使用しています。このコードをコンパイルすると、コンパイラはError #29: Expected an expression を返します。エラーは、初期化コードのすべての行で発生します。
これは ANSI C99 で書くときの方法だと読みましたが、私の場合はうまくいきません。ANSI C99 で構造体を初期化する方法
私は「悪い」コードを書くことができることを知っています:
しかし...
任意のヒント?
更新: 次のコードが機能します。
しかし、繰り返しますが、これは特にきれいなコードや方法ではありません。
discovery - STM32F4 Can1 から最初のメッセージを取得して Can2 に送信する方法、Can1 と Can2 の速度が異なる
開発キット STM32f4 ディスカバリ キットがあり、Canbus インターフェイス モジュールが 2 つあります。Can1 から最初のメッセージを取得して Can2 に送信する方法、 Can1 と Can2 は速度が異なります
c - エラーC28:複数のストレージクラス
私はKeilを使用しています。次のファイル「Driver.h」と「Driver.c」があります。
Driver.h
上記の記述が間違っていることを私は知っています。グローバルに宣言されたときの静的な変更の意味。それでも、配列である変数を宣言したいと思います。別のファイルで使用可能であり、値を変更しない限り値が変更されないスコープを持っている必要があります。
Driver.c
int Status [5] = {0x00,0x00,0x00,0x00,0x00};
エラーメッセージを以下に示します。
エラーC28:複数のストレージクラス
手伝ってくれませんか?
c - unsigned charをCで2桁の16進値として出力するにはどうすればよいですか?
unsigned char値を2桁の16進値として出力しようとしていますが、結果は常に4桁の16進値として取得され、コードの何が問題になっているのかわかりません。
として2桁の16進数の結果を期待しています0xC0
が、常に。を取得し0xC0FF
ます。
同様に、unsigned charと同じ変数(ステータス)を%bu
フォーマット識別子で出力しようとすると、出力は。になりました255
。
2つの16進文字だけを出力として取得するにはどうすればよいですか?
c - keil ide の C ソース コードからアセンブリ ルーチンを呼び出す
アセンブリ言語で 8051 マイクロコントローラー用の遅延ルーチンを使用しています。アセンブリ言語プログラムでそれらを使用できますが、これらのルーチンは C 言語から使用したいと考えています。
ちょうど下に投稿する delay.asm ファイルである遅延のコード...
このコードをアセンブリ言語にインクルードして簡単に使用します。ただし、これらのルーチンを c ソース コードから呼び出したいと考えています。
c - cで_irol_関数を知る
これは私のコードの1つにありました。_irol_
そこでのプレゼントを説明していただけませんか。
c - Cortex M3 のブートローダ
私は mbed の LPC 1768 ボード (cortex M3 cpu を搭載) を使用しており、ここで何かを達成しようとしています。主に SD カードからユーザー アプリケーションをアップグレードしています。最初にブートローダー/ナノカーネルの 2 つのプログラムを作成しています。ユーザーアプリ (最初は helloworld で十分です):
- アドレス 0x00 のブートローダー/ナノカーネルが実行され、いくつかのチェックが行われ、最終的に SD カード上のバイナリ ファイルが取得されます。
- ブートローダー/ナノカーネルは、このバイナリをアドレス 0x9000 にコピーします (後で変更する必要があるかもしれませんが、このスペースはブートローダー/ナノカーネルによって使用されないため、問題ありません)。
- ブートローダーは 0x9000 + 4 でユーザー アプリケーションにジャンプします。
Sd カードは非常に簡単に解決できます。ジャンピング部分に問題があります。これがジャンプ関数のコードです。
}
そこで、開始アドレスを 0x9000 に変更してユーザー アプリケーションをコンパイルしました (私は Keil uvision4 を使用しています)。(flashmagictool を使用して) ボードをプログラムし、手動で (まだ flashmagictool を使用して) 0x9004 (0x9000 + 4) にジャンプすると、ユーザー アプリケーションが実行されるので、コンパイルが正常に機能したため、ユーザー アプリは 0x9000 で実行できると思います。
しかし、ブートローダー/ナノカーネルを実行すると、これはユーザーアプリケーションにジャンプせず、残念ながらデバッグできないため、何が起こっているのかわかりません...また、SDコピーを使用しないようにしましたそのため、最初に基本的に 0x9004 へのジャンプだけでブートローダーをプログラムします。次に、0x9000 に位置するユーザー アプリケーションをプログラムします。ボードを再起動すると、ブートローダーは実行されますが、ユーザー アプリにジャンプしません。メモリをチェックしたところ、両方のプログラム (ブートローダー + ユーザー アプリ) が正しく、適切な場所にあるようです。
私はここに何かが欠けていると確信しています.私が見なければならない低レベルのコードはありますか? 私はオンラインでドキュメントのトーンを読みました.私が見つけた例から、それらは私と同じ方法でユーザーコードにジャンプしています...助けてくれてありがとう.