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

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

?? ice.c

?? GDB Remote Stub Backend for debugging an embedded ARM system via JTAG common hardware debug interfac
?? C
字號:
/* *  Copyright (C) 2004 Tobias Lorenz * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License version 2 as * published by the Free Software Foundation. *//* EmbeddedICE macrocell programming */#include <stdio.h>#include <stdlib.h>#include "jtag.h"#include "ice.h"#include "debug.h"#include "lpec.h"const unsigned int ICE_sizes[32] = {    4, 5, 8,			// DCR, DSR, VCCR    0,    6, 32,			// DCCR, DCDR    0, 0,    32, 32, 32, 32, 9, 8,	// WP 0: AV, AM, DV, DM, CV, CM    0, 0,    32, 32, 32, 32, 9, 8,	// WP 1: AV, AM, DV, DM, CV, CM    0, 0,    0, 0, 0, 0, 0, 0, 0, 0};unsigned long ice_register(unsigned long addr, unsigned long data, unsigned char write){    unsigned long Data[2];    // Go to scan chain 2    sc_select(SC_EmbeddedICE_macrocell_programming);    // read/write data    Data[0] = data;		// 32 bits    Data[1] = addr;		//  5 bits    Data[1] |= (write << 5);	//  1 bit  ==> 38 bits    jtag_instruction(JTAG_INTEST, Data, SC_sizes[SC_EmbeddedICE_macrocell_programming]);    // return data    return Data[0] & ((1<<ICE_sizes[addr]) - 1);}void ice_show_status(void){    unsigned long debug_control;    unsigned long debug_status;        debug_control = ice_register(ICE_Debug_control, 0, 0);    debug_status  = ice_register(ICE_Debug_status , 0, 0);    if (debug_control) {	printf("debug control is %4.4X ", debug_control);	if (debug_control & ICE_DCR_DBGACK     ) printf("(debug acknowledge)");	if (debug_control & ICE_DCR_DBGRQ      ) printf("(debug request)");	if (debug_control & ICE_DCR_INTDIS     ) printf("(interrupt disable)");	if (debug_control & ICE_DCR_Single_step) printf("(single stepping)");	printf("\n");    }        if (debug_status) {	printf("debug status is %5.5X ", debug_status);	if (debug_status & ICE_DSR_DBGACK ) printf("(debug acknowledge)");	if (debug_status & ICE_DSR_DBGRQ  ) printf("(debug request)");	if (debug_status & ICE_DSR_IFEN   ) printf("(interrupt enable)");	if (debug_status & ICE_DSR_SYSCOMP) printf("(system complete)");	if (debug_status & ICE_DSR_ITBIT  ) printf("(instruction thumb bit)");	printf("\n");    }}int ice_halted(void){    ice_show_status();    return ((ice_register(ICE_Debug_status, 0, 0) & ICE_DSR_Halted) == ICE_DSR_Halted);}void ice_dcc_write(long value){    while (ice_register(ICE_Debug_comms_control, 0, 0) & ICE_DCCR_Read) {	usleep(100);    }    ice_register(ICE_Debug_comms_data, value, 1);}long ice_dcc_read(long value){    while ( !(ice_register(ICE_Debug_comms_control, 0, 0) & ICE_DCCR_Write )) {	usleep(100);    }        return ice_register(ICE_Debug_comms_data, 0, 0);}void ice_set_hardware_breakpoint(char nr, unsigned long addr, unsigned long mask){    printf("Activating hardware breakpoint %i at 0x%8.8x with mask 0x%8.8x\n", nr, addr, mask);    switch(nr) {	case 0:	    // set address	    ice_register(ICE_WP_0_address_value, addr, 1);	    ice_register(ICE_WP_0_address_mask , mask, 1);	// 0b01 for thumb, 0b11 for arm	    // no data-dependent breakpoint    	    ice_register(ICE_WP_0_data_value, 0         , 1);	    ice_register(ICE_WP_0_data_mask , 0xFFFFFFFF, 1);	    // nOPC=0	    ice_register(ICE_WP_0_control_value, ICE_CR_ENABLE, 1);	    ice_register(ICE_WP_0_control_mask, ICE_CR_All & ~(ICE_CR_nOPC), 1);	    break;	case 1:	    // set address	    ice_register(ICE_WP_1_address_value, addr, 1);	    ice_register(ICE_WP_1_address_mask , mask, 1);	// 0b01 for thumb, 0b11 for arm	    // no data-dependent breakpoint    	    ice_register(ICE_WP_1_data_value, 0         , 1);	    ice_register(ICE_WP_1_data_mask , 0xFFFFFFFF, 1);	    // nOPC=0	    ice_register(ICE_WP_1_control_value, ICE_CR_ENABLE, 1);	    ice_register(ICE_WP_1_control_mask, ICE_CR_All & ~(ICE_CR_nOPC), 1);	    break;	default:	    printf("(ice_set_hardware_breakpoint) Breakpoint not available.\n");    }}void ice_set_software_breakpoint(char nr, unsigned long pattern){    printf("Activating software breakpoint %i with pattern 0x%8.8x\n", nr, pattern);    switch(nr) {	case 0:	    // set address	    ice_register(ICE_WP_0_address_value, 0         , 1);	    ice_register(ICE_WP_0_address_mask , 0xFFFFFFFF, 1);	    // no data-dependent breakpoint    	    ice_register(ICE_WP_0_data_value, pattern   , 1);	    ice_register(ICE_WP_0_data_mask , 0         , 1);	    // nOPC=0	    ice_register(ICE_WP_0_control_value, ICE_CR_ENABLE, 1);	    ice_register(ICE_WP_0_control_mask, ICE_CR_All & ~(ICE_CR_nOPC), 1);	    break;	case 1:	    // set address	    ice_register(ICE_WP_1_address_value, 0         , 1);	    ice_register(ICE_WP_1_address_mask , 0xFFFFFFFF, 1);	    // no data-dependent breakpoint    	    ice_register(ICE_WP_1_data_value, pattern, 1);	    ice_register(ICE_WP_1_data_mask , 0      , 1);	    // nOPC=0	    ice_register(ICE_WP_1_control_value, ICE_CR_ENABLE, 1);	    ice_register(ICE_WP_1_control_mask, ICE_CR_All & ~(ICE_CR_nOPC), 1);	    break;	default:	    printf("(ice_set_software_breakpoint) Breakpoint not available.\n");    }}void ice_set_hardware_watchpoint(char nr, unsigned long addr, unsigned long mask){    switch(nr) {	case 0:	    // set address	    ice_register(ICE_WP_0_address_value, 0         , 1);	    ice_register(ICE_WP_0_address_mask , 0xFFFFFFFF, 1);	// 0b01 for thumb, 0b11 for arm	    // no data-dependent breakpoint    	    ice_register(ICE_WP_0_data_value, addr, 1);	    ice_register(ICE_WP_0_data_mask , mask, 1);	    // nOPC=1	    ice_register(ICE_WP_0_control_value, ICE_CR_nOPC | ICE_CR_ENABLE, 1);	    ice_register(ICE_WP_0_control_mask, ICE_CR_All & ~(ICE_CR_nOPC), 1);	    break;	case 1:	    // set address	    ice_register(ICE_WP_1_address_value, 0         , 1);	    ice_register(ICE_WP_1_address_mask , 0xFFFFFFFF, 1);	// 0b01 for thumb, 0b11 for arm	    // no data-dependent breakpoint    	    ice_register(ICE_WP_1_data_value, addr, 1);	    ice_register(ICE_WP_1_data_mask , mask, 1);	    // nOPC=1	    ice_register(ICE_WP_1_control_value, ICE_CR_nOPC | ICE_CR_ENABLE, 1);	    ice_register(ICE_WP_1_control_mask, ICE_CR_All & ~(ICE_CR_nOPC), 1);	    break;	default:	    printf("(ice_set_hardware_watchpoint) Watchpoint not available.\n");    }}void ice_enable_wp(char nr){    unsigned long control_value;        switch(nr) {	case 0:	    control_value = ice_register(ICE_WP_0_control_value, 0, 0);	    control_value |= ICE_CR_ENABLE;	    ice_register(ICE_WP_0_control_value, control_value, 1);	    break;	case 1:	    control_value = ice_register(ICE_WP_1_control_value, 0, 0);	    control_value |= ICE_CR_ENABLE;	    ice_register(ICE_WP_1_control_value, control_value, 1);	    break;	default:	    printf("(ice_enable_wp) Breakpoint not available.\n");    }}void ice_disable_wp(char nr){    unsigned long control_value;        switch(nr) {	case 0:	    control_value = ice_register(ICE_WP_0_control_value, 0, 0);	    control_value &= ~ICE_CR_ENABLE;	    ice_register(ICE_WP_0_control_value, control_value, 1);	    break;	case 1:	    control_value = ice_register(ICE_WP_1_control_value, 0, 0);	    control_value &= ~ICE_CR_ENABLE;	    ice_register(ICE_WP_1_control_value, control_value, 1);	    break;	default:	    printf("(ice_disable_wp) Breakpoint not available.\n");    }}int ice_wp_enabled(char nr){    switch(nr) {	case 0:	    return((ice_register(ICE_WP_0_control_value, 0, 0) & ICE_CR_ENABLE) == ICE_CR_ENABLE);	    break;	case 1:	    return((ice_register(ICE_WP_1_control_value, 0, 0) & ICE_CR_ENABLE) == ICE_CR_ENABLE);	    break;	default:	    printf("(ice_wp_enabled) Breakpoint not available.\n");    }    return(0);}unsigned long ice_get_breakpoint_addr(char nr){    switch(nr) {	case 0:	    return(ice_register(ICE_WP_0_address_value, 0, 0));	    break;	case 1:	    return(ice_register(ICE_WP_1_address_value, 0, 0));	    break;	default:	    printf("(ice_get_breakpoint_addr) Breakpoint not available.\n");    }    return(0);}unsigned long ice_get_watchpoint_addr(char nr){    switch(nr) {	case 0:	    return(ice_register(ICE_WP_0_data_value, 0, 0));	    break;	case 1:	    return(ice_register(ICE_WP_1_data_value, 0, 0));	    break;	default:	    printf("(ice_get_watchpoint_addr) Breakpoint not available.\n");    }    return(0);}void ice_set_hardware_bp_mask(char nr, unsigned long addr, unsigned long mask){    switch(nr) {	case 0:	    // set address	    ice_register(ICE_WP_0_address_value, addr, 1);	    ice_register(ICE_WP_0_address_mask , mask, 1);	// 0b01 for thumb, 0b11 for arm	    // no data-dependent breakpoint    	    ice_register(ICE_WP_0_data_value, 0         , 1);	    ice_register(ICE_WP_0_data_mask , 0xFFFFFFFF, 1);	    // nOPC=0	    ice_register(ICE_WP_0_control_value, ICE_CR_ENABLE, 1);	    ice_register(ICE_WP_0_control_mask, ICE_CR_All & ~(ICE_CR_nOPC|ICE_CR_ENABLE), 1);	    break;	case 1:	    // set address	    ice_register(ICE_WP_1_address_value, addr, 1);	    ice_register(ICE_WP_1_address_mask , mask, 1);	// 0b01 for thumb, 0b11 for arm	    // no data-dependent breakpoint    	    ice_register(ICE_WP_1_data_value, 0         , 1);	    ice_register(ICE_WP_1_data_mask , 0xFFFFFFFF, 1);	    // nOPC=0	    ice_register(ICE_WP_1_control_value, ICE_CR_ENABLE, 1);	    ice_register(ICE_WP_1_control_mask, ICE_CR_All & ~(ICE_CR_nOPC|ICE_CR_ENABLE), 1);	    break;	default:	    printf("(ice_set_hardware_bp_mask) Breakpoint not available.\n");    }}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美日韩一区成人| 午夜一区二区三区视频| 国产传媒欧美日韩成人| 国产农村妇女精品| 97久久精品人人爽人人爽蜜臀| 国产精品情趣视频| 91色视频在线| 亚洲电影视频在线| 精品久久一区二区三区| 国产成人综合亚洲网站| 亚洲天堂福利av| 色嗨嗨av一区二区三区| 午夜国产精品影院在线观看| 精品久久久久久久久久久久久久久久久| 久久99精品久久久久久| 国产精品色在线观看| 色综合一区二区| 日韩国产成人精品| 国产精品网站一区| 欧美性色综合网| 精品一二三四在线| 综合在线观看色| 在线播放欧美女士性生活| 国产在线精品一区二区| 亚洲欧美另类综合偷拍| 欧美一区二区日韩一区二区| 高清av一区二区| 无吗不卡中文字幕| 国产三级精品在线| 欧美性做爰猛烈叫床潮| 国产精品影视在线观看| 亚洲va欧美va天堂v国产综合| wwwwxxxxx欧美| 欧美无砖砖区免费| 国产99久久久久| 日本色综合中文字幕| 国产精品免费看片| 欧美一级二级在线观看| av综合在线播放| 久久福利视频一区二区| 又紧又大又爽精品一区二区| 精品欧美黑人一区二区三区| 91成人看片片| 丁香婷婷深情五月亚洲| 免费在线观看一区二区三区| 亚洲私人黄色宅男| 国产亚洲一区二区在线观看| 欧美日韩激情在线| 99久久国产综合精品色伊| 伦理电影国产精品| 午夜欧美视频在线观看| 亚洲男人天堂一区| 国产精品视频yy9299一区| 精品久久久久久亚洲综合网| 91黄色激情网站| 成人高清免费观看| 国产一区二区调教| 日本欧美一区二区| 亚洲成人激情社区| 亚洲欧美偷拍卡通变态| 国产丝袜在线精品| 精品成人一区二区三区| 欧美男生操女生| 在线观看91视频| 91美女片黄在线观看91美女| 成人在线视频一区二区| 国产麻豆精品视频| 免费成人美女在线观看.| 亚洲第一狼人社区| 亚洲综合免费观看高清完整版| 中文字幕av一区 二区| 久久青草国产手机看片福利盒子| 欧美一区日本一区韩国一区| 欧美精品第1页| 欧美精品视频www在线观看| 欧美在线观看一区| 欧美三级电影网站| 欧美群妇大交群中文字幕| 欧美色爱综合网| 欧美日韩高清一区二区| 欧美日韩视频在线一区二区| 欧美日韩视频在线观看一区二区三区 | 精品综合久久久久久8888| 婷婷丁香激情综合| 午夜精品爽啪视频| 日韩高清欧美激情| 蜜桃传媒麻豆第一区在线观看| 日本美女视频一区二区| 国产成人亚洲综合色影视| 久久av中文字幕片| 国产麻豆精品视频| aaa亚洲精品| 在线视频你懂得一区| 欧美日韩一级视频| 日韩精品一区二区三区视频在线观看| 91精品国产综合久久国产大片| 91麻豆精品国产91久久久资源速度| 91精品视频网| 久久精品一二三| 亚洲柠檬福利资源导航| 亚洲超碰97人人做人人爱| 另类专区欧美蜜桃臀第一页| 国产一区欧美一区| 99热这里都是精品| 7777精品伊人久久久大香线蕉| 精品国产伦一区二区三区免费| 久久久久国产一区二区三区四区| 国产精品国产精品国产专区不蜜| 亚洲综合激情另类小说区| 日韩av一区二| 成人激情黄色小说| 欧美日韩一区二区三区高清| 欧美不卡一区二区| 亚洲欧美区自拍先锋| 免费在线一区观看| av不卡一区二区三区| 777亚洲妇女| 国产女主播一区| 午夜电影网亚洲视频| 国产不卡高清在线观看视频| 色哟哟一区二区在线观看| 欧美xxxx老人做受| 亚洲三级免费观看| 六月丁香综合在线视频| 色综合久久88色综合天天| 日韩三级精品电影久久久| 亚洲视频一区在线观看| 久久精品国产在热久久| 日本精品免费观看高清观看| 精品久久国产老人久久综合| 亚洲美女视频一区| 狠狠狠色丁香婷婷综合久久五月| 色又黄又爽网站www久久| 欧美精品一区二区三区蜜桃视频| 亚洲精品乱码久久久久久日本蜜臀| 免费在线观看日韩欧美| 一本一道久久a久久精品| www亚洲一区| 日本三级亚洲精品| 91黄色免费观看| 国产精品久久一卡二卡| 蜜臀av一区二区在线观看| 在线免费观看一区| 欧美国产一区视频在线观看| 日本不卡123| 欧美午夜免费电影| 亚洲天堂成人在线观看| 国产福利一区在线| 精品对白一区国产伦| 丝袜a∨在线一区二区三区不卡| 91麻豆免费观看| 国产精品看片你懂得| 国产美女精品一区二区三区| 日韩一二在线观看| 欧美色涩在线第一页| 亚洲国产高清在线观看视频| 久草在线在线精品观看| 欧美精品在线视频| 亚洲国产婷婷综合在线精品| 91免费国产视频网站| 最新热久久免费视频| 国产aⅴ综合色| 日本一区二区综合亚洲| 国产成人综合精品三级| 亚洲精品一区二区三区香蕉| 男女男精品视频| 亚洲国产精华液网站w| 极品美女销魂一区二区三区| 日韩午夜av一区| 麻豆中文一区二区| 欧美一区二区黄| 日韩精品一级中文字幕精品视频免费观看 | 亚洲欧美日韩国产手机在线| av电影在线不卡| 日韩码欧中文字| 色综合天天做天天爱| 一区二区三区免费网站| 在线观看91精品国产入口| 日韩黄色在线观看| 日本道色综合久久| 亚洲五月六月丁香激情| 337p亚洲精品色噜噜狠狠| 麻豆传媒一区二区三区| 精品va天堂亚洲国产| 国产99久久久国产精品| 中文字幕中文在线不卡住| 色噜噜狠狠色综合欧洲selulu| 亚洲免费毛片网站| 欧美精品日韩综合在线| 久久成人18免费观看| 日本一区二区三区四区 | 成人免费视频一区| 亚洲人成网站影音先锋播放| 欧美在线不卡一区| 日韩综合一区二区| 久久久久国产精品麻豆| 色综合久久综合网欧美综合网| 午夜精品一区二区三区电影天堂| 日韩精品一区二区三区视频在线观看| 国产精品中文字幕欧美|