<th id="alkcr"><pre id="alkcr"></pre></th>

  • 打印

    [技術問答] 自己寫BOOTLOADER的實現方法

    [復制鏈接]
    126|1
    跳轉到指定樓層
    樓主
    大家好,我這個項目是需要自己寫個BootLoader,因為我要在我自己的BootLoader邏輯里做很多事情,包括在BootLoader里實現APP區域的update。我現在有幾個問題不是很確定,第一,我的APP開始地址怎么確定,在哪定義?我沒找到flash的分配管理文件,是直接在keil里編輯ROM1的地址值嗎?

    第二,我在BOOTLOADER要跳轉到APP里的時候,我該怎么跳過去呢?是否可以直接參考你們的ISP源碼?你們是怎么實現跳轉到0X08000000地址執行的。
    第三,其實也是第一點,APP地址定義好后,中斷向量表要重新定義么?

    使用特權

    評論回復
    沙發
    | 2019-9-29 13:52 | 只看該作者
    第一,我的APP開始地址怎么確定,在哪定義?我沒找到flash的分配管理文件,是直接在keil里編輯ROM1的地址值嗎?如果在配置中勾選了use memory layout from target dialog是通過IROM1進行配置,沒勾選則在sct文件中配置。
    bootloader的配置如下:

    APP的配置如下:

    第二,我在BOOTLOADER要跳轉到APP里的時候,我該怎么跳過去呢?是否可以直接參考你們的ISP源碼?你們是怎么實現跳轉到0X08000000地址執行的。
    可以參考我們的IAP代碼。
    bootloader跳轉代碼:
    1. /**
    2. * JumpTOApp
    3. *
    4. * @param[in] none
    5. * [url=home.php?mod=space&uid=266161]@return[/url]    none
    6. *
    7. * [url=home.php?mod=space&uid=247401]@brief[/url]  Jump to APP Code
    8. */
    9. void JumpTOApp(void)
    10. {
    11.     uint32_t JumpAddress;
    12.     __ASM("CPSID I");
    13.     if(((*(__IO uint32_t *)APP_ADDRESS) & 0x2FFE0000) == 0x20000000)
    14.     {
    15.         JumpAddress = *(__IO uint32_t *)(APP_ADDRESS + 4); // Jump to user application
    16.         s_jumpToApplication = (pFunction)JumpAddress;   // Initialize user application's Stack Pointer
    17.         __set_MSP(*(__IO uint32_t*)APP_ADDRESS);
    18.         s_jumpToApplication();  /* jump to app */
    19.     }
    20.     else
    21.     {
    22.         printf("top of stack pointer is unvalid! please reboot!\r\n");
    23.         while (1);  /* because of APP address have no code data */
    24.     }
    25. }
    復制代碼

    第三,其實也是第一點,APP地址定義好后,中斷向量表要重新定義么?


    APP中,進入MAIN函數后,重定向中斷向量表:
    1. __ASM(" CPSIE I");
    2. SCB->VTOR = APP_ADDRESS;
    復制代碼



    使用特權

    評論回復
    掃描二維碼,隨時隨地手機跟帖
    您需要登錄后才可以回帖 登錄 | 注冊

    本版積分規則

    我要發帖 投訴建議 創建版塊 申請版主

    快速回復

    您需要登錄后才可以回帖
    登錄 | 注冊
    高級模式

    論壇熱帖

    在線客服 快速回復 返回頂部 返回列表
    成人短片线上看