搜索
bottom↓
回复: 6

NXP LPC1788 IAP 方案關於 APP程序撰寫重點討論(Keil C)

[复制链接]
发表于 2014-3-25 15:25:00 | 显示全部楼层 |阅读模式
本帖最后由 syfcoltd 于 2014-3-25 15:28 编辑

如題~ 請各位路過的大俠幫忙指教... 小弟目前提供的方法是以NXP原廠AN11071 及 AN10866 (NXP usb IAP) 方案修改而成但目前仍有APP 可能跳轉失敗的情況

1. IAP 程序跳轉至 APP (有時會跑飛的原因大都是 中斷位移 remap 內存 地址給的方式不對 )

#define OFFSET_ADDRESS 0x4000 // APP 程序的偏移地址 , 跳過了 IAP 程序段

__asm void JMP_App( u32 address ){
        LDR SP, [R0]                ; 載入 sp 堆棧地址 , 此時給的是 APP 使用的堆棧
        LDR PC, [R0, #4]                ; 載入 目的編程 偏移地址 程序即跳轉到 APP 程序開始的地址
}

void AppEntry(void)
{   
        __disable_irq();        // 暫時停止所有中斷
        // SCB->VTOS = OFFSET_ADDRESS; // 方法一 , 直接給值 (這個方式可能發生程序跑飛的問題)
        NVIC_SetVTOR( OFFSET_ADDRESS); // 方法二 , 透過固件程序給值
        JMP_App(OFFSET_ADDRESS); // 跳轉到 目的編程        
}

2. APP 應用程序的進入點

int main (void)
{
        __disable_irq();        // 暫時停止所有中斷              
        // SCB->VTOS = OFFSET_ADDRESS; // 方法一 , 直接給值  (這個方式可能發生程序跑飛的問題)
        NVIC_SetVTOR( OFFSET_ADDRESS); // 方法二 , 透過固件程序給值

        //.... ? 其他應用程序原碼

        for(;;) //
        return 0;
}   


3.APP 應用程序 在 Option->Target ->IROM1 : offset 0x00004000 lenght 0x0007C000 (應用程序偏移到 0x4000 的地址開始執行 , length為應用程序最大長度)
4.APP 應用程序 在 Option->asm : Conditional Assembly Control Symbols > NO_CRP (設定為 No Code Read Protection , 重要!!!)
5.APP 應用程序 在 Option->User : Run User Programs After Build/Rebuild > fromelf --bin -o .\App.bin .\Output\App.axf (將 axf 轉成 bin 檔 , 重要!!!)
6.目前測試時 上位機程序使用 超級終端機 或 Tera Term Pro 這類軟件 使用 xmodem-1K 協議下載程序



发表于 2014-3-25 16:12:41 | 显示全部楼层
我也做了个以太网升级的bootloader,没有发现设置设置向量地址有时无效问题。还有你这个: // SCB->VTOS = OFFSET_ADDRESS; // 方法一 , 直接給值 (這個方式可能發生程序跑飛的問題),应该是 SCB->VTOR,没有VTOS这个成员。还有固件里面也是直接对SCB->VTOR赋值的。
 楼主| 发表于 2014-3-28 02:08:02 | 显示全部楼层
謝謝指正~大俠真是眼明手快...目前在測試 利用I2S音頻IC UDA1380轉換播音 的官方例程AUDIO 播放範例 , 在程序由 0x00000000 地址開始的一般程序編程後是可正常運行的 , 但當改成 offset 至 0x00004000 的程序地址由IAP程序燒寫到FLASH之後開始運行卻發生異常中止的問題...不曉得是什麼原因造成這個問題??? SystemInit() 內的 SCB->VTOR 有改到 0x00004000 而 option->Target Layout 的 IROM1: start address 也改 0x00004000 了 ... 搞了一天...就是找不到問題原因...現在確實是卡關了~~~
 楼主| 发表于 2014-3-28 15:22:07 | 显示全部楼层
問題已解決~~~
发表于 2015-1-24 00:16:27 | 显示全部楼层
不错,可以看看
发表于 2015-8-29 23:06:25 | 显示全部楼层
学习一下
发表于 2020-1-3 10:27:18 | 显示全部楼层
謝謝分享   
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-10-3 02:13

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表