Tip / 登入 to post questions, reply, level up, and achieve exciting badges. Know more

cross mob
Translation_Bot
Community Manager
Community Manager
Community Manager

嗨,
    我的非操作系統引導加載程序下載非操作系統 APP OK,但下載 FreeRTOS APP NG,當我測試此應用程序自重置時,我發現它會崩潰,我的重置部分如下,當然我有確認原始十六進制和 pflash 數據,這是匹配的,有什麼建議? 謝謝。

順便說一句:如果我將這個應用程序的開始地址從 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");

 

1 解決方案
Translation_Bot
Community Manager
Community Manager
Community Manager

嗨 @LukeCY_Wei 
我想你遇到了與所描述的 線程 類似的問題,其中 core1 和 core2 都不會在跳躍後運行。
BR,
傑里米

在原始文章中檢視解決方案

0
35 回應
Translation_Bot
Community Manager
Community Manager
Community Manager

嗨 @LukeCY_Wei 
實際上,我對你的問題仍然有點困惑,你的意思是否是非操作系統引導加載程序 CAN 成功跳轉到非操作系統應用程序,但是,如果應用程序集成了操作系統,則它會失敗。
而且,如果自複位發生後APP位於0xa0000020,bootloader仍然 CAN 成功跳轉到APP,但如果APP位於0xa000c000則不起作用,是嗎?
BR,
傑里米

0
Translation_Bot
Community Manager
Community Manager
Community Manager

嗨傑里米

1. 是的,非 OS APP 在引導加載程序下載後運行正常。

2. 自重置不會將引導加載程序放入閃存中,因為在調試模式下沒有引導加載程序的情況下,我的非操作系統 APP 自重置確定,所以我做了同樣的實驗。

謝謝

引導加載程序-> 非操作系統 APP,確定

引導加載程序-> 自由軟件應用程序,NG

在調試模式下:

沒有引導加載程序的自我重置,非操作系統應用程序,0xA0000020 = 確定,0xA000C000= 確定

沒有引導加載程序的自我重置,自由服務應用程序,0XA0000020 = 確定,0XA000C000 = 不合格

0
Translation_Bot
Community Manager
Community Manager
Community Manager

嗨 @LukeCY_Wei 
這似乎有點奇怪。
我想知道您是否 CAN 分享 CAN 複製您遇到的現象的演示代碼。
BR,
傑里米

0
Translation_Bot
Community Manager
Community Manager
Community Manager

嗨傑里米

我已經 PM 相關的源代碼給你,如果您有任何疑問,請告訴我。

謝謝

0
Translation_Bot
Community Manager
Community Manager
Community Manager

嗨 @LukeCY_Wei 
我已經檢查了你的代碼,我發現中斷映射是 LCF_INTVEC0_START 從終端開始實際上,並且 LCF_TRAVEC1_START 和 LCF_TRAVEC2_START 都超出了結束 _ ADDR。
所以我想建議你改造它們,以確保它們必須在 START_ADDR 和 END_ADDR 的範圍內。

code.png
BR,
傑里米

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
BR,
傑里米

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 
感謝您的回复。
我對你的測試結果有點困惑,你的意思是應用程序(與 RTOS 集成)也無法在以下兩種情況下運行?
自由服務器應用程序(沒有引導加載程序),位於 0XA

我想知道你是否 CAN 詳細描述一下。


杰里米

0
Translation_Bot
Community Manager
Community Manager
Community Manager

嗨傑里米

測試結果如下表:

result.png

ADC 實驗代碼部分如下,如果 ADC 正常,系統將在 ADC_Value > ACC_V 時啟動,但在 NG(* 1)的情況下,ADC_value 始終為零效果系統不會啟動,當我繞過此部分時,RTOS @APP 運行確定。

 

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,請嘗試一下。
BR,
傑里米

0
Translation_Bot
Community Manager
Community Manager
Community Manager

嗨傑里米
    1。 是的,因為我優化了一些代碼部分,你 CAN 參考“multican.c”

if(ADCSampling[CHANNEL_AN27]

2. 好的,我今天會嘗試並儘快反饋,謝謝!

0
Translation_Bot
Community Manager
Community Manager
Community Manager

@LukeCY_Wei ,
在我看來,假設 ADC 採樣 [CHANNEL_AN27] = 0,然後返回,它應該不會影響整個 APP 運行,因為還有其他任務仍在運行。
同時,有可能發生 core0 和 core1 同時訪問 ADC 採樣,它應該設置一個同步機制來避免這種情況。
最後,請確認ADCSampling[CHANNEL_AN27]的值實際是否 CAN 超過IGN_VOLTAGE。
BR,
傑里米

0
lock attach
Attachments are accessible only for community members.
Translation_Bot
Community Manager
Community Manager
Community Manager

嗨傑里米 
    1。 是的,其他任務處於活動狀態,但 ADC 值(IGN OFF)禁用 CAN 通信,因此主功能始終處於空閒狀態。
    2.同意,我將添加同步規則以保護 ADC 採樣。
    3. 在正常情況下,ADC 取樣 [通道 _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 都不會在跳躍後運行。
BR,
傑里米

0
Translation_Bot
Community Manager
Community Manager
Community Manager

嗨傑里米

我認為你是正確的,我的應用程序現在運行正常,我會做更多的測試,如果有其他問題,我會詢問你的建議。

謝謝

0
Translation_Bot
Community Manager
Community Manager
Community Manager

你好 @LukeCY_Wei 

我很高興聽到這個消息,此外,我想知道您是否 CAN 總結一下您為使應用程序運行而所做的處理好吧,它 CAN 幫助遇到類似問題的其他人有效地解決問題。
BR,
傑里米

0
Translation_Bot
Community Manager
Community Manager
Community Manager

嗨傑里米

沒問題,我引用這個 線程 然後修改我的引導加載程序的啟動代碼,如下所示

1.刪除執行芯 1 和芯 2 部分作為圖 1。

2.刪除核心 1 和酷 2 Cstart 文件作為圖 1。

在調試模式下運行啟動代碼,我們 CAN 看到 Core1 和 Core2 也始終暫停,如圖 1 所示。

謝謝

圖一:

solution.png

 

0
Translation_Bot
Community Manager
Community Manager
Community Manager

你好傑里米

沒問題,我參考這個 線程 來更改引導加載程序中的引導代碼,如下所示

1. 刪除Core1和Core2部分,如圖1所示。

2. 刪除Core1和Core2 Cstart文件,如圖1所示。

當我在調試模式下運行引導代碼時,我可以看到 Core1 和 Core2 始終處於暫停狀態,如圖 1 CAN 所示。

謝謝。

圖1:

solution.png

 

0
Translation_Bot
Community Manager
Community Manager
Community Manager

你好 @LukeCY_Wei 

此外,我想知道我運行該應用程序時所做的處理是否已總結為 CAN ok,這將幫助遇到類似問題的其他人有效地理解它。
巴西,
傑里米

0
Translation_Bot
Community Manager
Community Manager
Community Manager

你好傑里米

我認為你是對的,我的應用程序現在運行正常,我會做更多測試,如果我有任何其他問題,我會尋求你的建議。

謝謝。

0
Translation_Bot
Community Manager
Community Manager
Community Manager

你好 @LukeCY_Wei 
我遇到了與所描述的 線程 類似的問題,我相信 core1 和 core2 在跳轉後都不會運行。
巴西,
傑里米

0
Translation_Bot
Community Manager
Community Manager
Community Manager

你好傑里米 
    1.是的,其他任務還處於活動狀態,但由於 ADC 值 (IGN OFF) 禁用了 CAN 通信,主功能並不總是空閒運行。
    2.我同意,添加同步規則來保護ADC採樣。
    3.正常情況下,ADC採樣[CHANNEL_AN27]值在2200到2400之間。

壞消息是,我用了你的鏈接文件ADC和QSPI仍然不正常,附件是map和lsl。

ADC 的正常情況:

adc ok.png

ADC 的一個異常情況:

adc ng.png

0
Translation_Bot
Community Manager
Community Manager
Community Manager

@LukeCY_Wei ,
在我看來,假設 ADCSampling[CHANNEL_AN27] = 0 返回不會影響 APP 的整體執行,因為其他任務仍在運行。
另一方面,core0和core1有可能同時訪問ADCSampling,因此我們需要設置同步機制來避免這種情況。
最後,CAN 檢查 ADCSampling[CHANNEL_AN27] 的值實際上沒有超過 IGN_VOLTAGE。
巴西,
傑里米

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()故障有關,對嗎?
對了,我在你分享的demo代碼中其實並沒有找到這個函數。
另外,我已經共享了從 0x80100000 創建應用商店的鏈接器文件,重置函數指針為 0x80100020,所以請嘗試一下。
巴西,
傑里米

0
Translation_Bot
Community Manager
Community Manager
Community Manager

你好傑里米

測試結果如下表:

result.png

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
Translation_Bot
Community Manager
Community Manager
Community Manager

你好 @LukeCY_Wei 
感謝你的回复。
我對您的測試結果有點困惑,您的意思是應用程序(與 RTOS 集成)在以下兩種情況下也無法運行嗎?
FreeRTOS APP(無引導加載程序),位於 0xa00000200xa000c000

我以為是 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 功能在 ADC 中。 C/SPI.C

 

 

0
Translation_Bot
Community Manager
Community Manager
Community Manager

你好 @LukeCY_Wei 
根據你的測試,如果你註釋掉Cpu0_Main.c中的OS_Tasks_init()函數,bootload跳轉CAN FreeRTOS APP吧?
另外,在檢查map文件時,我發現中斷向量在Pflash1中,所以我認為問題與中斷向量有關。

2023-08-01_18h13_54.png
巴西,
傑里米

0
Translation_Bot
Community Manager
Community Manager
Community Manager

你好傑里米

我按照你的建議更改了lsl,APP下載後仍然無法運行,在消費者MCU論壇上,他們討論中斷向量表映射,你知道中斷向量表會影響這個你認為我會給出

BTW:下載後,我發現在調試模式下,空閒鉤子函數停止了程序計數。

謝謝。

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 
我已經檢查過您的代碼,可以看到中斷映射實際上從 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

你好傑里米

我已經PM你了相關的源碼,如果有任何問題請告訴我。

謝謝。

0
Translation_Bot
Community Manager
Community Manager
Community Manager

你好 @LukeCY_Wei 
似乎有點奇怪。
重現遇到的現像我想知道你是否可以分享 CAN 演示代碼。
巴西,
傑里米

0
Translation_Bot
Community Manager
Community Manager
Community Manager

你好傑里米

1. 是的,非操作系統應用程序在引導加載程序下載後運行。

2.自複位不會將bootloader放入flash,非OS APP自複位OK,無需bootloader在調試模式下,所以做同樣的實驗。

謝謝。

引導加載程序 -> 非操作系統應用程序,好的

引導加載程序->FreeRTOS 應用程序,NG

在調試模式下:

無需引導加載程序即可自重置,非操作系統應用程序,0xa0000020 = OK,0xa000c000 = OK

無需引導加載程序即可自重置,FreeRTOS APP,0xa0000020 = OK,0xa000c000 = NG

0