PowerPoint Presentation
|
|
|
- きょうすけ えいさか
- 7 years ago
- Views:
Transcription
1 EWARM で開発する Cortex-M プログラミングガイド April 2015 IAR Systems K.K. FAE Team
2 本ドキュメントについて 目的 Cortex-M プロセッサファミリの特徴を理解し ソフトウェア開発をする上での注意事項を学ぶ ARM 用統合開発環境 ARM 用 IAR Embedded Workbench(EWARM) を用いて 実際の開発を理解する 内容 ARM Cortex-Mの概要 Cortex-Mの命令セット Cortex-Mのレジスタ Cortex-Mの割込みハンドリング スタートアップ処理 リンカ設定でメモリ配置コントロール Cortex-Mへの移行時の注意点 解析ツールを使用して 品質向上 本ドキュメントは 2015 年 4 月現在のIARシステムズWebサイト ST 社 Webサイト およびEWARMバージョン7.40.2を元に作成しています 2
3 IAR SYSTEMS A LEADING GLOBAL VENDOR 168 Employees with HQ in Uppsala, Sweden Listed in Stockholm/Nasdaq R&D investment 32% of revenue 32 years in the industry 24 hour technical support in 13 languages Uppsala Munich Sao Paulo Tokyo Seoul Shanghai London Paris San Francisco Dallas Boston Los Angeles +Distributor representation in 43 countries Stability and growth Licenses # (000 s) Operating Margin % License # Operating Margin 0
4 ARM Cortex-M の概要
5 Cortex-Mベースのマイコンとは 英ARM Limitedの設計 開発するARM プロセッサを採用したマイコン ARMはCPUコア(など)のIP(設計図)を販売 ARM チップベンダが周辺機能(ペリフェラル)や メモリを追加実装 周辺機能 周辺機能 周辺機能 周辺機能 メモリ メモリ メモリ メモリ ARM コア ARM コア ARM コア ARM コア A社 B社 C社 D社 5
6 クラシック ARM と ARM Cortex プロセッサファミリ ARM マイコンの進化の過程 Cortex-Ax Application Processors ARM11 Cortex-Rx Real Time Processors ARM7 ARM9 Cortex-Mx Microcontrollers Cortex- M0 V4 V5 V6 V7 基本的に x が大きいほど処理能力大 クラシック ARM ARM Cortex 6
7 クラシックARMとARM Cortex-M ARM7(v4)とCortex-M3/4(v7-M)の主要な違い ARM7 Cortex-M3/M4 アーキテクチャ ARM v4 ARM v7-m 命令セット ARM / Thumb Thumb2 DMIPS / MHz 割込みコントローラ 外部 ネスト型ベクタ割込みコントローラ(NVIC) ベクタテーブル方式 命令方式 アドレス方式 アセンブラ要不要 要 不要 タイマー 外付け Systickタイマー内蔵 モード User FIQ IRQ SuperViser Monitor Abort Undef System User(Thread) System (Handler) メモリマップ 未規定 定義済み Flash 基本外付け 基本内蔵 割り切り 簡単 高性能 7
8 STM32シリーズラインナップ 各種コアとシリーズの対応 M3 M4 M0 M3 M4 M0+ M3 M4 /FM141/SC1169 M7 2015年4月1日 ST社Webサイトより抜粋 8
9 Cortex-M のラインナップ比較 システム機能概要 M0 M0+ M3/M4 M7 スリープモード Yes Yes Yes Yes WIC Yes Yes Yes Yes SVC PendSV Yes Yes Yes Yes MPU( オプション ) - 0 or 8 0 or 8 0 or 8 or 16 フォールト / 例外ハンドラ HardFault HardFault HardFault +3 設定 HardFault +3 設定 フォールトステータスレジスタ - - Yes Yes ビットバンド - - オプションオプション L1 キャッシュ 最大 64KB(I&D) TCM( 密結合メモリ ) 最大 1MB(I&D) 年 4 月 1 日 ARM 社 Web サイトより抜粋 9
10 Cortex-M のラインナップ比較 最大パフォーマンス比較 1MHz あたりの処理量 (CoreMark 値 ) 年 4 月 1 日 EEMBC Web サイトより抜粋 10
11 Cortex-M の命令セット
12 命令セット:Cortex-Mの命令セットThumb-2 Cortex-MではThumb-2命令をサポート ARM命令セット Thumb命令セット Thumb-2命令セット 16ビット 32ビット命令混在 32ビット命令 16ビット命令 ARM7からの伝統的な命令セット よく使う命令は16 bit 複雑な命令は32bitで高効率を実現 Cortex-Mのラインナップごとにサポート命令セットは異なる 12
13 命令セット:Cortex-Mの命令セットThumb-2 同じコードをコンパイルして結果を比較 int gcd(int a, int b) { while (a!= b) { if (a > b) a = a - b; else b = b - a; } return a; } 最大公約数を求める関数 ARM Thumb Thumb2でビルド 13
14 命令セット:Cortex-Mの命令セットThumb-2 同じコード(最大公約数を求める関数)をコンパイルして結果を比較 Thumb命令セット ARM命令セット gcd: gcd:??gcd_0: 0x148: 0x14c: 0x150: 0x154: 0xe x0a xe xa CMP BEQ CMP SUBGE R0, R1??gcd_1 R1, R0 R1, R1, 0x158: 0xb SUBLT R0, R0, 0x15c: 0xeafffff9 B gcd 0x160: 0xe12fff1e BX LR R1 Thumb-2命令セット 0x4288 0xd004 0x4281 0xbfac 0x1a09 CMP BEQ.N CMP ITE SUBGE R0, R1??gcd_1 R1, R0 GE R1, R1, 0x92: 0x1a40 SUBLT R0, R0, 0x94: 0xe7f8 B.N??gcd_0 0x96: 0x4770 BX LR??gcd_0 0x14a: 0x1a40 SUBS R0, R0, 0x14c: 0x14e: 0x150: 0x152: 0x154: CMP BEQ.N CMP BLT.N SUBS R0, R1??gcd_2 R1, R0??gcd_1 R1, R1, 0x156: 0xe7f9 B.N??gcd_0 0x158: 0x4770 0x15a: 0x0000 BX MOVS LR R0, R0 0x4288 0xd003 0x4281 0xdbfa 0x1a09 R0??gcd_2: gcd:??gcd_0: 0x88: 0x8a: 0x8c: 0x8e: 0x90: B.N R1??gcd_0: R0??gcd_1: 0x148: 0xe000??gcd_1: ARM gcd(バイト) Thumb 28 Thumb R0 R1 コード効率が高い??gcd_1: 14
15 Cortex-Mプロセッサファミリごとのサポート命令 Cortex-Mに続く数字が大きくなるほど 多くの命令をサポート 浮動小数点演算 DSP(SIMD,高速加算乗算) アドバンストデータ処理 ビットフィールド処理 基本データ処理 I/Oハンドリング M0/M0+ M3 M4 M7 M4 FPU M7 FPU 15
16 Cortex-M プロセッサファミリの命令比較 命令セット概要 M0/M0+ M3 M4 M7 シングルサイクル乗算 Yes Yes Yes Yes ハードウェア除算 - Yes Yes Yes アドバンストメモリアクセス - Yes Yes Yes アドバンスト分岐サポート - Yes Yes Yes 排他アクセス - Yes Yes Yes SIMD DSP - - Yes Yes サチュレーションサポート - 一部 フル フル 浮動小数点演算 ( オプション ) - - 単精度 単精度 / 倍精度 16
17 Cortex-Mプロセッサファミリの命令比較 浮動小数点除算の例 元のCコード M4F 8命令 M3 44命令 M0 171命令 コンパイラが自動的にコア搭載する命令を有効活用 17
18 Cortex-M のレジスタ
19 Cortex-Mのレジスタ構成 CPUレジスタ MSP PSP R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13(SP) R14(LR) R15(PC) xpsr 汎用的に使えるレジスタ R0 R12 さらに R0 R7までを下位レジスタ R8 R12までを上位レジスタと呼ぶ R0 R7までが16ビット命令で 自由に使えるレジスタ R13はスタックポインタとして使用 2つあり 切り替えて使用することができる R14は関数の返りアドレスを保存するリンクレジスタとして使用 R15はプログラムの実行アドレスを示すPCに使用 xpsrは実行状態を示す 演算結果フラグ 割り込み番号 使用す る命令セット Thumb系か否か) NMIとフォルトハンドラ以外の割り込みの許可 禁止を制御する PRIMASK CONTROL FAULTMASK BASEPRI M3/M4/M7のみ 使用するスタックの指定 特権/ユーザ レベル NMI以外の割り込みの許可 禁止を制御する 指定優先度以下の割り込みの許可 禁止を制御する 19
20 Cortex-Mのレジスタ構成 ステータスレジスタ xpsr N Z C V Q APSR N Z C V Q ICI/IT T ICI/IT IPSR EPSR 0 Esception Number Exception Number ICI/IT T ICI/IT アプリケーションプログラムステータスレジスタ APSR 演算結果のフラグ 割り込みプログラムステータスレジスタ IPSR 割り込み番号 実行プログラムステータスレジスタEPSR 実行状態bit 各レジスタは個別にも まとめても(xPSR)アクセス可能 20
21 Cortex-M のレジスタ構成 コントロールレジスタ CONTROL Reserved bit [0] でスレッドモード時の特権を設定 0: スレッドモードは特権あり 1: スレッドモードは特権なし. bit [1] はスタックを選択 0: メインスタックポインタを使用 1: スレッドモードのときは プロセススタックポインタを使用 MRS 命令で READ MSR 命令で WRITE 特権がないとアクセスできない 21
22 Cortex-Mの関数コールとレジスタ 関数のジャンプ時には レジスタ操作が行われる 引数は R0,R1,R2,R3を利用 5つ目からスタックに 返り値はR0を利用 ジャンプするときには BL命令 戻る時はいろいろPC(R15)を操作する命令 たとえば BX命令 POP命令 R0 R1 R2 R3 R4 R5 int f1(int a ) { return a+1; } int main (void) { t = f1(10); Cコード f1: ADDS #1 BX R6 R0, R0, LR R7 R8 R9 main: BL R10 R11 f1 コンパイル結果 R12 R13 (SP) R14 (LR) R15 (PC) CPSR 22
23 Cortex-Mの関数コールとレジスタ 実際に動作を見てみる PC=0x200_01FA0 LR= 0x200_01F91 戻りアドレス=0x20001FA4 BLでジャンプ BL命令は LR(R14)レジスタに戻りアドレスを 保存し PCを関数にセットする PC=0x20001F98 LR= 0x20001FA5 23
24 Cortex-Mの関数コールとレジスタ 実際に動きを見てみる:関数からの戻り PC=0x20001F9A LR= 0x20001FA5 BXでジャンプ BX命令は LR(R14)レジスタで指 定されるアドレスにジャンプ PC=0x20001FA4 LR= 0x20001FA5 *Thumb命令では ジャンプ時にLRのアドレスのLSBが常に1にセットされる 24
25 ARM のレジスタと ST のレジスタ ARM マイコンは ARM CPU レジスタと周辺レジスタがある ARM ST 25
26 Cortex-M の割込みハンドリング
27 NVIC 内蔵割込みコントローラ Cortex-Mプロセッサは割込みコントローラを内蔵している レジスタの退避 割込み優先度ハンドリング ネスト割込みのハンドリング Cortex-M NMI NVIC 各種割込み Core システム例外 SysTick タイマーペリフェラル 27
28 ベクタテーブルの記述 4バイト単位で 割込みハンドラのアドレスを記述 *先頭だけは スタックのアドレスを指定 スタックアドレス Vector No. Vector Offset 例外& 割り込み 値 例 00 0x00 Stack Top sfe (CSTACK) 01 0x04 Reset iar_program_start 02 0x08 NMI Default Handler 03 0x0C Hard Fault Default Handler 04 0x10 Memory Management 05 0x14 Bus Fault Default Handler 06 0x18 Usage Fault Default Handler 07~10 0x1C~0x28 Reserved x2C SVCall Default Handler 12 0x30 Debug Monitor Default Handler 13 0x34 Reserved x38 PendSV Default Handler 15 0x3C SysTick Default Handler 16 ~ 255 0x40~0x3FC External Interrupts Interrupt Handlers RESETハンドラアドレス Default Handler 外部割込みのハンドラアドレス 28
29 ベクタテーブルの比較 クラシックARMおよびCortex-R/Aとの比較 ARM9 ( + Cortex-R/A) vector: ARM LDR LDR LDR SWI/SVC) LDR LDR DCD LDR LDR PC,Reset_Addr PC,Undefined_Addr PC,SWI_Addr ; Reset ; Undefined instructions ; Software interrupt PC,Prefetch_Addr PC,Abort_Addr 0 PC,IRQ_Addr PC,FIQ_Addr ; ; ; ; ; Cortex-M #pragma location = ".intvec" const intvec_elem vector_table[] = { {. ptr = sfe( "CSTACK" ) }, iar_program_start, Prefetch abort Data abort RESERVED IRQ FIQ NMI_Handler, HardFault_Handler, MemManage_Handler, BusFault_Handler, UsageFault_Handler, 0, 0, 0, 0, SVC_Handler, DebugMon_Handler, 0, PendSV_Handler, SysTick_Handler, DATA Reset_Addr: Undefined_Addr: SWI_Addr: Prefetch_Addr: Abort_Addr: IRQ_Addr: FIQ_Addr: DCD DCD DCD DCD DCD DCD DCD iar_program_start Undefined_Handler SWI_Handler Prefetch_Handler Abort_Handler IRQ_Handler FIQ_Handler //Device specified interrupt handler InterruptHandler0 InterruptHandler1 アセンブラ命令 (割込みハンドラにジャンプ) InterruptHandler240 }; C言語(ハンドラのアドレス指定) 29
30 SysTickタイマーで割込み動作確認 SysTickを有効にして確認 static int tick = 0; void SysTick_Handler(void) { 割り込みハンドラはCの関数 tick++; ハンドラと関数に差はない } int main( void ) { SysTick->LOAD = 0x0000FFFF; // リロードレジスタの値をセット SysTick->VAL = 0; // 初期値をセット SysTick->CTRL = SysTick_CTRL_CLKSOURCE_Msk SysTick_CTRL_TICKINT_Msk SysTick_CTRL_ENABLE_Msk; // コアクロックで割込み有効でスタート enable_interrupt(); while (1) { //SysTick_Handler(); delay(); } } 30
31 SysTickタイマーで割込み動作確認 EWARMのデバッガ機能で確認 割り込みハンドラの先頭 LRは割込みを意味する 0xFFFF_FFxx PCはハンドラへ 31
32 SysTickタイマーで割込み動作確認 自動的にスタックにレジスタが退避される 0x0000_0000側 R0: R1: R2: R3: R12: LR: PC: 割込み前の LRの値 割り込み発生の アドレス CPSR 使用スタック 使用スタック 0xFFFF_FFFF側 表示-スタック-スタック1 スタックの表示可能 32
33 SysTickタイマーで割込み動作確認 割込みハンドラを通常の関数として呼んでみる コメントを外して メイクしてデバッグ 33
34 SysTickタイマーで割込み動作確認 割込みハンドラを通常の関数として呼んでみる 結果 関数から呼んだ場合 LR = 0x080001C1 SysTick_Handler: 0x800019e: 0x4815 [0x80001f4] tick 0x80001a0: 0x6801 0x80001a2: 0x1c49 0x80001a4: 0x6001 } 0x80001a6: 0x4770 int main( void ) { main: SysTick_Handler(); 0x80001bc: 0xf7ff 0xffef 0x800019e 割込みから呼ばれた場合 LR = 0xFFFFFFE9 LDR.N R0, [PC, #0x54] LDR ADDS STR R1, [R0] R1, R1, #1 R1, [R0] BX LR BL SysTick_Handler ; ; 34
35 SysTickタイマーで割込み動作確認 割込みハンドラでのLRの値(EXC_RETURN) 割込みを抜ける際のスタックポインタ 多重割込み FPUなどにより異なる MSP メイン PSP プロセス 割り込み時 使用 その他 使用可能 使用可能 CONTROLレジスタの設定で使用スタックの変更が可能 LRの値 0xFFFF_FFF1 多重割込み 0xFFFF_FFF9 通常状態への復帰時にMSPを使用 0xFFFF_FFFD 通常状態への復帰時にPSPを使用 0xFFFF_FFE1 多重割込み(FPU状態) 0xFFFF_FFE9 通常状態への復帰時にMSPを使用(FPU状態) 0xFFFF_FFED 通常状態への復帰時にPSPを使用(FPU状態) 35
36 スタートアップ処理
37 Cortex-Mのリセット動作 Cortex-Mでは起動時にベクタテーブルの内容を元に初期化される ベクタ先頭 0x0000_0000 スタックの先頭アドレス リセットハンドラアドレス NMIハンドラアドレス リセットされるとCPUは メモリから2ワード読み出す 最初のデータでスタックポインタをセット 2つ目のデータにPCをセット リセット スタック 37
38 EWARM Cortex-Mの起動動作 参照 ジャンプ Cortex-M0/M3/M4 Vector Table: IAR DLIB ランライム ライブラリの コード ただし 上書き可能 thumb vector_table_m.s or thumb cstartup_m.c デフォルトプログラムエントリ: thumb cstartup_m.s or thumb cstartup_m.c main()前の初期化: thumb cmain.s ユーザコード User s Application: 例外& 割り込み 値 0x00 Stack Top sfe (CSTACK) 01 0x04 Reset iar_program_start 02 0x08 NMI Default Handler 03 0x0C Hard Fault Default Handler 04 0x10 Memory Management Default Handler 05 0x14 Bus Fault Default Handler 06 0x18 Usage Fault Default Handler 07~10 0x1C~0x28 Reserved x2C SVCall Default Handler 12 0x30 Debug Monitor Default Handler 13 0x34 Reserved x38 PendSV Default Handler ~ 255 0x3C 0x40~0x3FC SysTick External Interrupts Default Handler Interrupt Handlers Vector No. Vector Offset 00 iar_program_start: bl iar_init_core bl iar_init_vfp bl cmain ; optional ; optional, enable VFP, thumb fpinit_m.s cmain: bl low_level_init bl iar_data_init3 bl main ; low_level_init.c ; initialize data sections, init data_init3.c int main (void) { } void xxx_interrupthandler (void) { } 38
39 初期化処理のデバッグ デバッグのオプションを変更することで main以前のデバッグ可能 チェックを外す 39
40 初期化処理のソースコード EWARMインストールフォルダに初期化処理のソースコードがる EWARMのインストールフォルダ #pragma location = ".intvec" const intvec_elem vector_table[] = { {. ptr = sfe( "CSTACK" ) }, iar_program_start, NMI_Handler, HardFault_Handler, }; void cmain( void ); weak void iar_init_core( void ); weak void iar_init_vfp( void ); Reset #pragma required= vector_table void iar_program_start( void ) { iar_init_core(); iar_init_vfp(); cmain(); } cmain: bl cmp beq bl?l1: MOVS BL line BL BL low_level_init r0,#0?l1 iar_data_init3 変数の初期化 r0,#0 iar_argc_argv ; No parameters ; Maybe setup command main exit main 40
41 リンカ設定でメモリ配置コントロール
42 ILINKの基本概念 キーワード EWARMのリンカはILINK 詳細使用方法はC/C++開発ガイドを参照 42
43 ILINKの基本概念 キーワード GUIの設定項目 プロジェクトオプション > リンカ > 設定 ベクタテーブル ROM/RAM領域 スタックサイズの変更が可能 43
44 ILINKの基本概念 キーワード リンカの働き 領域(Region)を指定して そこにセクションやブロックを配置 ROMの特定の アドレスに配置 Memory領域 Region 0x x0000FFFF IARの標準セクション.intvec.text place in ROM に配置.data_init.rodata.data Region 0x x2000FFFF place in ブロック(スタック) RAM に配置 ブロック(ヒープ) 割り込みベクター コード 変数の初期化データ constデータ 変数 44
45 ILINKの基本概念 キーワード リンカ設定ファイルのキーワード紹介 region メモリ上の領域を指定します block サイズを指定します section プログラムのセクション initialize 初期化方法の指定 do no initialize 初期化しない領域の指定 place regionにblockやsectionを配置 rw(readwrite), ro(readonly)の属性を指定
46 ILINKの基本概念 キーワード EWARMの基本セクション.bss 0初期化する変数.data 0以外で初期化される変数.data_init.intvec ベクタ.noinit 初期化しない変数.rodata readonlyの変数.text プログラム.textrw ramfuncを使った時のコード.textrw_init.textrwの初期化データ :.dataセクションの初期化データ 詳細はIAR C/C++ 開発ガイドのセクションリファレンスを参照
47 実際に動作をみてみる 関数を配置 ファイルfunc.cのLED絡みの関数を特定領域に配置 0x IROM 0x ROMLED 0x00FFFFF void set_led_port(void) void LED_Handler(void) 0x RAM 0x2000FFFF 47
48 実際に動作をみてみる ( 関数を配置 ) C 言語ソースコードでの指定 pragma でセクション定義 EWARM ではセクション定義は #pragma location= XXXX EWARM ではセクションを参照するときに #pragma section= XXXX とななる 48
49 実際に動作をみてみる 関数を配置 実際にセクションを指定 #pragma location="led" void set_led_port(void ) { printf("initialize LED port n"); } #pragma location="led" void LED_Handler(void) { Port0!= Port0; } set_led_portがセクション LED に割当 LED_Handlerがセクション LED に割当 49
50 実際に動作をみてみる 関数を配置 リンカ設定ファイル 抜粋 0x から0x0004FFFFをIROM_region define region IROM_region = mem:[from ICFEDIT_region_IROM1_start to 0x0004FFFF ]; define region ROMLED_region= mem:[from 0x to ICFEDIT_region_ROM_end ]; 0x から0x000FFFFFをROMLED_region place in IROM_region { readonly }except { section LED }; セクションLEDを除く readonlyをrom_regionに配置 place in ROMLED_region { readonly section LED }; セクションLEDのreadonlyをROMLED_regionに配置 50
51 実際に動作をみてみる 関数を配置 ビルド結果のmapファイル プロジェクトオプション > リンカ > リスト > リンカマップファイルの表示 Outputフォルダに生成されるマップファイルをダブルクリックで表示 Codeは関数を示す 関数が奇数アドレスは Thumb命令 Cortex-MはすべてThumb命令 51
52 実際に動作をみてみる 変数を配置 RAM2に図のように4つの変数を配置 0x ROM 0x000FFFFF 0x x x2000FFFF RAM int int int int mydat1[10]; mydat2[10]; mydat3[5]; mydat4[5]; RAM2 52
53 実際に動作をみてみる 変数を配置 実際にセクションを定義 ひとつひとつ変数にセクションを割り当て #pragma location="mydat" root int mydat1[10]; #pragma location="mydat" root int mydat2[10]; #pragma default_variable_attributes = root int mydat3[5]; int mydat4[5]; #pragma default_variable_attributes "MYDAT" まとめて変数に属性をつける このとき rootもpragma側でつけること 53
54 実際に動作をみてみる 変数を配置 リンカ設定ファイル define region RAM_region define region RAM2_region place in RAM_region = mem:[from ICFEDIT_region_RAM_start = mem:[from 0x { readwrite, to 0x20003FFF]; to ICFEDIT_region_RAM_end ]; block CSTACK, }; place in RAM2_region { readwrite section MYDAT}; RAM2_regionにセクションMYDATの readwriteデータを配置 54
55 実際に動作をみてみる ( 変数を配置 ) MAP ファイルを確認 #pragma location="mydat" root int mydat1[10]; #pragma location="mydat" root int mydat2[10]; #pragma default_variable_attributes = "MYDAT" int mydat3[5]; int mydat4[5]; #pragma default_variable_attributes = define region RAM2_region = mem:[from 0x to _ICFEDIT_region_IRAM1_end ]; place in RAM2_region { readwrite section MYDAT}; mydat1 0x x28 Data Gb main.o [1] mydat2 0x x28 Data Gb main.o [1] mydat3 0x x14 Data Gb main.o [1] mydat4 0x x14 Data Gb main.o [1] 55
56 実際に動作をみてみる 変数を手動初期化 初期化つき変数にセクション定義 初期化つき変数にセクションを割り当て #pragma location="mydat" root int mydat1[10] = {0,1,2,3,4,5,6,7,8,9,}; #pragma location="mydat" root int mydat2[10] = {10,11,12,13,14,16,17,18,19}; 初期化つき変数にセクションを割り当て 56
57 実際に動作をみてみる 変数を手動初期化 初期化ルーチンの作成 プログラム中でセクション名を参照する場合には #pragma sectionで明示する #pragma section="mydat" #pragma section="mydat_init" void init_mydat( ) { int i; unsigned char *psrc, *pdest; 変数はMYDATというセクションになる 初期化データはMYDAT_initというセクションにる pdest = section_begin("mydat"); psrc = section_begin("mydat_init"); for (i=0; i < section_size("mydat"); i++ ) { *pdest = *psrc; pdest++; psrc++; } セクションMYDATの先頭アドレスを section_beginで取得 セクションMYDAT_initの先頭アドレスを section_beginで取得 } セクションMYDATのサイズを section_sizeで取得 57
58 実際に動作をみてみる 変数を手動初期化 リンカ設定ファイルでの指定 この領域の初期化は自動に行う initialize by copy { readwrite } except {section MYDAT}; initialize manually with packing=none { readwrite section MYDAT}; place in RAM2_region { readwrite section MYDAT}; この領域の初期化は手動で行う 初期化データの圧縮はしない 58
59 実際に動作をみてみる 変数を手動初期化 マップファイルでの確認 initialize manually { readwrite section MYDAT};の場合 ************************************ *** INIT TABLE *** initialize by copy { readwrite } の場合 ****************************************** *** INIT TABLE *** Address Size Zero ( iar_zero_init3) 1 destination range, total size 0x54: 0x x54 Address Size Zero ( iar_zero_init3) 1 destination range, total size 0x54: 0x x54 Copy ( iar_copy_init3) 1 source range, total size 0x50: 0x000019dc 0x50 1 destination range, total size 0x50: 0x x50 Copy ( iar_copy_init3) 1 source range, total size 0x30: 0x00001be4 0x30 1 destination range, total size 0x30: 0x x30 ない mydat1 0x x28 Data Gb main.o [1] mydat2 0x x28 Data Gb main.o [1] ある Copy ( iar_copy_init3) 1 source range, total size 0x30: 0x00001bf8 0x30 1 destination range, total size 0x30: 0x x30 59
60 実際に動作をみてみる 変数を手動初期化 初期化関数前後の変数の値を比較 コード for ( i=0; i< 10; i++){ printf("before No%d - %d n", i, mydat1[i]); } init_mydat( ); 初期化関数を実行 for ( i=0; i< 10; i++){ printf("after No%d - %d n", i, mydat1[i]); } printf出力結果 表示 ターミナルI/O initialize LED port BEFORE No BEFORE No BEFORE No BEFORE No BEFORE No BEFORE No BEFORE No BEFORE No BEFORE No BEFORE No AFTER No0-0 AFTER No1-1 AFTER No2-2 AFTER No3-3 AFTER No4-4 AFTER No5-5 AFTER No6-6 AFTER No7-7 AFTER No8-8 AFTER No9-9 60
61 Cortex-M への移行時の注意点
62 Cortex-Mへの移行時の注意点 アーキテクチャにより 仕様が異なる項目に注意する スタックサイズ intデータのサイズ 構造体のパッキング 62
63 スタックサイズ 8bit 16bitマイコンと比較するとスタック使用量は多い 全レジスタ汎用レジスタ+PC+STACK+CPSRを退避した際の例 Cortex-M 16bitマイコンの例 68?バイト 14?バイト EWARMでは2種類のスタック解析機能で使用量を解析可能 静的なスタック解析(メイク時) 動的なスタック解析(デバッグ時) 63
64 スタックサイズ 静的なスタック解析(メイク時) オプション設定 プロジェクトを選択し をダブルクリック [リンカ]-[アドバンスド]-[スタックの使用量解析を有効にする]
65 スタックサイズ 静的なスタック解析(メイク時) マップファイルに表示 メイクでマップファイルに解析結果表示 Call Graph Root Category interrupt Program entry Max Use Total Use Program entry " iar_program_start": 0x d Maximum call chain " iar_program_start" " cmain" "main" "dhry_main" "Proc_1" "Proc_6" "Func_3" 232 bytes Mainの実行されるパスでの スタック使用量 interrupt " default_handler" in vector_table_m.o [4]: 0x Maximum call chain " default_handler" in vector_table_m.o [4] 0 bytes 0 ハンドラの実行されるパスでの スタック使用量 65
66 スタックサイズ 静的なスタック解析(メイク時) 解析サポート機能 関数ポインタなどを使うと 自動では追えない #pragma calls=xx,yy を使って手動指定 void Fun1(), Fun2(); void Caller(void (*fp)(void)) { #pragma calls = Fun1, Fun2 (*fp)(); この関数はFun1,Func2が呼ばれる } 解析のスタート関数を個別指定したい #pragma call_graph_root void delay_time(int number){ } 66
67 スタックサイズ 動的なスタック解析(デバッグ時) ツールオプション設定 [ツール]-[オプション] [スタック]-[グラフィカルスタック表示 ]を有効
68 スタックサイズ 動的なスタック解析(デバッグ時) 表示 [表示]-[スタック]-[スタック1]
69 スタックサイズ 動的なスタック解析(デバッグ時) 実行結果表示 灰色は使用した量 緑のバーは現状値 マウスをあてると 詳細が表示 69
70 intデータ型のサイズ intデータ型のサイズは マイコン コンパイラにより異なる EWARM 16ビットマイコン signed char 8 8 unsigned char 8 8 signed short unsigned short signed int unsigned int signed long unsigned long signed long long unsigned long long
71 intデータ型のサイズ マイコンにより 結果が異なる例 unsigned short c=0xffff; int gg(unsigned short a, unsigned short b) { if ( c == ( a ~b) ) { return 0; } else { return 1; } } int main( void ) { int t; x =0で yが0, c=0xffffの時のprintfの出力 16 bit result=0 32 bit result=1 t= gg(0, 0 ); printf("result=%d n", t); return 0; } 71
72 構造体のパッキング 構造体のパッキングによる差 struct S1 { char s1; int s2; char s3; int s4; char s5; } A[10]; struct S2 { char s1; char s3; char s5; int s2; int s4; } B[10]; Entry Address Size(hex) Size(Dec) Type Object A 0x xc8 200 Data Gb main.o [1] B 0x200000c8 0x % Data Gb main.o [1] struct S1での状況 struct S2での状況 s1 s2 5 s5 s3 s4 s3 s2 s4 s1 3 s5 4バイト 4バイト 72
73 解析ツールを使用して品質向上
74 解析ツールを使用して品質向上 IARシステムズの提供する解析アドオン製品を使用して品質向上 静的解析アドオン機能 C-STAT MISRA-C 2004/2008C++/2012のチェック CWE / CERTルールに準拠した脆弱性のチェック 動的解析アドオン機能 C-RUN 実行時の数値演算エラーの検出 不適切なメモリ利用の検出 C-RUN/ C-STATはEWARM製品版に対するアドオン製品となります 74
75 静的解析アドオン機能C-STAT 実動作不要の静的解析で 潜在的なコードエラーを検出 ソースコードレベルにおいて潜在的なエラーやバグを EWARM上で発見 例えばメモリリーク アクセス違反 算術演算の エラー 配列や文字列のオーバーランといった 潜在的なコードエラーを発見でき アプリケーションの誤動作を未然に防止 主な機能 C, C++ 言語に対応 MISRA C:2004, MISRA C++:2008, MISRA C:2012に対応 CWE や CERT C/C++といった基準に基づく100以上のルールに沿ったチェック 直感的で簡単に使える設定 任意でコーディング規約単位または個別のルール単位でチェック IAR Embedded Workbenchとシームレスに統合 短時間で解析 ARM用IAR Embedded Workbenchバージョン7.40より利用可能 75
76 簡単に使える C-STAT EWARM のオプションで解析したいチェックルールを選択するだけ [ 静的解析 ] を選択 [C-STAT check] をクリック プロジェクトを右クリックし [ オプション ] を選択 CWE/CERT をベースに動作時不良リスクをチェック MISRA C コーディングガイド準拠チェック チェック項目選択画面 76
77 C-STAT の実行 EWARM のオプションメニューで選択するだけ プロジェクトを右クリック [C-STAT] 静的解析 プロジェクトを解析 数分で C-STAT メッセージが表示 77
78 動的解析アドオン機能C-RUN デバッグ実行時に 実際に発生した潜在エラーを検出 事前に設定したチェック項目を対象にデバッグ実行中に リアルタイムにチェックを行い 違反した挙動を 検出し EWARM上で通知 実装フェーズから問題を検出することで 後段での テスト 修正工数を削減し 品質向上 納期短縮を実現 主な機能 C, C++言語に対応 直感的で簡単に使える設定 包括的かつ詳細な実行時のエラー情報 エラーが見つかった場所のコールスタック情報 エディタ上でのコード位置を表示やグラフィカルな表示 自由度の高いエラー情報の管理 配列や他のオブジェクトが境界内に正しくアクセスしていることを保証する境界チェック バッファオーバーフローの検出 データのキャスト時の 値の変化を検出 算術計算時の値のチェック シフト演算のビット損失を検出 ヒープやメモリリークに関するチェック ARM用IAR Embedded Workbenchバージョン7.20以降で利用可能 78
79 動的解析アドオン機能C-RUN デバッグ実行時に 実際に発生した潜在エラーを検出 コンパイラ開発者による高効率 IDE tools Build tools IAR C-SPY Debugger Editor IAR C/C++ Compiler Simulator driver Project manager Assembler Hardware system drivers Library builder Linker Librarian 完全に統合された 動的解析 Power debugging RTOS plug-ins 詳細かつ柔軟な 動的エラー情報 79
80 簡単に使える C-RUN EWARMのオプションで解析したいチェックルールを選択するだけ ビルド時にチェックコードが実行コードに埋め込まれる [ランタイム解析]を選択 [有効化]をチェック チェックしたい項目をチェック 80
81 C-SRUN の実行 EWARMのデバッグ実行中に自動的に検出される 発生したソース位置 発生した違反 発生したPC位置 発生したコア マルチコア対応 データ値の表示 値0x000001f4を0xf4にした コールスタックで mainから convを呼んだ中で発 生したことを示す 81
82 まとめ
83 まとめ Cortex-M の特徴を理解することで レジスタや命令セットの読み方を習得できる 割込みハンドラやベクタテーブルは 従来の ARM コアから変更となっている 初期化処理やリンカ設定は EWARM 独自の記述となり 既存のものを参考にカスタマイズしていく マイコンアーキテクチャごとに動作の異なるコーディングに注意する 静的解析ツール 動的解析ツールを使用することで 不具合の早期発見 品質向上につながる 83
84 本資料について
85 本資料取り扱い上の注意 本資料は 2015 年 4 月 1 日時点の情報を基に作成されており 将来変更の可能性のあるものです あわせてご紹介する設定や機能に関連して 動作保証をお約束するものではございませんので ご了承ください 本資料で提供している情報は ご利用されている方のご判断 責任においてご使用ください 提供した情報に関連して ご利用される方が不利益等を被る事態が生じたとしても 弊社及び執筆者は一切の責任を負いかねますので ご了承ください 本資料の内容に関する弊社または各社へのお問合せはご遠慮ください 本資料及びデータの再配布 無断転用 転載等はご遠慮ください 85
86 商標について IAR Systems, IAR Embedded Workbench, C-SPY, C-RUN, C-STAT, visualstate, Focus on Your Code, IAR KickStart Kit, I-jet, I-scope, IAR, お よび IAR Systems のロゴタイプはIAR Systems ABが所有する商標または登録 商標です ARMおよびCortexは ARM Limited またはその子会社 のEUまたはその他の 国における登録商標です ARMおよびThumbは ARM Limited またはその子 会社 のEUまたはその他の国における商標です CoreSightは ARM Limited またはその子会社 のEUまたはその他の国における商標です All rights reserved. STM32は STマイクロエレクトロニクスの登録商標です その他 本資料中の製品名やサービス名は全てそれぞれの所有者に属する商標ま たは登録商標です 86
PowerPoint Presentation
Armv8-M セキュアマイコンプログラミングテクニック 技術チーム / 殿下 信二 このセッションの目的 Armv8-M セキュアマイコンの使い方の基礎を学ぶ Cortex-M マイコンと Armv8-M セキュアマイコンの違い 簡単です Armv8-M セキュアマイコンプログラミング なぜセキュアマイコンが必要ですか? 製品が偽造 模造 過剰生産されるリスクの低減 IoT 製品のメリット ( コネクティビティ
本ドキュメントについて 的 ARM 統合開発環境である ARM IAR Embedded Workbench(EWARM) と ST マイクロエレクトニクス社 (ST 社 ) 提供のサンプルプロジェクト および設計 援ツールを使 して ST 社評価ボード のソフトウェアを実際にビルド デバッグする
STM32 M0&M0+ ソフトウェア開発 April 2015 IAR Systems K.K. FAE Team 本ドキュメントについて 的 ARM 統合開発環境である ARM IAR Embedded Workbench(EWARM) と ST マイクロエレクトニクス社 (ST 社 ) 提供のサンプルプロジェクト および設計 援ツールを使 して ST 社評価ボード のソフトウェアを実際にビルド
PowerPoint Presentation
STM32 M7 ソフトウェア開発入門 September 2015 IAR Systems K.K FAE Team. 本ドキュメントについて 目的 ARM 用統合開発環境である ARM 用 IAR Embedded Workbench(EWARM) と ST マイクロエレクトニクス社 (ST 社 ) 提供のサンプルプロジェクト および設計支援ツールを使用して ST 社評価ボード用のソフトウェアを実際にビルド
PowerPoint プレゼンテーション
ARM 用統合開発環境 EWARM アドオンツール C-RUN のご紹介 2015.1 IAR システムズ株式会社 www.iar.com C-RUN 概要 www.iar.com C-RUN とは? 統合開発環境 EWARM のデバッグ機能が強化されました C-RUN はデバッグ効率アップを目的としたアドオンツールです 単体テスト時の動的解析が簡単 & 安価に可能です 従来の解析ツール 開発プロセスの変更が必要
RL78開発環境移行ガイド R8C/M16C, H8S/H8SXからRL78への移行(統合開発環境編)(High-performance Embedded Workshop→CS+)
RL78 開発環境移行ガイド R8C/M16C, H8S/H8SXからRL78への移行 ( 統合開発環境編 ) (High-performance Embedded Workshop CS+) 2017/4/7 R20UT2087JJ0103 ソフトウェア事業部ソフトウエア技術部ルネサスシステムデザイン株式会社 はじめに 本資料は 統合開発環境 High-performance Embedded Workshop
内容 1 はじめに 本ガイドの目的 本ガイドの対象者 対象製品 表記について リンカ設定ファイル例 ソースファイル例 名前の付け方 リンカオプションとリンカ設定ファ
ILINK ガイド 基礎編 IAR Embedded Workbench ILINK-2-j 1 内容 1 はじめに... 3 1.1 本ガイドの目的... 3 1.2 本ガイドの対象者... 3 1.3 対象製品... 3 2 表記について... 4 2.1 リンカ設定ファイル例... 4 2.2 ソースファイル例... 4 2.3 名前の付け方... 4 3 リンカオプションとリンカ設定ファイル...
本ドキュメントについて 的 STM32(Cortex-M) マイコンには 性能なデバッグモジュール (CoreSight) が搭載されています 従来の printf デバッグとは 較にならないほど 効率の いデバッグを実現するための JTAG ICE(In Circuit Emulator) と 基
STM32 デバッグのための ICE コネクタガイド 2015/4/15 IAR Systems K.K. 本ドキュメントについて 的 STM32(Cortex-M) マイコンには 性能なデバッグモジュール (CoreSight) が搭載されています 従来の printf デバッグとは 較にならないほど 効率の いデバッグを実現するための JTAG ICE(In Circuit Emulator)
スライド 1
RX ファミリ用コンパイラスタートアップの紹介 ルネサスエレクトロニクス株式会社ルネサス半導体トレーニングセンター 2013/08/02 Rev. 1.00 00000-A コンテンツ スタートアップの概要 スタートアッププログラム例 外部メモリを利用する場合の設定 2 スタートアップの概要 3 処理の流れとファイル構成例 パワーオン リセット Fixed_Vectors ( 固定ベクタテーブル )
RH850の割り込み/例外実現方法 CC-RHアプリケーションガイド
RH850の割り込み / 例外実現方法 CC-RH アプリケーションガイド R20UT3546JJ0101 2018.10.12 ソフトウェア開発統括部 ソフトウェア技術部ルネサスエレクトロニクス株式会社 アジェンダ 概要ページ 03 割り込み / 例外発生時に実行する関数の定義ページ 10 直接ベクタ方式のベクタの定義ページ 17 テーブル参照方式のベクタの定義ページ 25 その他 割り込み制御ページ
ブート領域、フラッシュ領域の分割方法 RL78ファミリ用Cコンパイラ CC-RL
ブート領域 フラッシュ領域の分割方法 RL78 ファミリ用 C コンパイラ CC-RL 2016 年 10 月 5 日 Rev.2.00 ソフトウエア事業部 ソフトウエア技術部 ルネサスシステムデザイン株式会社 R20UT3475JJ0200 アジェンダ はじめにページ 3 概要ページ 4 ブート領域 フラッシュ領域共通ページ 12 ブート領域ページ 19 フラッシュ領域ページ 38 デバッグツールページ
Microsoft Word - tool01.doc
5 月号付属基板開発ツールと Stmicroelectronics 社提供 のサンプル プログラム 使いこなすためのポイント江崎雅康 ARM Cortex M3 付属基板のプログラミング 要点 DWM 誌 5 月号付属基板 CQ-STARM はUSBダウンローダDFU(Device Firmware Upgrade) を搭載しています miniusbケーブル1 本でユーザプログラムの書き込みができるのが特徴です
PowerPoint Presentation
EWARM 8.1x イントロダクション IAR Systems 1 主な機能アップデート インフォメーションセンタ 編集 ビルド画面 プロジェクトオプション デバッグ画面 Appendix インストール手順 IAR Systems 2 主な機能アップデート IAR Systems 3 C11 / C++14 をサポート コンパイラおよびライブラリが最新の C 言語規格 ISO/IEC 9899:2011
目次 EWARM のマニュアルガイド ARM の命令セット インストールファイルとドキュメント EWARM のオプション設定概要 ビルド時の生成ファイル スタートアップシーケンス Cortex の CoreSight デバッグコネクタ情報 SWV(SWO) 機能 ETM トレース機能 デバッグウィン
EWARM 付録情報 IAR システムズ株式会社 www.iar.com 改訂日 : 2014 年 8 月 1 日 目次 EWARM のマニュアルガイド ARM の命令セット インストールファイルとドキュメント EWARM のオプション設定概要 ビルド時の生成ファイル スタートアップシーケンス Cortex の CoreSight デバッグコネクタ情報 SWV(SWO) 機能 ETM トレース機能
ex05_2012.pptx
2012 年度計算機システム演習第 5 回 2012.05.25 高水準言語 (C 言語 ) アセンブリ言語 (MIPS) 機械語 (MIPS) コンパイラ アセンブラ 今日の内容 サブルーチンの実装 Outline } ジャンプ 分岐命令 } j, jr, jal } レジスタ衝突 回避 } caller-save } callee-save 分岐命令 ( 復習 ) } j label } Jump
RX ファミリ用 C/C++ コンパイラ V.1.00 Release 02 ご使用上のお願い RX ファミリ用 C/C++ コンパイラの使用上の注意事項 4 件を連絡します #pragma option 使用時の 1 または 2 バイトの整数型の関数戻り値に関する注意事項 (RXC#012) 共用
RX ファミリ用 C/C++ コンパイラ V.1.00 Release 02 ご使用上のお願い RX ファミリ用 C/C++ コンパイラの使用上の注意事項 4 件を連絡します #pragma option 使用時の 1 または 2 バイトの整数型の関数戻り値に関する注意事項 (RXC#012) 共用体型のローカル変数を文字列操作関数で操作する場合の注意事項 (RXC#013) 配列型構造体または共用体の配列型メンバから読み出した値を動的初期化に用いる場合の注意事項
Microsoft PowerPoint - Tomen Seminar 木村さん分
ARM と Cortex-M0 イントロダクション ARM の 歴 史 1979 年 : Acorn Computer 設 立 ( 英 国 ケンブリッジ) 1985 年 : 初 代 ARM Acorn RISC Machine (その 後 Advanced RISC Machineに 変 更 )が 誕 生 米 VLSI Technologyで 製 造 (25,000ゲート 以 下 ) 1986 年
arduino プログラミング課題集 ( Ver /06/01 ) arduino と各種ボードを組み合わせ 制御するためのプログラミングを学 ぼう! 1 入出力ポートの設定と利用方法 (1) 制御( コントロール ) する とは 外部装置( ペリフェラル ) が必要とする信号をマイ
arduino プログラミング課題集 ( Ver.5.0 2017/06/01 ) arduino と各種ボードを組み合わせ 制御するためのプログラミングを学 ぼう! 1 入出力ポートの設定と利用方法 (1) 制御( コントロール ) する とは 外部装置( ペリフェラル ) が必要とする信号をマイコンから伝える 外部装置の状態をマイコンで確認する 信号の授受は 入出力ポート 経由で行う (2) 入出力ポートとは?
PowerPoint プレゼンテーション
IAR Embedded Workbench for Arm TIPS 集 V1.00.3 はじめに本資料の位置づけと読み方 位置づけ IAR Embedded Workbench for Arm のマニュアルの補足説明資料です 読み方 各 TIPSには5 桁または6 桁のIDが振られています 資料更新があってもIDの上位 5 桁は固定です バージョンアップなどにより内容が変わる場合には6 桁目に差分を示します
内容 1. 仕様 動作確認条件 ハードウェア説明 使用端子一覧 ソフトウェア説明 動作概要 ファイル構成 オプション設定メモリ 定数一覧 変数一
RX210 グループ IRQ 割り込みを使用したパルス出力 要旨 本サンプルコードでは IRQ 割り込みが発生すると 一定期間タイマでパルスを出力する 方法について説明します 対象デバイス RX210 1 / 25 内容 1. 仕様... 3 2. 動作確認条件... 3 3. ハードウェア説明... 3 3.1 使用端子一覧... 3 4. ソフトウェア説明... 4 4.1 動作概要... 4
Notes and Points for TMPR454 Flash memory
表紙 TMPR454 内蔵 Flash メモリ対応版手順書 株式会社 DTS インサイト ご注意 (1) 本書の内容の一部または 全部を無断転載することは禁止されています (2) 本書の内容については 改良のため予告なしに変更することがあります (3) 本書の内容について ご不明な点やお気付きの点がありましたら ご連絡ください (4) 本製品を運用した結果の影響については (3) 項にかかわらず責任を負いかねますのでご了承ください
S1C17 Family Application Note S1C17 シリーズ PORT 多重割り込みアプリケーションノート Rev.1.0
S1C17 Family Application Note S1C17 シリーズ PORT 多重割り込みアプリケーションノート Rev.1.0 評価ボード キット 開発ツールご使用上の注意事項 1. 本評価ボード キット 開発ツールは お客様での技術的評価 動作の確認および開発のみに用いられることを想定し設計されています それらの技術評価 開発等の目的以外には使用しないで下さい 本品は 完成品に対する設計品質に適合していません
PowerPoint プレゼンテーション
IAR Embedded Workbench for ARMのTIPS集 V1.00.3 改訂日 Jan. 25 th, 2016 IAR システムズ株式会社 はじめに本資料の位置づけと読み方 位置づけ IAR Embedded Workbench for ARMのマニュアルの補足説明資料です 読み方 TIPSには5ケタまたは6ケタのIDが振られています 資料更新があってもIDの上位5ケタは固定です
ARM Corporate Presentation
オフラインコンパイラと CMSIS-DAP デバッグ環境の紹介 アーム株式会社 ARM サービス部門アプリケーションエンジニア 渡會豊政 1 1 自己紹介 渡會豊政 ( わたらいとよまさ ) ソフトウェア開発ツール ( 主にコンパイラ ) の技術サポート LPC1114 mbedのポーティングとかやりました Twitter : @toyowata https://mbed.org/users/macrum/notebook
スライド 1
RX62N 周辺機能紹介データフラッシュ データ格納用フラッシュメモリ ルネサスエレクトロニクス株式会社ルネサス半導体トレーニングセンター 2013/08/02 Rev. 1.00 00000-A コンテンツ データフラッシュの概要 プログラムサンプル 消去方法 書き込み方法 読み出し方法 FCUのリセット プログラムサンプルのカスタマイズ 2 データフラッシュの概要 3 データフラッシュとは フラッシュメモリ
スライド 1
RX62N 周辺機能紹介 RTC リアルタイムクロック ルネサスエレクトロニクス株式会社ルネサス半導体トレーニングセンター 2013/08/02 Rev. 1.00 00000-A コンテンツ RTC の概要 プログラムサンプル プログラムサンプルのカスタマイズ 2 RTC の概要 3 RTC の仕様 32.768KHz メイン発振 サブ発振 CPG RTC システムクロック (ICLK) 周辺モジュールクロック
自己紹介 湯浅陽一 1999 年より Linux kernel 開発に参加 MIPS アーキテクチャのいくつかの CPU へ Linux kernel を移植
Kprobes による Embedded Linux kernel 動的解析手法 Yoichi Yuasa OSAKA NDS Embedded Linux Cross Forum #3 自己紹介 湯浅陽一 1999 年より Linux kernel 開発に参加 MIPS アーキテクチャのいくつかの CPU へ Linux kernel を移植 Kprobes とは Linux kernel デバッグ機能の一つ
Page 2 ワークスペースはプロジェクト管理の最上位であり IAR Embedded Workbench を起動すると自動的にオープンします ワークスペースには複数のプロジェクトを登録することができるので ここではメインのアプリケーションとブートローダのプロジェクトを登録します このワークスペース
By Shawn Prestridge, IAR Systems Software Inc. Co-author Colin Flournoy, IAR Systems Software Inc. IAR Embedded Workbench と STM32F207ZG-SK を 使用したブートローダの構築の実例 Download application project (zip) ソフトウェアが複雑になるにつれ
MSP430 CCSv5 を使い Flash Memory 内容と version 情報を確認する方法 ( テクニック編 ) Rev: PIC Trout 今回は 下記の2 件について説明します 1) CCSv5 を使用して MSP430 の Flash Memory 内容を
MSP430 CCSv5 を使い Flash Memory 内容と version 情報を確認する方法 ( テクニック編 ) Rev:01 10.4.2013 PIC Trout 今回は 下記の2 件について説明します 1) CCSv5 を使用して MSP430 の Flash Memory 内容を確認する方法 JTAG アクセスができるデバイス ( セキュリティ Fuse 断ではできません ) に対して
Microsoft PowerPoint - CproNt02.ppt [互換モード]
第 2 章 C プログラムの書き方 CPro:02-01 概要 C プログラムの構成要素は関数 ( プログラム = 関数の集まり ) 関数は, ヘッダと本体からなる 使用する関数は, プログラムの先頭 ( 厳密には, 使用場所より前 ) で型宣言 ( プロトタイプ宣言 ) する 関数は仮引数を用いることができる ( なくてもよい ) 関数には戻り値がある ( なくてもよい void 型 ) コメント
著作権および商標 この文書には が所有権を持つ機密事項が含まれます この資料のいかなる部分も許 可無く複製 使用 公開することを固く禁じます 本書は の従業員および許可された 取引先だけに使用が認められています 本書で提供されたデータは正確で信頼性の高いものですが このデータの使用について株式会社
Version 1.01 著作権および商標 この文書には が所有権を持つ機密事項が含まれます この資料のいかなる部分も許 可無く複製 使用 公開することを固く禁じます 本書は の従業員および許可された 取引先だけに使用が認められています 本書で提供されたデータは正確で信頼性の高いものですが このデータの使用について株式会社 EASEL は責任を負うものではありません は いつでも無断で資料を変更する権利を
Cコンパイラパッケージお知らせ
201406-2 CubeSuite+ 版 RX ファミリ用 C/C++ コンパイラパッケージ V1 および High-performance Embedded Workshop 版 RX ファミリ用 C/C++ コンパイラパッケージ ご使用上のお願い CubeSuite+ 版 RX ファミリ用 C/C++ コンパイラパッケージ V1 および High-performance Embedded Workshop
PGRelief C/C++ 強化ポイント説明書
PGRelief C/C++ 強化ポイント説明書 1. 最新バージョンの強化ポイント (2017autumn 2018) 1) CERT Cコーディングスタンダードの適合性チェックを追加 CERTオプションの購入が必要 2) 指摘メッセージを16 個追加 ( うち15 個はCERTオプション用 ) 3) Visual C++ 2015 の資産に対応 2. 過去バージョンの強化ポイント 2.1. 強化ポイント
MMUなしプロセッサ用Linuxの共有ライブラリ機構
MMU なしプロセッサ用 Linux の共有ライブラリ機構 大谷浩司 高岡正 近藤政雄 臼田尚志株式会社アックス はじめに μclinux には 仮想メモリ機構がないので共有ライブラリ機構が使えない でもメモリ消費抑制 ストレージ消費抑制 保守性の向上のためには 欲しい 幾つかの実装があるが CPU ライセンス 機能の制限のためにそのまま利用できない RidgeRun 社 (Cadenux 社 )
命令セットの構成例 a) 算術 演算命令 例 )ADD dest, source : dest dest + source SUB dest, source : dest dest - source AND dest, source : dest dest AND source SHR reg, c
第 11 回機械語とアーキテクチャ コンピュータは, 記号で組み立てられ, 記号で動く機械 : ソフトウェアソフトウェア としても理解されなければならない ソフトウェアの最も下位レベルのしくみが ( 命令セット ) アーキテクチャ である 講義では命令符号 ( 機械語 ) の構成と種類についてまとめる また, 機械語を効率良く実行するために採用されている技術について紹介する 機械語とアセンブリ言語
スライド 1
RL78/G13 周辺機能紹介安全機能 ルネサスエレクトロニクス株式会社 ルネサス半導体トレーニングセンター 2013/08/02 Rev. 0.00 00000-A コンテンツ 安全機能の概要 フラッシュ メモリ CRC 演算機能 RAM パリティ エラー検出機能 データの保護機能 RAM ガード機能 SFR ガード機能 不正メモリ アクセス機能 周辺機能を使用した安全機能 周波数検出機能 A/D
adviceシリーズスタートアップガイド(Cortex-M3編)
スタートアップガイド Cortex-M3 OMAP Cortex-M3 3 本スタートアップガイドは Cortex-M3 の作成方法を説明しています 上記 MPU は advicelunaⅡ および adviceluna でサポートしています mvwstartup_020_cortex-m3 Rev.02 はじめに advice シリーズスタートアップガイド 以下 本ガイド は advice シリーズ製品を購入してからデバッグを開始するまでの一連の操作を順に示したドキュメントです
1. 新規プロジェクト作成の準備新規プロジェクトのためのフォルダを用意して そこにプロジェクトを作成します [ 新しいフォルダー ] をクリックして希望のフォルダに新しいフォルダを作成します この例では TrST_F401N_BlinkLD2 というフォルダを作成しました TrST_F401N_Bl
NUCLEO-F401RE の TrueSTUDIO プロジェクト構築方法 V001 2014/09/24 Atollic TrueSTUDIO for ARM Lite を使用して NUCLEO-F401RE のプロジェクトを新規に作成する方法について説明します また ビルドとデバッグについても説明しています 目次 1. 新規プロジェクト作成の準備... 2 2. 新規プロジェクトの作成... 3
Microsoft Word - プログラムをRAM.doc
プログラムを RAM 上でデバッグする場合の説明 対象 CPU 1)H8/300H H8S シリーズ H8SX シリーズ SH-2 シリーズが対象になります Rev1.50 DEF バージョン 6.30A 仕様より DEF バージョン 7.10A 仕様より 機能 1)BSC( バスステートコントローラ ) による拡張 RAM でのデバッグに対応しました 2)PBC/UBC 無しタイプの CPU 品種でもプログラムメモリが
AN1526 RX開発環境の使用方法(CS+、Renesas Flash Programmer)
RX 開発環境の使用方法 (CS+ Renesas Flash Programmer) 第 2 版 2018 年 03 月 13 日 1. 概要 1.1 概要 本アプリケーションノートでは RX シリーズで使用する開発環境についての解説を行います 解説を行う開発環境は以下の 3 つです 1.RX ファミリ用 C/C++ コンパイラパッケージ 2.Renesas Flash Programmer(RFP)
インテル(R) Visual Fortran コンパイラ 10.0
インテル (R) Visual Fortran コンパイラー 10.0 日本語版スペシャル エディション 入門ガイド 目次 概要インテル (R) Visual Fortran コンパイラーの設定はじめに検証用ソースファイル適切なインストールの確認コンパイラーの起動 ( コマンドライン ) コンパイル ( 最適化オプションなし ) 実行 / プログラムの検証コンパイル ( 最適化オプションあり ) 実行
Microsoft PowerPoint - kougi7.ppt
到達目標 スーパバイザモード, 特権命令, 割り込み CPU の割り込みメカニズム 割り込みの種類ごとに, 所定の例外処理が呼び出される スーパーバイザモードに, 自動的に切り替わる 割り込み終了後に 元のモード に戻る ハードウエア割り込みについて 割り込み禁止 割り込み発生時の CPU の挙動 現在の処理を中断 例外処理用のプログラム ( ハンドラともいう ) が起動される プログラム実行の流れ
PowerPoint プレゼンテーション
コンピュータアーキテクチャ 第 13 週 割込みアーキテクチャ 2013 年 12 月 18 日 金岡晃 授業計画 第 1 週 (9/25) 第 2 週 (10/2) 第 3 週 (10/9) 第 4 週 (10/16) 第 5 週 (10/23) 第 6 週 (10/30) 第 7 週 (11/6) 授業概要 2 進数表現 論理回路の復習 2 進演算 ( 数の表現 ) 演算アーキテクチャ ( 演算アルゴリズムと回路
RL78開発環境移行ガイド RL78ファミリ間の移行 (コンパイラ編:コンパイラオプション・アセンブラオプション)(CA78K0R→CC-RL)
RL78 開発環境移行ガイド RL78 ファミリ間の移行 ( コンパイラ編 : コンパイラ アセンブラ ) (CA78K0R CC-RL) 2016/12/28 R20UT3418JJ0101 ソフトウェア事業部ソフトウエア技術部ルネサスシステムデザイン株式会社 はじめに 本資料は RL78 ファミリ用 C コンパイラ CA78K0R 用のプロジェクトを RL78 ファミリ用 C コ ンパイラ CC-RL
Microsoft Word - matlab-coder-code-generation-quick-start-guide-japanese-r2016a
MATLAB コードを使用した C コードの生成クイックスタートガイド (R2016a) 最初のスタンドアロン C コードの生成 スタンドアロン C コードを生成するには [ ビルド ] を [ ソースコード ] [ スタティックライブラリ ] [ ダイナミックライブラリ ] または [ 実行ファイル ] のいずれかに切り替えます MATLAB Coder を使用することで MATLAB コードから
Toolchain_setting_ARMC
Rev 1.40.00 DS-5(ARMC) ツールチェインの設定と必要事項の説明 ( ルネサス RZ/A1H 用 ) DS-5(ARMC) ツールチェインの設定方法とサンプルプロジェクトに必要な設定を説明します 1. ツールチェイン設定画面を開きます 1) プロジェクト - プロパティ を選択します 2) C/C++ ビルド - 設定 を選択します 1 2.ARMC コンパイラの設定 1)ARMC
スクールCOBOL2002
(h) 登録集原文の指定方法 . 登録集原文の指定方法 複数の COBOL プログラムに共通の記述を別のソースファイルとしておき COPY 文で取り込むことができます 登録集原文の概念図を下欄に示します このようにすると コーディング量を削減でき 記述ミスもなくなるため 開発効率を高めることができます ここでは 第 章で実習した reidai.cbl というソースファイルの DATA0 と YYMMDD
Nios II - Vectored Interrupt Controller の実装
ALTIMA Corp. Nios II Vectored Interrupt Controller の実装 ver.1.0 2010 年 7 月 ELSENA,Inc. 目次 1. はじめに... 3 2. 適用条件... 3 3. システムの構成... 4 3-1. SOPC Builder の設定... 4 3-2. ペリフェラルの設定... 4 3-2-1. VIC の設定... 4 3-2-2.
04-process_thread_2.ppt
オペレーティングシステム ~ 保護とシステムコール ~ 山田浩史 hiroshiy @ cc.tuat.ac.jp 2015/05/08 復習 : OS の目的 ( 今回の話題 ) 裸のコンピュータを抽象化 (abstraction) し より使いやすく安全なコンピュータとして見せること OS はハードウェアを制御し アプリケーションの効率的な動作や容易な開発を支援する OS がないと 1 つしかプログラムが動作しない
Microsoft Word - Toolchain_setting_KPIT.doc
Rev 1.30.00 DS-5(KPIT-GNU) ツールチェインの設定と必要事項の説明 ( ルネサス RZ/A1H 用 ) DS-5(KPIT-GNU) ツールチェインの設定方法とサンプルプロジェクトに必要な設定を説明します 1. ツールチェイン設定画面を開きます 1) プロジェクト - プロパティ を選択します 2) C/C++ ビルド - 設定 を選択します 1 2. ライブラリジェネレータの設定
Microsoft PowerPoint - 09.pptx
情報処理 Ⅱ 第 9 回 2014 年 12 月 22 日 ( 月 ) 関数とは なぜ関数 関数の分類 自作関数 : 自分で定義する. ユーザ関数 ユーザ定義関数 などともいう. 本日のテーマ ライブラリ関数 : 出来合いのもの.printf など. なぜ関数を定義するのか? 処理を共通化 ( 一般化 ) する プログラムの見通しをよくする 機能分割 ( モジュール化, 再利用 ) 責任 ( あるいは不具合の発生源
スライド 1
RX62N 周辺機能紹介 TMR 8 ビットタイマ ルネサスエレクトロニクス株式会社ルネサス半導体トレーニングセンター 2013/08/02 Rev. 1.00 00000-A コンテンツ TMR の概要 プログラムサンプル (1) パルス出力機能 (8 ビットモード ) プログラムサンプル (2) インターバルタイマ機能 (16 ビット コンペアマッチカウントモード ) プログラムサンプルのカスタマイズ
スライド 1
RX62N 周辺機能紹介 CMT コンペアマッチタイマ ルネサスエレクトロニクス株式会社ルネサス半導体トレーニングセンター 2013/08/02 Rev. 1.00 00000-A コンテンツ CMT の概要 プログラムサンプル プログラムサンプルのカスタマイズ 2 CMT の概要 3 CMT の仕様 CMT ユニット 0 チャネル 16ビットタイマ CMT0 CMT1 ユニット 1 CMT2 CMT3
RTC_STM32F4 の説明 2013/10/20 STM32F4 内蔵 RTC の日付 時刻の設定および読み込みを行うプログラムです UART2( 非同期シリアル通信ポート 2) を使用して RTC の設定および読み込みを行います 無料の開発ツール Atollic TrueSTUDIO for
RTC_STM32F4 の説明 2013/10/20 STM32F4 内蔵 RTC の日付 時刻の設定および読み込みを行うプログラムです UART2( 非同期シリアル通信ポート 2) を使用して RTC の設定および読み込みを行います 無料の開発ツール Atollic TrueSTUDIO for ARM Lite 4.2.0 で作成した STM32F4 Discovery 基板用のプロジェクトです
Nios II Flash Programmer ユーザ・ガイド
ver. 8.0 2009 年 4 月 1. はじめに 本資料は Nios II 開発環境においてフラッシュメモリ または EPCS へのプログラミングを行う際の参考マニュアルです このマニュアルでは フラッシュメモリの書き込みの際に最低限必要となる情報を提供し さらに詳しい情報はアルテラ社資料 Nios II Flash Programmer User Guide( ファイル名 :ug_nios2_flash_programmer.pdf)
Nios II - PIO を使用した I2C-Bus (2ワイヤ)マスタの実装
LIM Corp. Nios II - PIO を使用した I 2 C-Bus (2 ワイヤ ) マスタの実装 ver.1.0 2010 年 6 月 ELSEN,Inc. 目次 1. はじめに... 3 2. 適用条件... 3 3. システムの構成... 3 3-1. SOPC Builder の設定... 3 3-2. PIO の設定... 4 3-2-1. シリアル クロック ライン用 PIO
Notes and Points for ADuCM320 Internal Flash memory
表紙 ANALOG DEVICES 社製 ADuCM320 内蔵 Flash メモリ対応手順書 株式会社 DTS インサイト ご注意 (1) 本書の内容の一部または 全部を無断転載することは禁止されています (2) 本書の内容については 改良のため予告なしに変更することがあります (3) 本書の内容について ご不明な点やお気付きの点がありましたら ご連絡ください (4) 本製品を運用した結果の影響については
PowerPoint プレゼンテーション
講座準備 講座資料は次の URL から DL 可能 https://goo.gl/jnrfth 1 ポインタ講座 2017/01/06,09 fumi 2 はじめに ポインタはC 言語において理解が難しいとされる そのポインタを理解することを目的とする 講座は1 日で行うので 詳しいことは調べること 3 はじめに みなさん復習はしましたか? 4 & 演算子 & 演算子を使うと 変数のアドレスが得られる
アプリケーションノート MT-R300 割り込みプログラムのデバッグ方法
アプリケーションノート マイコントレーニングボード MT-R300 割り込みプログラムのモニタデバッグ方法 1. 概要 マイコントレーニングボード MT-R300 に搭載しているルネサステクノロジ社の 16 ビットマイコン HD64F3062BF ( 以下 H8/3062BF マイコン ) では H8/300H 用モニタプログラム ( 以下モニタプログラム ) を内蔵フラッシュメモリに書込むことで
マクロ(シミュレータコマンド)の使い方
マクロ ( シミュレータコマンド ) の使い方 2014 年 11 月 04 日第 1.4.0 版 - 1 - 目次 目次... 1 はじめに... 3 マイコンシミュレータのデバッグ機能... 3 スタートアップコマンドファイル... 5 シミュレータコマンド ( マクロ ) 例... 6 I/O 制御等で外的要因待ちをしている場合 ( その1)... 6 I/O 制御等で外的要因待ちをしている場合
1. プログラム実行時の動作プログラムを実行すると以下のように動作します 1) NUCLEO-F401RE 上の LED LD2( 緑 ) が 200mSec 間隔で点滅します 2. プロジェクトの構成 2.1. プロジェクト F401N_BlinkLD2 の起動画面 TrueSTUDIO で作成し
TrueSTUDIO 用 F401N_BlinkLD2 の説明 V003 2014/10/01 TIM11 の割り込みを使用して LED 点滅を行う NUCLEO-F401RE のプロジェクトサンプルです NUCLEO-F401RE は STMicroelectronics 社製の Cortex-M4 ARM CPU である STM32F401RET6 を搭載した基板です 試用版の開発ツール Atollic
RX開発環境移行ガイド V850からRXへの移行(コンパイラ編)(CA850/CX→CC-RX)
RX 開発環境移行ガイド V850からRXへの移行 ( コンパイラ編 ) (CA850/CX CC-RX) 2017/04/20 R20UT2608JJ0101 ソフトウェア事業部ソフトウエア技術部ルネサスシステムデザイン株式会社 はじめに 本資料は V850 ファミリ用 C コンパイラ CA850 および CX のプロジェクトを RX ファミリ用 C コン パイラ CC-RX のプロジェクトへ移行する際の
統合開発環境CubeSuite+ V へのバージョンアップのお知らせ
ツールニュース RENESAS TOOL NEWS 2013 年 04 月 16 日 : 130416/tn1 統合開発環境 CubeSuite+ V2.00.00 への バージョンアップのお知らせ 統合開発環境 CubeSuite+ を V1.03.00 から V2.00.00 へバージョンアップしました 1. アップデート対象バージョン CubeSuite+ 共通部分 V1.00.00~V1.03.00
1. USB の VCP( 仮想 COM ポート ) について USB の VCP( 仮想 COM ポート ) は USB を非同期シリアル通信として使用するための USB のドライバです PC には VCP ドライバをインストールする必要があります USB の VCP( 仮想 COM ポート )
TrueSTUDIO 用 F4D_VCP の説明 V001 2014/07/05 USB の VCP( 仮想 COM ポート ) による非同期シリアル通信を行うプログラムです 無料の試用版開発ツール Atollic TrueSTUDIO for ARM Lite で作成したプロジェクトです ビルド可能なプログラムのコードサイズが 32Kbyte 以内の制限があります プログラムの開始番地は 0x08000000
Microsoft PowerPoint - Kozos12step_07_
平成 25 年度 第 1 回スキルアップ研修 組込み OS 自作入門 7th ステップ割込み処理を実装する 2013 年 11 月 6 日担当 : 池田亮 第 2 部 OS の作成 残りもあと半分になりました 7thステップ 割込み処理を実装する 8thステップ スレッドを実装する 9thステップ 優先度スケジューリング 10thステップ OSのメモリ管理 11thステップ タスク間通信を実装する
複数の Nios II を構成する際の注意事項
ver. 1.0 2009 年 4 月 1. はじめに Nios II IDE で ソフトウェアをビルドすると SOPC Builder の GUI 上で Nios II と接続されているペリフェラル用の初期化コードを自動で生成します この各ペリフェラルに対応した初期化コードで ペリフェラルを制御するためにアルテラ社から提供された HAL を利用するための準備や 各ペリフェラルの一般的な理想と考えられる初期状態のレジスタ設定等を行います
Application Note Application Note No. ESC-APN Document No.: ESC-APN adviceluna Linux デバッグ手順 (MIPS コア編 ) はじめに adviceluna Linux デバッグ手順 ( 以
No. ESC-APN-026-02 Document No.: ESC-APN-026-02 adviceluna Linux デバッグ手順 (MIPS コア編 ) はじめに adviceluna Linux デバッグ手順 ( 以下 本書 ) は adviceluna にて下記 Linux 環境をデバッグする手順を説明した文書です Application Shared Library Loadable
PCL6115-EV 取扱説明書
PCL6115 スターターキット 取扱説明書モーションパターンビルダーサンプルプロジェクト 目次 1. はじめに... 1 1-1. 動作環境... 2 1-2. 動作モード... 2 1-3. 使用したプログラミング言語... 2 1-4. 注意... 2 2. サンプルプロジェクトの構成... 3 2-1. フォルダ構成... 3 2-2. ファイル構成... 3 3. デバイスドライバのインストール...
アジェンダ Renesas Synergy TM プラットフォーム構成 ThreadX とは ThreadX の状態遷移 ThreadX とμITRONの機能比較 まとめ ページ 2
Renesas Synergy TM プラットフォーム ThreadX リアルタイム OS 紹介 アジェンダ Renesas Synergy TM プラットフォーム構成 ThreadX とは ThreadX の状態遷移 ThreadX とμITRONの機能比較 まとめ ページ 2 Synergy プラットフォーム構成中核を担う ThreadX リアルタイム OS ご紹介部分 ページ 3 ThreadX
スライド 1
1 システムコールフックを使用した攻撃検出 株式会社フォティーンフォティー技術研究所 http://www.fourteenforty.jp 取締役技術担当金居良治 2 お題目 System Call について System Call Protection System Call Hook 考察 3 System Call とは? ユーザアプリケーションからカーネルのサービスルーチンを呼び出す Disk
24th Embarcadero Developer Camp
17 Th Developer Camp B4 Delphi/C++Builder テクニカルワークショップ Delphi / C++Builder 旧バージョンアプリケーションの移行 エンバカデロ テクノロジーズサポートチーム with 高橋智宏 1 17 Th Developer Camp Delphi Q1 2 midas.dll Q. 別々のバージョンで作成したデータベースアプリケーションがあります
本書は INpMac v2.20(intime 5.2 INplc 3 Windows7/8/8.1に対応 ) の内容を元に記載しています Microsoft Windows Visual Studio は 米国 Microsoft Corporation の米国及びその他の国における登録商標です
ACTIVE TOUCH 拡張部品取扱説明書 - 共有メモリアクセスコンポーネント - 1. はじめに 1 (1) 概要... 1 (2) INpMac のインストール... 1 2. Windows アプリケーションとの連携 2 (1) コントロール ( 部品 ) の登録... 2 (2) データの関連付け... 3 3. INtime アプリケーションとの連携 4 (1) 部品 ( コンポーネント
char int float double の変数型はそれぞれ 文字あるいは小さな整数 整数 実数 より精度の高い ( 数値のより大きい より小さい ) 実数 を扱う時に用いる 備考 : 基本型の説明に示した 浮動小数点 とは数値を指数表現で表す方法である 例えば は指数表現で 3 書く
変数 入出力 演算子ここまでに C 言語プログラミングの様子を知ってもらうため printf 文 変数 scanf 文 if 文を使った簡単なプログラムを紹介した 今回は変数の詳細について習い それに併せて使い方が増える入出力処理の方法を習う また 演算子についての復習と供に新しい演算子を紹介する 変数の宣言プログラムでデータを取り扱う場合には対象となるデータを保存する必要がでてくる このデータを保存する場所のことを
IAR Embedded Workbench for ARM
I-jet 設定ガイド Rev.1.6 IAR システムズ株式会社 1. I-jetでデバッグするまでのステップ 2. 接続できない (MCUと通信できない) ときの確認 3. ダウンロードできないときの確認 4. 正常にデバッグできないときの確認 5. SWOトレースできないときの確認 6. [ メモリ構成 ] の設定方法 7. EmuDiagの使い方 8. 良くあるエラーメッセージと対処方法 9.
Insert your Title here
マルチコア マルチスレッド環境での静的解析ツールの応用 米 GrammaTech 社 CodeSonar によるスレッド間のデータ競合の検出 2013 GrammaTech, Inc. All rights reserved Agenda 並列実行に起因する不具合の摘出 なぜ 並列実行されるプログラミングは難しいのか データの競合 デッドロック どのようにして静的解析ツールで並列実行の問題を見つけるのか?
Nios® II HAL API を使用したソフトウェア・サンプル集 「Modular Scatter-Gather DMA Core」
ALTIMA Company, MACNICA, Inc Nios II HAL API Modular Scatter-Gather DMA Core Ver.17.1 2018 8 Rev.1 Nios II HAL API Modular Scatter-Gather DMA Core...3...3...4... 4... 5 3-2-1. msgdma... 6 3-2-2. On-Chip
adviceシリーズスタートアップガイド(ARM9編)
スタートアップガイド OMAP 3 本スタートアップガイドは 系シングルコアプロセッサ方法を説明しています 上記 MPU は advicelunaⅡ および adviceluna でサポートしています はじめに advice シリーズスタートアップガイド 以下 本ガイド は advice シリーズ製品を購入してからデバッグを開始するまでの一連の操作を順に示したドキュメントです advice シリーズ製品でデバッグ環境を構築する前に
1. A/D 入力について分解能 12bit の A/D コンバータ入力です A/D 入力電圧とディジタル値との対応は理論上 入力電圧 0V : 0 入力電圧 +3V : 4095 です 実際はオフセットと傾きがあり ぴったりこの数値にはなりません 2. A/D 入力に使用する信号 STM32L_A
STM32L_ADC の説明 V003 2014/03/30 STM32L-Discovery の A/D 入力を行うプログラムです A/D CH0 ~ A/D CH3 の 4 本の入力が可能です 提供する PC のアプリケーション Access_SerialPort を使用して UART( 非同期シリアル通信 ) により A/D 入力の表示を行うことができます 無料の開発ツール Atollic TrueSTUDIO
