⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 chip_config.c

📁 μITRON4.0 source code for ARM
💻 C
字号:
/* *  TOPPERS/ASP Kernel *      Toyohashi Open Platform for Embedded Real-Time Systems/ *      Advanced Standard Profile Kernel *  *  Copyright (C) 2006 by GJ Business Division RICOH COMPANY,LTD. JAPAN *  Copyright (C) 2007 by Embedded and Real-Time Systems Laboratory *              Graduate School of Information Science, Nagoya Univ., JAPAN *  *  惧淡螟侯涪荚は·笆布の(1)×(4)の掘凤を塔たす眷圭に嘎り·塑ソフトウェ *  ア∈塑ソフトウェアを猖恃したものを崔むˉ笆布票じ∷を蝗脱ˇ剩澜ˇ猖 *  恃ˇ浩芹邵∈笆布·网脱と钙ぶ∷することを痰浸で钓满するˉ *  (1) 塑ソフトウェアをソ〖スコ〖ドの妨で网脱する眷圭には·惧淡の螟侯 *      涪山绩·この网脱掘凤および布淡の痰瘦沮惮年が·そのままの妨でソ〖 *      スコ〖ド面に崔まれていることˉ *  (2) 塑ソフトウェアを·ライブラリ妨及など·戮のソフトウェア倡券に蝗 *      脱できる妨で浩芹邵する眷圭には·浩芹邵に燃うドキュメント∈网脱 *      荚マニュアルなど∷に·惧淡の螟侯涪山绩·この网脱掘凤および布淡 *      の痰瘦沮惮年を非很することˉ *  (3) 塑ソフトウェアを·怠达に寥み哈むなど·戮のソフトウェア倡券に蝗 *      脱できない妨で浩芹邵する眷圭には·肌のいずれかの掘凤を塔たすこ *      とˉ *    (a) 浩芹邵に燃うドキュメント∈网脱荚マニュアルなど∷に·惧淡の螟 *        侯涪山绩·この网脱掘凤および布淡の痰瘦沮惮年を非很することˉ *    (b) 浩芹邵の妨轮を·侍に年める数恕によって·TOPPERSプロジェクトに *        鼠桂することˉ *  (4) 塑ソフトウェアの网脱により木儡弄または粗儡弄に栏じるいかなる禄 *      巢からも·惧淡螟侯涪荚およびTOPPERSプロジェクトを倘勒することˉ *      また·塑ソフトウェアのユ〖ザまたはエンドユ〖ザからのいかなる妄 *      统に答づく懒滇からも·惧淡螟侯涪荚およびTOPPERSプロジェクトを *      倘勒することˉ *  *  塑ソフトウェアは·痰瘦沮で捏丁されているものであるˉ惧淡螟侯涪荚お *  よびTOPPERSプロジェクトは·塑ソフトウェアに簇して·泼年の蝗脱誊弄 *  に滦する努圭拉も崔めて·いかなる瘦沮も乖わないˉまた·塑ソフトウェ *  アの网脱により木儡弄または粗儡弄に栏じたいかなる禄巢に簇しても·そ *  の勒扦を砷わないˉ *  *  @(#) $Id: chip_config.c 948 2008-04-14 08:34:27Z ertl-honda $ *//* * チップ巴赂モジュ〖ル∈AT91SAM7S脱∷ */#include "kernel_impl.h"#include <sil.h>/* * 称充哈みの充哈み妥滇敦贿フラグの觉轮 */uint32_t idf;/* * 附哼の充哈み庭黎刨マスクの猛 */PRI ipm; /* *  充哈み掳拉が肋年されているかを冉侍するための恃眶 */uint32_t	bitpat_cfgint;/* *  タ〖ゲット巴赂の介袋步 */voidtarget_initialize(void){    int i;        /*     *  ARM巴赂の介袋步     */    core_initialize();    /*     * 充哈み掐蜗箕に充哈み妥傍を冉年するためSVRに充哈み戎规をセットする     */    /*     * 链充哈み敦贿     */    sil_wrw_mem((void*)(TADR_AIC_BASE+TOFF_AIC_ICCR), ~0U);    /*     * EOICRをセット     */    sil_wrw_mem((void*)(TADR_AIC_BASE+TOFF_AIC_EOICR), 0U);            for(i = 0; i < TNUM_INT; i++){        sil_wrw_mem((void*)(TADR_AIC_BASE+TOFF_AIC_SVR+(i*4)), (uint32_t)i);    }        /*     * 称充哈みの充哈み妥滇敦贿フラグ链敦贿     */    idf = ~0U;    /*     * 充哈み庭黎刨マスクは0     */     ipm = 0U;    /*     * 链ての充哈みをマスク     */     at91sam7s_disable_int(~0U);    /*     *  充哈み掳拉が肋年されているかを冉侍するための恃眶を介袋步するˉ     */    bitpat_cfgint = 0U;    #ifndef VECTOR_KERNEL        /*     *  毋嘲ベクタテ〖ブルへ充哈みハンドラを判峡     */    x_install_exc(EXCH_NO_IRQ, interrupt_handler);    x_install_exc(EXCH_NO_UNDEF, undef_handler);    x_install_exc(EXCH_NO_SWI, swi_handler);    x_install_exc(EXCH_NO_PABORT, prefetch_handler);    x_install_exc(EXCH_NO_DABORT, data_abort_handler);    x_install_exc(EXCH_NO_FIQ, fiq_handler);#endif /* VECTOR_KERNEL */         /*     *  target_fput_log が材墙になるようにUARTを介袋步     */    at91sam7s_init_uart();    }/* *  タ〖ゲット巴赂の姜位借妄 */voidtarget_exit(void){    /*     *  ARM巴赂の姜位借妄     */    core_terminate();    /*     *  すべての充哈みをマスクするˉ     */    at91sam7s_disable_int(~0U);    /*     *  倡券茨董巴赂の姜位借妄     */    at91sam7s_exit();    while(1);}/* *  タ〖ゲット巴赂の矢机叫蜗 */voidtarget_fput_log(char_t c){    if (c == '\n') {        at91sam7s_putc('\r');    }    at91sam7s_putc(c);}/* *  充哈み妥滇ラインの掳拉の肋年 * *  ASPカ〖ネルでの网脱を鳞年して·パラメ〖タエラ〖はアサ〖ションでチェッ *  クしているˉFI4カ〖ネルに网脱する眷圭には·エラ〖を手すようにすべき *  であろうˉ * */voidx_config_int(INTNO intno, ATR intatr, PRI intpri){    assert(VALID_INTNO(intno));    assert(TMIN_INTPRI <= intpri && intpri <= TMAX_INTPRI);	/*	 *  充哈み掳拉が肋年されているかを冉侍するための恃眶の肋年	 */	bitpat_cfgint |= INTNO_BITPAT(intno);        /*      * いったん充哈みを敦贿する     */        x_disable_int(intno);    /*     * レベルトリガ/エッジトリガの肋年     * IRQのみサポ〖トする     */    uint32_t smr_val;    if((intatr & TA_POSEDGE) != 0U) {        /*         * ポジティブエッジ         */        smr_val = AIC_SRCTYPE_EXT_POSITIVE_EDGE;    }else if((intatr & TA_HIGHLEVEL) != 0U) {        /*         * ハイレベルトリガ         */        smr_val = AIC_SRCTYPE_EXT_HIGH_LEVEL ;    }else if((intatr & TA_EDGE) != 0U) {        /*         * エッジトリガ         */        smr_val = AIC_SRCTYPE_INT_EDGE_TRIGGERED;    }else{        /*         * レベルトリガ         */        smr_val = AIC_SRCTYPE_INT_LEVEL_SENSITIVE;    }        sil_wrw_mem((void*)(TADR_AIC_BASE+TOFF_AIC_SMR+intno*4U), smr_val|intpri);        if ((intatr & TA_ENAINT) != 0U){        (void)x_enable_int(intno);    }    }#ifndef OMIT_DEFAULT_INT_HANDLER/* * 踏年盗の充哈みが掐った眷圭の借妄 */voiddefault_int_handler(void){    syslog_0(LOG_EMERG, "Unregistered Interrupt occurs.");    target_exit();}#endif /* OMIT_DEFAULT_INT_HANDLER */

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -