Part Number Hot Search : 
MAX1420 1000B BPC25 ISL6117 BCV62215 SY87700 30DQ60 FD200
Product Description
Full Text Search
 

To Download SMP8634 Datasheet File

  If you can't view the Datasheet, Please click here to try to view without PDF Reader .  
 
 


  Datasheet File OCR Text:
  - 1 - sigmadesigns? smp863x wince bsp and development help 2007-2008 sigmadesigns(shenzhen) corporation. all rights reserved. v2.0.0.10 new 1 catalog 1 basi c platform ??????????????????????????????? .2. a) hardware platform b) software platform 2) how to build up the SMP8634 wince platform builder ???????? .8. 3) how to run the ce system on SMP8634 board ??????????? .9. a) make the ce bootloader b) make the SMP8634 specific ce nk.bin c) download the nk.bin to SMP8634 board d) make the ship mode SMP8634 ce nk.bin and boot it up without platform builder 4) how to make application for SMP8634 wince system ???????? .46. 5) how to test the SMP8634 wince feature ?????????????? .48. a) SMP8634 eth b) SMP8634 usb c) SMP8634 atapi d) SMP8634 pflash storage(disabled) e) SMP8634 ir remote control f) SMP8634 i2c g) SMP8634 smart card reader h) SMP8634 com serial i) SMP8634 ddi j) SMP8634 hw cursor k) SMP8634 wave device l) SMP8634 ddr ram m) SMP8634 rtc(realtime clock) n) SMP8634 gpio o) SMP8634 pwm p) SMP8634 hardware demux q) SMP8634 hardware jpeg decode r) SMP8634 lvds output s) SMP8634 multi-decoder t) SMP8634 vga output u) SMP8634 audio and video captures filter 6) how to upgrade/modify the ce boot loader ?????????????? .73. a) update boot.bin b) update xenv c) set the default value for boot loader 7) how to modify wince feature on SMP8634 ?????????????? .75. a) web server b) ftp server c) telnet server d) smb server e) hive-based registry f) ie 6.0 for windows ce g) media player h) microsoft network media device i) standard shell j) directdvd k) wire less ethernet 8) how to upgrade xos of SMP8634 chip ????????????????? .80. 9) how to get xos information ?????????????????????????? .80 10) how to make the boot screen ???????????????????? .80. 11) how to show a bitmap logo in boot screen ?????????????? .81. 12) how to show a progress in boot screen ?????????????? .81. 13) how to dynamic change video output ????????????????? .81. 14) current driver escape codes ???????????????????? .83. 15) extended project ???????????????????? .87. 16) about windows ce test kits(cetk) ???????????????????? .89. 17) bug list ?????????????????????????????????? .89. for seeyoo only free datasheet http://
- 2 - 1 basic platform a) hardware platform 1. SMP8634 envision board(es6 late version) or production board pflash recommend 64m bytes(nor flash) z if loading nk.bin from a ide device, it needs a 1m bytes nor flash only z if your boot screen is a big 24bit mode bitmap, it needs a 4m bytes nor flash ddr ram: recommend two 128m bytes ethernet card port: rtl8100cl(rtl8139 compatibility) enable (this device is for debug only) SMP8634 mac enable SMP8634 vantage board(es6 late version) pflash recommend 64m bytes(nor flash) z if loading nk.bin from a ide device, it needs a 1m bytes nor flash only z if your boot screen is a big 24bit mode bitmap, it needs a 4m bytes nor flash ddr ram: recommend two 128m bytes ethernet card port: SMP8634 mac enable rtl8100cl(rtl8139 compatibility) mini pci card (this device is for debug only) 2. SMP8634 peripheral: usb mouse usb keyboard serial debug card serial port link cable ir remote control crt or lcd tv monitor two ethernet link cables one mini pci rtl8100(rtl8139 compatibility) ethernet card (for vantage board only) 3. x86 pc 2.4g cpu 512m bytes memory 60g bytes hard disk 4. ethernet switcher 4 ports 10/100m bps b) software platform 1. microsoft windows xp sp2 system 2. microsoft windows ce platform builder 5.0 with mipsii bsp recommend install follow updates. a. ?windows ce 5.0 platform builde r yearly update (2007)? for mipsii file name: wincepb50-071231-product-update-rollup-mipsii.msi link: http://www.microsoft.com/downloads/ detai ls.aspx?familyid=a54779d5-f4a 5-49f0-9e36-979d461f536c&displaylang=en b: ?windows ce 5.0 platform builder monthly update (january 2008)? for mipsii file name: wincepb50-080131-2008m01-mipsii.msi link: http://www.microsoft.com/downloads/details.aspx?familyid=98f0906a-45c 6-4792-91fe-47a0e073a998&displaylang=en c: ?windows ce 5.0 platform builder monthly update (february 2008)? for mipsii file name: wincepb50-080229-2008m02-mipsii.msi link: http://www.microsoft.com/downloads/ detai ls.aspx?familyid=9ac7441f-3ad c-4e35-abd1-fa4fbb90a132&displaylang=en d: ?windows ce 5.0 platform builder monthly update (march 2008)? for mipsii file name: wincepb50-080331-2008m03-mipsii.msi link: http://www.microsoft.com/downloads/de tails.aspx?familyid=aacea4ae-e8c e-40c3-941c-d2a549a55deb&displaylang=en e: ?windows ce 5.0 platform builder monthly update (april 2008)? for mipsii file name: wincepb50-080430-2008m04-mipsii.msi for seeyoo only free datasheet http://
- 3 - link: http://www.microsoft.com/downloads/ details.aspx?familyid=4a3d4537-ab1 b-4e8f-b735-348a64a9d8d6&displaylang=en f. ?windows ce 5.0 networked media device feature pack? for mipsii file name: wincepb50-product- update-rollup-mipsii.msi link: http://www.microsoft.com/downloads/de tails.aspx?family id=bf17d6b0-471 6-494b-9018-7deee9b91832&displaylang=en g. ?wince 5.0 networked media device feature pack - cumulative product update rollup package (through 12/31/2007)? for mipsii file name: wincepb50_nmdfp-071231-product-update-rollup-mipsii.msi link: http://www.microsoft.com/downloads/de tails.aspx?familyid=81c5d9f3-a1d 1-4d0e-bf6a-d579d1c41077&displaylang=en h. ?windows ce 5.0 networked media device feature pack monthly update (january 2008)? for mipsii file name: wincepb50_nmdfp-080131-2008m01-mipsii.msi link: http://www.microsoft.com/downloads/details.aspx?fami lyid=d 64f66d4-9a4 b-443f-8118-8d4cca95ff68&displaylang=en 3. SMP8634 bsp a. current version:2.0.0.0 b. name: windowsce.5.0.bsp.2.0.0.0.zip c. directory structure: +2.0.0.0.bsp +cec -smp863x.cec -smp863x_atapi.cec -smp863x_ehci.cec -smp863x_eth.cec -smp863x_i2c.cec -smp863x_ohci.cec -smp863x_pflash.cec -smp863x_serial.cec -smp863x_smartcard.cec +pflash_tools -boot_stb.nb0 -dram_64.cmd -dram_128.cmd -genxenv.config -genxenv.exe -pflash_combo.config -pflash_combo.exe -pflash_cs2_64.mem -readme.txt -xenv_64.mem -xenv_128_64.mem -xreset.cmd -xrpc_xload_bootstrap_cs2_b1000000_es4_dev.bin -xrpc_xload_bootstrap_cs2_b1000000_es4_prod.bin +setxenv +setxenv -main.cpp -makefile -rmbasic.h -sources +xrpc -xrpc.exe -changes.txt -readme.txt -SMP8634-envision.2.0.0.0.msi d. bsp update 1) i2c update: this update is about setti ng speed for i2c device for seeyoo only free datasheet http://
- 4 - name: bsp_i2c.zip directory structure: +bsp_i2c +bsp_i2c_lib -bsp_i2c_lib.c -makefile -sources +dll -i2c_iisr.c -i2c_iisr.def -i2c_iisr.h -makefile -sources +sys -bsp_i2c.c -bsp_i2c.def -makefile -sources +test -main.cpp -makefile -sources -dirs 2) usb update: this update is about usb2.0 and it is for SMP8634 revc/es9 version chip only name: SMP8634_usb_revc_optimization.zip directory structure: +SMP8634_usb_revc_optimization +ehci86xx -ehci86xx.def -ehci86xx.reg -makefile -resource.h -rmver.rc -sources -system.c +ohci86xx -makefile -ohcd86xx.def -ohci86xx.reg -resource.h -rmver.rc -sources -system.c +usb11 +common -cdevice.cpp -cdevice.hpp -cphysmem.cpp -cphysmem.hpp -globals.hpp -hcd.cpp -hcd.hpp -hcddrv.cpp -makefile -pipeabs.hpp -sources -sync.cpp -sync.hpp +ohcd2 -chw.cpp -chw.hpp -cohcd.cpp -cohcd.hpp -cpipe.cpp -cpipe.hpp -makefile for seeyoo only free datasheet http://
- 5 - -sources -transfer.cpp -transfer.hpp -dirs +usb20 +ehci -cehcd.cpp -cehcd.h -chw.cpp -chw.h -cpipe.cpp -cpipe.h -ctd.cpp -ctd.h -makefile -sources -td.h -trans.cpp -trans.h -usb2lib.cpp -usb2lib.h +usb2com -cdevice.cpp -cdevice.hpp -cphysmem.cpp -cphysmem.hpp -globals.hpp -hcd.cpp -hcd.hpp -hcddrv.cpp -makefile -pipeabs.hpp -sources -sync.cpp -sync.hpp -dirs +version -rmver -readme.txt 3) rtc update your board must have the rtc(re altime clock) hardware support for this update to work. name: bsp_rtc-10-16-07.zip directory structure: + bsp_rtc-10-16-07 + wince500 + platform + smp863x +src +libs + bsp_rtc - makefile - readme.txt - rmbasic.h - rtc.c - sources - xos_xrpc.h - xpurtc_xtask_load_bin_dev.h - xpurtc_xtask_load_bin_prod.h - xpurtc_xtask_unload_bin_dev.h - xpurtc_xtask_unload_bin_prod.h 4. SMP8634 multimedia package a. current version: 2.0.0.10 b. name: multimedia.2.0.0.10.zip c. directory structure: +multimedia.2.0.0.10 +include - bitblt.h for seeyoo only free datasheet http://
- 6 - - ddi86xxesc.h - icapturesrc863x.h - ids863x.h - ihwdemux863x.h - itsdemux.h - jpeg_api.h - smp863x_formats.h - smp863x_ioctl.h - smp863x_restorefb.h +restorefb + dev - smp863x_restorefb.lib + prod - smp863x_restorefb.lib +retail - capsrc863x.map - ddi_86xx.map - ds863x.map - dswmapro.map - hdmi863x.map - hwdemux863x.map - smp863x.map - swjpeglib.map - tsdemux.map - wave863x.map - jpeg_api.lib - capsrc863x.pdb - ddi_86xx.pdb - ds863x.pdb - dswmapro.pdb - hdmi863x.pdb - hwdemux863x.pdb - jpeg_api.pdb - smp863x.pdb - swjpeglib.pdb - tsdemux.pdb - wave863x.pdb - capsrc863x.rel - ddi_86xx.rel - ds863x.rel - dswmapro.rel - hdmi863x.rel - hwdemux863x.rel - smp863x.rel - swjpeglib.rel - tsdemux.rel - wave863x.rel - capsrc863x.dll - ddi_86xx.dll - ds863x.dll - dswmapro.dll - hdmi863x.dll - hwdemux863x.dll - smp863x.dll - swjpeglib.dll - tsdemux.dll - wave863x.dll +samples +bootfb - main.cpp - makefile - rmbasic.h - sources +hwplayjpeg - hwplayjpeg.cpp - sources - hwplayjpeg.h - hwplayjpeg.rc for seeyoo only free datasheet http://
- 7 - - makefile - resource.h - readme_capturesrc863x.txt - readme_ddi_86xx.txt - readme_ds863x.txt - readme_dswmapro.txt - readme_hdmi863x.txt - readme_hwdemux863x.txt - readme_hwjpeg.txt - readme_smp863x.txt - readme_tsdemux.txt - readme_wave863x.txt - windows ce boot screen.txt -whatsnew.2.0.0.10.txt d. multimedia update 5. SMP8634 xos version version: e0 filename: xrpc_xload_xosu-xosme0-8634_es4_dev.bin 6. the different files for development chip(es6/es7/es9) and production chip(rev a/b/c) in bsp for follow files , there are two version in the bsp, one for development chip, one for production chip, if you use wrong version for your system, it can make the board fault, so please take careful when you use this mode file in your system. a. signed file xrpc_xload_bootstrap_cs2_b1000000_es4_dev.bin xrpc_xload_bootstrap_cs2_b1000000_es4_prod.bin b. framebuffer library smp863x_restorefb.lib for seeyoo only free datasheet http://
- 8 - 2) how to build up the SMP8634 wince platform builder a) build up a microsoft windows xp sp2 system on a x86 pc b) install microsoft windows ce platform builder 5.0 with mipsii bsp to the system as pic1 shows. c) install all update packages for mi crosoft windows ce 5.0 platform builder d) install SMP8634 wince bsp(SMP8634-envision.2.0.0.0.msi), upgrade bsp e) copy all nine cec files (smp863x.cec,smp863x_atapi.cec,smp863x_eth.cec,smp863x_i2c.cec,smp863x_ohci.cec,s mp863x_serial.cec, smp863x_pflash.cec,smp863x_smartcard.cec, smp863x_ehci.cec) to ?\wince500\public\common\oak\catalog\cec? directory f) open microsoft windows ce 5.0 platform builder, use ?file----manage catalog items?? menu to open ?manage catalog items? dialog, use ?import? button to import all eight cec files to platform builder, and make sure all SMP8634 driver features are in catalog windows as pic3 shows for seeyoo only free datasheet http://
- 9 - 3) how to run the ce system on SMP8634 board a) make the ce bootloader there is not a default combo ce bootloader in bsp, but all of the making bootloader tools are in pflash_tools directory. you can use them to make a ce bootloader. all exe files are dos mode command. 1. make the xenv file(xenv_128_128.mem) set genxenv.config as follow sample, and use this new genxenv.config to make a new xenv_128_128.mem file. the command line is " genxenv e xenv_128_128.mem genxenv.config ". # # hardware config file for smp863x platform (xenv) # default for SMP8634 stb board (a.k.a envision) # # ----------- # xos section # ----------- # boot xrpc/xload offset: x.boot = 0x8000 # dram stuffing # [29:20] - size of dram2, in mb, if present # [19:10] - size of dram1, in mb, if present # [ 9: 0] - size of dram0, in mb. #x.ds = 0x10040 # dram0 64m + dram1 64m x.ds = 0x20080 # dram0 128m + dram1 128m # dram timings/delays x.d0.cfg = 0xf34111ba # dram0 128m #x.d0.cfg = 0xe34111ba # dram0 64m #x.d0.dl0 = 0x000a4444 x.d1.cfg = 0xf34111ba # dram1 128m #x.d1.cfg = 0xe34111ba # dram1 64m #x.d1.dl0 = 0x000a4444 # dram test x.dt = 1 # pll setting #x.pll3 = 0x01020057 #x.mux = 0x201 # frequency setting x.csf = 0x2 2. make the pflash combo file(SMP8634ce128m.mem) set pflash_combo.config as follow sample,use this new config file to make the ce loader file(SMP8634ce128m.mem). the command is " pflash_combo SMP8634ce128m.mem pflash_combo.config ". # parallel flash memory configuration for xos versions > a0 # encripted boot stub located at offset 0x800 and pointed by x.boot=0x800 in xenv.mem # 0x00000000 xenv_128_128.mem 0x00008000 xrpc_xload_bootstrap_cs2_b1000000_es4_dev.bin 0x00010000 boot.nb0 the SMP8634ce128m.mem must be 576k bytes big size. the boot.nb0 file of each version bsp is different, so if bsp is upgraded, we must update the boot.nb0 too build a new ce project with new version bsp, get the boot.nb0 file, use it to replace the default boot.nb0 file or download boot.bin to SMP8634 board with ce platform builder. if the ce bootloader is made for a production SMP8634 board(rev a, rev b or rev c version), we must use xrpc_xload_bootstrap_cs2_b1000000_es4_prod.bin file to replace the xrpc_xload_bootstrap_cs2_b1000000_es4_dev.bin file. 3. write the ce bootloader(SMP8634ce128m.mem) to pflash0(boot flash) of SMP8634 board from begining address with yamon command or other tools. there are three ways to do that. a. use a external flash programmer to program the flash image directly to the flash. of course you have to remove the flash chip from the board first. b. use a jtag probe to do that, but it involves a us$2500 jtag hardware to do that. if you don't have it, you can ignore this option. for seeyoo only free datasheet http://
- 10 - c. use yamon prompt to program windowsce boot loader. i'll show you the step below. please be very careful when you do this . if the process fail in the middle, it will crash yamon and make your board not bootable, and you have to go back to option 1. here is how you program the file to on-board flash by yamon. assume i want to program file "f ile0.bin" to address 0 of flash. 1. uuencode the file by uuencode command in x86 linux. > uuencode file0.bin x > file0.bin.uuencode 2. in yamon promopt, run yamon> load uu 0xb0100000 3. now the yamon is waiting for the file from serial port. send the file0.bin.uuencode file to SMP8634 board through serial terminal. if you are using teraterm, you can do it by select "file->send file". (must with text mode) 4. when downloading is done, the file size of the received file is given in yamon. 5. compare the reported size to the filesize of file0.bin (not file0.bin.uuencode) and make sure they are exactly the same. no more, no less. 6. in yamon prompt, run yamon> pflash write 0x0 0xb0100000 this command tell yamon to program the of data in 0xb0100000 to flash address 0x0. 4. reboot the board, the serial output window of pc will shows the ce loader's bootup information , press any key will get a main menu list as pic4 sample. b) make the SMP8634 specific ce nk.bin the SMP8634 ce system will support follow features, ? gdi output from hdmi, s-video, av, ycbcr, ypbpr ? directdraw ddi support, alpha blending support ? hd gdi and video output(480p,720p,1080i,1080p), lvds output(24bit rgb) ? usb mouse/keyboard input(us b1.1/2.0), ir remote control, com serial port input, i2c control, mini-pci ? hard disk, usb storage device(usb2.0), fat/fat32 partition, pflash memory storage device, smart card reader ? ethernet network, rtl8139 and SMP8634 mac eth two devices, tcp/ip ? media decode for mpeg1, program stream(mpeg2), transport stream(h.264, mpeg-1, vc-1, and mpeg-2 codec video, ac3, mpeg audio, and wma-ts codec audio), hd transport stream(720p,1080i/p), wmv(wmv9 video, wma/wma pro audio), hdwmv(720p,1080i/p), avi(vcm/wmv9/divx/xvid/h264 + mpa/mp3/ac3), hd avi(720p,1080i/p), wma, mp3, hardware ts demux (from sp i/ssi port or local file) ? system wav audio output ? image decode for jpeg, png, bmp, gif(static), hardware jpeg decode for seeyoo only free datasheet http://
- 11 - ? network multimedia support, ip media(wmt) via mms protocol(from windows media server), ip media(wmt, mpeg) via http protocol, media on smb server ? web server, ftp server, telnet server, smb sever 1. run ?new platform..? menu comma nd to wizard build ce project a. enter the name you would like to name the platform. b. select "smp863x: mipsii" bsp. c. select the "networked media device" de sign. (to enable this design, it needs copy the networked_media_device.xml file to ?x:\wince500\public\common\oak\catalog\newplatformwizards? directory, the xml file is downloaded from msdn, it?s a nmd template design wizard from microsoft. ) for seeyoo only free datasheet http://
- 12 - d. add/remove the networked drivers, finish the new platform wizard. 2. add/remove all specific driver from catalog window a. add follow SMP8634 drivers to current ce project ethernet controller i2c bus controller ethernet bootloader (eboot) smart card reader atapi controller com_smp863x ohci host controller ehci host controller for seeyoo only free datasheet http://
- 13 - c. edit all device module as sample shows ? delete ?nmd ui? feature, add ?stand ard shell? feature to ce project ? applications-end user, if you don?t like microsoft application, you can delete them. for seeyoo only free datasheet http://
- 14 - ? applications and services development ? communication services and networking for seeyoo only free datasheet http://
- 15 - ? core os services ? file systems and data store ? fonts for seeyoo only free datasheet http://
- 16 - ? graphics and multimedia technologies ? international for seeyoo only free datasheet http://
- 17 - set the locale language support, use ?platform----settings?.? menu command to open ?platform settings? dialog, turn the ?locale? page, use first ?clear all? button to clear system default locales settings, select the languages that you want to support, set the default language that you want to show with ce gui. click the ?ok? button to close the dialog and enable the locale specific setting. note: adding ?agfa ac3 font compression? to ce project can make the chinese fonts library to be small, and in fact, the catalog is included in ?chinese(simplified)? item group, not included in ?korean? group. ? internet client services for seeyoo only free datasheet http://
- 18 - ? security ? shell and user interface 3. set the build options and environment a. build options use ?platform----settings?.? menu comma nd to open the ?platform settings? dialog, turn to ?build options? page, set it as pic24 sample b. build environment on ?platform settings? dialog, turn to ?environment? page, for seeyoo only free datasheet http://
- 19 - add follow environment variable value to project. variable value comment kernelnoshareeth 1 disable vimini1 (ignore for vantage) bsp_noshareeth 1 disable vimini1 (ignore for vantage) bsp_keybd_nop 1 enable usb keyboard bsp_smp863x_ir 1 enable SMP8634 ir remote control prj_enable_fsmountasroot 1 enable hive-based registry(hdd) prj_enable_regflush_thread 1 en able hive-based registry(hdd) prj_bootdevice_atapi 1 enable hive-based registry(hdd) if you use vantage platform, you don?t need add kernelnoshareeth and bsp_noshareeth. c. click ?ok? button to close dialog and enable all settings 4. run ?build os----build and sysgen? menu command to build the ce project. wait for the building is successful complete, it needs more time, maybe 1-3 hours. then we can have a cup of tee or coffee. if the SMP8634 bsp2.0.0.0 is updated, please run ?build os----build and sysgen current bsp? and ?build os---- sysgen? again. this step needs about 1 hour. 5. copy all files in retail directory of multimedia package(pic26) to "\wince500\pbworkspace\(your ce project name)\reldir\smp863x_mipsii_release"(pic27) ce project directory for seeyoo only free datasheet http://
- 20 - 6. open the platform.bib file in "\wince500\pbworkspace\(your ce project name)\reldir\smp863x_mipsii_release" directory, add follow settings to it under " ;@cesysgen if ce_moduels_device " line. ;usb keyboard kbdnopus.dll $(_flatreleasedir)\kbdnopus.dll nk sh ;SMP8634 capsrc863x.dll $(_flatreleasedir)\capsrc863x.dll nk sh ddi_86xx.dll $(_flatreleasedir)\ddi_86xx.dll nk sh ds863x.dll $(_flatreleasedir)\ds863x.dll nk sh dswmapro.dll $(_flatreleasedir)\dswmapro.dll nk sh hdmi863x.dll $(_flatreleasedir)\hdmi863x.dll nk sh hwdemux863x.dll $(_flatreleasedir)\hwdemux863x.dll nk sh smp863x.dll $(_flatreleasedir)\smp863x.dll nk sh swjpeglib.dll $(_flatreleasedir)\swjpeglib.dll nk sh tsdemux.dll $(_flatreleasedir)\tsdemux.dll nk sh wave863x.dll $(_flatreleasedir)\wave863x.dll nk sh find the pflash device dll file line. pflash.dll $(_flatreleasedi r)\pflash.dll nk sh pflash2.dll $(_flatreleasedir)\pflash2.dll nk sh disable it as follow sample. ; pflash.dll $(_flatreleasedi r)\pflash.dll nk sh ; pflash2.dll $(_flatreleasedir)\pflash2.dll nk sh close and save the platform.bib file. 7. open the config.bib file in "\wince500\pbworkspace\(your ce project name)\reldir\smp863x_mipsii_release" directory, add follow settings to the end of file. ;system memory setting 25%::75% fsrampercent=0x20202020 find follow four line settings. global_mem 90202800 00100800 reserved ;1mb for emhwlib required contiguous memory extension_dram0 90303000 00e1d000 reserved ;15mb extension dram nk 92600000 02000000 ramimage ;32mb for nk.bin image ram 94600000 03000000 ram ;48mb for ce applications modify them as follow sample smp863x 90202800 01b00800 reserved ;27mb for smp863x driver nk 91d10000 02a00000 ramimage ;42mb for nk.bin image ram 94710000 032f0000 ram ;50mb for ce applications note: the detail information ab out the config.bib setting for seeyoo only free datasheet http://
- 21 - the sample config.bib file is: memory irqhandler 90000000 00200000 reserved ;2mb for irq handler args 90200000 00000800 reserved ;2kb info from bootloader to system ide_dma 90200800 00002000 reserved ;8kb ide dma side buffer smp863x 90202800 01b00800 reserved ;27mb for smp863x driver nk 91d10000 02a00000 ramimage ;42mb for nk.bin image ram 94710000 032f0000 ram ;50mb for ce applications xos_private 97a00000 00600000 reserved ;6mb for xos >= a6 irqhandler the first 2mb of dram0 is reserved for usage by sigma designs. this is a requirement and must be respected. args this is a 2kb region used by the bootloader to send arguments to the kernel. this is a hard coded location coded in the bootloader an d the kernel. this should not be changed. ide_dma this is a reserved 8kb memory location to be used by the SMP8634 atapi driver. this location is hard coded in the driver, and shou ld not be changed unless the driver is changed accordingly. smp863x this is a reserved portion of memory to be used by the smp863x.dll driver. the location and size of this memory can changed. see the smp863x.dll documentation for more details. in this sample, it is set as 9 + 8 + 9 + 1 model, it?s all 27m bytes 9m ---- for ddi setting, 1920x1080x4+2048, less if your desk size is small 8m ---- for directdraw setting, less if you disable directdraw 9m ---- for second decoder, less if you disable second decoder 1m ---- for basic setting, it is must reserved extension_dram0 this part is disable in sample config.bib , if you don?t want use memory as this mode, please ignore this part extension_dram0 90303000 00e1d000 reserved ; 15mb extension dram this is a portion of memory that is used as an "extension" to the "ram" area. this area is seen by the kernel as available for use. the location and size of this memory can be changed, but it is hard coded in the /smp863x/src/kernel/oal/init.c file: #define extension_dram_start_address (0x10303000) #define extension_dram_length (0x00e1d000) if you change the location/size of this memory area, you must change init.c accrodingly and re-compile the kernel. nk this is where the kernel gets loaded. the location is hard coded in the files: smp863x\src\inc\image_cfg.h(32): #define image_wince_code_pa_start 0x1d10000 smp863x\src\kernel\kern\sources(14): exebase=0x91d10000 smp863x\src\kernel\kernkitl\sources(14): exebase=0x91d10000 smp863x\src\kernel\kernkitlprof\sources(13): exebase=0x91d10000 changing this location requires you to chan ge the appropriate files, and rebuilding the bootloader and kernel. for seeyoo only free datasheet http://
- 22 - ram this is the normal ram area the kernel sees. xos_private this is a special area reserved for use by xo s. the size and location can only be changed via xenv variables. it is advised to leave this default. the default location is the last 6mb of dram0. so, if dram0 had 128mb, the physical address start would be 0x17a00000. if dram0 had 64mb, the physical address start would be 0x13a00000. 8. open the platform.reg file in "\wince500\pbworkspace\(your ce project name)\reldir\smp863x_mipsii_release" directory, add follow registry settings to the end of file. ;gdi 2.0.0.10 verion [hkey_local_machine\system\gdi\drivers] "display"="ddi_86xx.dll" ; ; see smp863x_formats.h for the proper hex values for each video mode ; "digitaloutput"=dword:21 "digitalcolorspace"=dword:3 "mainanalogoutput"=dword:6f "mainanalogcolorspace"=dword:4 "componentanalogoutput"=dword:65 "componentmode"=dword:6 "componentorder"=dword:0 "componentcolorspace"=dword:4 "vgaoutput"=dword:0 ; 0 = disable vga output, 1 = enable vga output. ; also, when it's 1, need to se t componentanalogoutput to cvt_xxx or vesa_xxx, ; componentmode to rgb_scart, componentcolorspace to rgb_0_255 "screenwidth"=dword:00000500 ;1280 "screenheight"=dword:000002d0 ;720 "outputposx"=dword:100 ; output window position x "outputposy"=dword:100 ; output window position y "outputposwidth"=dword:e00 ; output window position width "outputposheight"=dword:e00 ; output window position height "memorysize"=dword:00800000 ; extra memory size for h/w acceleration, see note in the smp863x.reg ; regarding the primary_display_surface_drambank "enablehwcursor"=dword:1 ; 0 = disable, 1 = enable "livedetecthdmiconnection"=dword:1 ; 0 = driver won't do live hdmi detection, 1 = check live hdmi connection "enablehdcp"=dword:0 ; 0 = disable the hdcp, 1 = enable the hdcp "defaultkeycolor"=dword:00010101 ; in rgb format: r = 3rd byte, g = 2nd byte, b = 1st byte "enableediddetection"=dword:0 ; 0 = disable, 1 = enable. disable/enable the hdmi preferred mode. "hdmii2cmodule"=dword:2 ; 0 = software, 1 = hardware, 2 = built-in hdmi "invertclock"=dword:1 ; 0 = do not invert digital video clock, 1 = invert (default is inverted) "lvds_enable"=dword:0 "lvds_gpiofieldidoutput"=dword:b ; board dependent "lvds_gpiopanelon"=dword:e ; board dependent ; default custom digital output video mode - 720p59 [hkey_local_machine\system\gdi\d rivers\customdigitalvideomode] "pixelclock"=dword:46bd550 "hactive"=dword:500 "hfrontporch"=dword:6e "hsyncwidth"=dword:28 "hbackporch"=dword:dc "hsyncpolarity"=dword:1 ; true: positive, false: negative "vactive"=dword:2d0 "vfrontporch"=dword:5 "vsyncwidth"=dword:5 "vbackporch"=dword:14 "vsyncpolarity"=dword:1 ; true: positive, false: negative "interlaced"=dword:0 for seeyoo only free datasheet http://
- 23 - ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; sigma designs built-in driver for low-level access ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; [hkey_local_machine\driv ers\builtin\smp86xx] "dll"="smp863x.dll" "prefix"="sdh" "index"=dword:1 "order"=dword:1 "smp863x_reserved_start_dram0"=dword:10202800 ; starting address of reserved memory in dram0 "smp863x_reserved_dram0_size" =dword:01b00000 ; dram0 needs at 1mb (more if primary surface is allocated in dram0) "smp863x_reserved_start_dram1"=dword:0c000000 ; starting address of reserved memory in dram1 "smp863x_reserved_dram1_size" =dword:00000000 ; dram1 needs at 40mb (less if primary surface is allocated in dram0) "primary_display_surface_drambank"=dword:0 ; dram bank to allocate primary display surface (0 or 1) "default_aspect_ratio_x"=dword:1 0 ; default aspect ratio for the output, horizontal direction "default_aspect_ratio_y"=dword:9 ; default aspect ratio for the output, vertical direction ;;;;;;;;;; ds863x.dll ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; @cesysgen if quartz_image ; sigma designs renderer filter ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; [hkey_classes_root\filter\{caa414f0-c7c3-11d4-a914-0080ad91bd94}] if initdshowfilternames @="sigma designs filter" endif ;"delaysettingcodectypes"=dword:1 ; delay se tting of the codec types - only enable this if you are using the .asx playlist "flushdisplayonstop"=dword:0 "flushdisplayonbeginflush"=dword:0 "flushdisplayondiscontinuity"=dword:0 [hkey_classes_root\clsid\{caa414f0-c7c3-11d4-a914-0080ad91bd94}] if initnodshowfilterclassnames ! @="sigma designs filter" endif "merit"=dword:00880001 [hkey_classes_root\clsid\{caa414f0-c7c3-11d4-a914-0080ad91bd94}\inprocserv er32] @="ds863x.dll" [hkey_classes_root\clsid\{caa414f0-c7c3-11d4-a914-0080ad91bd94}\pins\inpu t video] ;"direction"=dword:00000000 ;"isrendered"=dword:00000001 "allowedzero"=dword:00000001 ;"allowedmany"=dword:00000000 [hkey_classes_root\clsid\{caa414f0-c7c3-11d4-a914-0080ad91bd94}\pins\inpu t audio] ;"direction"=dword:00000000 ;"isrendered"=dword:00000001 "allowedzero"=dword:00000001 ;"allowedmany"=dword:00000000 ;mediatype_video\media subtype_mpeg1payload [hkey_classes_root\clsid\{caa414f0-c7c3-11d4-a914-0080ad91bd94}\pins\inpu t video\types\{73646976-0000-0010-8000-00aa00389b71}\{e436eb81-524f-11ce-9f53-0 020af0ba770}] for seeyoo only free datasheet http://
- 24 - ;mediatype_video\media subtype_mpeg2_video [hkey_classes_root\clsid\{caa414f0-c7c3-11d4-a914-0080ad91bd94}\pins\inpu t video\types\{73646976-0000-0010-8000-00aa00389b71}\{e06d8026-db46-11cf-b4d1-0 0805f6cbbea}] ;mediatype_video\mediasubtype_sdmpeg4_video [hkey_classes_root\clsid\{caa414f0-c7c3-11d4-a914-0080ad91bd94}\pins\inpu t video\types\{73646976-0000-0010-8000-00aa00389b71}\{8ab4d3d1-c812-11d5-be17 -00a0c90aa8a1}] ;mediatype_video\mediasubtype_divx_u_video [hkey_classes_root\clsid\{caa414f0-c7c3-11d4-a914-0080ad91bd94}\pins\inpu t video\types\{73646976-0000-0010-8000-00aa00389b71}\{58564944-0000-0010-8000- 00aa00389b71}] ;mediatype_video\mediasubtype_divx_50_video [hkey_classes_root\clsid\{caa414f0-c7c3-11d4-a914-0080ad91bd94}\pins\inpu t video\types\{73646976-0000-0010-8000-00aa00389b71}\{30355844-0000-0010-8000- 00aa00389b71}] ;mediatype_video\mediasu btype_divx_xvid_video [hkey_classes_root\clsid\{caa414f0-c7c3-11d4-a914-0080ad91bd94}\pins\inpu t video\types\{73646976-0000-0010-8000-00aa00389b71}\{44495658-0000-0010-8000- 00aa00389b71}] ;mediatype_video\mediasubtype_divx_div3_video [hkey_classes_root\clsid\{caa414f0-c7c3-11d4-a914-0080ad91bd94}\pins\inpu t video\types\{73646976-0000-0010-8000-00aa00389b71}\{33564944-0000-0010-8000- 00aa00389b71}] ;mediatype_video\mediasubtype_divx_mp43_video [hkey_classes_root\clsid\{caa414f0-c7c3-11d4-a914-0080ad91bd94}\pins\inpu t video\types\{73646976-0000-0010-8000-00aa00389b71}\{3334504d-0000-0010-8000- 00aa00389b71}] ;mediatype_video\mediasubtype_divx_h264_video [hkey_classes_root\clsid\{caa414f0-c7c3-11d4-a914-0080ad91bd94}\pins\inpu t video\types\{73646976-0000-0010-8000-00aa00389b71}\{34363248-0000-0010-8000- 00aa00389b71}] ;mediatype_video\mediasubtype_smp863x_capture_video [hkey_classes_root\clsid\{caa414f0-c7c3-11d4-a914-0080ad91bd94}\pins\inpu t video\types\{73646976-0000-0010-8000-00aa00389b71}\{c6271d47-809e-4b79-a2a9-f 787e8266760}] ; windows media video 9 ; fourcc: 'wmv3' subtype: 33564d57-0000-0010-8000-00aa00389b71 [hkey_classes_root\clsid\{caa414f0-c7c3-11d4-a914-0080ad91bd94}\pins\inpu t video\types\{73646976-0000-0010-8000-00aa00389b71}\{33564d57-0000-0010-8000- 00aa00389b71}] ; windows media video 9 advanced profile ; fourcc: 'wmva' subtype: 41564d57-0000-0010-8000-00aa00389b71 [hkey_classes_root\clsid\{caa414f0-c7c3-11d4-a914-0080ad91bd94}\pins\inpu t video\types\{73646976-0000-0010-8000-00aa00389b71}\{41564d57-0000-0010-8000- 00aa00389b71}] for seeyoo only free datasheet http://
- 25 - ; windows media video advanced profile with no start codes [hkey_classes_root\clsid\{caa414f0-c7c3-11d4-a914-0080ad91bd94}\pins\inpu t video\types\{73646976-0000-0010-8000-00aa00389b71}\{31435657-0000-0010-8000- 00aa00389b71}] ;mediatype_audio\media subtype_mpeg1payload [hkey_classes_root\clsid\{caa414f0-c7c3-11d4-a914-0080ad91bd94}\pins\inpu t audio\types\{73647561-0000-0010-8000-00aa00389b71}\{e436eb81-524f-11ce-9f53-0 020af0ba770}] ;mediatype_audio\mediasubtype_dolby_ac3 [hkey_classes_root\clsid\{caa414f0-c7c3-11d4-a914-0080ad91bd94}\pins\inpu t audio\types\{73647561-0000-0010-8000-00aa00389b71}\{e06d802c-db46-11cf-b4d1-0 0805f6cbbea}] ;mediatype_audio\med iasubtype_audioac3 [hkey_classes_root\clsid\{caa414f0-c7c3-11d4-a914-0080ad91bd94}\pins\inpu t audio\types\{73647561-0000-0010-8000-00aa00389b71}\{00002000-0000-0010-8000- 00aa00389b71}] ;mediatype_audio\media subtype_mpeg2_audio [hkey_classes_root\clsid\{caa414f0-c7c3-11d4-a914-0080ad91bd94}\pins\inpu t audio\types\{73647561-0000-0010-8000-00aa00389b71}\{e06d802b-db46-11cf-b4d1-0 0805f6cbbea}] ;mediatype_audio\mediasu btype_mpeg1audiopayload [hkey_classes_root\clsid\{caa414f0-c7c3-11d4-a914-0080ad91bd94}\pins\inpu t audio\types\{73647561-0000-0010-8000-00aa00389b71}\{00000050-0000-0010-8000- 00aa00389b71}] ;mediatype_audio\mediasu btype_sdmpeg4_pcmaudio [hkey_classes_root\clsid\{caa414f0-c7c3-11d4-a914-0080ad91bd94}\pins\inpu t audio\types\{73647561-0000-0010-8000-00aa00389b71}\{8ab4d3d2-c812-11d5-be17 -00a0c90aa8a1}] ;mediatype_audio\mediasubtype_pcm [hkey_classes_root\clsid\{caa414f0-c7c3-11d4-a914-0080ad91bd94}\pins\inpu t audio\types\{73647561-0000-0010-8000-00aa00389b71}\{00000001-0000-0010-8000- 00aa00389b71}] ;mediatype_audio\mediasubtype_divx_mp3 [hkey_classes_root\clsid\{caa414f0-c7c3-11d4-a914-0080ad91bd94}\pins\inpu t audio\types\{73647561-0000-0010-8000-00aa00389b71}\{00000055-0000-0010-8000- 00aa00389b71}] ;mediatype_audio\mediasubtype_adts_aacaudio [hkey_classes_root\clsid\{caa414f0-c7c3-11d4-a914-0080ad91bd94}\pins\inpu t audio\types\{73647561-0000-0010-8000-00aa00389b71}\{341f3a28-4476-4277-adff- adeade3d1716}] ; windows media audio 9 and previous compatible versions ; format tag: 0x161 subtype: 00000161-0000-0010-8000-00aa00389b71 [hkey_classes_root\clsid\{caa414f0-c7c3-11d4-a914-0080ad91bd94}\pins\inpu t audio\types\{73647561-0000-0010-8000-00aa00389b71}\{00000161-0000-0010-8000- 00aa00389b71}] for seeyoo only free datasheet http://
- 26 - ; windows media audio 9 professional ; format tag: 0x162 subtype: 00000162-0000-0010-8000-00aa00389b71 [hkey_classes_root\clsid\{caa414f0-c7c3-11d4-a914-0080ad91bd94}\pins\inpu t audio\types\{73647561-0000-0010-8000-00aa00389b71}\{00000162-0000-0010-8000- 00aa00389b71}] ; windows media audio 9 lossless ; format tag: 0x163 subtype: 00000163-0000-0010-8000-00aa00389b71 [hkey_classes_root\clsid\{caa414f0-c7c3-11d4-a914-0080ad91bd94}\pins\inpu t audio\types\{73647561-0000-0010-8000-00aa00389b71}\{00000163-0000-0010-8000- 00aa00389b71}] ; windows media audio 9 voice ; format tag: 0x00a subtype: 0000000a-0000-0010-8000-00aa00389b71 [hkey_classes_root\clsid\{caa414f0-c7c3-11d4-a914-0080ad91bd94}\pins\inpu t audio\types\{73647561-0000-0010-8000-00aa00389b71}\{0000000a-0000-0010-8000- 00aa00389b71}] ;; wma pro [hkey_classes_root\filter\{04a43571-24c5-474c-9504-7a315db89850}] if initdshowfilternames @="sigma designs wmapro decoder" endif [hkey_classes_root\clsid\{04a43571-24c5-474c-9504-7a315db89850}] if initnodshowfilterclassnames ! @="sigma designs wmapro decoder" endif "merit"=dword:00400000 [hkey_classes_root\clsid\{04a43571-24c5-474c-9504-7a315db89850}\inprocse rver32] @="dswmapro.dll" ; sigma designs 8634 wave built-in driver ; ; supports only wave out [hkey_local_machine\dr ivers\builtin\audio] "prefix"="wav" "dll"="wave863x.dll" "index"=dword:1 "order"=dword:1 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; @cesysgen if quartz_image ; smp863x capture source filter ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; [hkey_classes_root\filter\{9a036243-33fa-45c5-9d9d-a7d07c2fc670}] if initdshowfilternames @="smp86xx capture source filter endif [hkey_classes_root\clsid\{9a0 36243-33fa-45c5-9d9d-a7d07c2fc670}] if initnodshowfilterclassnames ! @="smp86xx capture source filter" endif "merit"=dword:00600000 [hkey_classes_root\clsid\{9a036243- 33fa-45c5-9d9d-a7d07c2fc670}\inprocser ver32] @="capsrc863x.dll" [hkey_classes_root\clsid\{9a036243-33f a-45c5-9d9d-a7d07c2fc670}\pins\video output] "direction"=dword:00000001 ;"isrendered"=dword:00000000 "allowedzero"=dword:00000001 for seeyoo only free datasheet http://
- 27 - ;"allowedmany"=dword:0000000 [hkey_classes_root\clsid\{9a036243-33f a-45c5-9d9d-a7d07c2fc670}\pins\audio output] "direction"=dword:00000001 ;"isrendered"=dword:00000000 "allowedzero"=dword:00000001 ;"allowedmany"=dword:0000000 ;mediatype_video\mediasubtype_smp863x_capture_video [hkey_classes_root\clsid\{9a036243-33f a-45c5-9d9d-a7d07c2fc670}\pins\video output\types\{73646976-0000-0010-8000-00aa00389b71}\{c6271d47-809e-4b79-a2a9 -f787e8266760}] ;mediatype_audio\mediasubtype_pcm [hkey_classes_root\clsid\{9a036243-33f a-45c5-9d9d-a7d07c2fc670}\pins\audio output\types\{73647561-0000-0010-8000-00aa00389b71}\{00000001-0000-0010-8000 -00aa00389b71}] ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; sigma designs transport stream splitter for windows ce ;; ;; enter these lines into platform.reg (or any other .reg file) ;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; [hkey_classes_root\filter\{674a6f9f -e8d4-436f-9498-462cbc7f0ddd}] if initdshowfilternames @="sigma designs ts splitter" endif [hkey_classes_root\clsid\{674a6f9f-e8d4-436f-9498-462cbc7f0ddd}] if initnodshowfilterclassnames ! @="sigma designs ts splitter" endif "merit"=dword:00600000 [hkey_classes_root\clsid\{674a6f9f-e8d4-436f-9498-462cbc7f0ddd}\inprocs erver32] @="tsdemux.dll" [hkey_classes_root\clsid\{674a6f9f-e8d4-436f-9498-462cbc7f0ddd}\pins\in put] "direction"=dword:00000000 ;"isrendered"=dword:00000000 "allowedzero"=dword:00000000 ;"allowedmany"=dword:0000000 [hkey_classes_root\clsid\{674a6f9f-e8d4-436f-9498-462cbc7f0ddd}\pins\in put\types\{e436eb83-524f-11ce-9f53-0020af 0ba770}\{00000000-0000-0000-0000-0000 00000000}] [hkey_classes_root\clsid\{674a6f9f-e8d4-436f-9498-462cbc7f0ddd}\pins\in put\types\{e436eb83-524f-11ce-9f53-0020af0ba770}\{e436eb84-524f-11ce-9f53-0020af 0ba770}] [hkey_classes_root\clsid\{674a6f9f-e8d4-436f-9498-462cbc7f0ddd}\pins\in put\types\{e436eb83-524f-11ce-9f53-0020af0ba770}\{e06d8022-db46-11cf-b4d1-00805 f6cbbea}] [hkey_classes_root\clsid\{674a6f9f-e8d4-436f-9498-462cbc7f0ddd}\pins\in put\types\{e436eb83-524f-11ce-9f53-0020af0ba770}\{e06d8023-db46-11cf-b4d1-00805 f6cbbea}] [hkey_classes_root\clsid\{674a6f9f-e8d4-436f-9498-462cbc7f0ddd}\pins\vid eo output] "direction"=dword:00000001 ;"isrendered"=dword:00000000 for seeyoo only free datasheet http://
- 28 - "allowedzero"=dword:00000001 ;"allowedmany"=dword:0000000 [hkey_classes_root\clsid\{674a6f9f-e8d4-436f-9498-462cbc7f0ddd}\pins\vid eo output\types\{73646976-0000-0010-8000-00aa00389b71}\{e06d8026-db46-11cf-b4d1- 00805f6cbbea}] [hkey_classes_root\clsid\{674a6f9f-e8d4-436f-9498-462cbc7f0ddd}\pins\au dio output] "direction"=dword:00000001 ;"isrendered"=dword:00000000 "allowedzero"=dword:00000001 ;"allowedmany"=dword:0000000 [hkey_classes_root\clsid\{674a6f9f-e8d4-436f-9498-462cbc7f0ddd}\pins\au dio output\types\{73647561-0000-0010-8000-00aa00389b71}\{00000050-0000-0010-8000 -00aa00389b71}] ;;;;;;;;;; hwdemux863x.dll ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; @cesysgen if quartz_image ; sigma designs hw demux filter ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; [hkey_classes_root\filter\{bfc6c826-4b93-4a66-8f58-ed0b7047311c}] if initdshowfilternames @="sigma designs hw ts demux" endif [hkey_classes_root\clsid\{bfc6c826-4b93-4a66-8f58-ed0b7047311c}] if initnodshowfilterclassnames ! @="sigma designs hw ts demux" endif "merit"=dword:00200000 ; merit is set to do_not_use - your application must manually insert this filter [hkey_classes_root\clsid\{bfc6c826-4b 93-4a66-8f58-ed0b7047311c}\inprocser ver32] @="hwdemux863x.dll" [hkey_classes_root\clsid\{bfc6c826-4b93-4a66-8f58-ed0b7047311c}\pins\input ] "direction"=dword:00000000 ;"isrendered"=dword:00000000 "allowedzero"=dword:00000000 ;"allowedmany"=dword:0000000 [hkey_classes_root\clsid\{bfc6c826-4b 93-4a66-8f58-ed0b7047311c}\pins\outp utvpayload] "direction"=dword:00000001 ;"isrendered"=dword:00000000 "allowedzero"=dword:00000001 ;"allowedmany"=dword:0000000 [hkey_classes_root\clsid\{bfc6c826-4b 93-4a66-8f58-ed0b7047311c}\pins\outp utapayload] "direction"=dword:00000001 ;"isrendered"=dword:00000000 "allowedzero"=dword:00000001 ;"allowedmany"=dword:0000000 [hkey_classes_root\clsid\{bfc6c826-4b93-4a66-8f58-ed0b7047311c}\pins\input \types\{e436eb83-524f-11ce-9f53-0020af0ba770}\{00000000-0000-0000-0000-0000000 00000}] ;mediatype_audio\mediasubtype_dolby_ac3 for seeyoo only free datasheet http://
- 29 - [hkey_classes_root\clsid\{bfc6c826-4b 93-4a66-8f58-ed0b7047311c}\pins\outp utapayload\types\{73647561-0000-0010-8000-00aa00389b71}\{e06d802c-db46-11cf-b 4d1-00805f6cbbea}] ;mediatype_video\media subtype_mpeg2_video [hkey_classes_root\clsid\{bfc6c826-4b 93-4a66-8f58-ed0b7047311c}\pins\outp utvpayload\types\{73646976-0000-0010-8000-00aa00389b71}\{e06d8026-db46-11cf-b 4d1-00805f6cbbea}] find the pflash device registry line. #include "$(_targetplatroot)\src\ drivers\pflash\pflash\pflash.reg" #include "$(_targetplatroot)\src\dr ivers\pflash\pflash2\pflash2.reg" disable it as follow sample. ; #include "$(_targetplatroot)\src\d rivers\pflash\pflash\pflash.reg" ; #include "$(_targetplatroot)\src\d rivers\pflash\pflash2\pflash2.reg" close and save the platform.reg file. 9. run ?build os----make run-time image? menu command to make a new nk.bin file. for seeyoo only free datasheet http://
- 30 - c) download the nk.bin to SMP8634 board link all SMP8634 ethernet ports and platform builder pc to a network with ethernet cable, link the SMP8634 serial debug card to pc serial com1 port with a serial cable, set the com1 port parameter as follow sample(pic28). boot up the SMP8634 board. 1. set the ce bootloader when the serial output window(termina l application) of pc will shows the ce loader's bootup information , press any key and get the main menu list. a. use ?[5] network settings? to set the bootloader ip address the ip address must be same network ip mask with your pc ip. example, pc ip setting, ip: 192.168.1.51 mask: 255.255.255.0 bootload ip setting, ip: 192.168.1.54 mask: 255.255.255.0 for seeyoo only free datasheet http://
- 31 - b. use "[3] select boot device? to set ?rtl rtl8139 ?? to be boot device. c. use ?[4] select debug device? to set ?rtl rtl8139 ?? to be debug device. d. use ?[6] save settings? to save all settings, use ?[0] exit and continue? to continue boot up SMP8634 board 2. set the platform builder use "target---connectivity options... " menu command open the "target device connectivity options" dialog, for seeyoo only free datasheet http://
- 32 - select "download" and "transport" combobox to be"ethernet" select "debugger" combobox to "kdstub" click first "setting" button to open "et hernet download settings" dialog, select the active device(you can see a name as "em8630*****" and the ip address that you set for SMP8634) to be boot device. apply and close all setting dialog, 3. use "target----attach device" menu command to download you nk.bin to the SMP8634 board. d) make the ship mode SMP8634 ce nk.b in and boot it up without platform builder if you want to run the ce system specialty, please use the ship mode to build the nk.bin. 1. make s ship mode building a. use ?build os----configurations?? menu command to open the ?configurations? dialog b. click ?add?? button to open ?add platform configuration? dialog, select ?copy settings from:? combobox to ?smp863x:mipsii_release?, type ?ship? in ?configuration:? edit box, click ?ok? button to close ?add platform configuration? dialog, click ?close? button to close ?configurations? dialog. c. use ?build os---- set active configuration?? menu command to open ?set active configuration? dialog, select ?ship? in ?configurations:? list, click ?ok? button to close dialog and set current configuration to ?ship? mode for seeyoo only free datasheet http://
- 33 - d. use ?platform----settings?.? menu command to open the ?platform settings? dialog, turn to ?build options? page set as pic38 sample shows. e. copy all multimedia dll files to "\wince500\pbworkspace\(your ce project name)\reldir\ship" ce project directory g. modify config.bib, platform.bib, platform.reg file and make the nk.bin file h. copy the nk.bin to the first fat32 partition of hdd device or pflash2 storage device 2. boot up nk.bin from primary master hdd in main menu of ce boot loader in serial output window(terminal application) of pc, use "[3] select boot device? to set ?[5]ide bm 0? to be boot device. ce boot loader can loader nk.bin from the first fat32 partition of harddisk only. 3. boot up nk.bin from pflash a. if you have copy the nk.bin file to pflash2 storage device in main menu of ce boot loader, use "[3] select boot device? to set ?[5]pflash 1? to be boot device. b. if you have write the nk.bin file to the address of pflash, for example, i write the nk.bin to boot flash(pflash 0) from 0x400000 address for seeyoo only free datasheet http://
- 34 - in main menu of ce boot loader, select ?[7] smp863x setting? get the SMP8634 settings menu select ?[2]flash memory?, get the flash memory menu select ?[5]select nk.bin flash?, set flash index to 0x0 select ?[4]edit nk.bin flash start?, set nk.bin start flash address to 0x400000 for seeyoo only free datasheet http://
- 35 - in main menu of ce boot loader, use "[3] select boot device? to set ?[2]flash memory? to be boot device. c. use ?[6] save settings? to save a ll settings, use ?[0] exit and continue? to continue boot up SMP8634 board 4. write the nk.bin file to boot flash(pflash 0) follow sample code shows how to write a file to pflash, it?s so dangerous for your boot flash, so please use it carefully. the sample function is based on setxenv demo, all cfi command is defined in setxenv demo. #define bootaddress 0x0 #define logoaddress 0x200000 #define cenkaddress 0x400000 static int g_bwriteok=1; static rmuint8 p_data[128*1024]; static rmuint8 cfi_data[0x100]; static int flash8bit = 0; ///////////////////////////////////////////////////////////////////////////////////////////////////// /// rmint32 cfi_query_first_sector_length (void) { rmuint32 n1, l1; n1 = cfi_data[0x5a]+1; l1 = ((rmuint16)cfi_data[0x5c] << 0) | ((rmuint16)cfi_data[0x5e] << 8) | ((rmuint16)cfi_data[0x60] << 16); l1 &= ~1; return (rmint32)l1; } rmint32 cfi_query_parameters (rmuint32 flashbaseaddress) { retailmsg (1, (text("cfi_query_parameters begin !\n"))); memset (cfi_data, 0, sizeof (cfi_data)); // wait a small bit sleep (100); // query command *((volatile rmuint8 *)(0xaa + flashbaseaddress)) = 0x98; cfi_data[0x20] = *((volatile rmuint8 *)(0x20 + flashbaseaddress)); cfi_data[0x22] = *((volatile rmuint8 *)(0x22 + flashbaseaddress)); cfi_data[0x24] = *((volatile rmuint8 *)(0x24 + flashbaseaddress)); if (cfi_data[0x20] == 'q' && cfi_data[0x22] == 'r' && cfi_data[0x24] == 'y') for seeyoo only free datasheet http://
- 36 - { retailmsg (1, (text("it is a 8 bit flash\n"))); flash8bit = 1; } else { // try 16 bit access // query command *((volatile rmuint16 *)(0xaa + flashbaseaddress)) = 0x98; cfi_data[0x20] = *((volatile rmuint8 *)(0x20 + flashbaseaddress)); cfi_data[0x22] = *((volatile rmuint8 *)(0x22 + flashbaseaddress)); cfi_data[0x24] = *((volatile rmuint8 *)(0x24 + flashbaseaddress)); flash8bit = 0; retailmsg (1, (text("it is a 16 bit flash\n"))); } if ((cfi_data[0x20] != 'q') || (cfi_data[0x22] != 'r') || (cfi_data[0x24] != 'y')) { // no flash found? return 0; } cfi_data[0x4e] = *((volatile rmuint8 *)(0x4e + flashbaseaddress)); retailmsg(1, (text("device size: %d\n"),1 << cfi_data[0x4e])); cfi_data[0x58] = *((volatile rmuint8 *)(0x58 + flashbaseaddress)); retailmsg(1, (text("number of regions: %d\n"),cfi_data[0x58])); cfi_data[0x5a] = *((volatile rmuint8 *)(0x5a + flashbaseaddress)); cfi_data[0x5c] = *((volatile rmuint8 *)(0x5c + flashbaseaddress)); cfi_data[0x5e] = *((volatile rmuint8 *)(0x5e + flashbaseaddress)); cfi_data[0x60] = *((volatile rmuint8 *)(0x60 + flashbaseaddress)); if((rmuint16)cfi_data[0x5c] == 0x1) { retailmsg(1, (text("region 1: %d * 0x%04x\n"),(cfi_data[0x5a]+1) * ((rmuint16)cfi_data[0x5c] + 1), ((rmuint16)cfi_data[0x5e] << 8) | ((rmuint16)cfi_data[0x60] << 16))); } else { retailmsg(1, (text("region 1: %d * 0x%04x\n"),cfi_data[0x5a]+1,((rmuint16)cfi_data[0x5c] << 0) | ((rmuint16)cfi_data[0x5e] << 8) | ((rmuint16)cfi_data[0x60] << 16))); } cfi_data[0x62] = *((volatile rmuint8 *)(0x62 + flashbaseaddress)); cfi_data[0x64] = *((volatile rmuint8 *)(0x64 + flashbaseaddress)); cfi_data[0x66] = *((volatile rmuint8 *)(0x66 + flashbaseaddress)); cfi_data[0x68] = *((volatile rmuint8 *)(0x68 + flashbaseaddress)); retailmsg(1, (text("region 2: %d * 0x%04x\n"),cfi_data[0x62]+1,((rmuint16)cfi_data[0x64] << 0) | ((rmuint16)cfi_data[0x66] << 8) | ((rmuint16)cfi_data[0x68] << 16))); cfi_data[0x6a] = *((volatile rmuint8 *)(0x6a + flashbaseaddress)); cfi_data[0x6c] = *((volatile rmuint8 *)(0x6c + flashbaseaddress)); cfi_data[0x6e] = *((volatile rmuint8 *)(0x6e + flashbaseaddress)); cfi_data[0x70] = *((volatile rmuint8 *)(0x70 + flashbaseaddress)); retailmsg(1, (text("region 3: %d * 0x%04x\n"),cfi_data[0x6a]+1,((rmuint16)cfi_data[0x6c] << 16) | ((rmuint16)cfi_data[0x6e] << 8) | ((rmuint16)cfi_data[0x70] << 0))); cfi_data[0x72] = *((volatile rmuint8 *)(0x72 + flashbaseaddress)); cfi_data[0x74] = *((volatile rmuint8 *)(0x74 + flashbaseaddress)); cfi_data[0x76] = *((volatile rmuint8 *)(0x76 + flashbaseaddress)); cfi_data[0x78] = *((volatile rmuint8 *)(0x78 + flashbaseaddress)); retailmsg(1, (text("region 4: %d * 0x%04x\n"), cfi_data[0x72]+1,((rmuint16)cfi_data[0x74] << 0) | ((rmuint16)cfi_data[0x76] << 8) | ((rmuint16)cfi_data[0x78] << 16))); // reset command for seeyoo only free datasheet http://
- 37 - if (flash8bit) { *((volatile rmuint8 *)(flashbaseaddress)) = 0xf0; } else { *((volatile rmuint16 *)(flashbaseaddress)) = 0xf0; } sleep (1000); retailmsg (1, (text("cfi_query_parameters end !\n"))); return ((rmint32)1 << cfi_data[0x4e]); } void cfi_erase (rmuint32 flashbaseaddress, rmuint32 addr, rmint32 len) { retailmsg(1, (text("cfi_erase begin !\n"))); rmuint8 tmp0, tmp1; rmuint32 i, s; rmuint32 n1, n2, n3, n4; rmuint32 l1, l2, l3, l4; rmuint32 start1, start2, start3, start4; g_bwriteok=0; if((rmuint16)cfi_data[0x5c] == 0x1) { n1 = (cfi_data[0x5a]+1) * ((rmuint16)cfi_data[0x5c] + 1); } else { n1 = cfi_data[0x5a]+1; } l1 = ((rmuint16)cfi_data[0x5c] << 0) | ((rmuint16)cfi_data[0x5e] << 8) | ((rmuint16)cfi_data[0x60] << 16); l1 &= ~1; start1 = 0; n2 = cfi_data[0x62]+1; l2 = ((rmuint16)cfi_data[0x64] << 0) | ((rmuint16)cfi_data[0x66] << 8) | ((rmuint16)cfi_data[0x68] << 16); l2 &= ~1; start2 = start1 + n1 * l1; n3 = cfi_data[0x6a]+1; l3 = ((rmuint16)cfi_data[0x6c] << 16) | ((rmuint16)cfi_data[0x6e] << 8) | ((rmuint16)cfi_data[0x70] << 0); l3 &= ~1; start3 = start2 + n2 * l2; n4 = cfi_data[0x72]+1; l4 = ((rmuint16)cfi_data[0x74] << 0) | ((rmuint16)cfi_data[0x76] << 8) | ((rmuint16)cfi_data[0x78] << 16); l4 &= ~1; start4 = start3 + n3 * l3; if ((addr >= start1) && (addr < start2) && l1) { s = start1; if(addr > s) for seeyoo only free datasheet http://
- 38 - { s=addr; } // region 1 for (i=0; i= start2) && (addr < start3) && l2) { s = start2; // region 2 for (i=0; i - 39 - *((volatile rmuint16 *)(0x554 + flashbaseaddress)) = 0x55; *((volatile rmuint16 *)(s + flashbaseaddress)) = 0x30; } // wait for the erase to complete while (1) { tmp0 = *((volatile rmuint8 *)(s + flashbaseaddress)); tmp1 = *((volatile rmuint8 *)(s + flashbaseaddress)); if ((tmp0 & 0x40) == (tmp1 & 0x40)) { if (tmp0 & 0x80) break; } } s += l2; addr = s; len -= l2; if (len <= 0) break; } } retailmsg(1, (text("region2 done.\n"))); if (len <= 0) return; if ((addr >= start3) && (addr < start4) && l3) { s = start3; // region 3 for (i=0; i - 40 - retailmsg(1, (text("region3 done.\n"))); if (len <= 0) return; if ((addr >= start4) && (l4)) { s = start4; // region 4 for (i=0; i - 41 - // unlock bypass *((volatile rmuint8 *)(0xaaa + flashbaseaddress)) = 0xaa; sleep (100); *((volatile rmuint8 *)(0x555 + flashbaseaddress)) = 0x55; sleep (100); *((volatile rmuint8 *)(0xaaa + flashbaseaddress)) = 0x20; sleep (100); // unlock bypass *((volatile rmuint8 *)(0xaaa + flashbaseaddress)) = 0xaa; sleep (100); *((volatile rmuint8 *)(0x555 + flashbaseaddress)) = 0x55; sleep (100); *((volatile rmuint8 *)(0xaaa + flashbaseaddress)) = 0x20; sleep (100); } else { // unlock bypass *((volatile rmuint16 *)(0xaaa + flashbaseaddress)) = 0xaa; sleep (100); *((volatile rmuint16 *)(0x554 + flashbaseaddress)) = 0x55; sleep (100); *((volatile rmuint16 *)(0xaaa + flashbaseaddress)) = 0x20; sleep (100); // unlock bypass *((volatile rmuint16 *)(0xaaa + flashbaseaddress)) = 0xaa; sleep (100); *((volatile rmuint16 *)(0x554 + flashbaseaddress)) = 0x55; sleep (100); *((volatile rmuint16 *)(0xaaa + flashbaseaddress)) = 0x20; sleep (100); } for (i=addr; i<(addr + length); i++) { if ((i % 0x10000) == 0) { retailmsg (1, (text("writing address 0x%08lx\r\n"), i)); fflush (stdout); } // unlock bypass program if (flash8bit) { *((volatile rmuint8 *)(flashbaseaddress)) = 0xa0; *((volatile rmuint8 *)(i + flashbaseaddress)) = *p; while (*((volatile rmuint8 *)(i + flashbaseaddress)) != *p); p++; } else { rmuint16 data = ((rmuint16)p[0]) | (((rmuint16)p[1]) << 8); *((volatile rmuint16 *)(flashbaseaddress)) = 0xa0; *((volatile rmuint16 *)(i + flashbaseaddress)) = data; while (*((volatile rmuint16 *)(i + flashbaseaddress)) != data); p++; p++; i++; } } // reset command if (flash8bit) { *((volatile rmuint8 *)(flashbaseaddress)) = 0xf0; } else for seeyoo only free datasheet http://
- 42 - { *((volatile rmuint16 *)(flashbaseaddress)) = 0xf0; } sleep (1000); g_bwriteok=1; retailmsg(1, (text("cfi_write end !\n"))); } /////////////////////////////////////////////////////////////////////// #define host_interface_base_address ((rmuint32)oalpatoua(0x20000)) #define pbi_base_address (host_interface_base_address + 0x800) #define pbi_timing0 ((volatile rmuint32 *)(pbi_base_address + 0x00)) #define pbi_timing1 ((volatile rmuint32 *)(pbi_base_address + 0x04)) #define pbi_timing2 ((volatile rmuint32 *)(pbi_base_address + 0x08)) #define pbi_timing3 ((volatile rmuint32 *)(pbi_base_address + 0x0c)) #define pbi_timing4 ((volatile rmuint32 *)(pbi_base_address + 0x10)) #define pbi_timing5 ((volatile rmuint32 *)(pbi_base_address + 0x14)) #define pbi_default_timing ((volatil e rmuint32 *)(pbi_base_address + 0x18)) #define pbi_use_timing0 ((volatile rmuint32 *)(pbi_base_address + 0x1c)) #define pbi_use_timing1 ((volatile rmuint32 *)(pbi_base_address + 0x20)) #define pbi_use_timing2 ((volatile rmuint32 *)(pbi_base_address + 0x24)) #define pbi_use_timing3 ((volatile rmuint32 *)(pbi_base_address + 0x28)) #define pbi_use_timing4 ((volatile rmuint32 *)(pbi_base_address + 0x2c)) #define pbi_use_timing5 ((volatile rmuint32 *)(pbi_base_address + 0x30)) #define pbi_cs_config ((volatile rmuint32 *)(pbi_base_address + 0x34)) void setup_pbi (void) { rmuint32 pbi_timing0 = *pbi_timing0; rmuint32 pbi_timing1 = *pbi_timing1; rmuint32 pbi_timing2 = *pbi_timing2; rmuint32 pbi_timing3 = *pbi_timing3; rmuint32 pbi_timing4 = *pbi_timing4; rmuint32 pbi_timing5 = *pbi_timing5; rmuint32 pbi_use_timing0 = *pbi_use_timing0; rmuint32 pbi_use_timing1 = *pbi_use_timing1; rmuint32 pbi_use_timing2 = *pbi_use_timing2; rmuint32 pbi_use_timing3 = *pbi_use_timing3; rmuint32 pbi_use_timing4 = *pbi_use_timing4; rmuint32 pbi_use_timing5 = *pbi_use_timing5; rmuint32 pbi_default_timing = *pbi_default_timing; rmuint32 pbi_cs_config = *pbi_cs_config; // configure cs2, cs3 to be 16bit, packed, non-ide, address/data lines not muxed, use iordy pbi_cs_config &= ~0xccccc; pbi_cs_config |= 0x000c0; *pbi_cs_config = pbi_cs_config; // what is the proper value for flash memory? rmuint32 ta, tb, tc, td, timing, sysclk; sysclk = 3003; // xxx hard coded to 300mhz ta = sysclk * 0 / 10000 + 1; tb = sysclk * 0 / 10000 + 1; tc = sysclk * 50 / 10000 + 1; td = sysclk * 70 / 10000 + 1; // on the safe side? ta = sysclk * 200 / 10000 + 1; tb = sysclk * 200 / 10000 + 1; tc = sysclk * 200 / 10000 + 1; td = sysclk * 200 / 10000 + 1; timing = (ta << 0) | (tb << 8) | (tc << 16) | (td << 24); *pbi_default_timing = timing; for seeyoo only free datasheet http://
- 43 - } void g_writepflashinfo2(dword nadd ress,lptstr sfilename,hwnd hwnd) { rmuint32 flashbaseaddress; rmuint32 flashaddress; rmuint32 flashsize; rmuint32 dfilesize=0; char chtemp[4],chfilename[256]; dword ntemp; bool b=false; for(ntemp=0;ntemp < (dword)lstrlen(sfilename);ntemp++) { sprintf(chtemp,"%c",sfilename[ntemp]); if(ntemp == 0) { strcpy(chfilename,chtemp); } else { strcat(chfilename,chtemp); } } setup_pbi (); // allocate 64mb of virtual space to map the flash into volatile rmuint8 *pvirtualaddress = (volatile rmuint8 *)virtualalloc (0, 1024*1024*64, mem_reserve, page_noaccess); if (pvirtualaddress != null) { // cs2 @ 0x48000000 // use the mmu to map 0x48000000 to this memory // virtualcopy (in wince 5.0?) has a limit of 32mb b = virtualcopy ((pvoid)pvirtualaddress, (pvoid)(0x48000000 >> 8), 1024*1024*32, page_physical | page_readwrite | page_nocache); assert (b == true); if (b == false) { virtualfree ((pvoid)pvirtualaddress, 0, mem_release); return; } // copy the next 32mb b = virtualcopy ((pvoid)(pvirtualaddress + 1024*1024*32), (pvoid)(0x4a000000 >> 8), 1024*1024*32, page_physical | page_readwrite | page_nocache); assert (b == true); if (b == false) { virtualfree ((pvoid)pvirtualaddress, 0, mem_release); return; } } else { assert (0); retailmsg(1, (text("can?t allocate 64m virtual space!\n"))); return; } flashbaseaddress = (rmuint32)pvirtualaddress; retailmsg(1, (text("flash base addre ss is %08lx:\n"),flashbaseaddress)); retailmsg(1, (text("cfi_query_parameters @ %08lx:\n"),0x48000000)); flashsize = cfi_query_parameters (flashbaseaddress); retailmsg(1, (text("flash size is %08lx:\n"),flashsize)); for seeyoo only free datasheet http://
- 44 - switch(naddress) { case 0: flashaddress=(rmuint32)pvirtualaddress + cenkaddress; break; case 1: flashaddress=(rmuint32)pvirtualaddress + bootaddress; break; case 2: default: retailmsg(1, (text("can't write this address in this version!"))); virtualfree ((pvoid)pvirtualaddress, 0, mem_release); return; } retailmsg(1, (text("write flash address from @ %08lx:\n"),flashaddress)); if (flashsize) { file *f = fopen(chfilename, "rb"); //open the bin file if(f == null) { retailmsg(1, (text("can't open the file!\n"))); virtualfree ((pvoid)pvirtualaddress, 0, mem_release); return; } fseek( f, 0, seek_end); //seek to end and get the file size dfilesize=ftell(f); retailmsg(1, (text("file size is %d bytes!\n"),dfilesize)); fseek( f, 0, seek_set); //seek to the begin rmint32 sectorlength; sectorlength = cfi_query_first_sector_length (); retailmsg(1, (text("fist regions' sector length is %08lx:\n"),sectorlength)); //128k for each sector dprogess_old=0; dprogess=0; numread=0; readcounts=0; while( !feof( f)) { if(g_bwriteok == 1) { retailmsg(1, (text("begin read file...!\n"))); numread = fread( p_ data, 1, sectorlength, f ); if(numread) { retailmsg(1, (text("read one sector file... ok!\n"))); //check the update progress readcounts=readcounts + numread; dprogess=(readcounts / (dfilesize / 100)); retailmsg(1, (text("r ead fiile %d %%\n"),dprogess)); memcpy (p_data + numread, (rmuint8 *)flashaddress + numread, sectorlength - numread); retailmsg(1, (text("memcpy ok!\n"))); switch(naddress) { case 0://nk.bin 0x400000 retailmsg(1, (text("write nk.bin!\n"))); //flashaddress - (rmuint32)pvirtualaddress cfi_erase (flashbaseaddress, (flashaddress - (rmuint32)pvirtualaddress), sectorlength); retailmsg(1, (text("erase ok!\n"))); for seeyoo only free datasheet http://
- 45 - cfi_write (flashbaseaddress, (flashaddress - (rmuint32)pvirtualaddress), sectorlength, p_data); break; case 1://bootloader 0x0 retailmsg(1, (text("write bootloader!\n"))); cfi_erase (flashbaseaddress, (flashaddress - (rmuint32)pvirtualaddress), sectorlength); retailmsg(1, (text("erase ok!\n"))); cfi_erase (flashbaseaddress, (flashaddress - (rmuint32)pvirtualaddress), sectorlength); break; case 2: break; case 3: break; case 4: break; } flashaddress=flashaddress + numread; retailmsg(1, (text("next flash address: @ %08lx\n"),flashaddress)); sectorlength = cfi_query_first_sector_length (); retailmsg(1, (text("fist regions' sector length is %08lx:\n"),sectorlength)); //128k for each sector if(dprogess_old != dprogess) { dprogess_old=dprogess; } } } } retailmsg(1, (text("read all file end!\n"))); fclose (f); } virtualfree ((pvoid)pvirtualaddress, 0, mem_release); } 5.run ship mode nk.bin on a vantage SMP8634 board (this information is about vantage SMP8634 board only, if you use envision SMP8634 board, you can ignore it.) a. if you use a vantage SMP8634 boar d to be developed platform, please make sure you have a mini pci rtl8100 ethernet card to be debug and boot device. b. SMP8634 eth device can?t work with vmini mode, so it can?t be a boot device or a debug device. c. with the default setting for vantage board, the debug device is null, if you set SMP8634 eth to be the debug device, wince system will not load it as a ethernet device, so you must set it back to null. d. in default ce boot loader menu, you can?t set the debug device to null, you must do as follow steps, 1) add a rtl8100 mini pci ethernet card to vantage board, set it to be debug device in ce boot loader main menu, save the setting 2) remove the mini pci ethernet card from vantage board, reboot the board, you will found the debug device is set to null e. the mini pci rtl8100 ethernet is very important for vantage SMP8634 development platform. for seeyoo only free datasheet http://
- 46 - 4) how to make application for SMP8634 wince system a) made the sdk of current ce project 1. use ?platform----sdk----new sdk?? menu command to open the ?sdk wizard? dialog, use the wizard make a sdk fo r current ce project step by step for seeyoo only free datasheet http://
- 47 - 2. use ?platform----sdk----build sdk?? menu command to open the ?sdk wizard? dialog, use the wizard to build the sdk b) install the sdk to pc you can get the sdk in "\wince500\pbworkspace\(your ce project name)\sdk" directory, install it to your pc system. c) use evc++4.0 with sp4 to make application fyi microsoft msdn for seeyoo only free datasheet http://
- 48 - 5) how to test the SMP8634 wince feature a) SMP8634 eth 1. set the ip address for SMP8634 eth device open the platform.reg file of ce project, add follow settings before ? endif bsp_smp863x_mac86xx ? line [hkey_local_machine\comm\mac86xx1\parms\tcpip] "enabledhcp"=dword:0 ;for 060920_kb924785 "autotimeout"=dword:3e8 "defaultgateway"="192.168.1.93" "llinterface"="" "usezerobroadcast"=dword:0 "ipaddress"="192.168.1.250" "subnetmask"="255.255.255.0" "dns"=multi_sz:"202.96.128.166","202.96.134.133" 2. SMP8634 eth device speed ftp download: 1440 k bytes/s http get buffer: 42m bits/s 3. set mac address a. for bootloader the mac address is defined in smp863x\src\libs\board_callbacks\sigma_stb.c file, as follow value byte gbpermanentmacaddress[6] = { 0x10,0x00,0x00,0x04,0x05,0x06 }; or build with the void bclbk_getmas_address(uint16 mac[3]) function if you change the value or function , please rebuild bootloader , and update the boot.nb0 b. for smp863x mac device of kernel modify the follow function in smp863x_ndis.c, rebuild mac driver project and kernel ndis_status smp863x_eth_initialize ( out pndis_status openerrorstatus, out puint selectedmediumindex, in pndis_medium mediumarray, in uint mediumarraysize, in ndis_handle miniportadapterhandle, in ndis_handle wrapperconfigurationcontext ) { ulong i; ndis_status status; psmp863x_adapter adapter; pndis_packet packet; pndis_buffer ndisbuffer; ulong va; dword hi_mac, low_mac; debugmsg (1, (text("smp863x_eth_initialize\r\n"))); // search for the medium type (802.3) in the given array. // support 802.3 only for (i=0; i - 49 - return (status); } ndiszeromemory (adapt er, sizeof(smp863x_adapter)); adapter->miniportadapterhandle = miniportadapterhandle; ndismsetattributesex (adapter->miniportadapterhandle, (ndis_handle)adapter, 0, ndis_attribute_bus_master | ndis_attribute_deserialize | /*ndis_attribute_always_gives_rx_packet_ownership |*/ ndis_attribute_no_halt_on_suspend, 0 ); initializecriticalsection (&adapter->lock); adapter->nummulticastaddressesinuse = -1; // disable interrupts em86xx_write_reg (em86xx_ier_reg, 0); // allocate memory for rx descriptors ndismallocatesharedmemory ( adapter->miniportadapterhandle, n_rx_desc * sizeof (em86xx_desc), false, &adapter->prxdesc, &adapter->physaddrofrxdesc); retailmsg ((adapter->prxdesc == 0), (text("mac863x: ndismallocatesharedmemory (rxdesc) failed!\r\n"))); // allocate memory for rx buffers ndismallocatesharedmemory ( adapter->miniportadapterhandle, n_rx_desc * rx_buf_size_per_desc, false, &adapter->prxbuffer, &adapter->physaddrrxbuffer); retailmsg ((adapter->prxbuffer == 0), (text("mac863x: ndismallocatesharedmemory (rxbuffer) failed!\r\n"))); // allocate memory for tx descriptors ndismallocatesharedmemory ( adapter->miniportadapterhandle, n_tx_desc * sizeof (em86xx_desc), false, &adapter->ptxdesc, &adapter->physaddroftxdesc); retailmsg ((adapter->ptxdesc == 0), (text("mac863x: ndismallocatesharedmemory (txdesc) failed!\r\n"))); // allocate memory for tx buffers ndismallocatesharedmemory ( adapter->miniportadapterhandle, n_tx_desc * tx_buf_size_per_desc, false, &adapter->ptxbuffer, &adapter->physaddrtxbuffer); retailmsg ((adapter->ptxbuffer == 0), (text("mac863x: ndismallocatesharedmemory (txbuffer) failed!\r\n"))); // use ndisgetphysicaladdresslow to get the lower 32 bits of the physical address // allocate memory for rx packets ndisallocatepacketpool (&status, &adapter->rxpacketpool, n_rx_desc, protocol_reserved_size_in_packet); retailmsg ((status != ndis_status_success), (text("mac863x: ndisallocatepacketpool (rxpacketpool) failed!\r\n"))); assert (status == ndis_status_success); ndisallocatebufferpool (&status, &adapter->rxbufferpool, n_rx_desc); for seeyoo only free datasheet http://
- 50 - retailmsg ((status != ndis_status_success), (text("mac863x: ndisallocatebufferpool (rxbufferpool) failed!\r\n"))); assert (status == ndis_status_success); va = (ulong)adapter->prxbuffer; for (i=0; irxpacketpool); retailmsg ((status != ndis_status_success), (text("mac863x: ndisallocatepacket (rxpacketpool) failed!\r\n"))); assert (status == ndis_status_success); ndis_set_packet_header_size (packet, 14); ndisallocatebuffer (&status, &n disbuffer, adapter->rxbufferpool, (pvoid)va, rx_buf_size_per_desc); retailmsg ((status != ndis_status_success), (text("mac863x: ndisallocatebuffer (rxpacketpool) failed!\r\n"))); assert (status == ndis_status_success); va += rx_buf_size_per_desc; ndischainbufferatfront (packet, ndisbuffer); adapter->rxpackets[i] = packet; } // initialize the descriptors em86xx_eth_reset_desc (adapter); hi_mac = em86xx_read_reg (em86xx_macahr_reg); low_mac = em86xx_read_reg (em86xx_macalr_reg); retailmsg (1, (text("mac863x: hi_mac = %08lx, low_mac = %08lx\r\n"), hi_mac, low_mac)); if (((hi_mac & 0xffff) == 0xffffffff) || (low_mac == 0xffffffff)) { // here is the preferred method to get a mac address // // sigma designs id is 00-16-e8 // the last 48 bits we get from the serial number of the chip // the serial number is found by querying xos // // use sigma mac address // use the rxbuffer to get the serial number #define xrpc_id_getserial 0 /* xrpc_header_block *pb = (xrpc_header_block *)adapter->prxbuffer; dword base_addr = (dword)ndisgetphysicaladdresslow (adapter->physaddrrxbuffer); pb->xrpcid = xrpc_id_getserial; retailmsg (1, (text("base_addr = %d\r\n"), base_addr)); //mike*/ xrpc_header_block *pb = (xrpc_header_block *)adapter->prxbuffer; dword base_addr = 0; base_addr = (dword)ndisgetphysicaladdresslow (adapter->physaddrrxbuffer); retailmsg (1, (text("base_addr = %d\r\n"), base_addr)); //mike pb->xrpcid = xrpc_id_getserial; pb->param0 = 0; pb->param1 = 0; pb->param2 = 0; pb->param3 = 0; pb->param4 = 0; pb->headerandblocksize = sizeof(xrpc_header_block); if (do_xrpc (0, base_addr)) { for seeyoo only free datasheet http://
- 51 - retailmsg (1, (text("mac863x: serial# = %08lx%08lx%08lx%08lx\r\n"), pb->param3, pb->param2, pb->param1, pb->param0)); adapter->currentaddress[3] = adapter->permanentaddress[3] = (byte)(pb->param3 >> 16); adapter->currentaddress[4] = adapter->permanentaddress[4] = (byte)(pb->param3 >> 8); adapter->currentaddress[5] = adapter->permanentaddress[5] = (byte)(pb->param3 >> 0); } else { retailmsg (1, (text("mac863x: xrpc_id_getserial failed!\r\n"))); adapter->currentaddress[3] = adapter->permanentaddress[3] = 0x00; adapter->currentaddress[4] = adapter->permanentaddress[4] = 0x04; adapter->currentaddress[5] = adapter->permanentaddress[5] = 0x10; } adapter->currentaddress[2] = adapter->permanentaddress[2] = 0xe8; adapter->currentaddress[1] = adapter->permanentaddress[1] = 0x16; adapter->currentaddress[0] = adapter->permanentaddress[0] = 0x00; retailmsg (1, (text("mac863x: using sigma mac address: %02x-%02x-%02x-%02x-%02x-%02x\r\n"), (byte)adapter->currentaddress[0], (byte)adapter->currentaddress[1], (byte)adapter->currentaddress[2], (byte)adapter->currentaddress[3], (byte)adapter->currentaddress[4], (byte)adapter->currentaddress[5] )); } else { retailmsg (1, (text("mac863x: using pre-programmed mac address: %02x-%02x-%02x-%02x-%02x-%02x\r\n"), (byte)(hi_mac >> 8), (byte)(hi_mac), (byte)(low_mac >> 24), (byte)(low_mac >> 16), (byte)(low_mac >> 8), (byte)(low_mac) )); // use the one already programmed adapter->currentaddress[0] = adapter->permanentaddress[0] = (byte)(low_mac); adapter->currentaddress[1] = adapter->permanentaddress[1] = (byte)(low_mac >> 8); adapter->currentaddress[2] = adapter->permanentaddress[2] = (byte)(low_mac >> 16); adapter->currentaddress[3] = adapter->permanentaddress[3] = (byte)(low_mac >> 24); adapter->currentaddress[4] = adapter->permanentaddress[4] = (byte)(hi_mac); adapter->currentaddress[5] = adapter->permanentaddress[5] = (byte)(hi_mac >> 8); } // initialize nic em86xx_eth_hw_init (adapter); // hook interrupt status = ndismregisterinterrupt ( &adapter->interrupt, adapter->miniportadapterhandle, for seeyoo only free datasheet http://
- 52 - 38, 38, true, // requestisr false, // sharedinterrupt ndisinterruptlevelsensitive ); assert (status == ndis_status_success); // enable interrupts em86xx_write_reg (em86xx_ier_reg, eth_irq_flags); // check link status if (phy_is_connected ((void *)adapter)) { adapter->linkconnection = ndis_status_media_connect; } else { adapter->linkconnection = ndis_status_media_disconnect; } ndisinitializetimer (&adapter->timer, smp863x_timer, adapter); ndissettimer (&adapter->timer, 1000); #if 0 adapter->debugthread = createthread ( 0, 0, (lpthread_start_routine)ethdebugthread, (lpvoid)adapter, 0, null); #endif return ndis_status_success; } b) SMP8634 usb 1. modify registry setting for SMP8634 usb device open the platform.reg file of ce project, find follow settings ; @cesysgen if ce_modules_usbd [hkey_local_machine\driv ers\builtin\ehci86xx] "prefix"="hcd" "dll"="ehci86xx.dll" "isrdll"="giisr.dll" "isrhandler"="isrhandler" "physicalmemoryaddress"=dword:23c00000 "physicalmemorylength"=dword:00400000 [hkey_local_machine\driv ers\builtin\ohci86xx] "prefix"="hcd" "dll"="ohci86xx.dll" "order"=dword:2 "class"=dword:0c "subclass"=dword:03 "progif"=dword:10 "isrdll"="giisr.dll" "isrhandler"="isrhandler" "hcdcapability"=dword:5 ;hcd_suspend_on_request|hcd_suspend_resume ; @cesysgen endif ce_modules_usbd or ; @cesysgen if ce_modules_usbd [hkey_local_machine\driv ers\builtin\ehci86xx] "prefix"="hcd" "dll"="ehci86xx.dll" "order"=dword:2 "isrdll"="giisr.dll" "isrhandler"="isrhandler" "hcdcapability"=dword:4 ;hcd_suspend_on_request for seeyoo only free datasheet http://
- 53 - "physicalmemoryaddress"=dword:23c00000 "physicalmemorylength"=dword:00400000 [hkey_local_machine\driv ers\builtin\ohci86xx] "prefix"="hcd" "dll"="ohci86xx.dll" "order"=dword:2 "isrdll"="giisr.dll" "isrhandler"="isrhandler" "hcdcapability"=dword:5 ;hcd_suspend_on_request|hcd_suspend_resume ; @cesysgen endif ce_modules_usbd make sure these code is ok. 2. usb storage device speed(test with samsung 40g usb hdd) reva/revb/es6/es7 version chip read only ---- 25834000 bps, about 3229250 bytes/s write only ---- 13640000 bps, about 1705000 bytes/s revc/es9 version chip read only ---- 83736000 bps, about 10467000 bytes/s write only ---- 45088000 bps, about 5636000 bytes/s 3. for the reva/revb/es6/es7 version SMP8634 chip, the speed of two usb port is different, the above one is usb1.1 only, the under-port is usb2.0. if link two usb device to the two usb ports and boot up the SMP8634 board, the above one usb port may lost power, it must be reconnect. for the revc/es9 version SMP8634 chip, the speed of two usb are all usb2.0 link the low speed usb device(usb mo use/keyboard) to under-port, high speed usb device(usb disk/hdd) to above-port and boot up the SMP8634 board, the power of two usb ports is no problem. 4. set the memory of usb ehci device to ddr0, "physicalmemoryaddress"=dword:10202800 "physicalmemorylength"=dword:00100000 reserve the part memory in config.bib global_mem 90202800 00100000 reserved ; 1mb usb this setting can upgrade the speed of us b port, but it will slow down the speed of SMP8634 mac ethernet, the speed will down to 7m bits/s. 5. support usb host only c) SMP8634 atapi 1. hdd supported recommend 160g big size, must be microsoft fat32 partition 2. hdd speed(default setting and function) read only ---- 69198000 bps, about 8649750 bytes/s write only ---- 58032000 bps, about 7254000 bytes/s 3. how to up hdd speed use ?halallocatecommonbuffer? function to al locate physically contiguous memory for transfer 4. SMP8634 support 2 states ide device, primary master and primary slave, the dma mode is for primary master hdd only. 5. link one dvd-rom and one hdd to ide port at one time set hdd to master mode, set dvd-rom to slave mode, modify ide registry setting in platform.reg as follow sample, [hkey_local_machine\drivers\builtin\bsp_atapi\device0] "iclass"=multi_sz:"{a4e7edda-e575-4252-9d6b-4195d48bb865}" "prefix"="dsk" "dll"="smp863x_atapi.dll" "interruptdriven"=dword:01 ; enable interrupt driven i/o "dma"=dword:0 "doublebuffersize"=dword:10000 ; 128 sector (65536 byte) double buffer "drqdatablocksize"=dword:0 ; 1 sector (512 byte) drq data block - not used "writecache"=dword:01 ; enable on-disk write cache "lookahead"=dword:01 ; enable on-disk look-ahead "deviceid"=dword:00 ; device 0, i.e., primary master ;[7:3][2:0] [type of transfer][mode] [view as a byte] for seeyoo only free datasheet http://
- 54 - ; 0x00 - 0x0 pio default mode 0x00 ; 0x00 - 0x1 pio default mode, diasable iordy 0x01 ; 0x01 - 0x(0-4) pio flow control transfer mode 0x08 - 0x0c ; 0x04 - 0x(0-2) multiword dma mode 0x20 - 0x22 ; 0x08 - 0x(0-5) ultra dma mode 0x40 - 0x45 "transfermode"=dword:ff ; fastest supported [hkey_local_machine\drivers\builtin\bsp_atapi\device1] "iclass"=multi_sz:"{a4e7edda-e575-4252-9d6b-4195d48bb865}" "prefix"="dsk" "dll"="smp863x_atapi.dll" "interruptdriven"=dword:01 ; enable interrupt driven i/o " dma"=dword:02 "doublebuffersize"=dword:10000 ; 128 sector (65536 byte) double buffer "drqdatablocksize"=dword:0 ; 1 sector (512 byte) drq data block "writecache"=dword:01 ; enable on-disk write cache "lookahead"=dword:01 ; enable on-disk look-ahead "deviceid"=dword:01 ; device 1, i.e., primary slave "transfermode"=dword:ff ; fastest supported in this mode, the speed of hdd is slow down to 22m bits/s(read) and 31m bits/s(write).the read speed of dvd-rom is about 11.3m bits/s. d) SMP8634 pflash storage the deive driver is disabled. e) SMP8634 ir remote control please add bsp_smp863x_ir=1 to ce project. follow sample code shows how to add ir remoter control to your application. #include #include #include "bsp_ir.h" #define max_loadstring 100 // global variables: typedef unsigned long rmuint32; //about ir port handle g_hir; //handel of ir handle g_hgetirthread; static bool g_bgetready; handle g_openird(); dword g_getird(handle); bool g_closeird(handle); uint sdmc_getirinputthread(); // forward declarations of functions included in this code module: int winapi winmain( hinstance hinstance, hinstance hprevinstance, lptstr lpcmdline, int ncmdshow) { msg msg; haccel hacceltable; // perform application initialization: if (!initinstance (hinstance, ncmdshow)) { return false; } hacceltable = loadaccelerators(hinstance, (lpctstr)idc_SMP8634irdemo); for seeyoo only free datasheet http://
- 55 - dword dwthreadid; //start remote control g_hir=g_openird(); //initialize ir port g_bgetready=true; if(g_hir == false) { #ifdef debug_mode outputdebugstring (text("can't open ir port!\n")); #endif g_bgetready=false; } else { g_hgetirthread = createthread(null, 2048, (lpthread_start_routine)sdmc_getirinputthread, (lpvoid)0, 0, &dwthreadid); if(g_hgetirthread != null) { #ifdef debug_mode outputdebugstring (text("create thread!\n")); #endif setthreadpriority(g_hgetirthread,thread_priority_lowest); } else { g_bgetready=false; } } // main message loop: while (getmessage(&msg, null, 0, 0)) { if (!translateaccelerator(msg.hwnd, hacceltable, &msg)) { translatemessage(&msg); dispatchmessage(&msg); } } return msg.wparam; } ?? handle g_openird() { handle hird = createfile(text("ird1:"), generic_read | generic_write, 0, null, open_existing, file_attribute_normal, null); if (!hird || hird==invalid_handle_value) { outputdebugstring (text("ird device was not found!\n")); return null; } else { outputdebugstring (text("ird device was found!\n")); return hird; } for seeyoo only free datasheet http://
- 56 - } bool g_closeird(handle hird) { closehandle((handle)hird); return true; } dword g_getird(handle hird) { rmuint32 dummy; bool bresult=false; dword dtime=1000; dword dkey=0; bresult = deviceiocontrol((handle) hird, ioctl_ir_read_key, &dtime, sizeof(dtime), &dkey, sizeof(dkey), &dummy, null); if (!bresult ) { // retailmsg(1, (l"ioctl_ir_read_k ey failed (0x%x)\n",getlasterror())); } else { // retailmsg (1, (text("ir key pressed: %lu\r\n"), dkey)); } return dkey; } uint sdmc_getirinputthread() { //my code hwnd hwndcontrol; dword nsymbol=0; tchar chtemp[max_loadstring]=text(""); rect rt; outputdebugstring (text("thread begin!\n")); while(g_bgetready && g_hir) { nsymbol=g_getird(g_hir); if(nsymbol !=0) { outputdebugstring (text("ir input!\n")); wsprintf(chtemp,text("%lu"),nsymbol); outputdebugstring(chtemp); hwndcontrol=getforegroundwindow(); setwindowtext(hwndcontrol,chtemp); getclientrect(hwndcontrol, &rt); drawtext(getdc(hwndcontrol), chtemp, _tcslen(chtemp), &rt, dt_singleline | dt_vcenter | dt_center); } } outputdebugstring(text("thread end!\n")); return 0; //------- } f) SMP8634 i2c (i2c slave) this is an open source project. it is based on gbus i/o api. 1. dll a. bsp_i2c.dll(bsp_i2c.lib) for seeyoo only free datasheet http://
- 57 - b. i2c_iisr.dll 2. library bsp_i2c_lib.lib 3. test application i2c_test.exe extern "c"{ #include #include "bsp_i2c.h" } int usage(int line) { retailmsg(1, (l"\n")); retailmsg(1, (l"usage: i2c_test -b [-r] [-c] [-m] [-1]\n")); //mike retailmsg(1, (l" -b i2c device address\n")); retailmsg(1, (l" -r i2c register address\n")); retailmsg(1, (l" -m registers count. de fault: if -r present=1, else 255 \n")); retailmsg(1, (l" -c i2c clock divider,100000 normal(default),400000 fast \n")); retailmsg(1, (l" -l list all i2c address \n")); //mike retailmsg(1, (l"\n")); return line; } int main(int argc,char**argv) { byte reg=0, i2c_dev_addr, i2c_reg_addr=0; bool ret; if (argc <2) { return usage(__line__); } rmuint32 hi2c = bsp_i2c_open(),k,first_reg=0,max = 256,i2c_clk_div=400000; if (!hi2c) { retailmsg(1, (l"bsp_i2c_open() failed\n")); return __line__; } dword dlist=0,*dshow; dshow = (dword *)malloc( max ); if(argc == 2) //mike { if (argv[1][1]=='l') { for(dlist =0;dlist < max;dlist ++) { ret = bsp_i2c_read(hi2c,dlist,0x00,®,1); if(ret) { dshow[dlist]=1; } else { dshow[dlist]=0; } } retailmsg(1, (l"i2c device list: \n")); retailmsg(1, (l" 0 1 2 3 4 5 6 7 8 9 a b c d e f \n")); for(dlist =0;dlist < max;dlist = dlist + 16) { retailmsg(1, (l"%x: %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d", (dlist / 16), dshow[dlist + 0],dshow[dlist + 1],dshow[dlist + 2],dshow[dlist + 3],dshow[dlist + 4],dshow[dlist + 5],dshow[dlist + 6],dshow[dlist + for seeyoo only free datasheet http://
- 58 - 7],dshow[dlist + 8],dshow[dlist + 9],dshow[dlist + 10],dshow[dlist + 11],dshow[dlist + 12],dshow[dlist + 13],dshow[dlist + 14],dshow[dlist + 15] )); } } } else { for(k=0;k<(rmuint32)argc;k++) { if (!k) continue; dword arg; if (k+1 >= (rmuint32)argc) { return usage(__line__); } if (argv[k+1][1]=='x') sscanf(argv[k+1],"%x",&arg); else sscanf(argv[k+1],"%d",&arg); if (argv[k][1]=='b') { i2c_dev_addr = (byte)arg; }else if(argv[k][1]=='r') { i2c_reg_addr = (byte)arg; first_reg=i2c_reg_addr; if (max==256) max=1; }else if(argv[k][1]=='c') { i2c_clk_div=arg; }else if(argv[k][1]=='m') { max = arg; } k++; } bsp_i2c_setspeed(hi2c,i2c_clk_div); max += first_reg; dlist=first_reg; for (;first_reg < max;first_reg++,i2c_reg_addr++) { ret = bsp_i2c_read(hi2c,i2c_dev_addr,i2c_reg_addr,®,1); if(max == 256 && dlist == 0) //mike { if(ret) { dshow[first_reg]=reg; } else { dshow[first_reg]=0xff; } } } if(max == 256) //mike { retailmsg(1, (l"i2c 0x%x device sub address value list: \n", i2c_dev_addr)); retailmsg(1, (l" 0 1 2 3 4 5 6 7 8 9 a b c d e f \n")); for seeyoo only free datasheet http://
- 59 - for(dlist =0;dlist < max;dlist = dlist + 16) { retailmsg(1, (l"%x: %.2x %.2x %.2x %.2x %.2x %.2x %.2x %.2x %.2x %.2x %.2x %.2x %.2x %.2x %.2x %.2x", (dlist / 16), dshow[dlist + 0],dshow[dlist + 1],dshow[dlist + 2],dshow[dlist + 3],dshow[dlist + 4],dshow[dlist + 5],dshow[dlist + 6],dshow[dlist + 7],dshow[dlist + 8],dshow[dlist + 9],dshow[dlist + 10],dshow[dlist + 11],dshow[dlist + 12],dshow[dlist + 13],dshow[dlist + 14],dshow[dlist + 15] )); } } } free(dshow); bsp_i2c_close(hi2c); return ret; } g) SMP8634 smart card reader h) SMP8634 com serial test_serial.exe i) SMP8634 ddi 1. directdraw sample cedshow cedshow sample application ========================== cedshow is the sample application that shows how to use the multimedia driver apis such as driver escapes, alpha blending, directdraw, hardware demux, etc. this code and information is provid ed "as is" without warranty of any kind, either expressed or implied, including but not limited to the implied warranties of merchantabilit y and/or fitness for a particular purpose. sigma designs won't provide any supports of using this source code. 2. set ui to a save tv position find follow setting in platform.reg file, "outputposx"=dword:0 ; output window position x "outputposy"=dword:0 ; output window position y "outputposwidth"=dword:1000 ; output window position width "outputposheight"=dword:1000 ; output window position height modify them as follow sample "outputposx"=dword:120 ; output window position x "outputposy"=dword:120 ; output window position y "outputposwidth"=dword:de0 ; output window position width "outputposheight"=dword:de0 ; output window position height 3. video output mode list default registry setting for video output "digitaloutput"=dword:21 ; emhwlibtvstandard_hdmi_720p59 "digitalcolorspace"=dword:3 ; emhwlibcolorspace_rgb_0_255, "mainanalogoutput"=dword:6f ; emhwlibtvstandard_ntsc_m "mainanalogcolorspace"=dword:4 ; emhwlibcolorspace_yuv_601 "componentanalogoutput"=dword:65 ; emhwlibtvstandard_720p59 "componentmode"=dword:6 ; emhwlibcomponentmode_yuv_smpte "componentorder"=dword:0 ; emhwlibcomponentorder_rgb "componentcolorspace"=dword:4 ; emhwlibcolorspace_yuv_601 "vgaoutput"=dword:0 ; 0 = disable vga output, 1 = enable vga output. ; also, when it's 1, need to set componentanalogoutput to cvt_xxx or vesa_xxx, ; componentmode to rgb_scart, componentcolorspace to rgb_0_255 enum emhwlibtvstandard { emhwlibtvstandard_custom = 0, // sync parameters have been changed and don't match a standard anymore for seeyoo only free datasheet http://
- 60 - emhwlibtvstandard_cvt_640x480x50, //1 emhwlibtvstandard_cvt_640x480x60, //2 emhwlibtvstandard_cvt_640x480x75, //3 emhwlibtvstandard_cvt_640x480x85, //4 emhwlibtvstandard_cvt_800x600x50, //5 emhwlibtvstandard_cvt_800x600x60, //6 emhwlibtvstandard_cvt_800x600x75, //7 emhwlibtvstandard_cvt_800x600x85, //8 emhwlibtvstandard_cvt_1024x768x50, //9 emhwlibtvstandard_cvt_1024x768x60, //a emhwlibtvstandard_cvt_1024x768x75, //b emhwlibtvstandard_cvt_1024x768x85, //c emhwlibtvstandard_cvt_1152x864x50, //d emhwlibtvstandard_cvt_1152x864x60, //e emhwlibtvstandard_cvt_1152x864x75, //f emhwlibtvstandard_cvt_1152x864x85, //10 emhwlibtvstandard_cvt_1280x960x50, //11 emhwlibtvstandard_cvt_1280x960x60, //12 emhwlibtvstandard_cvt_1280x960x75, //13 emhwlibtvstandard_cvt_1280x960x85, //14 emhwlibtvstandard_cvt_1280x1024x50, //15 emhwlibtvstandard_cvt_1280x1024x60, //16 emhwlibtvstandard_cvt_1280x1024x75, //17 emhwlibtvstandard_cvt_1280x1024x85, //18 emhwlibtvstandard_cvt_1600x1200x50, //19 emhwlibtvstandard_cvt_1600x1200x60, //1a emhwlibtvstandard_dbl3_1952x1232, //1b emhwlibtvstandard_dbl3_1952x30, //1c emhwlibtvstandard_hdmi_640x480p59, //1d emhwlibtvstandard_hdmi_640x480p60, //1e emhwlibtvstandard_hdmi_480p59, //1f emhwlibtvstandard_hdmi_480p60, //20 emhwlibtvstandard_hdmi_720p59, //21 emhwlibtvstandard_hdmi_720p60, //22 emhwlibtvstandard_hdmi_1080i59, //23 emhwlibtvstandard_hdmi_1080i60, //24 emhwlibtvstandard_hdmi_480i59, //25 emhwlibtvstandard_hdmi_480i60, //26 emhwlibtvstandard_hdmi_720x240p59, //27 emhwlibtvstandard_hdmi_720x240p60, //28 emhwlibtvstandard_hdmi_2880x480i59, //29 emhwlibtvstandard_hdmi_2880x480i60, //2a emhwlibtvstandard_hdmi_2880x240p59, //2b emhwlibtvstandard_hdmi_2880x240p60, //2c emhwlibtvstandard_hdmi_1440x480p59, //2d emhwlibtvstandard_hdmi_1440x480p60, //2e emhwlibtvstandard_hdmi_1080p59, //2f emhwlibtvstandard_hdmi_1080p60, //30 emhwlibtvstandard_hdmi_576p50, //31 emhwlibtvstandard_hdmi_720p50, //32 emhwlibtvstandard_hdmi_1080i50, //33 emhwlibtvstandard_hdmi_576i50, //34 emhwlibtvstandard_hdmi_720x288p50, //35 emhwlibtvstandard_hdmi_2880x576i50, //36 emhwlibtvstandard_hdmi_2880x288p50, //37 emhwlibtvstandard_hdmi_1440x576p50, //38 emhwlibtvstandard_hdmi_1080p50, //39 emhwlibtvstandard_hdmi_1080p23, //3a emhwlibtvstandard_hdmi_1080p24, //3b emhwlibtvstandard_hdmi_1080p25, //3c emhwlibtvstandard_hdmi_1080p29, //3d emhwlibtvstandard_hdmi_1080p30, //3e emhwlibtvstandard_hdmi_2880x480p59, //3f emhwlibtvstandard_hdmi_2880x480p60, //40 emhwlibtvstandard_hdmi_2880x576p50, //41 emhwlibtvstandard_hdmi_1080i50_1250, //42 emhwlibtvstandard_hdmi_1080i100, //43 emhwlibtvstandard_hdmi_720p100, //44 for seeyoo only free datasheet http://
- 61 - emhwlibtvstandard_hdmi_576p100, //45 emhwlibtvstandard_hdmi_576i100, //46 emhwlibtvstandard_hdmi_1080i119, //47 emhwlibtvstandard_hdmi_1080i120, //48 emhwlibtvstandard_hdmi_720p119, //49 emhwlibtvstandard_hdmi_720p120, //4a emhwlibtvstandard_hdmi_480p119, //4b emhwlibtvstandard_hdmi_480p120, //4c emhwlibtvstandard_hdmi_480i119, //4d emhwlibtvstandard_hdmi_480i120, //4e emhwlibtvstandard_hdmi_576p200, //4f emhwlibtvstandard_hdmi_576i200, //50 emhwlibtvstandard_hdmi_480p239, //51 emhwlibtvstandard_hdmi_480p240, //52 emhwlibtvstandard_hdmi_480i239, //53 emhwlibtvstandard_hdmi_480i240, //54 emhwlibtvstandard_1080p60, //55 emhwlibtvstandard_1080p59, //56 emhwlibtvstandard_1080p50, //57 emhwlibtvstandard_1080i60, //58 emhwlibtvstandard_1080i59, //59 emhwlibtvstandard_1080i50, //5a emhwlibtvstandard_1080i48, //5b emhwlibtvstandard_1080i47, //5c emhwlibtvstandard_1080p30, //5d emhwlibtvstandard_1080p29, //5e emhwlibtvstandard_1080p25, //5f emhwlibtvstandard_1080p24, //60 emhwlibtvstandard_1080p23, //61 emhwlibtvstandard_1080i50_1250, //62 emhwlibtvstandard_1080p50_1250, //63 emhwlibtvstandard_720p60, //64 emhwlibtvstandard_720p59, //65 emhwlibtvstandard_720p50, //66 emhwlibtvstandard_720p30, //67 emhwlibtvstandard_720p29, //68 emhwlibtvstandard_720p25, //69 emhwlibtvstandard_720p24, //6a emhwlibtvstandard_720p23, //6b emhwlibtvstandard_itu_bt656_525, //6c emhwlibtvstandard_itu_bt656_240p, //6d emhwlibtvstandard_ntsc_m_japan, //6e emhwlibtvstandard_ntsc_m, //6f emhwlibtvstandard_pal_60, //70 emhwlibtvstandard_pal_m, //71 emhwlibtvstandard_480p59, //72 emhwlibtvstandard_ntsc_m_japan_714, //73 emhwlibtvstandard_ntsc_m_714, //74 emhwlibtvstandard_pal_60_714, //75 emhwlibtvstandard_pal_m_714, //76 emhwlibtvstandard_480p59_714, //77 emhwlibtvstandard_itu_bt656_625, //78 emhwlibtvstandard_itu_bt656_288p, //79 emhwlibtvstandard_pal_bg, //7a emhwlibtvstandard_pal_n, //7b emhwlibtvstandard_576p50, //7c emhwlibtvstandard_pal_bg_702, //7d emhwlibtvstandard_pal_n_702, //7e emhwlibtvstandard_576p50_702, //7f emhwlibtvstandard_vesa_640x350x85, //80 emhwlibtvstandard_vesa_640x400x85, //81 emhwlibtvstandard_vesa_720x400x85, //82 emhwlibtvstandard_vesa_640x480x60, //83 emhwlibtvstandard_vesa_640x480x72, //84 emhwlibtvstandard_vesa_640x480x75, //85 emhwlibtvstandard_vesa_640x480x85, //86 emhwlibtvstandard_vesa_848x480x60, //87 emhwlibtvstandard_vesa_800x600x56, //88 for seeyoo only free datasheet http://
- 62 - emhwlibtvstandard_vesa_800x600x60, //89 emhwlibtvstandard_vesa_800x600x72, //8a emhwlibtvstandard_vesa_800x600x75, //8b emhwlibtvstandard_vesa_800x600x85, //8c emhwlibtvstandard_vesa_1024x768x43, //8d emhwlibtvstandard_vesa_1024x768x60, //8e emhwlibtvstandard_vesa_1024x768x70, //8f emhwlibtvstandard_vesa_1024x768x75, //90 emhwlibtvstandard_vesa_1024x768x85, //91 emhwlibtvstandard_vesa_1152x864x75, //92 emhwlibtvstandard_vesa_1280x768x60rb, //93 emhwlibtvstandard_vesa_1280x768x60, //94 emhwlibtvstandard_vesa_1280x768x75, //95 emhwlibtvstandard_vesa_1280x768x85, //96 emhwlibtvstandard_vesa_1280x960x60, //97 emhwlibtvstandard_vesa_1280x960x85, //98 emhwlibtvstandard_vesa_1280x1024x60, //99 emhwlibtvstandard_vesa_1280x1024x75, //9a emhwlibtvstandard_vesa_1280x1024x85, //9b emhwlibtvstandard_vesa_1360x768x60, //9c emhwlibtvstandard_vesa_1366x768x60, //9d emhwlibtvstandard_vesa_1400x1050x60rb, //9e emhwlibtvstandard_vesa_1400x1050x60, //9f emhwlibtvstandard_vesa_1400x1050x75, //a0 emhwlibtvstandard_vesa_1400x1050x85, //a1 emhwlibtvstandard_vesa_1600x1200x60, //a2 emhwlibtvstandard_vesa_1600x1200x65, //a3 emhwlibtvstandard_vesa_1600x1200x70, //a4 emhwlibtvstandard_vesa_1600x1200x75, //a5 emhwlibtvstandard_vesa_1600x1200x85, //a6 emhwlibtvstandard_vesa_1792x1344x60, //a7 emhwlibtvstandard_vesa_1792x1344x75, //a8 emhwlibtvstandard_vesa_1856x1392x60, //a9 emhwlibtvstandard_vesa_1856x1392x75, //aa emhwlibtvstandard_vesa_1920x1200x60rb, //ab emhwlibtvstandard_vesa_1920x1200x60, //ac emhwlibtvstandard_vesa_1920x1200x75, //ad emhwlibtvstandard_vesa_1920x1200x85, //ae emhwlibtvstandard_vesa_1920x1440x60, //af emhwlibtvstandard_vesa_1920x1440x75, //b0 emhwlibtvstandard_vesa_640x350x70, //b1 emhwlibtvstandard_vesa_640x480i30, //b2 emhwlibtvstandard_vesa_640x480i60, //b3 emhwlibtvstandard_vesa_720x400x70, //b4 emhwlibtvstandard_vesa_640x480x66, //b5 emhwlibtvstandard_vesa_832x624x75, //b6 emhwlibtvstandard_vesa_1152x870x75, //b7 emhwlibtvstandard_vesa_1280x720x60, //b8 emhwlibtvstandard_vesa_1280x720x75, //b9 emhwlibtvstandard_vesa_1440x900x60rb, //ba emhwlibtvstandard_vesa_1440x900x60, //bb emhwlibtvstandard_vesa_1440x900x75, //bc emhwlibtvstandard_vesa_1680x1050x60rb, //bd emhwlibtvstandard_vesa_1680x1050x60, //be emhwlibtvstandard_vesa_1920x1080x60i, //bf }; enum emhwlibagcversion { emhwlibagcversion_constantbpp = 0, emhwlibagcversion_alternatebpp, //1 }; enum emhwlibcomponentmode { emhwlibcomponentmode_disable = 0, emhwlibcomponentmode_rgb_scart, //1 emhwlibcomponentmode_rgb_sog, //2 emhwlibcomponentmode_rgb_smpte, //3 emhwlibcomponentmode_yuv_betacam, //4 for seeyoo only free datasheet http://
- 63 - emhwlibcomponentmode_yuv_m2, //5 emhwlibcomponentmode_yuv_smpte //6 }; enum emhwlibcomponentorder { emhwlibcomponentorder_rgb = 0, // no swap emhwlibcomponentorder_rbg, //1 emhwlibcomponentorder_grb, //2 emhwlibcomponentorder_gbr, //3 emhwlibcomponentorder_brg, //4 emhwlibcomponentorder_bgr //5 }; enum emhwlibcolorspace { emhwlibcolorspace_none = 1, emhwlibcolorspace_rgb_16_235, //2 emhwlibcolorspace_rgb_0_255, //3 emhwlibcolorspace_yuv_601, //4 emhwlibcolorspace_yuv_709, //5 emhwlibcolorspace_yuv_601_0_255, //6 emhwlibcolorspace_yuv_709_0_255, //7 emhwlibcolorspace_xvycc_601, //8 emhwlibcolorspace_xvycc_709, //9 emhwlibcolorspace_xvycc_601_0_255, //a emhwlibcolorspace_xvycc_709_0_255, //b }; enum emhwlibsamplingmode { emhwlibsamplingmode_444 = 1, emhwlibsamplingmode_411, //2 emhwlibsamplingmode_422, //3 emhwlibsamplingmode_420, //4 emhwlibsamplingmode_420_mpeg1 //5 }; enum emhwlibcolormode { emhwlibcolormode_lut_1bpp = 1, emhwlibcolormode_lut_2bpp, //2 emhwlibcolormode_lut_4bpp, //3 emhwlibcolormode_lut_8bpp, //4 emhwlibcolormode_truecolor, //5 emhwlibcolormode_truecolorwithkey, //6 emhwlibcolormode_videointerleaved, //7 emhwlibcolormode_videononinterleaved, //8 emhwlibcolormode_16bpp_alpha_lut //9 }; enum emhwlibinputcolorformat { emhwlibinputcolorformat_24bpp = 1, emhwlibinputcolorformat_24bpp_8565, //2 emhwlibinputcolorformat_24bpp_5676, //3 emhwlibinputcolorformat_32bpp, //4 emhwlibinputcolorformat_16bpp_565, //5 emhwlibinputcolorformat_16bpp_1555, //6 emhwlibinputcolorformat_16bpp_4444, //7 emhwlibinputcolorformat_31bpp_7888 //8 }; 4. enable hdcp find follow setting in platform.reg file, "enablehdcp"=dword:0 ; 0 = disable the hdcp, 1 = enable the hdcp modify them as follow sample "enablehdcp"=dword:1 ; 0 = disable the hdcp, 1 = enable the hdcp 5. smp863x.dll registry entries [hkey_local_machine\driv ers\builtin\smp86xx] "dll"="smp863x.dll" "prefix"="sdh" "index"=dword:1 for seeyoo only free datasheet http://
- 64 - "order"=dword:1 "smp863x_reserved_start_dram0"=dword:10202800 "smp863x_reserved_dram0_size" =dword:01b00000 "smp863x_reserved_start_dram1"=dword:0c000000 "smp863x_reserved_dram1_size" =dword:00000000 "primary_display_surface_drambank"=dword:0 "default_aspect_ratio_x"=dword:10 "default_aspect_ratio_y"=dword:9 the driver needs memory to be allocated. this memory is should be reserved in you config.bib file, and then put into the registry. smp863x_reserved_start_dram0 specifies the start physical address in dram0. smp863x_reserved_dram0_size specifies the length of this reserved memory. this memory is used to allocate required audio dsp memory, and optionally display memory (see primary_display_surface_drambank). smp863x_reserved_start_dram1 specifies the start physical address in dram1. smp863x_reserved_dram1_size specifies the length of this reserved memory. this memory is used to allocate video decoder memory, and optionally display memory (see primary_display_surface_drambank). primary_display_surface_drambank is used to tell the decoder which dram bank to allocate the display memory from. the proper choice here is a trade-off between available memory and memory bandwidth. since the main video decoder is running out of bank 1, if you want a high resolution graphics mode (greater than 576p), then it is better to run the display from bank 0. note that you will have to allocate more memory in bank 0 (through smp863x_reserved_dram0_size). the amount of memory you require would depend on the graphics resolution. for example, if you wanted a gdi graphics plane of 1920x1080, then the amount of memory required would be (1920x1080x4) = (8294400 bytes). you also have to add about 2048 bytes for some display structures. default_aspect_ratio_x and default_aspect_ratio_y are used to specify the default aspect ratio. note that these values are in hex, so a 16:9 aspect ration would be: "default_aspect_ratio_x"=dword:10 "default_aspect_ratio_y"=dword:9 so a 4:3 aspect ration would be: "default_aspect_ratio_x"=dword:4 "default_aspect_ratio_y"=dword:3 j) SMP8634 hw cursor find follow setting in platform.reg file, "enablehwcursor"=dword:1 ; 0 = disable, 1 = enable k) SMP8634 wave device ; sigma designs 8634 wave built-in driver ; ; supports only wave out [hkey_local_machine\dr ivers\builtin\audio] "prefix"="wav" "dll"="wave863x.dll" "index"=dword:1 "order"=dword:1 ; "order"=dword:10 l) SMP8634 ddr ram 1.physical address dram0 ---- 0x10000000-0x20000000. dram1 ---- 0x20000000-0x30000000 2.enhance dram stability remove rp54, rp59, rp64, rp69 in serial port window, the debug message shows follow info. xenv cs2 ok power supply: ok dram0 ok (7) -- ? this number is must bigger than 6 dram1 ok (7) -- ? this number is must bigger than 6 zboot ok for seeyoo only free datasheet http://
- 65 - m) SMP8634 rtc(realtime clock) rtc driver for the SMP8634 ========================== overview -------- this driver allows the persistence of the realtime clock of windows ce to be persistent across power and/or reset cycles. this driver has been tested with xos version 0xe0 and above. this driver should be working for production as well as development chips. your board must have the rtc support for this driver to work. how to install -------------- please read all the steps before installing. 0. open up the file rtc.c. there should be a define called SMP8634_rtc_4kb_physical_address. #define SMP8634_rtc_4kb_physical_address 0x101ff000 // << change this address as necessary you can change this address if you reserve a 4kb portion inside config.bib. 1. add the bsp_rtc directory into the /smp863x/src/libs directory 2. change the dirs directory in the /smp863x /src/libs to include the compilation of the bsp_rtc diretcory synchronize_block=1 dirs=\ board_callbacks \ bsp_cach \ gbus_ke \ bsp_pci \ bsp_freq \ bsp_flash \ bsp_ide_lib \ bootfs \ bsp_xrpc \ bsp_reboot \ bsp_eth_lib \ winmain_main \ dbg_helper \ gpio \ power \ bsp_rtc \ 3. change the 'sources' file in the /smp863x/src/kernel/kern directory so that the kernel is linked with the smp863x_rtc_timer.lib library instead of the oal_rtc_timer.lib library. targetname=kern targettype=program releasetype=platform synchronize_drain=1 wincecpu=1 exeentry=startup exebase=0x92600000 ldefines=-subsystem:native /d ebug /debugtype:cv /fixed:no sources= \ kitl.c \ targetlibs= \ $(_commonoakroot)\lib\$(_cpudeppath)\nk.lib \ $(_platcommonlib)\$(_cpudeppath)\oal_intr_common.lib \ $(_platcommonlib)\$(_cpudeppath)\oal_power_stub.lib \ $(_platcommonlib)\$(_cpudeppath)\oal_ioctl.lib \ $(_platcommonlib)\$(_cpudeppath)\oal_pci.lib \ $(_platcommonlib)\$(_cpudeppath)\oal_io_pci.lib \ for seeyoo only free datasheet http://
- 66 - $(_platcommonlib)\$(_cpudeppath)\oal_timer_mips_rtc.lib \ $(_platcommonlib)\$(_cpudeppath)\oal_timer_varidle.lib \ $(_platcommonlib)\$(_cpudeppath)\oal_timer_vartick.lib \ $(_platcommonlib)\$(_cpudeppath)\oal_ilt_stub.lib \ $(_platcommonlib)\$(_cpudeppath)\oal_other.lib \ $(_platcommonlib)\$(_cpudeppath)\oal_log.lib \ $(_commonoakroot)\lib\$(_cpuindpath)\ddk_io.lib \ $(_commonoakroot)\lib\$(_cpudeppath)\pcireg.lib \ $(_commonoakroot)\lib\$(_cpuindpath)\fulllibc.lib \ $(_targetplatroot)\lib\$(_cpudeppath)\bsp_cache.lib \ $(_targetplatroot)\lib\$(_cpudeppath)\oal.lib \ $(_targetplatroot)\lib\$(_cpudeppath)\bsp_eth_lib.lib \ $(_targetplatroot)\lib\$(_cpudeppath)\smp863x_rtc_timer.lib \ # $(_platcommonlib)\$(_cpudeppath)\oal_rtc_timer.lib \ 4. do the same for the 'sources' file in the /smp863x/src/kernel/kernkitl and /smp863x/src/kernel/kernkitlprof directories. 5. recompile the kernel and make your platform again. n) SMP8634 gpio 1. library gpio_lib.lib 2. test application gbio_test.exe #include #include "..\inc\bsp_gpio.h" int main(int argc,char**argv) { int i; for (i=0;iSMP8634 pwm gpio15 -------- pwm0 -------- t30(check point) gpio14 -------- pwm1 -------- t29(check point) 1. library gbus_ke.lib 2. test application #include #ifndef reg_base_system_block #define reg_base_system_block 0x00010000 /* width rmuint32 */ #endif #ifndef sys_gpio15_pwm #define sys_gpio15_pwm 0x0510 /* width rmuint32 */ #endif #ifndef sys_gpio14_pwm #define sys_gpio14_pwm 0x0514 /* width rmuint32 */ #endif #define gbus_pwm0_control (reg_base_system_block + sys_gpio15_pwm) //gpio 15 #define gbus_pwm1_control (reg_base_system_block + sys_gpio14_pwm) //gpio 14 #define pwm_enable 0x01000000 #define pwm_pre_div(x) (x<<16) //the minimum space rate value #define pwm_level(x) (x<<4) // main /////////////////////////////////////////////////////////////////// // for seeyoo only free datasheet http://
- 67 - int main(int argc,char**argv) { //need to open gbus struct gbus *pgbus; unsigned int val = 0; unsigned int backlight = 100; // this value can be change for backlight. pgbus = gbus_open(0); //for gpio 15 val = pwm_enable|pwm_pre_d iv(7)|pwm_level(backlight); retailmsg(1, (text("write pwm0 val = %d \n"), val)); gbus_write_uint32(pgbus, gbus_pwm0_control,val); val=0; val = gbus_read_uint32(pgbus,gbus_pwm0_control); retailmsg(1, (text("read pwm0 val return = %d \n"), val)); val &= 0xffff; val >>= 4; retailmsg(1, (text("read pwm0 val = %d \n"), val)); //for gpio 14 backlight=50; val = pwm_enable|pwm_pre_d iv(7)|pwm_level(backlight); retailmsg(1, (text("write pwm1 val = %d \n"), val)); gbus_write_uint32(pgbus, gbus_pwm1_control,val); val=0; val = gbus_read_uint32(pgbus,gbus_pwm1_control); retailmsg(1, (text("read pwm1 val return = %d \n"), val)); val &= 0xffff; val >>= 4; retailmsg(1, (text("read pwm1 val = %d \n"), val)); gbus_close(pgbus); return __line__; } p) SMP8634 hardware demux the latest version dvb tuner source filter supports three models turner 1) philips tuner tu1216 ---- dvb-t note: the default i2c address for philips tu1216 is 0x10,0x11, but for vantage board, the two address is hold by other device, so must use up resistor to change it(change r248 to r247 with 10k ? ) then the address will be changed to 0x14,0x15, so the parameter for driver will be changed from 0x10,0xc0 to 0x14(tda1004ht),0xc0(tda6651) 2) philips tu1236d ---- atsc/ntsc 3) philips fq1216me ---- pal/secam 1. dll a. dump.dll this is a direct show filter which save date from source filter b. tunersrc.dll this is a direct show source filter for dvb tuner c. hwdemux863x.dll this is a direct show filter which uses the hardware demux block of the SMP8634. it is intended to be used when the incoming transport stream is originating from the the spi or ssi inputs of the SMP8634. current version releases follow interfaces // {bfc6c826-4b93-4a66-8f58-ed0b7047311c} define_guid(clsid_hwtsdemux863x, 0xbfc6c826, 0x4b93, 0x4a66, 0x8f, 0x58, 0xed, 0x0b, 0x70, 0x47, 0x31, 0x1c); // {2eb12b15-60f2-446c-a7b5-0ac88bc3dcda} define_guid(iid_ihwtsdemux863x, 0x2eb12b15, 0x60f2, 0x446c, 0xa7, 0xb5, 0x0a, 0xc8, 0x8b, 0xc3, 0xdc, 0xda); for seeyoo only free datasheet http://
- 68 - #ifndef _ihwdemux863x_h #define _ihwdemux863x_h ///////////////////////////////////////////////////////////////////// // {02a53ccf-7917-4bee-9da5-c000c5816e48} define_guid(mediatype_psi_pat, 0x02a53ccf, 0x7917, 0x4bee, 0x9d, 0xa5, 0xc0, 0x00, 0xc5, 0x81, 0x6e, 0x48); // {d2964e1d-9ea8-4e27-87c8-17cb560069a0} define_guid(mediatype_psi_pmt, 0xd2964e1d, 0x9ea8, 0x4e27, 0x87, 0xc8, 0x17, 0xcb, 0x56, 0x00, 0x69, 0xa0); // {2f8fe1e1-89bd-4ff9-a1eb-fae6475bca84} define_guid(mediatype_psi_cat, 0x2f8fe1e1, 0x89bd, 0x4ff9, 0xa1, 0xeb , 0xfa, 0xe6, 0x47, 0x5b, 0xca, 0x84); // {3b0bf0d8-cb5d-4b2c-874d-b9847931a3d9} define_guid(mediatype_psi_ecm0, 0x3b0bf0d8, 0xcb5d, 0x4b2c, 0x87, 0x4d , 0xb9, 0x84, 0x79, 0x31, 0xa3, 0xd9); // {ab26f0e9-a50b-4382-9595-40419687d9e7} define_guid(mediatype_psi_ecm1, 0xab26f0e9, 0xa50b, 0x4382, 0x95, 0x95, 0x40, 0x41, 0x96, 0x87, 0xd9, 0xe7); // {0d7de6c1-d66c-4461-94a5-a60f4e14f488} define_guid(mediatype_tspayload, 0x0d7de6c1, 0xd66c, 0x4461, 0x94, 0xa5 , 0xa6, 0x0f, 0x4e, 0x14, 0xf4, 0x88); // {1692a63f-5664-46bc-a078-abbdbd9eb9ea} define_guid(mediatype_pcr, 0x1692a63f, 0x5664, 0x46bc, 0xa0, 0x78, 0xab, 0xbd, 0xbd, 0x9e, 0xb9, 0xea); // {dcd8bbf3-01ce-40a8-b791-4968ce340115} define_guid(mediatype_private, 0xdcd8bbf3, 0x01ce, 0x40a8, 0xb7, 0x91, 0x49, 0x68, 0xce, 0x34, 0x01, 0x15); // {86f2e4c5-a89f-4fa1-855b-d63d276aa291} define_guid(mediatype_psi_section, 0x86f2e4c5, 0xa89f, 0x4fa1, 0x85, 0x5b , 0xd6, 0x3d, 0x27, 0x6a, 0xa2, 0x91); #define max_output_pins 32 typedef enum { eoutputpintype_ts = 1, // only 1 output eoutputpintype_psi_pat, // only 1 output eoutputpintype_psi_pmt, // only 1 output eoutputpintype_psi_cat, // only 1 output eoutputpintype_psi_ecm0, // only 1 output eoutputpintype_psi_ecm1, // only 1 output eoutputpintype_vpes, // multiple outputs eoutputpintype_apes, // multiple outputs eoutputpintype_pcr, // only 1 output (first a/v pins) eoutputpintype_vpayload, // multiple outputs eoutputpintype_apayload, // multiple outputs eoutputpintype_psisection, // multiple outputs - generic psi section filter } eoutputpintype; typedef enum { einputspi_none, einputspi_serial, einputspi_parallel } einputspi; for seeyoo only free datasheet http://
- 69 - #define max_ts_program_number 128 // max program numbers of the transport stream #define max_es_pids_per_program 30 // max elementary stream pids per program typedef struct { word pid; word type; } pid; typedef struct { pid espid [max_es_pids_per_program]; word ecmpid [max_es_pids_per_program]; dword count; } es_pids; typedef struct { es_pids video; es_pids audio; dword pcrpid; dword prognum; } program_pids; typedef struct { program_pids progs [max_ts_program_number]; dword count; // total number of programs } stream_pids; typedef struct { ipin *ppin[max_output_pins]; word pid[max_output_pins]; dword prognum[max_output_pins]; eoutputpintype pintype[max_output_pins]; dword pincount; } pin_pid_info; /* for match comparison any of the first 96 bits in the section table header have to match the positive or negative criteria imposed by the filter. positive match means that all the positive masked bits from the psi header have to match bit by bit the compare value. negative match means that all the negative masked bits from the psi header have to not match at least one bit from the compare value. the logic operation performed is: positivemask = mask & mode negativemask = mask & !mode matchcondition =( positivemask & header == positivemask & comp ) && ( !negativemask || (negativemask &(header^comp))). match example: stsectionfiltermask matchsectiontable[2] = { { 0xff, 0xff, // no expand or and link {0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // mask {0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // mode= all positive match {0xc7, 0x00, 0x00, 0x00, 0x00, 0x00 , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}}, // atsc_mgt { 0xff, 0xff, // no expand or and link {0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // mask {0xf9, 0x00, 0x00, 0x00, 0x00, 0x00 , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // mode=positive& negative match for seeyoo only free datasheet http://
- 70 - {0xce, 0x00, 0x00, 0x00, 0x00, 0x00 , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}}, // 0xc8,0xca, 0xcc } */ typedef struct { /* based on struct psfmatchsection_type */ unsigned char expand_link_index; // reserved for extending the lenght of section filter, value between 0...31 or 0xff if not used unsigned char and_link_index; // reserved for "logical and" two section filters, value between 0...31 or 0xff if not used unsigned char mask[12]; // 96 bit mask - 1 means the mask is active unsigned char mode[12]; // 96 bit mask - 1 means positive match, 0 means negative match unsigned char comp[12]; // 96 bit value } stsectionfiltermask; interface ihwtsdemux863x : public iunknown { // note: application must call this api first once the filter is loaded to // set the demux task properties. the valid task indexes are from 0 to 2. // btscapture specifies whether this task is used to capture the transport // stream or not. note that in order to capture the ts stream, the input spi // must not be einputspi_none. if there is already one demux task, this api // will delete that demux task before setting the new values. virtual hresult stdmethodcalltype setdem uxtaskprop (int taskindex, einputspi inputspi, bool btscapture) = 0; // set the input spi interface. default is parallel. if the input is from the local // file, the filter will switch automatically when it detects the source filter // supporting the iasyncreader. // call before the pin connections virtual hresult stdmethodcalltype setinputspi (einputspi spi) = 0; // add a new output pin type. max total output pin is 32. use getpinpidinfo to // get the current number of output pins. // for non-payload pins, only one pin of each type (i.e pat, pmt, cat, ts). // if the task is for capturing the ts stream, only one output pin eoutputpintype_ts is supported. // note: this api doesn't accept eoutputpintype_psisection. use addoutputpinsectionfilter instead. // call before the pin connections virtual hresult stdmethodcalltype addout putpin (eoutputpintype pintype) = 0; // add a generic section filter output pin. by default, the h/w demux filter creates section filters // for pat, pmt, cat, ecm0, and ecm1. also see more notes of stsectionfiltermask from above. // the output pin type will be eoutputpintype_psisection and the media type is mediatype_psi_section. // call before the pin connections virtual hresult stdmethodcalltype addoutputpinsectionfilter (tchar *ptszpinname, stsectionfiltermask *psectionmask, word wsectionpid) = 0; // get all available audio and video pids in the stream. virtual hresult stdmetho dcalltype getpinpidinfo (pin_pid_info *ppinpidinfo, stream_pids* pstreampids) = 0; // set the pid of a particular output pin. virtual hresult stdmethodc alltype setpid (ipin *poutputpin, dword dwprognum, word wpid) = 0; // set the data flow mode for the first a/v output pins. in the pass-through mode, // the data is sent direct to the decoders. so the output pins won't output any // media samples. in the non-pass-through mode, the data is sent through the output // pins in the media samples format. note that the data transfer is slower in this mode. // this api has no affect for the demux task that captures the ts stream. // call before the pin connections virtual hresult stdmethodcalltype setpassthrough (bool bpassthrough) = 0; }; for seeyoo only free datasheet http://
- 71 - ///////////////////////////////////////////////////////////////////// #endif 2. library a. turnerapi.lib b. tunhw.lib(tuner hardware) c. tmbsl.lib d. helper.lib 3. test application a. tunerapp.exe(it is included in tunerapp dll project) b. hwdemuxtest.exe note: 1)except 1.c, this part is not included in default bsp and multimedia package, it?s just for professional dvb developer. 2)registry setting("delaysettingcodectypes"=dword:1) can make the hardware demux shows follow error message and make the system breakdown 728202 pid:d72a0bda tid:36e4c852 hwdemux: parsepat section_syntax_indicator 0 ! 728440 pid:d7997dc2 tid:36e4c852 exception 004 thread=96e46dd8 proc=d7997dc2 'device.exe' 728440 pid:d7997dc2 tid:36e4c852 aky=00000089 pc=01ccf800(smp863x.dll+0x000cf800 ) ra=01ca3dd8(smp863x.dll+0x000a3dd8) bva=b01b0009 728442 pid:d7997dc2 tid:36e4c852 smp863x: exception during ioctl: 728443 pid:d7997dc2 tid:36e4c852 smp863x: dwcode = 0x900226d0 728444 pid:d7997dc2 tid:36e4c852 smp863x: function = 0x00000044 (68) 728445 pid:d7997dc2 tid:36e4c852 smp863x: pbufin = 0x1014fcc8 728446 pid:d7997dc2 tid:36e4c852 smp863x: dwlenin = 0x00000048 728447 pid:d7997dc2 tid:36e4c852 smp863x: pbufout = 0x00000000 728448 pid:d7997dc2 tid:36e4c852 smp863x: dwlenout = 0x00000000 728449 pid:d7997dc2 tid:36e4c852 smp863x: pdwactualout = 0x1014fcc0 comment the delaysettingcodectypes"=dword:1 setting or set delaysettingcodectypes"=dword:0 can repair this problem q) SMP8634 hardware jpeg decode 1. library jpeg_api.lib 2. head file jpeg_api.h 3. demo hwplayjpeg r) SMP8634 lvds output modify lvds registry setting in platform.reg as follow sample, this sample setting sets a 800x600 size video output from lvds. [hkey_local_machine\system\gdi\drivers] "display"="ddi_86xx.dll" ; ; see smp863x_formats.h for the proper hex values for each video mode ; "digitaloutput"=dword:0 "digitalcolorspace"=dword:3 "mainanalogoutput"=dword:6f "mainanalogcolorspace"=dword:4 "componentanalogoutput"=dword:65 "componentmode"=dword:6 "componentorder"=dword:0 "componentcolorspace"=dword:4 "vgaoutput"=dword:0 ; 0 = disable vga output, 1 = enable vga output. ; also, when it's 1, need to set componentanalogoutput to cvt_xxx or vesa_xxx, ; componentmode to rgb_scart, componentcolorspace to rgb_0_255 "screenwidth"=dword:00000320 ; 800 "screenheight"=dword:00000258 ; 600 "outputposx"=dword:0 ; output window position x "outputposy"=dword:0 ; output window position y for seeyoo only free datasheet http://
- 72 - "outputposwidth"=dword:1000 ; output window position width "outputposheight"=dword:1000 ; output window position height "memorysize"=dword:00800000 ; extra memory size for h/w acceleration, ; see note in the smp863x.reg ; regarding the primary_display_surface_drambank "enablehwcursor"=dword:1 ; 0 = disable, 1 = enable "livedetecthdmiconnection"=dword:1 ; 0 = driver won't do live hdmi detection, 1 = check live hdmi connection "enablehdcp"=dword:0 ; 0 = disable the hdcp, 1 = enable the hdcp "defaultkeycolor"=dword:00010101 ; in rgb fo rmat: r=3rd byte, g= nd byte, b=1st byte "enableediddetection"=dword:0 ; 0 = disable, 1 = enable. disable/enable the hdmi preferred mode. "hdmii2cmodule"=dword:2 ; 0 = software, 1 = hardware, 2 = built-in hdmi "invertclock"=dword:1 ; 0 = do not invert digital video clock, 1 = invert (default is inverted) "lvds_enable"=dword:1 "lvds_gpiofieldidoutput"=dword:b ; board dependent "lvds_gpiopanelon"=dword:e ; board dependent ; default custom digital output video mode - 800x600 [hkey_local_machine\system\gdi\d rivers\customdigitalvideomode] "pixelclock"=dword:2122800 "hactive"=dword:320 "hfrontporch"=dword:0 "hsyncwidth"=dword:80 "hbackporch"=dword:0 "hsyncpolarity"=dword:0 ; true: positive, false: negative "vactive"=dword:258 "vfrontporch"=dword:1 "vsyncwidth"=dword:3 "vbackporch"=dword:14 "vsyncpolarity"=dword:0 ; true: positive, false: negative "interlaced"=dword:0 note: ( hfrontporch + hsyncwidth + hbackporch + hactive ) x ( vfrontporch + vfrontporch + vbackporch + vactive ) = pixelclock s) SMP8634 multi-decoder 1. this driver now supports multiple instances. the first instance will use the main video scaler and decoder 16. the memory will be taken from dram1. the second decoder will use the vcr scaler and decoder 0. the memory will be taken from dram0. note that if there is not enough memory allocated in dram0, the decoder will not play. in the second instance of the filter, the audio is disabled. in addition, only the first instance supports hd resolutions. all other instances support sd resolutions only. if "delaysettingcodectypes" is set to 1, then multiple instances are not supported. 2. test the multi-decoder feature open a html page with windows media player ocx, render a media file with it, open the ceplayer, render the second media file with it. if the multi-decoder setting is no problem, there are two media shows in video output now. t) SMP8634 vga output u) SMP8634 audio and video captures filter for seeyoo only free datasheet http://
- 73 - 6) how to upgrade/modify the ce boot loader a) update boot.bin open the boot.bin file of ce project, download it to SMP8634 board as same as nk.bin file. make sure see the output message " info:lanch address in boot address space spin forever " in the serial window, reboot SMP8634, then new c e boot loader i s read y f or s mp863 4 board b) update xenv setxenv.exe this demo shows how to write flash with cfi command. the new sample is based on mmu mode. c) set the default value for boot loader if we write a new ce bootloader binary file a empty flash, the default setting of bootloader is null, so we have to set and save it in bootloader main menu for each time. in fact, we can set the default value in bootloader too, please check the follow function in src\bootloader\main.c file as you need. //------------------------------------------------------------------------------ // // function: oempredownload // // this function is called before downloading an image. there is place // where user can be asked about device setup. // ulong oempredownload() { ulong rc = bl_error; boot_cfg *pcfg = oalpatoca(image_boot_config_flash_pa_start); oallog(l"info: predownload....\r\n"); // first try to check if there is an eboot config structure if ( pcfg->signature == boot_cfg_signature && pcfg->version == boot_cfg_version ) { oallog(l"info: boot conf iguration found at 0x%08x\r\n", pcfg); memcpy(&g_bootcfg, pcfg, sizeof(g_bootcfg)); g_bootcfg.bspflags &= bsp_bootf_ispcihost; } else { oallog( l"warn: boot config wasn't found at 0x%08x, using defaults\r\n", pcfg ); memset(&g_bootcfg, 0, sizeof(g_bootcfg)); g_bootcfg.signature = boot_cfg_signature; g_bootcfg.version = boot_cfg_version; g_bootcfg.bootdevloc.ifctype = pcibus; g_bootcfg.bootdevloc.busnumber = 0; g_bootcfg.bootdevloc.logicalloc = 0x00000100; g_bootcfg.bootdevloc.pin = 1; g_bootcfg.kitlflags = oal_kitl_flags_enabled|oal_kitl_flags_dhcp|oal_kitl_flags_vmini; g_bootcfg.kitldevloc.ifctype = pcibus; g_bootcfg.kitldevloc.busnumber = 0; g_bootcfg.kitldevloc.logicalloc = 0x00000100; g_bootcfg.kitldevloc.pin = 1; g_bootcfg.ipaddress = 0; g_bootcfg.ipmask = 0; g_bootcfg.iproute = 0; g_bootcfg.bspflags = bsp_bootf_ispcihost; { pwchar pdest = g_bootcfg.bootfilename, psrc = l"nk.bin"; while(*pdest++=*psrc++); } for seeyoo only free datasheet http://
- 74 - g_bootcfg.protected_flash_area_start = image_flash_protected_area_start; g_bootcfg.protected_flash_area_size = image_flash_protected_area_size; } g_bspflags = g_bootcfg.bspflags; if (g_bspflags & bsp_bootf_ispcihost){ oalpciinit(); // we must initialize pci bus first oalpciconfig(0, 0, 0, 0, 0, 0, null); } // call configuration menu blmenu(); if (!(g_bspflags & bsp_bootf_ispcihost)){ oallog(l" ispcihost is not enabled, return bl_error\r\n "); return bl_error; } memset(&g_memfile,0,sizeof(g_memfile)); if (!g_bspflags & bsp_bootf_ispcihost) return bl_error; // image download depend on protocol g_downloaddevicetype = oalkitldevicetype(&g_bootcfg.bootdevloc, g_bootdevices); switch (g_downloaddevicetype){ case oal_kitl_type_flash: g_memfile.nkbinaddr = oalpatoca(image_flash_pa_start + g_bootcfg.nk_bin_flash_offset); g_memfile.offset = 0; g_downloaddevicetype = oal_kitl_type_flash; rc = blflashdownload(g_memfile.nkbinaddr); break; case oal_kitl_type_eth: rc = blethdownload(&g_bootcfg, g_bootdevices); break; case oal_kitl_type_mem: g_memfile.nkbinaddr = (pvoid)oalpatoca(image_boot_nk_bin_pa_start); rc = blmemdownload(); break; case oal_kitl_type_ide: rc = idedownload(&g_bootcfg, g_bootdevices); break; case oal_kitl_type_pflash: rc = pflashdownload(&g_bootcfg, g_bootdevices); break; } return rc; } for seeyoo only free datasheet http://
- 75 - 7) how to modify wince feature on SMP8634 a) web server 1. open the platform.reg file of ce pr oject, add follow settings at the end of file ;web server hkey_local_machine\comm\httpd\vroots\/webadmin] @="\\windows\\httpdadm.dll" "a"=dword:0 [hkey_local_machine\comm\httpd\vroots\/basiconly] @="\\" "a"=dword:1 "basic"=dword:1 "ntlm"=dword:0 "dirbrowse"=dword:1 [hkey_local_machine\comm\httpd\vroots\/ntlmonly] @="\\" "a"=dword:1 "basic"=dword:0 "ntlm"=dword:1 "dirbrowse"=dword:1 [hkey_local_machine\comm\httpd\vroots\/bothauth] @="\\" "a"=dword:1 "basic"=dword:1 "ntlm"=dword:1 "dirbrowse"=dword:1 2. make the nk.bin file, download it to SMP8634 board 3. use the ie of pc system to open the http://192.168.1.250 link, set the password of admin and reboot the web server 4. use the ie of pc to open the http://192.168.1.250/webadmin link, setup the web server b) ftp server open the platform.reg file of ce projec t, add follow settings at the end of file ;ftp server [hkey_local_machine\comm\ftpd] "isenabled"=dword:1 "allowanonymous"=dword:1 "allowanonymousupload"=dword:1 "allowanonymousvroots"=dword:1 "defaultdir"="\\hard disk\\" "allowlowportvalues"=dword:1 default ftp login account user: anonymous passwd: anonymous c) telnet server d) smb server open the project.reg file of ce project, add follow settings at the end of file ;file server [hkey_local_machine\services\smbserver] "adapterlist"="mac86xx1" [hkey_local_machine\servic es\smbserver\shares\root] "path"="\\hard disk" "type"=dword:0 "userlist"="admin" e) hive-based registry 1.hdd device open the project.reg file of ce projec t, add follow settings at the end of file ; hive boot section [hkey_local_machine\init\bootvars] "start devmgr"=dword:1 [hkey_local_machine\system\storagemanager\profiles\hdprofile\fatfs] "mountflags"=dword:2 ; end hive boot section for seeyoo only free datasheet http://
- 76 - open the platform.reg file of ce project, add follow line above ?if bsp_smp863x_atapi ? line ; hive boot section add follow line under ? endif bsp_smp863x_atapi ? line ; end hive boot section add follow line each under [hkey_local_machine\driv ers\builtin\bsp_atapi] , [hkey_local_machine\drivers\builti n\bsp_atapi\device0] and [hkey_local_machine\drivers\builtin\bsp_atapi\device1] "flags"=dword:1000 add follow environment variab le values to ce project. prj_enable_fsmountasroot = 1 prj_enable_regflush_thread = 1 prj_bootdevice_atapi = 1 sysgen current ce project, and make the new nk.bin f) ie 6.0 for windows ce 1) open the platform.reg file of ce proj ect, add follow settings at the end of file, you can set the ie start page to http://192.168.1.98 and set the web proxy of ie to 192.168.1.98:2080 ;;;;;;;;;; ie6 start page ;;;;;;;;;; [hkey_current_user\software\microsoft\internet explorer\main] "start page"="http://192.168.1.98:80" [hkey_current_user\software\microsoft\win dows\currentversion\internet settings] "enableautodial"=dword:0 [hkey_current_user\software\microsoft\windows\currentversion\internet settings\connections] "defaultconnectionsettings"=hex:3c,00,00,00, 03,00,00,00, 03,00,00,00, 11,00,00,00, 31,39,32,2e, 31,36,38,2e, 31,2e,39,33, 3a,32,30,38, 30,07,00,00, 00,3c,6c,6f, 63,61,6c,3e, 00,00,00,00, 00,00,00,00, 00,00,00,00, 00,00,00,00, 00,00,00,00, 00,00,00,00, 00,00,00,00, 00,00,00,00 2) url security zones policy settings(for pplive) [hkey_local_machine\software\microsoft\windows\currentversion\internet settings\zones\1] "currentlevel"=dword:10000 "minlevel"=dword:10000 "recommendedlevel"=dword:10000 "1200"=dword:00 "1201"=dword:00 "1202"=dword:00 "1400"=dword:00 "1401"=dword:00 "1402"=dword:00 "1405"=dword:00 "1406"=dword:00 "1407"=dword:00 "1601"=dword:00 "1602"=dword:00 "1604"=dword:00 "1605"=dword:00 "1606"=dword:00 "1607"=dword:00 "1608"=dword:00 "1609"=dword:00 "1800"=dword:00 "1802"=dword:00 "1803"=dword:00 "1804"=dword:00 "1805"=dword:00 "1a00"=dword:00 "1a02"=dword:00 "1a03"=dword:00 "1a04"=dword:00 "1a05"=dword:00 "1a06"=dword:00 "1a10"=dword:00 for seeyoo only free datasheet http://
- 77 - [hkey_local_machine\software\microsoft\windows\currentversion\internet settings\zones\2] "currentlevel"=dword:10000 "minlevel"=dword:10000 "recommendedlevel"=dword:10000 "1200"=dword:00 "1201"=dword:00 "1202"=dword:00 "1400"=dword:00 "1401"=dword:00 "1402"=dword:00 "1405"=dword:00 "1406"=dword:00 "1407"=dword:00 "1601"=dword:00 "1602"=dword:00 "1604"=dword:00 "1605"=dword:00 "1606"=dword:00 "1607"=dword:00 "1608"=dword:00 "1609"=dword:00 "1800"=dword:00 "1802"=dword:00 "1803"=dword:00 "1804"=dword:00 "1805"=dword:00 "1a00"=dword:00 "1a02"=dword:00 "1a03"=dword:00 "1a04"=dword:00 "1a05"=dword:00 "1a06"=dword:00 "1a10"=dword:00 [hkey_local_machine\software\microsoft\windows\currentversion\internet settings\zones\3] "currentlevel"=dword:10000 "minlevel"=dword:10000 "recommendedlevel"=dword:10000 "1200"=dword:00 "1201"=dword:00 "1202"=dword:00 "1400"=dword:00 "1401"=dword:00 "1402"=dword:00 "1405"=dword:00 "1406"=dword:00 "1407"=dword:00 "1601"=dword:00 "1602"=dword:00 "1604"=dword:00 "1605"=dword:00 "1606"=dword:00 "1607"=dword:00 "1608"=dword:00 "1609"=dword:00 "1800"=dword:00 "1802"=dword:00 "1803"=dword:00 "1804"=dword:00 "1805"=dword:00 "1a00"=dword:00 "1a02"=dword:00 "1a03"=dword:00 "1a04"=dword:00 "1a05"=dword:00 "1a06"=dword:00 "1a10"=dword:00 for seeyoo only free datasheet http://
- 78 - g)media player for some audio problems of media file, ;060815_kb923828 - files with large preroll values may cause out-of-memory issues. [hkey_current_user\software\microsoft\netshow\player\general] "maximum buffering time"=dword:2710 ; = 10000 ms "buffering time"=dword:2710 ;=10000 ms for some bug of windows ce5.0 ;070925_kb942195 - a high priority thread may precipitate starvation in the mp3 decoder pipeline resulting in audio glitches. [hkey_local_machine\software\microsoft\directx\directshow\mp3decoder] "minbuffersize"=dword:4000 ;050805_kb904255 - this update allows windows ce 5.0 to access certain storage media configured with non-standard fat formatting tools. [hkey_local_machine\system \storagemanager\fatfs] "bypassfatsectorcheck"=dword:1 ;050812_kb902443 - this update resolves some audio performance issues that may occur when playing certain wmv files. [hkey_current_user\software\microsoft\netshow\player\general] "dispatchadvancetimeaudiovideo"=dword:3e8 ;=1000 ;051026_kb904256 - mp3 files with certain metadata may not play correctly. [hkey_current_user\software\microsoft\multimedia\directshow\mpeg1 audio] "id3v2sizelimit"=dword:400 [hkey_current_user\software\microsoft\multimedia\directshow\mpeg1 audio] "framesearchlimit"=dword:18 ;051028_kb903076 - this update addresses an issue with the stream bandwidth controller and a possible out-of-memory condition when buffering. [hkey_current_user\software\microsoft\netshow\player] "disconnecttimeout"=dword:1d4c0 ;120000ms ;050117_kb890935 - playback of large .asf files may result in a memory leak. [hkey_current_user\software\microsoft\netshow\player\general] ; "maxstreamermessages"=dword:00000064 "maxstreamermessages"=dword:00640000 ;060927_kb924605 - virtual memory issues may cause playback to spontaneously abort. [hkey_local_machine\softwa re\microsoft\directshow] "usingsharedmemory"=dword:1 [hkey_local_machine\softwa re\microsoft\directshow] "sharedmemorythreshold"=dword:100000 ;060815_kb923828 - under certain circumstance s a deadlock may occur between the asf file streamer and the splitter. ;this is the low watermark. we will just issue a freeze if we go below multiplier * pre-roll value. [hkey_current_user\software\microsoft\netshow\player] "prerollminmultiplier"=dword:1e ; = 30 decimal ;this is a high watermark, meaning that we won't buffer more than what is specified by pre-roll * multiplier. [hkey_current_user\software\microsoft\netshow\player] "prerollmaxmultiplier"=dword:c8 ; = 200 decimal ;051128_kb910643 - playback of wma files may consume large amount of memory. [hkey_local_machine\software\microso ft\directx\directshow\wmadecoder] "maxoutputframesize"=dword:500000 ;050513_kb897325 - the default thread prioriti es of both the video decoder thread and renderer thread need to be adjusted to properly decoder and display a frame at the right time. [hkey_local_machine\software\micro soft\directshow\threadpriority] "asyncvideorenderer"=dword:80 for seeyoo only free datasheet http://
- 79 - h)microsoft network media device fyi microsoft help information. i)standard shell 1. about taskbar, add follow setting to project.reg [hkey_local_machine\software\mic rosoft\shell\autohide]  @=" " ; ascii 0x01 [hkey_local_machine\software\microsoft\shell\ontop] @="" 2. let mediaplayer open the .ts or .vob extension file as a mpeg file, add follow setting to platform.reg (not recommend) [hkey_classes_root\.ts] "content type"="video/mpeg" [hkey_classes_root\.ts] @="videofile" "content type"="video/mpeg" [hkey_classes_root\mime\database\content type\video/mpeg] "extension"=".ts" ;vob [hkey_classes_root\.vob] "content type"="video/mpeg" [hkey_classes_root\.vob] @="videofile" "content type"="video/mpeg" [hkey_classes_root\mime\database\content type\video/mpeg] "extension"=".vob" j)directdvd it?ll be released. k)wire less ethernet 1. realtek rtl8180 native wi-fi sta/ap driver(802.11a/b) 2. metalink 3. via for seeyoo only free datasheet http://
- 80 - 8) how to upgrade xos of SMP8634 chip this step must work in release mode nk.bin system, don?t use other mode nk.bin to do it. copy the xos binary file and xrpc.exe file to "\wince500\pbworkspace\(your ce project name)\reldir\smp863x_mipsii_release" directory, download the nk.bin to SMP8634 board boot the ce system up. in platform builder target control window type ?s xrpc release\xrpc_xload_xosu-xosme0-8634_es4_dev.bin? command. first time serial window will get a error message, don?t care about it, type the command again, then the SMP8634 board will show a green window and shutdown. reboot the board, then the new xos is ready. in serial port window, the first line messa ge after reboot shows the version of xos xosme0 serial#d94c4b9ea50ceb457882f9d5033ec114 subid 0xc4 xenv cs2 ok power supply: ok dram0 ok (7) dram1 ok (8) zboot (0) ok 9) how to get xos information xrpc_info3 10) how to make the boot screen a) copy the smp863x_restorefb.lib(dev for es6/es7/es9 chip, prod for rev a/b/c chip) file to ?\wince500\platform\smp863x\lib\mipsii\retail? directory, make sure it is in ?bootloader? project link additional libraries b) build a release mode ce project and get the nk.bin file c) build a new bootfb.exe file with bootfb source code, copy it to ce project release directory d) download nk.bin to SMP8634 board with platform builder, run the ce system up e) in platform builder target control window type ?s bootfb.exe \\release\\bootfb.bin? command, create the bootfb.bin and bootfb.bin.h file in ce project release directory, detach device f) open the main.c file of bootloader project 1. add follow define under ? //#define reset_8139_on_launch 1 ? line #define setup_framebuffer_in_bootloader 2 2. find follow code #ifdef setup_framebuffer_in_bootloader // these functions are defined in smp863x_restorefb.lib int restorefb (byte *p, dword n, dword *pphysicaladdressofframebuffer, dword *pwidth, dword *pheight); int dvi_init (); int dvi_enable (); int dvi_disable (); #endif make sure these code is ok. 3. find follow code #ifdef setup_framebuffer_in_bootloader //#include "c:\\wince500\\pbworkspaces\\SMP8634gener ic\\reldir\\smp863x_mipsii_release\\bo otfb.bin.h" #endif modify it to #ifdef setup_framebuffer_in_bootloader #include "d:\\wince500\\pbworkspaces\\(your ce project name)\\reldir\\smp863x_mipsii_release\\bootfb.bin.h" #endif 4. find follow code at the end of ? oemplatforminit() ? function #ifdef setup_framebuffer_in_bootloader { dword fb, width, height, i, j, saved_remap_register; rmuint8 *p; // save the current remap register saved_remap_register = inreg32 (cpu_va+cpu_remap+4*4); oallog(l"saved_remap_register = %08lx\r\n", saved_remap_register); for seeyoo only free datasheet http://
- 81 - // re-program the re-map register so that dram1 starts at kseg1 address 0x0c000000 outreg32 (cpu_va+cpu_remap+4*4, 0x20000000); restorefb (bootfb, sizeof (bootfb), &fb, &width, &height); oallog(l"fb @ 0x%08lx (%d x %d)\r\n", fb, (int)width, (int)height); if ((fb & 0xf0000000) == 0x20000000) fb -= 0x14000000; // enable hdmi output in "dvi" mode dvi_init (); dvi_enable (); // paint the screen gray or draw whatever you want p = (rmuint8 *)oalpatoua(fb); for (i=0; iSMP8634 board and reboot it, about 6 seconds, you can see a grey boot screen from hdmi/ypbpr/video port. 11) how to show a bitmap logo in boot screen 12) how to show a progress in boot screen 13) how to dynamic change video output ddi_esc #include #include "../include/ddi_86xx/ddi86xxesc.h" #include "../include/ddi_86xx/smp863x_formats.h" static void unicode2char (char *unicode, char *name, int l) { int i; for (i=0; i - 82 - return i; } int winapi winmain ( hinstance hinstance, hinstance hprevinstance, lptstr lpcmdline, int ncmdshow) { char commandline[512]; stddidisplayoutput displayoutput; int mode; unicode2char ((char *)lpcmdline, commandline, unicodestrlen ((char *)lpcmdline)); mode = atoi (commandline); if (mode < 0) mode = 0; if (mode > 4) mode = 4; // dynamic resolution change if (mode == 0) { // use when user views on composite/svideo displayoutput.analogstandard = emhwlibtvstandard_ntsc_m; displayoutput.componentstandard = emhwlibtvstandard_ntsc_m; displayoutput.digitalstandard = emhwlibtvstandard_hdmi_480i59; retailmsg (1, (text("** dynamic output mode change: setting display mode to ntsc, ntsc, 480i\r\n"))); } else if (mode == 1) { // use when user has a 480p capable tv, and they are watching on component or hdmi displayoutput.analogstandard = emhwlibtvstandard_ntsc_m; displayoutput.componentstandard = emhwlibtvstandard_480p59; displayoutput.digitalstandard = emhwlibtvstandard_hdmi_480p59; retailmsg (1, (text("** dynamic output mode change: setting display mode to ntsc, 480p, 480p\r\n"))); } else if (mode == 2) { // use when user has a 720p capable tv, and they are watching on component or hdmi displayoutput.analogstandard = emhwlibtvstandard_ntsc_m; displayoutput.componentstandard = emhwlibtvstandard_720p59; displayoutput.digitalstandard = emhwlibtvstandard_hdmi_720p59; retailmsg (1, (text("** dynamic output mode change: setting display mode to ntsc, 720p, 720p\r\n"))); } else if (mode == 3) { // use when user has a 1080i capable tv, and they are watching on component or hdmi displayoutput.analogstandard = emhwlibtvstandard_ntsc_m; displayoutput.componentstandard = emhwlibtvstandard_1080i59; displayoutput.digitalstandard = emhwlibtvstandard_hdmi_1080i59; retailmsg (1, (text("** dynamic output mode change: setting display mode to ntsc, 1080i, 1080i\r\n"))); } else if(mode == 4) { displayoutput.analogstandard = emhwlibtvstandard_ntsc_m ; for seeyoo only free datasheet http://
- 83 - displayoutput.componentstandard = emhwlibtvstandard_ntsc_m; displayoutput.digitalstandard = emhwlibtvstandard_custom; displayoutput.componentmode = emhwlibcomponent mode_yuv_smpte; displayoutput.componentorder = emhwlibcomponentorder_rgb; displayoutput.componentcolorspace = emhwlibcolorspace_yuv_601; displayoutput.digitaloutputvideomode.pixelclock = 0x2122800;//0x2625a00; displayoutput.digitaloutputvideomode.hactive = 0x320; displayoutput.digitaloutputvideomode.hfrontporch = 0x0; displayoutput.digitaloutputvideomode.hsyncwidth = 0x80; displayoutput.digitaloutputvideomode.hbackporch = 0x0; displayoutput.digitaloutputvideomode.hsyncpolarity = 0x0; displayoutput.digitaloutputvideomode.vactive = 0x258; displayoutput.digitaloutputvideomode.vfrontporch = 0x1; displayoutput.digitaloutputvideomode.vsyncwidth = 0x3; displayoutput.digitaloutputvideomode.vbackporch = 0x14; displayoutput.digitaloutputvideomode.vsyncpolarity = 0x0; displayoutput.digitaloutputvideomode.interlaced = 0x0; displayoutput.lvds.enable = 0x1; displayoutput.lvds.gpiofieldidoutput = 0xb; displayoutput.lvds.gpiopanelon = 0xe; retailmsg (1, (text("** dynamic output mode change: setting display mode to 800x600\r\n"))); } hdc hdc = getdc (0); if (hdc) { if(mode < 4) { extescape ( hdc, ddi86xx_esc_set_display_output, sizeof (stddidisplayoutput), (lpcstr)&displayoutput, 0, 0 ); } else { extescape ( hdc, ddi86xx_esc_set_display_output_ex, sizeof (stddidisplayoutput), (lpcstr)&displayoutput, 0, 0 ); } releasedc (0, hdc); } return 0; } 14) current driver escape codes // driver escape codes // set the display output - use stddidisplayoutput as the input #define ddi86xx_esc_set_display_output 100000 // get the current display output #define ddi86xx_esc_get_display_output 100001 // set the hdmi audio info. for seeyoo only free datasheet http://
- 84 - #define ddi86xx_esc_set_hdmi_audio_info 100002 // set the flicker #define ddi86xx_esc_set_antiflicker 100003 // query the osd window position. use stddipos #define ddi86xx_esc_get_gdi_pos 100004 // use stddidisabledisplayoutput #define ddi86xx_esc_disable_outputs 100005 // set the display aspect ratio - use stddioutputaspectratio #define ddi86xx_esc_set_output_aspect_ratio 100006 // set the macrovision and cgms levels - use stddimacrovisioncgms #define ddi86xx_esc_set_macrovision_cgms 100007 // permanently hide/show the hardware cursor #define ddi86xx_esc_hide_hw_cursor 100008 #define ddi86xx_esc_show_hw_cursor 100009 // brightness, contrast, and saturation controls - use stddibcs #define ddi86xx_esc_set_bcs 100013 #define ddi86xx_esc_get_bcs 100017 // set the alpha blending value for a region - use stddialpha // be careful: this function does not do any range or error checking #define ddi86xx_esc_set_alpha_value 100018 // check to see if the hdmi has been set at least once. #define ddi86xx_esc_check_hdmi_audio_info 100019 // set the display aspect ratio - use stddiscalingmode #define ddi86xx_esc_set_scaling_mode 100020 // set/get the key color - use stddikeycolor #define ddi86xx_esc_set_keycolor 100021 #define ddi86xx_esc_get_keycolor 100022 // set "advanced" analog copy control - use stddicopycontrol #define ddi86xx_esc_set_copy_control 100023 // set/get volume level - use stddivolume #define ddi86xx_esc_set_volume 100024 #define ddi86xx_esc_get_volume 100025 // mute/un-mute all audio outputs - use stddiaudiomute #define ddi86xx_esc_audio_mute 100026 // set the osd window position. use stddipos #define ddi86xx_esc_set_gdi_pos 100027 // enable/disable the hdcp. pass a boolean value to lpszindata of extescape. #define ddi86xx_esc_enable_hdcp 100028 // enable/disable the edid (hdmi preferred mode) detection. pass a boolean value to lpszindata of extescape. #define ddi86xx_esc_enable_edid_detection 100029 // disable/clear the stretch blitting. default is enable. pass a boolean value to lpszindata of extescape. #define ddi86xx_esc_disable_stretch_blt 100030 // extended version to set the display output - use stddidisplayoutput as // the input. the application must set all the parameters. the non-extended // one only requires the standards since the driver will use the current component // parameters. note that ddi86xx_esc_get_ display_output will return all the parameters. #define ddi86xx_esc_set_display_output_ex 100031 // blt the picture from the decoder onto osd surface. #define ddi86xx_esc_pic_bitblt 100032 // enable/disable the hdmi audio (switch to dvi mode). // pass a boolean value to lpszindata of extescape. #define ddi86xx_esc_disable_hdmi_audio 100033 // dump the edid info. pass a pre-allocated buffe r (char*) to lpszoutdata and the buffer size // to cboutput of extescape. recommen d the buffer size of at least 4kb. #define ddi86xx_esc_dump_edid 100034 // get the current hdmi connection state. true=connect, false=disconnect. pass a boolean value to lpszoutdata. #define ddi86xx_esc_get_hdmi_connection 100035 // debug purpose only - get the last hdmi debug message. // pass a pre-allocated buffer (char*) to lpszoutdata and the buffer size // to cboutput of extescape. recommen d the buffer size of at least 4kb. // if the buffer size is less than the valid debug message, it will return 0. #define ddi86xx_esc_get_last_hdmi_debugmsg 100036 for seeyoo only free datasheet http://
- 85 - // to receive an event when the hdmi connection changes, registerwindowmessage the below message // and use the return id as your message id in your application wndproc. please see hwnd_broadcast // in postmessage for more details of how to catch this event. // when receiving this event, use the ddi86xx_esc_get_hdmi_connection to check for current // hdmi connection. #define smp863x_hdmi_connection_message text("smp863x_hdmi_connection_changes") typedef struct { unsigned long pixelclock; unsigned long hactive; unsigned long hfrontporch; unsigned long hsyncwidth; unsigned long hbackporch; unsigned long hsyncpolarity; // true: positive, false: negative unsigned long vactive; unsigned long vfrontporch; unsigned long vsyncwidth; unsigned long vbackporch; unsigned long vsyncpolarity; // true: positive, false: negative unsigned long interlaced; } stddivideomode; // lvds specific parameters. the gpio pin numbers are board dependent, be careful! typedef struct { unsigned long enable; unsigned long gpiofieldidoutput; // gpio to enable field id output to the lvds parity line unsigned long gpiopanelon; // gpio to turn on the panel } stddilvds; typedef struct { enum emhwlibtvstandard analogstandard; enum emhwlibtvstandard digitalstandard; enum emhwlibtvstandard componentstandard; // the below parameters require to use the ddi86xx_esc_set_display_output_ex. // using the ddi86xx_esc_set_display_output will result an invalid output. // these parameters apply to component output enum emhwlibcomponentmode componentmode; enum emhwlibcomponentorder componentorder; enum emhwlibcolorspace componentcolorspace; enum emhwlibcolorspace analogcolorspace; enum emhwlibcolorspace digitalcolorspace; // invert/clear the digital video clock (inverted by default) unsigned long invertclock; // set to 1 to enable vga output. also need to set component parameters correctly for the vga mode. // do not set digitalstandard to custom when it's 1. unsigned long vgaoutput; // custom digital output video mode. digitalstandard must be set to emhwlibtvstandard_custom. // outputs on analog and component will disabled. stddivideomode digitaloutputvideomode; stddilvds lvds; } stddidisplayoutput; typedef struct { unsigned char adaptativeenable; for seeyoo only free datasheet http://
- 86 - /** member default range 0 -> 1 */ unsigned long taps; /** member default range 0 -> 3 */ unsigned long antiflickercolor; /** member default range 0 -> 3 */ unsigned long antiflickeralpha; } stddiantiflicker; typedef struct { int x; int y; int width; int height; } stddipos; typedef struct { int disable; } stddidisabledisplayoutput; typedef struct { int x; int y; } stddioutputaspectratio; #define ddi_scaling_mode_letterbox 1 #define ddi_scaling_mode_panscan 2 #define ddi_scaling_mode_none 3 typedef struct { int scalingmode; } stddiscalingmode; typedef struct { int macrovision_level; // range is 0-3 for ntsc, 0-1 for pal int cgms_level; // range is 0-3 } stddimacrovisioncgms; typedef struct { // each output has separate controls for brightness, saturation, and contrast control int digital_brightness; // range: -128 to 127, default = 0 int digital_contrast; // range: 0 to 255, default = 128 int digital_saturation; // range: 0 to 255, default = 128 int mainanalog_brightness; // range: -128 to 127, default = 0 int mainanalog_contrast; // range: 0 to 255, default = 128 int mainanalog_saturation; // range: 0 to 255, default = 128 int component_brightness; // range: -128 to 127, default = 0 int component_contrast; // range: 0 to 255, default = 128 int component_saturation; // range: 0 to 255, default = 128 } stddibcs; typedef struct { unsigned long alpha; // range: 0 - 255, 0=transparent, 0xff=opaque int x; // x offset of region int y; // y offset of region int w; // width of region int h; // height of region unsigned long surface_addr; // start address of the surface int stride; // stride of surface } stddialpha; for seeyoo only free datasheet http://
- 87 - typedef struct { unsigned char r; unsigned char g; unsigned char b; } stddikeycolor; typedef struct { enum emhwlibagcversion agc_version; unsigned long agc_level; // macrovision pulses 0, 1, 2, 3. usually is same value as aps. unsigned long cgmsa; // copy generation management system 0, 1, 2, 3. sent on line 20 and // in "copy and redistribution control packet" on line21_xds. unsigned long aps_level; // analog protection system 0, 1, 2, 3. sent on line 20 and // in "copy and redistribution control packet" on line21_xds. unsigned long rcd; // redistribution control descriptor. sent on line 20 and // in "copy and redistribution control packet" on line21_xds. unsigned long asb; // analog source bit. sent on line 20 and // in "copy and redistribution control packet" on line21_xds. } stddicopycontrol; typedef struct { long volume; // specified in db, range is (0, -49) 0db is max, <= -49db is mute } stddivolume; typedef struct { int mute; // 0=un-mute 1=mute } stddiaudiomute; #include "bitblt.h" typedef struct { stdecodedinfo surinfo; stpictureparams picparams; stddipos srcwnd; stddipos dstwnd; } stddipictureblt; 15) extended project all of these extended project are from internet source or 3 rd co. , if you have interest about them, please learn and ch eck them by yourself, there is not any supporting for them with sigmadesigns. a)webcam windows ce webcam project: this project covers a windows ce usb video spec webcam driver that supports windows ce 4.2, 5.0, and 6.0. license: microsoft limited permissive license (ms-lpl) published: october 12, 2006 related links ? shared source licenses ? microsoft permissive license ? microsoft community license ? microsoft reference license this license governs use of the accompanying software. if you use the software, you accept this license. if you do not accept the license, do not use the software. for seeyoo only free datasheet http://
- 88 - 1. definitions the terms ?reproduce,? ?reproduction,? ?derivative works,? and ?distribution? have the same meaning here as under u.s. copyright law. a ?contribution? is the original software, or any additions or changes to the software. a ?contributor? is any person that distributes its contribution under this license. ?licensed patents? are a contributor?s patent claims that read directly on its contribution. top of page 2. grant of rights (a) copyright grant- subject to the terms of this license, including the license conditions and limitations in section 3, each contributor grants you a non-exclusive, worldwide, royalty-free copyright license to reproduce its contribution, prepare derivative works of its contribution, and distribute its contribution or any derivative works that you create. (b) patent grant- subject to the terms of this license, including the license conditions and limitations in section 3, each contributor grants you a non-exclusive, worldwide, royalty-free license under its licensed patents to make, have made, use, sell, offer for sale, import, and/or otherwise dispose of its contribution in the software or derivative works of the contribution in the software. top of page 3. conditions and limitations (a) no trademark license- this license does not grant you rights to use any contributors? name, logo, or trademarks. (b) if you bring a patent claim against any contributor over patents that you claim are infringed by the software, your patent license from such contributor to the software ends automatically. (c) if you distribute any portion of the soft ware, you must retain all copyright, patent, trademark, and attribution notices that are present in the software. (d) if you distribute any portion of the softwa re in source code form, you may do so only under this license by including a complete copy of this license with your distribution. if you distribute any portion of the software in comp iled or object code form, you may only do so under a license that complies with this license. (e) the software is licensed ?as-is.? you bear the risk of using it. the contributors give no express warranties, guarantees or conditions. you may have additional consumer rights under your local laws which this license cannot change. to the extent permitted under your local laws, the contributors exclude the implied warranties of merchantability, fitness for a particular purpose and non-infringement. (f) platform limitation- the licenses granted in sections 2(a) & 2(b) extend only to the software or derivative works that you create that run on a microsoft windows operating system product. link: http://www.codeple x.com/cewebcam b)doom SMP8634 wince platform support directdr aw, so we can try build doom windows project on it. c)pplive pplive build a demo for SMP8634 wince platform d)emule emule is a windows gpl project, so you can try build a version for SMP8634 platform e)javavm(personal java) the pjavawince-1.1-beta1-mips version javavm can be installed in SMP8634 platform, so we can try run some java application with it. for seeyoo only free datasheet http://
- 89 - 16) about windows ce test kits(cetk) a) get the real-time cpu/memory usage there are two exe files(cetkperf.exe and cpumon.exe.) in wince install directory, you can do as follow steps, 1. copy the cetkperf.exe(the version fo r mipsii) to wince system, run it as command ?cetkperf ?, and make sure you can get ?*** could not connect to server socket? message in debug window 2. run cpumon.exe file in your winxp system, you can get the real-time cpu and memory usage 17) bug list a) can?t open slave ide device dma mode b) there is noise in audio output when play a mpeg2 programstream with ac3 audio c) no audio output when play a wma pro audio only file d) no audio output when play a media file with dts audio for seeyoo only free datasheet http://


▲Up To Search▲   

 
Price & Availability of SMP8634

All Rights Reserved © IC-ON-LINE 2003 - 2022  

[Add Bookmark] [Contact Us] [Link exchange] [Privacy policy]
Mirror Sites :  [www.datasheet.hk]   [www.maxim4u.com]  [www.ic-on-line.cn] [www.ic-on-line.com] [www.ic-on-line.net] [www.alldatasheet.com.cn] [www.gdcy.com]  [www.gdcy.net]


 . . . . .
  We use cookies to deliver the best possible web experience and assist with our advertising efforts. By continuing to use this site, you consent to the use of cookies. For more information on cookies, please take a look at our Privacy Policy. X