問題タブ [libopencm3]
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++ Makefile LD エラー
libopencm3 を使用して C++ で ARM をプログラミングしています。しかし、私の Makefile にはエラーが含まれています。ご覧の通り!
次の Makefile があります。
しかし、リンク (LD) は機能しません。エラーを参照してください:
間違いはどこですか?LD の何が問題なのかわかりません。この makefile を C (C++ ではない) に使用したところ、問題なく動作しました!?
たぶん、LD'ing に g++ の代わりに gcc を使用しているからでしょうか?
ありがとう、マーティン
c - 有効なコードの QtCreator で「宣言が必要です」
私は QtCreator を使用して C プロジェクトで作業しています (はい、主に C++ 用ですが、これまでのところ C では問題なく動作していました)。
今、正常にコンパイルされる有効なコードに赤い下線が引かれています:
これは基本的に、仮想 COM ポート用のこの変更されていない libopencm3 サンプル プロジェクトです。
コードに何らかの問題が見られますか?おそらく致命的ではありませんが、エディターがエラーだと判断する原因は何ですか?
同等の typedef に置き換えstruct usb_device_descriptor
てみましたが、役に立ちませんでした。
2 行目のエラーには、「expected }, got .」と書かれています。締めくくり}
には「余分な;」と注釈が付けられています
構造体の宣言方法は次のとおりです。
arm - STM32F4 の Libopencm3 割り込みテーブル
STM32F4 のプロジェクトに libopenCM3 を使用しています。以前は標準周辺機器ライブラリと、ST によって開発された新しいハードウェア アブストラクション レイヤーを使用しました。
これらのライブラリには、ベクター テーブルの定義を含むアセンブリ ファイル (スタートアップ ファイル) があります。
これは、libopenCM3 に欠けているものです。このテーブルの場所を教えてください。それとも別の方法で行われますか?
プロジェクトで割り込みを使用する必要があります。
ありがとう。
stm32 - LibOpenCM3 ベクトル テーブルはすべてブロッキング ハンドラです
STM32F4 のLibopencm3 割り込みテーブルでこの質問に対する答え
は、メカニズム全体をうまく説明していますが、私が得たのは、ブロッキング ハンドラで満たされたベクトル テーブル全体です。
私はそれをデバッガーで見ているので知っています(すべてが機能していないことは別として):ベクターテーブルを示す逆アセンブリのスクリーンショット。
これは、リンカが適切に定義された割り込みハンドラ関数を単純に無視するかのようです。たとえば、次のようになります。
私は EmBitz IDE を使用しており、このチュートリアルhereに従って libopencm3 を機能させました (この問題を除いて機能します)。
関数名を何度も確認し、libopencm3-examples プロジェクトのものを含むいくつかのオンライン例を試しました。
すべてがグリッチなしでコンパイルされ、ターゲット ボード (STM32F103C8) にロードされ、正常に実行されます - ISR が呼び出されないことを除いて (割り込みは発生しますが、ブロッキング ハンドラーでスタックします)。
なぜこれが起こっているのか誰にも分かりますか?
linux - 正規表現パターンを使用する場合の AWK の異なるバージョンの動作
バックグラウンド:
最近、Ubuntu 14.04 でlibopencm3-examplesをビルドしようとしましたが、ビルド エラーが発生しました (Ubuntu 16.04.1 LTS では問題なく動作します)。その理由を探るために、私は掘り始めました。私が発見したように、libopencm3 は特定のリンカー スクリプト ジェネレーターを使用します。
見るlibopencm3-examples/libopencm3/ld/README
このツールの目的は、ターゲット マイクロ コントローラー固有の定義をリンカー スクリプト テンプレートに渡すことです。したがって、テンプレート スクリプトの下でプリプロセッサを使用し、次のようにターゲット固有のパラメータを渡します。
このパラメータを取得するには、awk スクリプトを使用します。
-D_XXX キーを生成するために、このスクリプトはデバイス データベースの下で次./libopencm3/ld/devices.data
のように動作します。
質問:
データベースから定義情報を抽出する awk スクリプト部分は次のようになります。
スクリプトによって処理されたデータベースの行:
私を混乱させるのは、提案されたパターン ( /[[:upper:]]*=/
) が [ROM]=256K fe に一致する必要があるが、ROM=256K に一致しない (はい?) ことです。とにかく、すでに述べたよう/[[:upper:]]*=/
に、ubuntu 16.04(GNU Awk 4.1.3)で機能します(なぜですか?)が、14.04では変更する必要がありました/[[:upper:]]*=/
->/[:upper:]*=/
強制的に機能させるために(これはバグですか?)。何か不足していますか?