Tip / ログイン to post questions, reply, level up, and achieve exciting badges. Know more

cross mob
Translation_Bot
Community Manager
Community Manager
Community Manager

こんにちは
    私の非OSブートローダーは非OSアプリOKをダウンロードしますが、FreeRTOS APP NGをダウンロードし、このAPPセルフリセットをテストすると、クラッシュすることがわかりました、以下のように私のリセットセクション、もちろん私は元のhexとpflashデータを確認しました、それは一致しています、何かアドバイスがありますか? 感謝。

ところで:このAPPの開始アドレスを0xa000c000から0xa0000020に変更すると、セルフリセットは問題ありません。

アプリのリセットセクション:

	        uint16 endInitSafetyPassword = IfxScuWdt_getSafetyWatchdogPasswordInline();
	        __disable();
	        portENTER_CRITICAL();
	        vTaskEndScheduler();
	        IfxScuWdt_clearSafetyEndinitInline(endInitSafetyPassword);
	        MODULE_SCU.SWRSTCON.B.SWRSTREQ=1;
	        IfxScuWdt_setSafetyEndinitInline(endInitSafetyPassword);

 

アプリセクションにジャンプします。

   __disable();
   __asm("movh.a  a15,#@his(ApplIntJmpTable)");
   __asm("lea     a15,[a15]@los(ApplIntJmpTable)");
   __asm("ld.a    a15,[a15]");
   __asm("isync");
   __asm("ji      a15");

 

0 件の賞賛
1 解決策
Translation_Bot
Community Manager
Community Manager
Community Manager

こんにちは @LukeCY_Wei 
説明されている スレッド と同様の問題が発生し、ジャンプ後にcore1もcore2も実行されないと思います。
ブラジル、
ジェレミー

元の投稿で解決策を見る

0 件の賞賛
35 返答(返信)
Translation_Bot
Community Manager
Community Manager
Community Manager

こんにちは @LukeCY_Wei 
実際、非OSブートローダーが非OSアプリに正常にジャンプ CAN することを意味するかどうか、私はまだあなたの質問と少し混乱していますが、APPがOSを統合すると失敗します。
さらに、セルフリセットが発生した後にAPPが0xa0000020で見つかった場合、ブートローダーはAPPに正常にジャンプ CAN が、APPが0xa000c000にある場合は機能しませんか?
ブラジル、
ジェレミー

0 件の賞賛
Translation_Bot
Community Manager
Community Manager
Community Manager

こんにちはジェレミー

1. はい、ブートローダーのダウンロード後にOS以外のAPPが実行されています。

2. セルフリセットはブートローダーをフラッシュに入れず、デバッグモードでブートローダーなしで非OS APPセルフリセットOKなので、同じ実験を行います。

感謝。

ブートローダー->非OSアプリ、OK

ブートローダー->FreeRTOS APP, NG

デバッグモードの場合:

ブートローダなしのセルフリセット、非OSアプリ、0xa0000020 = OK、0xa000c000 = OK

ブートローダーなしのセルフリセット、FreeRTOS APP、0xa0000020 = OK、0xa000c000 = NG

0 件の賞賛
Translation_Bot
Community Manager
Community Manager
Community Manager

こんにちは @LukeCY_Wei 
それは少し奇妙に思えます。
遭遇した現象を再現 CAN デモコードを共有 CAN かどうか疑問に思いました。
ブラジル、
ジェレミー

0 件の賞賛
Translation_Bot
Community Manager
Community Manager
Community Manager

こんにちはジェレミー

私はすでにあなたに関連するソースコードをPMします、あなたが質問があれば私に知らせてください。

感謝。

0 件の賞賛
Translation_Bot
Community Manager
Community Manager
Community Manager

こんにちは @LukeCY_Wei 
私はすでにあなたのコードをチェックしました、私は割り込みマップが実際にEND_ADDRから始まってLCF_INTVEC0_START、そしてEND_ADDRを超えてLCF_TRAPVEC1_STARTとLCF_TRAPVEC2_STARTの両方であることがわかります。
したがって、START_ADDRとEND_ADDRの範囲内にある必要があることを保証するために、それらを再変更することをお勧めします。

code.png
ブラジル、
ジェレミー

0 件の賞賛
Translation_Bot
Community Manager
Community Manager
Community Manager

こんにちはジェレミー

私はあなたの提案としてlslを変更します、APPはまだダウンロード後に実行されません、消費者向けMCUフォーラムで、彼らは割り込みベクタテーブルマッピングについて議論します、あなたは割り込みベクタテーブルがこれに影響を与えると思いますか?

ところで:ダウンロード後、デバッグモードでは、アイドルフック機能でプログラムカウントが停止することがわかりました。

感謝。

void vApplicationIdleHook( void )
{
    OsTasks_setupTimerInterrupt(&MODULE_STM0);
    while (1)
    {
    }
}

 

//#define _StartFrom0xA0000020

#ifdef _StartFrom0xA0000020
#define LCF_INTVEC0_START   0x801F4000
#define LCF_INTVEC1_START   0x801F5000
#define LCF_INTVEC2_START   0x801F3000

#define LCF_TRAPVEC0_START  0x80000100
#define LCF_TRAPVEC1_START  0x801F6200
#define LCF_TRAPVEC2_START  0x801F6000

#else
#define START_ADDR			0xA000C000
#define END_ADDR			(START_ADDR + 160k)

#define LCF_INTVEC0_START   START_ADDR+0x6000
#define LCF_INTVEC1_START   START_ADDR+0x7000
#define LCF_INTVEC2_START   START_ADDR+0x5000

#define LCF_TRAPVEC0_START  START_ADDR+0x100
#define LCF_TRAPVEC1_START  START_ADDR+0x200
#define LCF_TRAPVEC2_START  START_ADDR+0x300
#endif

#define INTTAB0             (LCF_INTVEC0_START)
#define INTTAB1             (LCF_INTVEC1_START)
#define INTTAB2             (LCF_INTVEC2_START)

#define TRAPTAB0            (LCF_TRAPVEC0_START)
#define TRAPTAB1            (LCF_TRAPVEC1_START)
#define TRAPTAB2            (LCF_TRAPVEC2_START)

#ifdef _StartFrom0xA0000020
#define BMH_0 	0x80000000	//C000
#define RESET 	0x80000020
#define iCONST	0x80000040
#define EndAddr	0x8001FFFC
#define BMH_1 	0x80020000
#else
#define BMH_0 	0xA000C000	//C000
#define RESET 	0xA000C020
#define iCONST	0xA000C040
#define EndAddr	0xA001FFFC
#define BMH_1 	0xA0020000
#endif

 

| pfls0| bmh_0       | .rodata.bmhd_0 (10773)          | 0xa000c000 |
| pfls0| reset       | .text.start (10771)             | 0xa000c020 |
| pfls0| trapvec_tc0 | .text.traptab_cpu0 (10587)      | 0xa000c100 |
| pfls0| trapvec_tc1 | .text.traptab_cpu1 (10588)      | 0xa000c200 |
| pfls0| trapvec_tc2 | .text.traptab_cpu2 (10589)      | 0xa000c300 |
| pfls0| int_tab_tc0 | .text.inttab0.intvec.001 (11444)| 0xa0012020 |
| pfls0| int_tab_tc0 | .text.inttab0.intvec.002 (12035)| 0xa0012040 |
| pfls0| int_tab_tc0 | .text.inttab0.intvec.003 (12175)| 0xa0012060 |
| pfls0| int_tab_tc0 | .text.inttab0.intvec.004 (12177)| 0xa0012080 |
| pfls0| int_tab_tc0 | .text.inttab0.intvec.005 (11772)| 0xa00120a0 |
| pfls0| int_tab_tc0 | .text.inttab0.intvec.006 (11770)| 0xa00120c0 |
| pfls0| int_tab_tc0 | .text.inttab0.intvec.007 (11768)| 0xa00120e0 |
| pfls0| int_tab_tc0 | .text.inttab0.intvec.008 (12298)| 0xa0012100 |
| pfls0| int_tab_tc0 | .text.inttab0.intvec.009 (12383)| 0xa0012120 |
| pfls0| int_tab_tc0 | .text.inttab0.intvec.00b (12389)| 0xa0012160 |
| pfls0| int_tab_tc0 | .text.inttab0.intvec.00d (12385)| 0xa00121a0 |
| pfls0| int_tab_tc0 | .text.inttab0.intvec.00e (12387)| 0xa00121c0 |
| pfls0| int_tab_tc0 | .text.inttab0.intvec.00f (12391)| 0xa00121e0 |
| pfls0| int_tab_tc0 | .text.inttab0.intvec.010 (12393)| 0xa0012200 |
| pfls0| int_tab_tc0 | .text.inttab0.intvec.011 (12067)| 0xa0012220 |
| pfls0| int_tab_tc0 | .text.inttab0.intvec.012 (12069)| 0xa0012240 |
| pfls0| int_tab_tc0 | .text.inttab0.intvec.013 (12071)| 0xa0012260 |
| pfls0| int_tab_tc0 | .text.inttab0.intvec.014 (12061)| 0xa0012280 |
| pfls0| int_tab_tc0 | .text.inttab0.intvec.015 (12063)| 0xa00122a0 |
| pfls0| int_tab_tc0 | .text.inttab0.intvec.016 (12065)| 0xa00122c0 |
| pfls0| int_tab_tc0 | .text.inttab0.intvec.01e (11728)| 0xa00123c0 |
| pfls0| int_tab_tc0 | .text.inttab0.intvec.020 (11730)| 0xa0012400 |
| pfls0| BOOT_LABEL  | .rodata._Boot_label (11652)     | 0xa001fffc |
| pfls0| bmh_1       | .rodata.bmhd_1 (10774)          | 0xa0020000 |

 

0 件の賞賛
Translation_Bot
Community Manager
Community Manager
Community Manager

こんにちは @LukeCY_Wei 
あなたのテストによると、Cpu0_Main.cのOS_Tasks_init()関数をコメントアウトすると、ブートロード CAN FreeRTOS APPをジャンプしますよね?
さらに、マップファイルをチェックするときに割り込みベクトルがPflash1にあることがわかったため、問題は割り込みベクトルに関連していると思います。

2023-08-01_18h13_54.png
ブラジル、
ジェレミー

0 件の賞賛
Translation_Bot
Community Manager
Community Manager
Community Manager

こんにちはジェレミー

あなたの提案とサポートに感謝します、そして最後に、私はRTOS@APPの根本的な原因が実行されないことを見つけたと思います。 ディープ トレースとデバッグの後、ADC (ISR) および QSPI (DMA) 関連の機能を無効にしてからブートローダーのダウンロード RTOS@APPを使用すると、うまくいきます。 私の主な機能はADC値とQSPI値を参照しますが、ADC値は常にゼロでQSPIは常に空のデータストリームを読み取るため、ADCとQSPIに何か問題があった場合、RTOS@APP問題が発生しません。

だから私はまだあなたの提案が必要です、私はADCとQSPIがNGで動作する理由がわかりません、そして私はこの記事を見つけました
ブートローダーとDMA、この投稿はRTOSを備えたQSPI(DMA)に問題があった可能性があることを意味しますが、何かアドバイスはありますか?
感謝。

 

ところで:ADCの私のADC / QSPI関数。C / SPI.C

 

 

0 件の賞賛
Translation_Bot
Community Manager
Community Manager
Community Manager

こんにちは @LukeCY_Wei 
お返事ありがとうございます。
私はあなたのテスト結果と少し混乱しています、あなたはアプリケーション(RTOSと統合)も以下の両方のケースで実行できないことを意味しますか?
FreeRTOS APP (ブートローダーなし)、 0xa0000020 または 0xa000c000にあります

詳しく説明していただけ CAN かと思っていました。

ブラジル、
ジェレミー

0 件の賞賛
Translation_Bot
Community Manager
Community Manager
Community Manager

こんにちはジェレミー

以下の表のようなテスト結果:

result.png

ADC実験コードセクションは以下のように、ADCに問題がなければ、ADC_Value > ACC_Voltageするとシステムが起動しますが、NG(*1)の場合、常にゼロ効果ADC_Valueシステムが起動しないため、このセクションをバイパスするとRTOS@APP OKを実行します。

 

void MainTask(void)
{
    if(EnableSystem()==1)
    {
        //Do something
    }    
}
boolean EnableSystem(void)
{
    if(ADC_Value>ACC_Voltage)
    {
       //Start system 
       return 1;
    }
    else
    {
       //Wait ACC ON
       return 0;
    }
}

 

 

0 件の賞賛
lock attach
Attachments are accessible only for community members.
Translation_Bot
Community Manager
Community Manager
Community Manager

こんにちは @LukeCY_Wei 、
お返事ありがとうございます。
あなたのテスト結果によると、根本的な原因はEnableSystem()の誤動作に関連しています、それは正しいですか?
ちなみに、実際に共有したデモコードではこの関数は見つかりませんでした。
また、0x80100000からアプリケーションストアを作成するためにリンカーファイルを共有しており、リセット機能のポインタが0x80100020ので、試してみてください。
ブラジル、
ジェレミー

0 件の賞賛
Translation_Bot
Community Manager
Community Manager
Community Manager

こんにちはジェレミー
    1. はい、私はいくつかのコードセクションを最適化するので、あなたは "multican.c"を参照 CAN

if(ADCSampling[CHANNEL_AN27]

2. OK、今日試してみて、できるだけ早くフィードバックします、ありがとう!

0 件の賞賛
Translation_Bot
Community Manager
Community Manager
Community Manager

こんにちは @LukeCY_Wei 、
私の意見では、ADCSampling[CHANNEL_AN27] = 0と仮定して戻ってきても、他のタスクがまだ実行されているので、APPの実行全体には影響しません。
一方、core0 と core1 が ADCSampling に同時にアクセスする可能性はあるため、これを回避する同期メカニズムを設定する必要があります。
最後に、ADCSampling[CHANNEL_AN27]の値が実際にIGN_VOLTAGEを超えていないか CAN 確認してください。
ブラジル、
ジェレミー

0 件の賞賛
lock attach
Attachments are accessible only for community members.
Translation_Bot
Community Manager
Community Manager
Community Manager

こんにちはジェレミー 
    1. はい、他のタスクは生きていますが、CAN通信を無効にするADC値(IGN OFF)であるため、メイン機能は常にアイドル状態で動作するとは限りません。
    2. 同意します、ADCサンプリングを保護するための同期ルールを追加します。
    3. 通常の場合、ADCサンプリング[CHANNEL_AN27]値は2200~2400の間です。

そして悪いニュース、私はあなたのリンクファイルを使用しましたADCとQSPIはまだ異常です、添付されているのはマップとlslです。

ADCの通常のケース:

adc ok.png

ADCの異常なケース:

adc ng.png

0 件の賞賛
Translation_Bot
Community Manager
Community Manager
Community Manager

こんにちは @LukeCY_Wei 
説明されている スレッド と同様の問題が発生し、ジャンプ後にcore1もcore2も実行されないと思います。
ブラジル、
ジェレミー

0 件の賞賛
Translation_Bot
Community Manager
Community Manager
Community Manager

こんにちはジェレミー

私はあなたが正しいと思います、私のアプリは今OKを実行します、私はより多くのテストを行います、他の質問があれば、私はあなたのアドバイスを求めます。

感謝。

0 件の賞賛
Translation_Bot
Community Manager
Community Manager
Community Manager

こんにちは @LukeCY_Wei 

さらに、アプリを実行するために行ったハンドルを要約 CAN かどうか疑問に思っていました わかりました、それは同様の問題に遭遇した他の人がそれを効率的に理解するのを助ける CAN 。
ブラジル、
ジェレミー

0 件の賞賛
Translation_Bot
Community Manager
Community Manager
Community Manager

こんにちはジェレミー

問題ありません、私はこの スレッド を参照して、以下のようにブートローダーのブートコードを変更します

1. 図 1 のように Core1 と Core2 のセクションを削除します。

2. Core1 および Core2 Cstart ファイルを Figrue1 として削除します。

ブートコードをデバッグモードで実行すると、Core1とCore2が常に図1のように中断されていることがわかります CAN 。

感謝。

図1:

solution.png

 

0 件の賞賛
Translation_Bot
Community Manager
Community Manager
Community Manager

こんにちは、ジェレミー

問題ありません。この スレッド を参照して、ブートローダーの起動コードを次のように変更しました。

1. 図 1 のように、コア 1 とコア 2 の部分を削除します。

2. 図 1 に示すように、Core 1 および Cool 2 の Cstart ファイルを削除します。

デバッグ モードでスタートアップ コードを実行すると、図 1 に示すように、Core1 と Core2 も常にサスペンドされていることがわかり CAN 。

ありがとう

図1:

solution.png

 

0 件の賞賛
Translation_Bot
Community Manager
Community Manager
Community Manager

こんにちは @LukeCY_Wei 

それを聞いてうれしく思います。また、アプリを動作させるために行ったことを要約して CAN かと思いました。そうですね、同様の問題を抱えている他の人が効果的に解決するのに CAN 。
BR、
ジェレミー

0 件の賞賛
Translation_Bot
Community Manager
Community Manager
Community Manager

こんにちは、ジェレミー

あなたが正しいと思います。私のアプリは現在正常に動作しています。さらにテストを行って、他に問題がある場合はアドバイスを求めます。

ありがとう

0 件の賞賛
Translation_Bot
Community Manager
Community Manager
Community Manager

こんにちは @LukeCY_Wei 
説明されている スレッド と同様の問題に遭遇していると思います。ジャンプ後に core1 も core2 も実行されません。
BR、
ジェレミー

0 件の賞賛
Translation_Bot
Community Manager
Community Manager
Community Manager

こんにちは、ジェレミー 
    1.はい、他のタスクはアクティブですが、ADC 値 (IGN OFF) により CAN 通信が無効になるため、メイン機能は常にアイドル状態になります。
    2. 同意します。保護する同期ルールを追加しますADCサンプリング。
    3.通常の状態では、ADC サンプル [CHANNEL_AN27] の値は 2200 ~ 2400 です。

悪いニュースです。リンク ファイルを使用していますが、ADC と QSPI は依然として異常で、マップと LSL が添付されています。

ADC の正常な状態:

adc ok.png

ADC の異常:

adc ng.png

0 件の賞賛
Translation_Bot
Community Manager
Community Manager
Community Manager

こんにちは @LukeCY_Wei さん 
私の意見では、ADC が [CHANNEL_AN27] = 0 をサンプルしてから戻ると仮定すると、まだ実行中の他のタスクがあるため、実行中のアプリ全体には影響しないはずです。
同時に、core0 と core1 が同時に ADC サンプリングにアクセスする可能性があるため、この状況を回避するために同期メカニズムを設定する必要があります。
最後に、ADCSampling[CHANNEL_AN27]の値が実際にIGN_VOLTAGEを超える CAN かどうかを確認してください。
BR、
ジェレミー

0 件の賞賛
Translation_Bot
Community Manager
Community Manager
Community Manager

こんにちは、ジェレミー
    1。はい、いくつかのコード部分を最適化したので、「multican.c」を参照 CAN

if(ADCSampling[CHANNEL_AN27]

2. わかりました。今日試してできるだけ早くフィードバックをお送りします。ありがとうございます。

0 件の賞賛
Translation_Bot
Community Manager
Community Manager
Community Manager

こんにちは @LukeCY_Wei さん 
お返事ありがとうございます。
テスト結果によると、根本的な原因は、enableSystem() の失敗に関連していますね。
ところで、実際に共有したデモコードにはこの関数が見つかりませんでした。
また、アプリケーションのメモリを0x80100000から作成するためのリンカファイルを共有しており、リセット関数のポインタは0x80100020ですので、試してみてください。
BR、
ジェレミー

0 件の賞賛
Translation_Bot
Community Manager
Community Manager
Community Manager

こんにちは、ジェレミー

テスト結果は次のとおりです。

result.png

ADCの実験コード部分は以下の通りです。ADCが正常であればADC_Value > ACC_Vのときにシステムが起動しますが、NG(*1)の場合はADC_valueが常に0となりエフェクトシステムは起動しません。この部分をバイパスすると、RTOS @ アプリは正常に実行されます。

 

void MainTask(void)
{
    if(EnableSystem()==1)
    {
        //Do something
    }    
}
boolean EnableSystem(void)
{
    if(ADC_Value>ACC_Voltage)
    {
       //Start system 
       return 1;
    }
    else
    {
       //Wait ACC ON
       return 0;
    }
}

 

 

0 件の賞賛
Translation_Bot
Community Manager
Community Manager
Community Manager

こんにちは @LukeCY_Wei 
お返事ありがとうございます。
テスト結果については少し混乱していますが、次の 2 つのケースではアプリケーション (RTOS と統合) も実行できないということですか?
Liberty サーバー・アプリケーション (ブートローダーなし)、 0XA

詳しく説明して CAN かと思いました。


ジェレミー

0 件の賞賛
Translation_Bot
Community Manager
Community Manager
Community Manager

こんにちは、ジェレミー

アドバイスとサポートに感謝します。ついに、RTOS @APP が実行されない根本原因が見つかったと思います。ディープ トレースとデバッグの後、ADC(ISR) および QSPI(DMA) 関連の機能を無効にし、ブートローダーを使用して RTOS @APP をダウンロードすると、機能します。私のメイン関数は ADC 値と QSPI 値を参照しますが、ADC 値は常にゼロになるため、QSPI は常に空のデータ ストリームを読み取ります。ADC と QSPI にエラーがあると、RTOS @APP が実行されなくなります。

それで、私はまだあなたのアドバイスが必要です、なぜADCとQSPIがNGで動作するのかわかりません、私はこの記事を見つけました
ブートローダーと DMA について、この記事は RTOS の QSPI (DMA) に問題がある可能性があることを示唆していますが、何か提案はありますか?
ありがとう

 

ところで: 私の ADC/QSPI 関数

 

 

0 件の賞賛
Translation_Bot
Community Manager
Community Manager
Community Manager

こんにちは @LukeCY_Wei 
テストによると、Cpu0_Main.c の OS_Tasks_init() 関数をコメントアウトすると、ブートローダーFreeRTOS APP にジャンプCAN よね?
また、マップ ファイルを確認したところ、割り込みベクタが Pflash1 にあることがわかったので、問題は割り込みベクタに関連していると思います。

2023-08-01_18h13_54.png
BR、
ジェレミー

0 件の賞賛
Translation_Bot
Community Manager
Community Manager
Community Manager

こんにちは、ジェレミー

ご提案どおりに lsl を変更しましたが、ダウンロード後もアプリが動作しません。コンシューマー MCU フォーラムで割り込みベクタ テーブルのマッピングについて議論されましたが、割り込みベクタ テーブルはこれに影響すると思いますか?

ところで、ダウンロード後、デバッグモードでアイドルフック関数でプログラムカウントが停止することがわかりました。

ありがとう

void vApplicationIdleHook( void )
{
    OsTasks_setupTimerInterrupt(&MODULE_STM0);
    while (1)
    {
    }
}

 

//#define _StartFrom0xA0000020

#ifdef _StartFrom0xA0000020
#define LCF_INTVEC0_START   0x801F4000
#define LCF_INTVEC1_START   0x801F5000
#define LCF_INTVEC2_START   0x801F3000

#define LCF_TRAPVEC0_START  0x80000100
#define LCF_TRAPVEC1_START  0x801F6200
#define LCF_TRAPVEC2_START  0x801F6000

#else
#define START_ADDR			0xA000C000
#define END_ADDR			(START_ADDR + 160k)

#define LCF_INTVEC0_START   START_ADDR+0x6000
#define LCF_INTVEC1_START   START_ADDR+0x7000
#define LCF_INTVEC2_START   START_ADDR+0x5000

#define LCF_TRAPVEC0_START  START_ADDR+0x100
#define LCF_TRAPVEC1_START  START_ADDR+0x200
#define LCF_TRAPVEC2_START  START_ADDR+0x300
#endif

#define INTTAB0             (LCF_INTVEC0_START)
#define INTTAB1             (LCF_INTVEC1_START)
#define INTTAB2             (LCF_INTVEC2_START)

#define TRAPTAB0            (LCF_TRAPVEC0_START)
#define TRAPTAB1            (LCF_TRAPVEC1_START)
#define TRAPTAB2            (LCF_TRAPVEC2_START)

#ifdef _StartFrom0xA0000020
#define BMH_0 	0x80000000	//C000
#define RESET 	0x80000020
#define iCONST	0x80000040
#define EndAddr	0x8001FFFC
#define BMH_1 	0x80020000
#else
#define BMH_0 	0xA000C000	//C000
#define RESET 	0xA000C020
#define iCONST	0xA000C040
#define EndAddr	0xA001FFFC
#define BMH_1 	0xA0020000
#endif

 

| pfls0| bmh_0       | .rodata.bmhd_0 (10773)          | 0xa000c000 |
| pfls0| reset       | .text.start (10771)             | 0xa000c020 |
| pfls0| trapvec_tc0 | .text.traptab_cpu0 (10587)      | 0xa000c100 |
| pfls0| trapvec_tc1 | .text.traptab_cpu1 (10588)      | 0xa000c200 |
| pfls0| trapvec_tc2 | .text.traptab_cpu2 (10589)      | 0xa000c300 |
| pfls0| int_tab_tc0 | .text.inttab0.intvec.001 (11444)| 0xa0012020 |
| pfls0| int_tab_tc0 | .text.inttab0.intvec.002 (12035)| 0xa0012040 |
| pfls0| int_tab_tc0 | .text.inttab0.intvec.003 (12175)| 0xa0012060 |
| pfls0| int_tab_tc0 | .text.inttab0.intvec.004 (12177)| 0xa0012080 |
| pfls0| int_tab_tc0 | .text.inttab0.intvec.005 (11772)| 0xa00120a0 |
| pfls0| int_tab_tc0 | .text.inttab0.intvec.006 (11770)| 0xa00120c0 |
| pfls0| int_tab_tc0 | .text.inttab0.intvec.007 (11768)| 0xa00120e0 |
| pfls0| int_tab_tc0 | .text.inttab0.intvec.008 (12298)| 0xa0012100 |
| pfls0| int_tab_tc0 | .text.inttab0.intvec.009 (12383)| 0xa0012120 |
| pfls0| int_tab_tc0 | .text.inttab0.intvec.00b (12389)| 0xa0012160 |
| pfls0| int_tab_tc0 | .text.inttab0.intvec.00d (12385)| 0xa00121a0 |
| pfls0| int_tab_tc0 | .text.inttab0.intvec.00e (12387)| 0xa00121c0 |
| pfls0| int_tab_tc0 | .text.inttab0.intvec.00f (12391)| 0xa00121e0 |
| pfls0| int_tab_tc0 | .text.inttab0.intvec.010 (12393)| 0xa0012200 |
| pfls0| int_tab_tc0 | .text.inttab0.intvec.011 (12067)| 0xa0012220 |
| pfls0| int_tab_tc0 | .text.inttab0.intvec.012 (12069)| 0xa0012240 |
| pfls0| int_tab_tc0 | .text.inttab0.intvec.013 (12071)| 0xa0012260 |
| pfls0| int_tab_tc0 | .text.inttab0.intvec.014 (12061)| 0xa0012280 |
| pfls0| int_tab_tc0 | .text.inttab0.intvec.015 (12063)| 0xa00122a0 |
| pfls0| int_tab_tc0 | .text.inttab0.intvec.016 (12065)| 0xa00122c0 |
| pfls0| int_tab_tc0 | .text.inttab0.intvec.01e (11728)| 0xa00123c0 |
| pfls0| int_tab_tc0 | .text.inttab0.intvec.020 (11730)| 0xa0012400 |
| pfls0| BOOT_LABEL  | .rodata._Boot_label (11652)     | 0xa001fffc |
| pfls0| bmh_1       | .rodata.bmhd_1 (10774)          | 0xa0020000 |

 

0 件の賞賛
Translation_Bot
Community Manager
Community Manager
Community Manager

こんにちは @LukeCY_Wei 
コードを確認したところ、割り込みマッピングは LCF_INTVEC0_START が実際には端末から開始され、LCF_TRAVEC1_START と LCF_TRAVEC2_START の両方が end_ADDR を超えていることがわかりました。
したがって、START_ADDR と END_ADDR の範囲内に収まるように変更することをお勧めします。

code.png
BR、
ジェレミー

0 件の賞賛
Translation_Bot
Community Manager
Community Manager
Community Manager

こんにちは、ジェレミー

関連するソースコードをPMにお送りします。ご質問がございましたら、お知らせください。

ありがとう

0 件の賞賛
Translation_Bot
Community Manager
Community Manager
Community Manager

こんにちは @LukeCY_Wei 
これは少し奇妙に思えるかもしれません。
あなたが経験している現象を再現 CAN デモコードを共有してもらえ CAN かと思いました。
BR、
ジェレミー

0 件の賞賛
Translation_Bot
Community Manager
Community Manager
Community Manager

こんにちは、ジェレミー

1. はい、ブートローダーのダウンロード後、OS 以外のアプリは正常に動作します。

2. セルフリセットではフラッシュにブートローダーが配置されません。非 OS APP のセルフリセットはブートローダーをデバッグ モードにしなくても問題ないため、同じ実験を行いました。

ありがとう

ブートローダー -> 非 OS アプリ、OK

ブートローダー -> フリーソフトウェアアプリケーション、NG

デバッグモードの場合:

ブートローダーなしのセルフリセット、非 OS アプリケーション、0xA0000020=OK、0xA000C000=OK

ブートローダーなしのセルフ リセット、無料サービス アプリケーション、0XA0000020 = OK、0XA000C000 = 失敗

0 件の賞賛