問題タブ [nxp-microcontroller]
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 - 5 年後 - NXP ADC が機能しない
しばらく前に、NXP の LPC3143 で ADC をプログラムしようとしましたが、成功しませんでした。5 年後、LPC4088 クイック スタート ボードを購入し、LPC4088で試してみました。また、ADC でも同じ問題が発生します。I / O構成、GPIO、タイマー、およびPWMが魅力のように機能している間、私はそれを機能させることができないようです...
私は常にユーザーマニュアルを読んで MCU をプログラミングしています。それで、マニュアルを読んだ後、これが私が思いついたものです:
LPC4088-ioconfig.h
LPC4088-system.h
LPC4088-gpio.h
LPC4088-adc.h
main.c
LPC4088 クイック スタート ボードのより詳細なインターフェイスの説明もここにあります。外部ポテンショメータ出力は P1.31に接続されていますが、LED は既にボードに埋め込まれています。
smartcard - JCOPカードのセキュアボックス
JCOP V2.4.2 リビジョン 3 セキュリティ ターゲット:
11-12ページ
Secure Box の概念は、JCOP 2.4.2 R3 内に実装されています。Secure Box は、認定されていないサード パーティのネイティブ コードを実行できるようにする構造であり、このコードが JCOP 2.4.2 R3 オペレーティング システムまたはオペレーティング システムによって実行されるアプレットを害したり、影響を与えたり、操作したりできないようにします。ハードウェアに存在する他のコードおよび/またはデータからのセキュア ボックス内のネイティブ コードは、ハードウェア評価で認定されたハードウェア MMU によって保証されます。
私は上記のカードをいくつか持っており、 Secure Boxの操作も経験したいと思っています。Java Card v3.0.1 Specifications、Global Platform v2.2.1 card specification aND JCOP v2.4.2 r3 Administrator Manualで検索しても役に立ちませんでした。上記のドキュメントには、Secure Box に関する記述はほとんどありません。
そう :
JCOP カードでセキュア ボックスを使用する方法について、アイデアや経験を持っている人はいますか? Secure Box にアップロードできるプログラム/コードの種類は? これらのプログラムは Java Card 言語で作成され、CAP ファイルの形式でもありますか? それとも、例えば C++ やアセンブリで書かれていますか?
それらをカードにアップロードしてインストールする方法は?このセキュア ボックスの利点は何ですか?
c - 最初から ARM 割り込み (Cortex-M4)
NXP の新しいマイクロコントローラ LPC4088 を扱っています。IOCONFIG、GPIO、TIMERS、PWM、ADC などの周辺機器の実際の例を調べて書くのに 2 週間かかりました。ここで私のリポジトリを見てください。これにより、私の仕事のやり方と私のスキルレベルを感じることができます。
今までは、単に割り込みを無効にして、割り込みなしで作業することができました。ここで、割り込みが必要なUART 周辺デバイスを扱いたいと思います。割り込みをプログラムしたことはありませんが、ARM 割り込みについてはある程度知っています。悲しいことに、理論上だけです。現在、私は次の 2 つの文書を研究しています。
- LPC4088 ユーザーガイド(NVIC p.80 & UART1 p.461)、
- Cortex-M4 デバイスの一般的なユーザー マニュアル
どうにかコツを掴んだLPC4088マイクロコントローラの他に、ARM Cortex-M4マイクロプロセッサを勉強する必要があることが明らかになりました。ARM 例外ベクトルをプログラムの先頭 (通常はスタートアップ コード) に配置する必要があることはわかっています。しかし、マイクロコントローラーで取得したものは、おそらく例外ベクトルを定義するコンパイル済みのスタートアップ コード(オブジェクト ファイル) であり、C のスタックを設定し、C ソースの関数main()にジャンプするリセット ハンドラーであるため、これを行う方法がわかりません。ユーザーが書いたコード。
GCC ARM コンパイラを使用してプログラムをコンパイルした後、常に次のプロンプトが表示されます。これは、ARM mcpu を直接使用した経験がないため、理解できない手がかりになるはずです。
Segger Jlink を使用してスタートアップ コードをリバース エンジニアリングし、そこで例外ベクトルを修正することを考えていましたが、独自のオープン ソースのスタートアップ コードを記述する以外に方法があるはずです...私にとってより良い。
追加:よく調べてみたところ、起動コードのソース コードがありませんでした。これは私が得たものです:
したがって、何らかの形でベクトルを操作する唯一の方法は、リンカ スクリプト内に隠されている必要があります。これは、まだソース コードである唯一の部分であり、次のようになります。
このようなメイクファイルもあり、すべてのコンパイルの最後に表示されるプロンプトに貢献しています。
camera - NXP LPC1768 マイクロコントローラへの I2C 経由の OV2640 カメラ モジュール?
私は組み込みの初心者であり、カメラ センサーの初心者でもあります。ご容赦ください。OV2640 カメラ モジュール ( OV2640 データシート、ブレイクアウト ボード付きモジュール) とのインターフェイスを試みています。そこで、以下を接続しました。
- OV2640 - LPC1768
- GND ------- p1 (GND)
- VCC ------- p40 (Vout - 3.3V)
- SDA ------- p28 (I2C SDA)
- SCL ------- p27 (I2C SCL)
SCCBを介して動作させようとしています。そのため、I2C が接続されています。しかし、私はそれを正しく設定することができないようです。
これは私が今持っているコードです:
I2C を介して書き込みまたは読み取りができません - ここで何が間違っていますか?
また、XCLK を OV2640 モジュールに接続する必要があると思いますが、LPC1768 マイクロコントローラからどのように行うことができますか?
arm - LPC2148 HEX ファイルをフラッシュした後に ISP が機能しない
私はARMプログラミングは初めてで、NXPのLPC2148チップから始めました。オンチップの ISP UART ブートローダを使用しています。読み込みは、9600 ボー、8 ビット、偶数パリティで完全に機能していました。
次に、LPCXpresso 上の新しいプロジェクトで作成されたコードを、Flash Magic ファームウェアを介して 14400 ボーでフラッシュしました。その後、ブートローダー シーケンスは機能しなくなります。奇数パリティと偶数パリティで可能なすべてのボーレートを試しましたが、もう機能しません。「オートボーが失敗しました」というよくある問題が発生し、奇妙なことに、電源がオンのときにチップが少しウォームアップしています。
私の頭を悩ませている最悪の疑問は、私が ISP ブートローダーを破壊したかどうかということです。
PS。16MHzのクリスタルを使用しています。私が挿入したコードは、実際には PLL を 5 倍 (60MHz) に調整した 12MHz 水晶用に作成されたものです。しかし、ブートローダの初期化シーケンスは、チップ上の通常のコードをバイパスする必要がありますね?
私を助けてください
c++ - エラー: aes_setkey はこのスコープで宣言されていませんでした
gcc4mbed オフライン コンパイラを使用して、mbed LPC1768 マイクロコントローラ用の mbedtls をコンパイルしようとしています。
基本的な AESCBC の暗号化と復号化の例から学びたいと思います。インクルードがないのか、それともインスタンス化が正しく行われていないのか、よくわかりません。エラー:
error: 'aes_setkey' was not declared in this scope
私はナレッジ ベースのこのガイドから作業しています:ナレッジ ベース
コード:
gcc - メモリ マップド ペリフェラル レジスタへの書き込みが実行されないのはなぜですか (LPC43xx)?
NXP LPC4330 (Arm Cortex M0/M4 デュアル コア) 用のアプリケーションを構築しています。arm-none-eabi-gcc 4.9.3 を使用してコンパイルしています。コードのある時点で、(32 ビット) メモリ ロケーションへの書き込みを実行しています。その直後に、そのメモリ位置から読み返すと、約 10 分の 1 の頻度で書き込みが行われなかったことが示されます。その後の読み取りは同じことを示しているため、一時的な状態ではありません。割り込みはグローバル レベルで無効にされており、コンパイラによって生成されたアセンブラは明らかに書き込みを試みています。
具体的には、SGPIO ペリフェラルのメモリ マップド レジスタである SLICE_MUX_CFG0 に書き込みます。書き込みが機能すると、ペリフェラルは正しく機能します。リードバックが書き込みが機能していないことを示している場合、ペリフェラルは正しく機能していません。そのため、リードバックで示されているように、問題のレジスタが正しく設定されていないようです。
.asm (以下にリスト) を見ると、その書き込みは明らかです。後で値を読み返すと、ゼロとして読み取られます。これは、以下のリストを考えると、不可能に思えます。書き込みの直前に読み取りを実行すると (以下の .c リストを参照)、問題は解消されます。これはおそらく手がかりです。
それで、上記は何を示していますか?これはメモリバスの使用に関するいくつかのルールに違反していますか? GCC バグ リストを調べましたが、これに関連するものは何も見つかりません。
関数は、ソースと ASM の両方で、いくつかの注釈を付けて続きます。ここで何が起こっているのでしょうか?「ストア値」への書き込みが明らかに効果がないのはなぜですか?
上記にコンパイルされた C コードは次のとおりです。