亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? boot.c

?? bdm源代碼. coldfire處理器用
?? C
字號:
/*
    Turbo BDM Light ColdFire - USB bootloader
    Copyright (C) 2005  Daniel Malik

    This program is free software; you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
    the Free Software Foundation; either version 2 of the License, or
    (at your option) any later version.

    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU General Public License for more details.

    You should have received a copy of the GNU General Public License
    along with this program; if not, write to the Free Software
    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
*/

#include "MC68HC908JB16.h"
#include "start08.h"
#include "version.h"
#include "boot.h"
#include "commands.h"
#include "usb.h"
#include "timer.h"
#include "bdmcf.h"

/* bootloader state:
after mass/block erase the state will be 0xFF, 0xFF
after the code is programmed in and verified, the boot application programs the state to 0xFF, 0x01
when the state is 0xFF,0x00 the application will be executed on power-up
when the application receives request to return to the boot state, it programs the second byte and state becomes 0x00, 0x01
state of 0x00, 0x01 will force the boot operation again */
#pragma CONST_SEG BOOTLOADER_STATE_SEG
const unsigned char bootloader_state[2]={0xFF,0x01};

/* secondary vectors: 
the primary vectors are grouped together with the boot decision code and should only be erased when really needed
the danger is power brown-out during programming as there might be no valid code left in the flash if this happens
the secondary "vectors" are in the application part of the flash and can be erased/changed without loosing the bootcode */
#pragma CODE_SEG SECONDARY_VECTORS_SEG
void secondary_vectors(void) {
  #pragma NO_RETURN
  #pragma MESSAGE DISABLE C20000
  asm {
    JMP _Startup          /* Keyboard */
    JMP _Startup          /* SCI transmit */
    JMP _Startup          /* SCI receive */
    JMP _Startup          /* SCI error */
    JMP timer2_10ms_tick  /* TIM2 overflow */
    JMP _Startup          /* TIM2 channel 0 and 1 */
    JMP _Startup          /* TIM2 channel 1 */
    JMP _Startup          /* TIM2 channel 0 */
    JMP _Startup          /* TIM1 overflow */
    JMP _Startup          /* TIM1 channel 0 and 1 */
    JMP _Startup          /* TIM1 channel 1 */
    JMP rsto_detect       /* TIM1 channel 0 */
    JMP _Startup          /* IRQ */
    JMP usb_isr           /* USB */
    JMP _Startup          /* SWI */
    JMP _Startup          /* Reset */
  }
}

/* primary vectors point to the secondary vectors */
#pragma CONST_SEG PRIMARY_VECTORS_SEG
void * const primary_vectors[16] = {
  (char*)(void*)secondary_vectors+0,   /* Keyboard */
  (char*)(void*)secondary_vectors+3,   /* SCI transmit */
  (char*)(void*)secondary_vectors+6,	 /* SCI receive */
  (char*)(void*)secondary_vectors+9,	 /* SCI error */
  (char*)(void*)secondary_vectors+12,  /* TIM2 overflow */
  (char*)(void*)secondary_vectors+15,  /* TIM2 channel 0 and 1 */
  (char*)(void*)secondary_vectors+18,	 /* TIM2 channel 1 */
  (char*)(void*)secondary_vectors+21,  /* TIM2 channel 0 */
  (char*)(void*)secondary_vectors+24,  /* TIM1 overflow */
  (char*)(void*)secondary_vectors+27,  /* TIM1 channel 0 and 1 */
  (char*)(void*)secondary_vectors+30,  /* TIM1 channel 1 */
  (char*)(void*)secondary_vectors+33,  /* TIM1 channel 0 */
  (char*)(void*)secondary_vectors+36,  /* IRQ */
  (char*)(void*)secondary_vectors+39,  /* USB */
  (char*)(void*)secondary_vectors+42,  /* SWI */
  (char*)(void*)bootloader             /* Reset */
};

/* boot code: this code decides whether the application or the in-circuit programming should be launched */
/* written in assembly to fit into the 16 bytes left unused above the vector table */
#pragma CODE_SEG BOOTLOADER_SEG
void bootloader(void) {
  #pragma NO_RETURN
  asm {
      LDHX    @bootloader_state           /* load address of bootloader_state into H:X */
      LDA     ,X                          /* load first byte of bootloader_state into A */
      ADD     1,X                         /* add second byte of bootloader_state into A */
      BEQ     Run_Application             /* if the sum of the bytes is 0, jump to the secondary reset "vector" (e.g. 0xFF and 0x01) */ 
      BSET    UCR3_PULLEN_BITNUM,UCR3     /* enable internal USB pull-up resistor */ 
      BSET    CONFIG_COPD_BITNUM,CONFIG   /* disable COP (the ICP routine does not service it) */ 
      /* JMP     ICP_ADDRESS */           /* jump to the in-circuit programming routine address */
      JMP     (ICP_ADDRESS-BOOTLOADER_STATE_ADDR),X  /* dirty trick to save flash space */
    Run_Application:
      /* JMP     secondary_vectors:45 */  /* jump to the secondary reset "vector" */
      JMP     47,X								        /* dirty trick to save flash space - bootloader_state is 2 bytes before secondary_vectors... */
  }
}

/* test of monitor code */
#pragma CODE_SEG BOOTLOADER_SEG
void bootloader_(void) {
  #pragma NO_RETURN
  asm {
      BSET    CONFIG_COPD_BITNUM,CONFIG   /* disable COP (the ICP routine does not service it) */ 
      JMP   0xFE10                        /* jump to monitor code entry */
  }
}


/* this function will program bootloader_state[0] to 0x00 and thus force bootloader action on next power-up */
#pragma CODE_SEG DEFAULT
void force_bootloader(void) {
  unsigned char temp_storage[4];  /* stack space for storing values in the RAM locations used by ROM Flash programming */
  temp_storage[0] = CPUSPD;				/* save RAM contents */
  *((unsigned int *)&(temp_storage[1])) = LADDR;    
  temp_storage[3] = *(DATABUFF+0);
  CPUSPD = 24;                    /* CPU speed = 4x bus speed in MHz */
  LADDR = (unsigned int)&bootloader_state[0];   /* last byte to program */
  *(DATABUFF+0) = 0;              /* value to be programmed */
  FLBPR=0xFE;                     /* remove flash protection (only keep the primary vectors & bootloader protected) */
  asm {
    LDHX    @bootloader_state     /* load the address to be programmed into H:X */
    JSR     FLASH_PRG_ADDRESS     /* call the flash programming routine in ROM */
  }
  CPUSPD = temp_storage[0];				/* restore RAM contents */
  LADDR = *((unsigned int *)&temp_storage[1]);    
  *(DATABUFF+0) = temp_storage[3];
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产精品福利影院| 91麻豆免费在线观看| 欧美精品1区2区3区| 亚洲美女一区二区三区| 国产高清不卡一区二区| 这里只有精品视频在线观看| 国产精品福利一区| 国产成人久久精品77777最新版本 国产成人鲁色资源国产91色综 | 午夜亚洲福利老司机| 久久国产精品99精品国产 | 国产欧美日韩精品一区| 国内一区二区在线| 制服视频三区第一页精品| 亚洲第一搞黄网站| 在线欧美一区二区| 亚洲区小说区图片区qvod| 国产成人在线视频网址| 精品国产91久久久久久久妲己 | 丁香天五香天堂综合| 国产精品嫩草久久久久| 大美女一区二区三区| 国产亚洲成年网址在线观看| 国产伦精品一区二区三区免费 | 伊人开心综合网| 99re在线视频这里只有精品| 国产精品无遮挡| 国产乱人伦精品一区二区在线观看| 2021久久国产精品不只是精品| 黄色资源网久久资源365| 久久影院视频免费| 成人一区二区在线观看| 久久亚洲精品小早川怜子| 国产999精品久久久久久| 国产精品美日韩| 欧美日韩一二区| 精油按摩中文字幕久久| 国产欧美一区二区精品性色 | 色婷婷综合久久久中文字幕| 亚洲一区二区三区国产| 欧美一级电影网站| 国产成人自拍网| 久久亚洲私人国产精品va媚药| 国产一区中文字幕| 国产精品色婷婷| 日韩久久久精品| 91蜜桃视频在线| 国产精品一区二区免费不卡| 亚洲欧美一区二区三区极速播放| 欧美精品少妇一区二区三区| 国产成人午夜99999| 日本va欧美va精品| 国产精品麻豆久久久| 91麻豆精品91久久久久久清纯| 不卡影院免费观看| 狂野欧美性猛交blacked| 最新高清无码专区| 国产亚洲美州欧州综合国| 91精品国产欧美日韩| 色综合久久综合网欧美综合网| 国产精品88av| 精品写真视频在线观看| 日精品一区二区三区| 一区二区三区四区激情| 国产精品入口麻豆原神| 国产亚洲一本大道中文在线| 日韩免费在线观看| 欧美福利一区二区| 欧美色图一区二区三区| 99久久国产综合精品女不卡| 国产精品一区二区男女羞羞无遮挡| 日本va欧美va欧美va精品| 亚洲成av人片一区二区梦乃| 亚洲一区二区在线播放相泽| 亚洲美女区一区| 亚洲资源中文字幕| 亚洲一二三四在线观看| 亚洲一区在线免费观看| 国产精品女主播av| 亚洲国产精品成人综合| 亚洲综合色网站| 丰满少妇久久久久久久| 欧美人牲a欧美精品| 亚洲观看高清完整版在线观看| 亚洲一区二区三区中文字幕在线| 麻豆精品在线视频| av不卡免费在线观看| 精品国产免费人成电影在线观看四季| 欧美日本精品一区二区三区| 91激情在线视频| 日韩视频一区在线观看| 国产午夜精品久久久久久免费视 | 欧美区视频在线观看| 91精品国产综合久久久久| 久久丝袜美腿综合| 亚洲九九爱视频| 久久精品国产成人一区二区三区| 国产成人8x视频一区二区| 在线视频观看一区| 国产亚洲一区二区三区在线观看| 一区二区在线观看免费| 狠狠色丁香久久婷婷综合_中| 91免费小视频| 久久人人97超碰com| 亚洲一区二区三区中文字幕 | 国产精品久久久久久久久果冻传媒 | 国产精品的网站| 久久精品人人爽人人爽| 欧美电影精品一区二区| 国产日本欧洲亚洲| 日本91福利区| 色综合 综合色| 久久久精品国产免大香伊| 亚洲电影在线播放| 国产精品一区三区| 91精品久久久久久久99蜜桃| 亚洲黄色在线视频| 国产河南妇女毛片精品久久久| 欧美午夜一区二区| 亚洲色图19p| 成人不卡免费av| 欧美—级在线免费片| 久久精品999| 日韩色在线观看| 亚洲成人精品在线观看| 欧美专区日韩专区| 亚洲人成7777| 91传媒视频在线播放| 亚洲激情在线播放| 91福利精品视频| 一区二区三区视频在线观看| 成人18精品视频| 亚洲精品亚洲人成人网在线播放| 国产精品 欧美精品| 国产精品丝袜久久久久久app| 国产精品一区一区| 欧美激情一区二区三区| 成人自拍视频在线观看| 自拍偷拍亚洲激情| 色综合久久88色综合天天6| 中文字幕一区二区日韩精品绯色| 成人免费av资源| 亚洲视频1区2区| 欧美优质美女网站| 日本不卡不码高清免费观看| 日韩精品中文字幕一区| 韩国女主播成人在线观看| 国产亚洲一本大道中文在线| 99re这里只有精品首页| 亚洲一区在线视频观看| 日韩视频在线永久播放| 国产成人免费高清| 亚洲第一成人在线| 日韩视频123| 99在线精品免费| 看国产成人h片视频| 国产精品久久久久久户外露出 | 日韩av中文字幕一区二区| 国产精品网站导航| 在线视频国内自拍亚洲视频| 久久 天天综合| 亚洲色图一区二区三区| 日韩一卡二卡三卡国产欧美| 91一区在线观看| 国产伦精一区二区三区| 亚洲成人av一区二区| 久久久久国产精品人| 欧美精品乱码久久久久久按摩| 国产99久久久国产精品潘金网站| 日韩电影在线一区二区| 国产三级三级三级精品8ⅰ区| 懂色av一区二区夜夜嗨| 成人网页在线观看| 狠狠色2019综合网| 五月综合激情网| 亚洲理论在线观看| 国产精品久线在线观看| 精品久久久久久无| 26uuu色噜噜精品一区二区| 精品裸体舞一区二区三区| 国产欧美日韩在线| 中文字幕在线一区| 亚洲伊人伊色伊影伊综合网| 亚洲二区在线观看| 精品在线你懂的| 成人av电影免费在线播放| 在线观看欧美精品| 欧美一区二区精品在线| 久久久综合精品| 国产精品视频在线看| 亚洲综合久久久久| 日韩av一区二区三区| 紧缚捆绑精品一区二区| 国产福利不卡视频| 97se狠狠狠综合亚洲狠狠| 欧美视频在线观看一区| 欧美tickling网站挠脚心| 国产日韩精品久久久| 国产精品久久久久久久蜜臀| 一区二区三区四区高清精品免费观看| 午夜精品影院在线观看|