📄 h8_sil.c
字号:
/* * TOPPERS/JSP Kernel * Toyohashi Open Platform for Embedded Real-Time Systems/ * Just Standard Profile Kernel * * Copyright (C) 2000-2004 by Embedded and Real-Time Systems Laboratory * Toyohashi Univ. of Technology, JAPAN * Copyright (C) 2001-2005 by Industrial Technology Institute, * Miyagi Prefectural Government, JAPAN * * 惧淡螟侯涪荚は·笆布の (1)×(4) の掘凤か·Free Software Foundation * によって给山されている GNU General Public License の Version 2 に淡 * 揭されている掘凤を塔たす眷圭に嘎り·塑ソフトウェア∈塑ソフトウェア * を猖恃したものを崔むˉ笆布票じ∷を蝗脱ˇ剩澜ˇ猖恃ˇ浩芹邵∈笆布· * 网脱と钙ぶ∷することを痰浸で钓满するˉ * (1) 塑ソフトウェアをソ〖スコ〖ドの妨で网脱する眷圭には·惧淡の螟侯 * 涪山绩·この网脱掘凤および布淡の痰瘦沮惮年が·そのままの妨でソ〖 * スコ〖ド面に崔まれていることˉ * (2) 塑ソフトウェアを·ライブラリ妨及など·戮のソフトウェア倡券に蝗 * 脱できる妨で浩芹邵する眷圭には·浩芹邵に燃うドキュメント∈网脱 * 荚マニュアルなど∷に·惧淡の螟侯涪山绩·この网脱掘凤および布淡 * の痰瘦沮惮年を非很することˉ * (3) 塑ソフトウェアを·怠达に寥み哈むなど·戮のソフトウェア倡券に蝗 * 脱できない妨で浩芹邵する眷圭には·肌のいずれかの掘凤を塔たすこ * とˉ * (a) 浩芹邵に燃うドキュメント∈网脱荚マニュアルなど∷に·惧淡の螟 * 侯涪山绩·この网脱掘凤および布淡の痰瘦沮惮年を非很することˉ * (b) 浩芹邵の妨轮を·侍に年める数恕によって·TOPPERSプロジェクトに * 鼠桂することˉ * (4) 塑ソフトウェアの网脱により木儡弄または粗儡弄に栏じるいかなる禄 * 巢からも·惧淡螟侯涪荚およびTOPPERSプロジェクトを倘勒することˉ * * 塑ソフトウェアは·痰瘦沮で捏丁されているものであるˉ惧淡螟侯涪荚お * よびTOPPERSプロジェクトは·塑ソフトウェアに簇して·その努脱材墙拉も * 崔めて·いかなる瘦沮も乖わないˉまた·塑ソフトウェアの网脱により木 * 儡弄または粗儡弄に栏じたいかなる禄巢に簇しても·その勒扦を砷わないˉ * * @(#) $Id: h8_sil.c,v 1.6 2005/11/07 01:49:53 honda Exp $ *//* * システムインタフェ〖スレイヤ∈纳裁婶尸∷ * I/Oポ〖トのデ〖タˇディレクションˇレジスタDDRへのアクセス * H8のDDRは今き哈み漓脱であり、そのままでは疥司のビットだけを * 恃构することができない。∈bset,bclr炭吾でも搀闰稍材∷ * そのため、塑悸刘では、メモリ惧にテンポラリを脱罢して、DDRの * 附哼猛を瘦积する数恕を何っている。 * * なお、ポ〖ト7は掐蜗漓脱でDDRレジスタがないため、臼维している。 */#include "jsp_kernel.h"#include "check.h"#include "task.h"#include <h8_sil.h>#define DUMMY 0/* メモリ惧のテンポラリ挝拌 */static UB ddr_tmp[] = { /* 1 2 3 4 5 */ H8P1DDR0, H8P2DDR0, H8P3DDR0, H8P4DDR0, H8P5DDR0, /* 6 8 9 A B */ H8P6DDR0, H8P8DDR0, H8P9DDR0, H8PADDR0, H8PBDDR0};/* 称ポ〖トのアドレス */static const VP ddr_adr[] = { (VP)H8P1DDR, (VP)H8P2DDR, (VP)H8P3DDR, (VP)H8P4DDR, (VP)H8P5DDR, (VP)H8P6DDR, (VP)H8P8DDR, (VP)H8P9DDR, (VP)H8PADDR, (VP)H8PBDDR};/* * 腮警箕粗略ち * プロトタイプ离咐はsil.h柒にある */void sil_dly_nse(UINT dlytim) { /* er0 = dlytim */ Asm(" sub.l %0, er0" :: "g"(SIL_DLY_TIM1) ); Asm(" ble sil_dly_nse_2"); /* dlytim < SIL_DLY_TIM1 ならル〖プ姜位 */ Asm(" sil_dly_nse_1:"); Asm(" sub.l %0, er0" :: "g"(SIL_DLY_TIM2) ); Asm(" bgt sil_dly_nse_1"); /* dlytim > SIL_DLY_TIM2 ならル〖プ鲁乖 */ Asm(" sil_dly_nse_2:");}/* * DDRの粕み叫し */UB sil_reb_ddr(UINT port){ assert((IO_PORT1 <= port) && (port <= IO_PORTB)); return ddr_tmp[port];}/* * DDRの今き哈み */void sil_wrb_ddr(UINT port, UB data){ assert((IO_PORT1 <= port) && (port <= IO_PORTB)); ddr_tmp[port] = data; sil_wrb_mem(ddr_adr[port], (VB)data);}/* * DDRのAND遍换 */void sil_anb_ddr(UINT port, UB data){ UB ddr = sil_reb_ddr(port); ddr &= data; sil_wrb_ddr(port, ddr);}/* * DDRのOR遍换 */void sil_orb_ddr(UINT port, UB data){ UB ddr = sil_reb_ddr(port); ddr |= data; sil_wrb_ddr(port, ddr);}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -