久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 6423|回復(fù): 1
打印 上一主題 下一主題
收起左側(cè)

C2000和STM32的在線bootload

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
最近因?yàn)橐粋(gè)項(xiàng)目同時(shí)用到了28035和103.兩個(gè)芯片通過spi通信。目的是通過usb下發(fā)數(shù)據(jù)到arm,再經(jīng)spi到dsp。dsp收到數(shù)據(jù)后,自己擦寫程序,之后跳轉(zhuǎn)到新的程序執(zhí)行。準(zhǔn)備工作:
生成bin文件,ccs生成bin的步驟參照
http://blog.csdn.net/cbffyx/article/details/49911813
由于cmd的文件配置,bin有時(shí)比較大,參照
http://www.deyisupport.com/question_answer/microcontrollers/c2000/f/56/t/117154.aspx
我參照了前兩個(gè)后bin文件還是比較大,所以選擇hex2bin轉(zhuǎn)換工具
http://download.csdn.net/download/lishoubox/8804179
這個(gè)好處是keil或ccs都可以用,而且解決了生成bin文件過大的問題
準(zhǔn)備好之后,就可以開始28035的程序
1、調(diào)試一個(gè)可以進(jìn)行spi通訊的程序,cmd采用小塊小flash放boot的代碼。

FLASHC      : origin = 0x3E8000, length = 0x002000     /* on-chip FLASH */

用到flash的地方全部用flashc。
2、flash的擦除,dsp的flash擦寫必須是整個(gè)扇區(qū),并且操作flash前必須關(guān)閉所有中斷
                    DINT;
                    DRTM;
                        Unlock_OK = CsmUnlock();//首先解鎖

                        EALLOW;
                        Flash_CPUScaleFactor = SCALE_FACTOR;
                        EDIS;

                        EALLOW;
                        Flash_CallbackPtr = &MyCallbackFunction;
                        EDIS;

                        if(Unlock_OK==1)//解鎖成功后擦除Flash
                        {
                                Status =Flash_Erase((SECTORB|SECTORC|SECTORD|SECTORE),&FlashStatus);
                                index_encoder = 22;
                                GpioDataRegs.GPACLEAR.bit.GPIO5 = 1;
                        }

3、寫flash,ram大小有限,定義一個(gè)uint16 200長度的數(shù)組,存放spi接受的數(shù)據(jù),每到200個(gè)數(shù)據(jù),寫入flash一次
        start_index = Flash_Program((Uint16 *) add_code,code_bin, PROG_BUFFER_LENGTH, &FlashStatus);
4、app的cmd需要進(jìn)行一些改動。
        cmd中的begin需定義為
           BEGIN       : origin = 0x3EA000, length = 0x000002     /* Part of FLASHA.  Used for "boot to Flash" bootloader mode. */

        FLASHA      : origin = 0x3EA002, length = 0x003FFE     /* on-chip FLASH */
        需要用到flash的地方全部用flasha。
5、boot程序中,接收的spi數(shù)據(jù)全部存儲于以0x3EA000開始的flash地址中,存儲結(jié)束后執(zhí)行跳轉(zhuǎn)指令。
        (*(void(*)(void))0x3EA000)();
        即可執(zhí)行新的app程序

arm的執(zhí)行步驟:
1、預(yù)留boot的地址空間

2、app的程序空間

3、修改app的中斷向量偏移

#define VECT_TAB_OFFSET  0x8000 /*!< Vector Table base offset field.

4、擦除flash,注意和dsp不同的地方,arm32位的地址對應(yīng)一個(gè)字節(jié)即8位的數(shù)據(jù)。dsp32位的地址應(yīng)用一個(gè)word即16位的數(shù)據(jù)。
                        __set_PRIMASK(1);
                        FLASH_Unlock();
                        //FLASHStatus = EraseSectors(EXE_START_ADDR,EXE_START_ADDR);//???????????????·??·???????
                        //if(FLASHStatus == FLASH_COMPLETE){
                  FLASHStatus = EraseSectors(ERASE_START,ERASE_END);//????APP??·????·????
                        //}
                        FLASH_Lock();
                        __set_PRIMASK(0);

5、寫flash
        __set_PRIMASK(1);
          FLASH_Unlock();

          FLASH_ClearFlag(FLASH_FLAG_BSY | FLASH_FLAG_EOP | FLASH_FLAG_PGERR | FLASH_FLAG_WRPRTERR |         FLASH_FLAG_OPTERR);
        
          for(i=0;i< length;i++)
        {
            FLASHStatus = FLASH_ProgramHalfWord(add_code,code_bin[ i]);
            if(FLASHStatus == FLASH_COMPLETE)
                {
              add_code += 2;
            }
                else
                {
              return FLASHStatus;
            }
          }
        
          FLASH_Lock();
          __set_PRIMASK(0);

6、app的程序開始打開全局中斷
        int main(void)
        {
                __set_PRIMASK(0);
                USB_GPIO_Configuration();
                SPI_Configuration();

7、跳轉(zhuǎn)執(zhí)行
         JumpToApplication(0x08008000);

評分

參與人數(shù) 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎(jiǎng)勵(lì)!

查看全部評分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏4 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:299078 發(fā)表于 2020-12-11 18:32 | 只看該作者
樓主   能給一下c2000 spi bootload 的例程嗎   
回復(fù)

使用道具 舉報(bào)

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 国产一区二区三区久久久久久久久 | 久草视频在线播放 | 99热这里有精品 | 国产日韩欧美 | 日韩成人免费av | 2021天天干夜夜爽 | 狠狠色狠狠色综合系列 | 成人黄色av网址 | 国产一区二 | 日本黄色影片在线观看 | 国产精品久久久久久久岛一牛影视 | 99re| 精品综合久久久 | 国产日韩av一区二区 | 国产日韩欧美精品一区二区三区 | 国产一区二区精品在线观看 | 日本精品视频 | 欧美视频一区二区三区 | 国精日本亚洲欧州国产中文久久 | 日本精品国产 | 99爱视频 | 欧美黑人体内she精在线观看 | 天天综合日日夜夜 | 欧美性一区二区三区 | 欧美一级三级在线观看 | 国产欧美一区二区三区日本久久久 | 久久精品国产久精国产 | 亚洲精品日本 | 91看片视频 | 免费一区在线 | 国产精品久久久久久久久久久久 | av中文字幕在线观看 | www.欧美视频 | 免费看片国产 | 欧美日韩不卡合集视频 | 亚洲高清免费观看 | 人人人人爽 | 精品国产乱码久久久久久丨区2区 | 久久新视频 | www.av在线| 亚洲精品成人av久久 |