KURO-RS ドライバ(6)HS-DHGL 用ドライバの作成

HS-DHGL KURO-RS

HS-DHGL のカーネルソースが手に入ったので、 HS-DHGL 用ドライバを作成する。

ソースの展開

ソースアーカイブを展開する。
[root@junk hs-dhgl]# tar zxvf linux-2.6.16_lsp.1.7.8.tar.gz
	:
	:

.config を探す

[root@junk hs-dhgl]# cd linux-2.6.16_lsp.1.7.8
[root@junk linux-2.6.16_lsp.1.7.8]# ls -a
./          COPYING         Kbuild       README          block/    drivers/  init/    lib/               net/       sound/
../         CREDITS         MAINTAINERS  REPORTING-BUGS  buffalo/  fs/       ipc/     md-061108-2.diff*  scripts/   usr/
.gitignore  Documentation/  Makefile*    arch/           crypto/   include/  kernel/  mm/                security/
[root@junk linux-2.6.16_lsp.1.7.8]# ls buffalo/
buffalo_lsgl_arm_100.config*  buffalo_lsgl_arm_110.config     buffalo_tshtgl_arm_110.config  marvell_lsgl_100.config*
buffalo_lsgl_arm_101.config   buffalo_lsgl_hs_arm_100.config  drivers/                       marvell_tshtgl_100.config
buffalo_lsgl_arm_102.config   buffalo_tshtgl_arm_100.config*  marvell_config100.config*
[root@junk linux-2.6.16_lsp.1.7.8]#
buffalo_lsgl_hs_arm_100.config か?
コピーする
[root@junk linux-2.6.16_lsp.1.7.8]# cp buffalo/buffalo_lsgl_hs_arm_100.config .config
[root@junk linux-2.6.16_lsp.1.7.8]# 

make menuconfig

[root@junk linux-2.6.16_lsp.1.7.8]# make menuconfig
  HOSTCC  scripts/basic/fixdep
  HOSTCC  scripts/basic/split-include
  HOSTCC  scripts/basic/docproc
  HOSTCC  scripts/kconfig/conf.o
  HOSTCC  scripts/kconfig/kxgettext.o
  SHIPPED scripts/kconfig/zconf.tab.c
  SHIPPED scripts/kconfig/lex.zconf.c
  SHIPPED scripts/kconfig/zconf.hash.c
  HOSTCC  scripts/kconfig/zconf.tab.o
  HOSTLD  scripts/kconfig/mconf
  HOSTCC  scripts/kconfig/lxdialog/checklist.o
In file included from scripts/kconfig/lxdialog/checklist.c:24:
scripts/kconfig/lxdialog/dialog.h:31:20: curses.h: No such file or directory
In file included from scripts/kconfig/lxdialog/checklist.c:24:
scripts/kconfig/lxdialog/dialog.h:128: error: syntax error before "use_colors"
scripts/kconfig/lxdialog/dialog.h:128: warning: type defaults to `int' in declaration of `use_colors'
scripts/kconfig/lxdialog/dialog.h:128: warning: data definition has no type or storage class
scripts/kconfig/lxdialog/dialog.h:129: error: syntax error before "use_shadow"
scripts/kconfig/lxdialog/dialog.h:129: warning: type defaults to `int' in declaration of `use_shadow'
scripts/kconfig/lxdialog/dialog.h:129: warning: data definition has no type or storage class
scripts/kconfig/lxdialog/dialog.h:131: error: syntax error before "attributes"
scripts/kconfig/lxdialog/dialog.h:131: warning: type defaults to `int' in declaration of `attributes'
scripts/kconfig/lxdialog/dialog.h:131: warning: data definition has no type or storage class
scripts/kconfig/lxdialog/dialog.h:143: error: syntax error before '*' token
scripts/kconfig/lxdialog/dialog.h:143: warning: function declaration isn't a prototype
scripts/kconfig/lxdialog/dialog.h:146: error: syntax error before '*' token
scripts/kconfig/lxdialog/dialog.h:146: warning: function declaration isn't a prototype
scripts/kconfig/lxdialog/dialog.h:147: error: syntax error before '*' token
scripts/kconfig/lxdialog/dialog.h:147: warning: function declaration isn't a prototype
scripts/kconfig/lxdialog/dialog.h:148: error: syntax error before '*' token
scripts/kconfig/lxdialog/dialog.h:148: warning: function declaration isn't a prototype
scripts/kconfig/lxdialog/dialog.h:149: error: syntax error before '*' token
scripts/kconfig/lxdialog/dialog.h:150: warning: function declaration isn't a prototype
scripts/kconfig/lxdialog/dialog.h:151: error: syntax error before '*' token
scripts/kconfig/lxdialog/dialog.h:151: warning: function declaration isn't a prototype
scripts/kconfig/lxdialog/checklist.c:31: error: syntax error before '*' token
scripts/kconfig/lxdialog/checklist.c:33: warning: function declaration isn't a prototype
scripts/kconfig/lxdialog/checklist.c: In function `print_item':
scripts/kconfig/lxdialog/checklist.c:37: warning: implicit declaration of function `wattrset'
scripts/kconfig/lxdialog/checklist.c:37: error: `win' undeclared (first use in this function)
scripts/kconfig/lxdialog/checklist.c:37: error: (Each undeclared identifier is reported only once
scripts/kconfig/lxdialog/checklist.c:37: error: for each function it appears in.)
scripts/kconfig/lxdialog/checklist.c:38: warning: implicit declaration of function `wmove'
scripts/kconfig/lxdialog/checklist.c:38: error: `choice' undeclared (first use in this function)
scripts/kconfig/lxdialog/checklist.c:40: warning: implicit declaration of function `waddch'
scripts/kconfig/lxdialog/checklist.c:43: error: `selected' undeclared (first use in this function)
scripts/kconfig/lxdialog/checklist.c:44: warning: implicit declaration of function `wprintw'
scripts/kconfig/lxdialog/checklist.c:44: error: `status' undeclared (first use in this function)
scripts/kconfig/lxdialog/checklist.c:47: warning: implicit declaration of function `mvwaddch'
scripts/kconfig/lxdialog/checklist.c:47: error: `item' undeclared (first use in this function)
scripts/kconfig/lxdialog/checklist.c:49: warning: implicit declaration of function `waddstr'
scripts/kconfig/lxdialog/checklist.c:52: warning: implicit declaration of function `wrefresh'
scripts/kconfig/lxdialog/checklist.c: At top level:
scripts/kconfig/lxdialog/checklist.c:59: error: syntax error before '*' token
scripts/kconfig/lxdialog/checklist.c:61: warning: function declaration isn't a prototype
scripts/kconfig/lxdialog/checklist.c: In function `print_arrows':
scripts/kconfig/lxdialog/checklist.c:62: error: `win' undeclared (first use in this function)
scripts/kconfig/lxdialog/checklist.c:62: error: `y' undeclared (first use in this function)
scripts/kconfig/lxdialog/checklist.c:62: error: `x' undeclared (first use in this function)
scripts/kconfig/lxdialog/checklist.c:64: error: `scroll' undeclared (first use in this function)
scripts/kconfig/lxdialog/checklist.c:76: error: `height' undeclared (first use in this function)
scripts/kconfig/lxdialog/checklist.c:79: error: `item_no' undeclared (first use in this function)
scripts/kconfig/lxdialog/checklist.c:79: error: `choice' undeclared (first use in this function)
scripts/kconfig/lxdialog/checklist.c: At top level:
scripts/kconfig/lxdialog/checklist.c:95: error: syntax error before '*' token
scripts/kconfig/lxdialog/checklist.c:96: warning: function declaration isn't a prototype
scripts/kconfig/lxdialog/checklist.c: In function `print_buttons':
scripts/kconfig/lxdialog/checklist.c:97: error: `width' undeclared (first use in this function)
scripts/kconfig/lxdialog/checklist.c:98: error: `height' undeclared (first use in this function)
scripts/kconfig/lxdialog/checklist.c:100: error: `dialog' undeclared (first use in this function)
scripts/kconfig/lxdialog/checklist.c:100: error: `selected' undeclared (first use in this function)
scripts/kconfig/lxdialog/checklist.c: In function `dialog_checklist':
scripts/kconfig/lxdialog/checklist.c:117: error: `WINDOW' undeclared (first use in this function)
scripts/kconfig/lxdialog/checklist.c:117: error: `dialog' undeclared (first use in this function)
scripts/kconfig/lxdialog/checklist.c:117: error: `list' undeclared (first use in this function)
scripts/kconfig/lxdialog/checklist.c:117: warning: left-hand operand of comma expression has no effect
scripts/kconfig/lxdialog/checklist.c:121: warning: implicit declaration of function `endwin'
scripts/kconfig/lxdialog/checklist.c:122: warning: implicit declaration of function `fprintf'
scripts/kconfig/lxdialog/checklist.c:122: error: `stderr' undeclared (first use in this function)
scripts/kconfig/lxdialog/checklist.c:140: error: `COLS' undeclared (first use in this function)
scripts/kconfig/lxdialog/checklist.c:141: error: `LINES' undeclared (first use in this function)
scripts/kconfig/lxdialog/checklist.c:143: error: `stdscr' undeclared (first use in this function)
scripts/kconfig/lxdialog/checklist.c:145: warning: implicit declaration of function `newwin'
scripts/kconfig/lxdialog/checklist.c:146: warning: implicit declaration of function `keypad'
scripts/kconfig/lxdialog/checklist.c:146: error: `TRUE' undeclared (first use in this function)
scripts/kconfig/lxdialog/checklist.c:166: warning: implicit declaration of function `subwin'
scripts/kconfig/lxdialog/checklist.c:199: warning: implicit declaration of function `wnoutrefresh'
scripts/kconfig/lxdialog/checklist.c:201: warning: implicit declaration of function `doupdate'
scripts/kconfig/lxdialog/checklist.c:204: warning: implicit declaration of function `wgetch'
scripts/kconfig/lxdialog/checklist.c:211: error: `KEY_UP' undeclared (first use in this function)
scripts/kconfig/lxdialog/checklist.c:211: error: `KEY_DOWN' undeclared (first use in this function)
scripts/kconfig/lxdialog/checklist.c:221: error: `FALSE' undeclared (first use in this function)
scripts/kconfig/lxdialog/checklist.c:222: warning: implicit declaration of function `scrollok'
scripts/kconfig/lxdialog/checklist.c:223: warning: implicit declaration of function `wscrl'
scripts/kconfig/lxdialog/checklist.c:284: warning: implicit declaration of function `delwin'
scripts/kconfig/lxdialog/checklist.c:288: error: `KEY_LEFT' undeclared (first use in this function)
scripts/kconfig/lxdialog/checklist.c:289: error: `KEY_RIGHT' undeclared (first use in this function)
scripts/kconfig/lxdialog/checklist.c: At top level:
scripts/kconfig/lxdialog/dialog.h:131: warning: array `attributes' assumed to have one element
make[2]: *** [scripts/kconfig/lxdialog/checklist.o] Error 1
make[1]: *** [menuconfig] Error 2
make: *** [menuconfig] Error 2
[root@junk linux-2.6.16_lsp.1.7.8]#
玄箱/Pro の時と同じくエラー。そら、同じ環境やし。

make oldconfig

仕方ないので、oldconfig
まずは、手作業で "CONFIG_USB_SERIAL=m" にする。
本当は .config は編集してはいけない。
[root@junk linux-2.6.16_lsp.1.7.8]# vi .config
	:
	:
[root@junk linux-2.6.16_lsp.1.7.8]# diff -c buffalo/buffalo_lsgl_hs_arm_100.config .config
*** buffalo/buffalo_lsgl_hs_arm_100.config      Thu Jun 22 13:52:57 2006
--- .config     Sat Sep 22 15:21:46 2007
***************
*** 881,887 ****
  #
  # USB Serial Converter support
  #
! # CONFIG_USB_SERIAL is not set

  #
  # USB Miscellaneous drivers
--- 881,887 ----
  #
  # USB Serial Converter support
  #
! CONFIG_USB_SERIAL=m

  #
  # USB Miscellaneous drivers
[root@junk linux-2.6.16_lsp.1.7.8]#
続いて make oldconfig
[root@junk linux-2.6.16_lsp.1.7.8]# make oldconfig
  HOSTLD  scripts/kconfig/conf
scripts/kconfig/conf -o arch/arm/Kconfig
arch/arm/Kconfig:317:warning: defaults for choice values not supported
#
# using defaults found in .config
#
	:
	:
ずっとデフォルトのまま、Enter のみ
*
* USB port drivers
*
*
* USB Serial Converter support
*
USB Serial Converter support (USB_SERIAL) [M/n/y/?] m
  USB Generic Serial Driver (USB_SERIAL_GENERIC) [N/y/?] (NEW)
  USB AirPrime CDMA Wireless Driver (USB_SERIAL_AIRPRIME) [N/m/?] (NEW)
  USB AnyData CDMA Wireless Driver (USB_SERIAL_ANYDATA) [N/m/?] (NEW)
  USB Belkin and Peracom Single Port Serial Driver (USB_SERIAL_BELKIN) [N/m/?] (NEW)
  USB ConnectTech WhiteHEAT Serial Driver (USB_SERIAL_WHITEHEAT) [N/m/?] (NEW)
  USB Digi International AccelePort USB Serial Driver (USB_SERIAL_DIGI_ACCELEPORT) [N/m/?] (NEW)
  USB CP2101 UART Bridge Controller (USB_SERIAL_CP2101) [N/m/?] (NEW)
  USB Cypress M8 USB Serial Driver (USB_SERIAL_CYPRESS_M8) [N/m/?] (NEW)
  USB Empeg empeg-car Mark I/II Driver (USB_SERIAL_EMPEG) [N/m/?] (NEW)
  USB FTDI Single Port Serial Driver (EXPERIMENTAL) (USB_SERIAL_FTDI_SIO) [N/m/?] (NEW) m
USB FTDI Single Port Serial Driver には m と答える。
その後もずっと Enter

これだけ Enter おさなあかんということは、 buffalo/buffalo_lsgl_hs_arm_100.config は このソースで作られたんやないな。
ファームウェア 1.10 で USB プリンタがサポートされたのに、

[root@junk linux-2.6.16_lsp.1.7.8]# grep PRINTER .config
# CONFIG_USB_PRINTER is not set
[root@junk linux-2.6.16_lsp.1.7.8]#
やし、名前通り 1.00 用のソースか?

make

[root@junk linux-2.6.16_lsp.1.7.8]# make clean
[root@junk linux-2.6.16_lsp.1.7.8]# make modules
  CHK     include/linux/version.h
  UPD     include/linux/version.h
  HOSTCC  scripts/basic/fixdep
	:
	:
[root@junk linux-2.6.16_lsp.1.7.8]#
[root@junk linux-2.6.16_lsp.1.7.8]# ls drivers/usb/serial/*.ko
drivers/usb/serial/ftdi_sio.ko  drivers/usb/serial/usbserial.ko
[root@junk linux-2.6.16_lsp.1.7.8]#
できた。

ドライバのコピー

HS-DHGL にコピーする
sil:~# cd /usr/local/buffalo/lib/modules/2.6.16.16-arm1/kernel/drivers/usb/serial/
sil:/usr/local/buffalo/lib/modules/2.6.16.16-arm1/kernel/drivers/usb/serial# ftp junk
Connected to junk.yamasita.jp.
220 ProFTPD 1.2.10 Server (ProFTPD Default Installation) [192.168.1.41]
Name (junk:yasunari):
331 Password required for yasunari.
Password:
230 User yasunari logged in.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> cd /opt/hs-dhgl/linux-2.6.16_lsp.1.7.8/drivers/usb/serial
250 CWD command successful
ftp> bin
200 Type set to I
ftp> hash
Hash mark printing on (1024 bytes/hash mark).
ftp> prompt
Interactive mode off.
ftp> mget *.ko
local: ftdi_sio.ko remote: ftdi_sio.ko
200 PORT command successful
150 Opening BINARY mode data connection for ftdi_sio.ko (40781 bytes)
#######################################
226 Transfer complete.
40781 bytes received in 0.00 secs (11977.5 kB/s)
local: usbserial.ko remote: usbserial.ko
200 PORT command successful
150 Opening BINARY mode data connection for usbserial.ko (29561 bytes)
############################
226 Transfer complete.
29561 bytes received in 0.00 secs (8682.2 kB/s)
ftp> bye
221 Goodbye.
sil:/usr/local/buffalo/lib/modules/2.6.16.16-arm1/kernel/drivers/usb/serial# ls -al
total 72
drwxr-xr-x 2 root root    43 Sep 22 15:53 .
drwxr-xr-x 5 root root    43 Sep 16 01:27 ..
-rw-r--r-- 1 root root 40781 Sep 22 15:53 ftdi_sio.ko
-rw-r--r-- 1 root root 29561 Sep 22 15:53 usbserial.ko
sil:/usr/local/buffalo/lib/modules/2.6.16.16-arm1/kernel/drivers/usb/serial#

試しにロード

sil:/usr/local/buffalo/lib/modules/2.6.16.16-arm1/kernel/drivers/usb/serial# cd
sil:~# chroot /usr/local/buffalo
sil:/# insmod /lib/modules/2.6.16.16-arm1/kernel/drivers/usb/serial/usbserial.ko
sil:/# insmod /lib/modules/2.6.16.16-arm1/kernel/drivers/usb/serial/ftdi_sio.ko
sil:/# exit
exit
sil:~#
問題なくロードできた。

KURO-RS の認識

KURO-RS を刺してみた。
sil:~# cat /proc/bus/usb/devices
	:
	:
T:  Bus=02 Lev=02 Prnt=02 Port=02 Cnt=03 Dev#= 10 Spd=12  MxCh= 0
D:  Ver= 2.00 Cls=00(>ifc ) Sub=00 Prot=00 MxPS= 8 #Cfgs=  1
P:  Vendor=0411 ProdID=00b3 Rev= 4.00
S:  Manufacturer=BUFFALO
S:  Product=BUFFALO RemoteStation PC-OP-RS1
S:  SerialNumber=000009ee
C:* #Ifs= 1 Cfg#= 1 Atr=80 MxPwr=500mA
I:  If#= 0 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=ff Driver=(none)
E:  Ad=81(I) Atr=02(Bulk) MxPS=  64 Ivl=0ms
E:  Ad=02(O) Atr=02(Bulk) MxPS=  64 Ivl=0ms

	:
	:
Driver=(none) ?
なんで?

あかんやん。パッチあててへん(藁)。

やり直し。

ソース修正?

[root@junk linux-2.6.16_lsp.1.7.8]# cd drivers/usb/serial/
[root@junk serial]# mv ftdi_sio.c{,.orig}
[root@junk serial]# cp ftdi_sio.c{.orig,}
[root@junk serial]# mv ftdi_sio.h{,.orig}
[root@junk serial]# cp ftdi_sio.h{.orig,}
[root@junk serial]# vi ftdi_sio.[hc]
	:
	:
むむむ。玄箱/Pro のソースと全然違う。
玄箱/Pro の ftdi_sio.c は、
#define DRIVER_VERSION "v1.4.2"
HS-DHGL の ftdi_sio.c は、
#define DRIVER_VERSION "v1.4.3"
パッチをあてるべきテーブルがない。。。。

ごそごそして、、、

[root@junk serial]# diff -c ftdi_sio.h.orig ftdi_sio.h
*** ftdi_sio.h.orig     Thu May 11 19:00:01 2006
--- ftdi_sio.h  Sat Sep 22 16:23:10 2007
***************
*** 916,918 ****
--- 916,924 ----
   *
   */

+ /*
+  * BUFFALO RemoteStation PC-OP-RS1
+  */
+ #define BUFFALO_VID             0x0411  /* BUFFALO Vendor ID                 */
+ #define BUFFALO_PCOPRS1_PID     0x00b3  /* RemoteStation PC-OP-RS1 ProductID */
+
[root@junk serial]# diff -c ftdi_sio.c.orig ftdi_sio.c
*** ftdi_sio.c.orig     Thu May 11 19:00:01 2006
--- ftdi_sio.c  Sat Sep 22 16:26:40 2007
***************
*** 492,497 ****
--- 492,498 ----
        { USB_DEVICE(FTDI_VID, FTDI_WESTREX_MODEL_777_PID) },
        { USB_DEVICE(FTDI_VID, FTDI_WESTREX_MODEL_8900F_PID) },
        { USB_DEVICE(FTDI_VID, FTDI_PCDJ_DAC2_PID) },
+       { USB_DEVICE(BUFFALO_VID, BUFFALO_PCOPRS1_PID) },
        { },                                    /* Optional parameter entry */
        { }                                     /* Terminating entry */
  };
[root@junk serial]#
こんなんでええのかなぁ???

再 make

[root@junk linux-2.6.16_lsp.1.7.8]# !PATH
PATH=$PATH:/opt/arm-2005q3-2/bin:/opt/arm-2005q3-2/libexec/gcc/arm-none-linux-gnueabi/
[root@junk linux-2.6.16_lsp.1.7.8]# !export
export PATH
[root@junk linux-2.6.16_lsp.1.7.8]# make modules
  CHK     include/linux/version.h
make[1]: `include/asm-arm/mach-types.h' is up to date.
  CC [M]  drivers/usb/serial/ftdi_sio.o
  Building modules, stage 2.
  MODPOST
  CC      drivers/usb/serial/ftdi_sio.mod.o
  LD [M]  drivers/usb/serial/ftdi_sio.ko
[root@junk linux-2.6.16_lsp.1.7.8]#

モジュールのアンロード

古い ftdi_sio.ko をアンロードする
sil:/# lsmod
Module                  Size  Used by
ftdi_sio               28488  0
usbserial              24232  1 ftdi_sio
mv7dxu2_0              40772  0
averusb               645916  0
v4l1_compat            12804  0
v4l2_common             8096  0
videodev                9984  1 averusb
mv7dxu2_3              40804  0
mv7dxu2_2              40804  0
mv7dxu2_1              40804  0
mv7dxu2_d               3560  4 mv7dxu2_0,mv7dxu2_3,mv7dxu2_2,mv7dxu2_1
vfat                   10720  0
fat                    47484  1 vfat
usblp                  12160  0
sil:/# rmmod ftdi_sio
sil:/# lsmod
Module                  Size  Used by
usbserial              24232  0
mv7dxu2_0              40772  0
averusb               645916  0
v4l1_compat            12804  0
v4l2_common             8096  0
videodev                9984  1 averusb
mv7dxu2_3              40804  0
mv7dxu2_2              40804  0
mv7dxu2_1              40804  0
mv7dxu2_d               3560  4 mv7dxu2_0,mv7dxu2_3,mv7dxu2_2,mv7dxu2_1
vfat                   10720  0
fat                    47484  1 vfat
usblp                  12160  0
sil:/#

ドライバの再コピー

HS-DHGL に ftp でコピーする。

ドライバの再ロード

sil:/usr/local/buffalo/lib/modules/2.6.16.16-arm1/kernel/drivers/usb/serial# cd
sil:~# chroot /usr/local/buffalo
sil:/# insmod /lib/modules/2.6.16.16-arm1/kernel/drivers/usb/serial/ftdi_sio.ko
sil:/# exit
exit
sil:~#
確認する
sil:~# cat /proc/bus/usb/devices
	:
	:
T:  Bus=02 Lev=02 Prnt=02 Port=02 Cnt=03 Dev#= 10 Spd=12  MxCh= 0
D:  Ver= 2.00 Cls=00(>ifc ) Sub=00 Prot=00 MxPS= 8 #Cfgs=  1
P:  Vendor=0411 ProdID=00b3 Rev= 4.00
S:  Manufacturer=BUFFALO
S:  Product=BUFFALO RemoteStation PC-OP-RS1
S:  SerialNumber=000009ee
C:* #Ifs= 1 Cfg#= 1 Atr=80 MxPwr=500mA
I:  If#= 0 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=ff Driver=ftdi_sio
E:  Ad=81(I) Atr=02(Bulk) MxPS=  64 Ivl=0ms
E:  Ad=02(O) Atr=02(Bulk) MxPS=  64 Ivl=0ms
	:
	:
やっとできた。


HS-DH320GL
楽天市場
Yahoo!ショッピング
somap.com
TSUKUMO ネットショップ
ValuMore!
ムラウチドットコム
アット・ニフティストア icon
Joshin web icon
KURO-RS
楽天市場
Amazon
Yahoo!ショッピング
TSUKUMO
クレバリー


HS-DHGL ソース CD
ハックの記録
LinkStation/玄箱 をハックしよう

関西オープンソース2007/関西コミュニティ大決戦 参加

Copyright (C) 2003-2007 Yasunari Yamashita. All Rights Reserved.
yasunari @ yamasita.jp 山下康成@京都府向日市