DSM/ECU: Difference between revisions

From Jane Hacker Wiki
Jump to navigation Jump to search
No edit summary
No edit summary
 
(181 intermediate revisions by the same user not shown)
Line 1: Line 1:
==Subpages==
[[DSM/ECU/Pretty disassembly notes]]<ref>
* https://pastebin.com/21Fk0Gwb
** https://pastebin.com/raw/21Fk0Gwb
** https://web.archive.org/web/20210425140243/https://pastebin.com/raw/21Fk0Gwb
</ref>
[[DSM/ECU/ECU Numbers]] <ref>
* https://www.evoscan.com/technical-vehicle-manuals/150-mitsubishi-ecu-numbers
</ref>
[[DSM/ECU/ROMS]]
[[DSM/ECU/JE331B988B]]
[[DSM/ECU/TMP76xxx MH6xxx]]
[[DSM/ECU/Reverse Engineering]]
[[DSM/ECU/EB20_TunerPro_Export]] (1G DSM NA/NT 4G63)
==General==
==General==
* http://dsmecu.com/index.php
* http://dsmecu.com/index.php


* <s>http://dsm-ecu.com</s>
* <s>http://dsm-ecu.com</s>
- https://web.archive.org/web/20050427181808/http://dsm-ecu.com/  
** https://web.archive.org/web/20050427181808/http://dsm-ecu.com/
 
===ECU troubleshooting and daughterboard [RUS]===
* https://autodata.ru/article/praktika_remonta/mitsubishi_blok_upravleniya/
 
===Photos===
* http://simon.chi.il.us/ECU/Stock/
* https://www.3si.org/threads/research-post-your-ecu-pics.442851/
* https://www.3si.org/threads/dsm-link-for-the-3-s-use-your-stock-ecu-to-tune.440062/
* https://www.3si.org/threads/3000gt-eprom-conversion-board.478086/
 
===DSM-ECU Yahoo! Group Archives===
* <s>http://autos.groups.yahoo.com/group/dsm-ecu/</s>
** https://web.archive.org/web/*/http://autos.groups.yahoo.com/group/dsm-ecu/*
** https://web.archive.org/web/*/http://autos.groups.yahoo.com/group/dsm-ecu/files/*
 
* <s>http://groups.yahoo.com/group/dsm-ecu/</s>
** https://web.archive.org/web/*/http://groups.yahoo.com/group/dsm-ecu/*
** https://web.archive.org/web/*/http://groups.yahoo.com/group/dsm-ecu/files/*


* http://tunerpro.net/download/bins/DSM/
* <s>https://groups.yahoo.com/neo/groups/dsm-ecu/</s>
** https://web.archive.org/web/*/https://groups.yahoo.com/neo/groups/dsm-ecu/*
** https://web.archive.org/web/*/https://groups.yahoo.com/neo/groups/dsm-ecu/files/*


ECU troubleshooting and daughterboard [RUS]
* https://web.archive.org/web/20050924115927/http://dsm-ecu.com/archive/mail2.html
* https://autodata.ru/article/praktika_remonta/mitsubishi_blok_upravleniya/
** https://web.archive.org/web/*/http://dsm-ecu.com/archive/*


==ECU numbers==
==ECU numbers==
* http://simon.chi.il.us/ECU/ECUID.html
* https://tech.mirage-performance.com/ECU/index.html
* https://www.evoscan.com/technical-vehicle-manuals/150-mitsubishi-ecu-numbers
* https://www.evoscan.com/technical-vehicle-manuals/150-mitsubishi-ecu-numbers
* https://tech.mirage-performance.com/ECU/index.html
* http://simon.chi.il.us/ECU/ECUID.html
* http://ecmoutlet.com/ecm_forum.html
* http://ecmoutlet.com/ecm_forum.html
* http://ecmoutlet.com/ecm_forum.html#p13
* http://ecmoutlet.com/ecm_forum.html#p13
* http://www.vfaq.com/mods/ECUs.html
===EDM ECUs===
{|class="wikitable"
!|Model
!|MMC #
!|MEC #
|-
|Eclipse I 2.0 16v D22A (90-94)
|MD169144
|E2T36583
|-
|Eclipse II 2.0 16v D30 (95-96)
|MD327134
|E2T61680
|-
|" (97-99)
|MD334797
|E2T61685
|}<ref>
* https://web.archive.org/web/20010215033806/http://www.castelli-italtec.com/docs/ea_mitsubishi.htm
</ref>
See Also: [[DSM/ECU/ECU Numbers]]<ref>
* https://www.evoscan.com/technical-vehicle-manuals/150-mitsubishi-ecu-numbers
</ref>


==EPROM images==
==EPROM images==
* http://tunerpro.net/download/bins/DSM/
* http://www.tunerpro.net/downloadBinDefs.htm#DSM
* http://www.lilevo.com/mirage/ECU%20editting,%20MAF(T),%20Eprom,%20Map,%20Tuning,%20Pinouts,%20Standalone%20etc/EPROM%20EDITTING%20ECU%20and%20%20MAF%20FILES/
* http://www.lilevo.com/mirage/ECU%20editting,%20MAF(T),%20Eprom,%20Map,%20Tuning,%20Pinouts,%20Standalone%20etc/EPROM%20EDITTING%20ECU%20and%20%20MAF%20FILES/
* http://www.tunerpro.net/downloadBinDefs.htm#DSM
* http://www3.sympatico.ca/tchaad/
* https://web.archive.org/web/*/http://evoscan.com/roms/mitsubishi/download/*
* https://www.mirage-performance.com/tech/ECU/Code/
* https://zarnochwf1.com/mitsubishi/roms/<ref>https://www.club3g.com/threads/general-questions-about-2001-montero-sport-6g72-rom.159492/post-3291599</ref>
 
==Input/Output==
* http://www.technomotive.com/faq/dsmio.htm
 
===Sensors===
* https://web.archive.org/web/20090723070534/http://geocities.com/MotorCity/Downs/7678/dsmtests.html
 
====ISC====
* https://web.archive.org/web/20170816030254/http://dsmisc.com/dsmweb-dw/index.html#
* https://www.dsmtalk.com/threads/ic105-burning-exploding-1g-dsm-ecu.240681/
 
====Alternative pinout====
* https://www-dsm--club-org.translate.goog/forum/showpost.php?s=3a99c9d08c44ecaba31d99162bb39ab9&p=31182&postcount=6&_x_tr_sl=ru&_x_tr_tl=en&_x_tr_hl=en&_x_tr_pto=ajax,nv,elem&_x_tr_sch=http
 
==Registers==
* http://forums.openecu.org/viewtopic.php?f=55&t=643&p=5212&hilit=MH6111#p5212
** https://web.archive.org/web/20210603140112/http://forums.openecu.org/viewtopic.php?f=55&t=643&p=5212&hilit=MH6111


==Editing notes==
==Editing notes==
* http://www.lilevo.com/mirage/dsmromedit.htm
* http://www.lilevo.com/mirage/dsmromedit.htm
* https://sites.google.com/site/90tsis/home/1g-dsm/code-editing
* https://sites.google.com/site/90tsis/home/1g-dsm/code-editing
- https://web.archive.org/web/20201030203430/https://sites.google.com/site/90tsis/home/1g-dsm/code-editing
** https://web.archive.org/web/20201030203430/https://sites.google.com/site/90tsis/home/1g-dsm/code-editing
* https://web.archive.org/web/20071219183812/http://users.wpi.edu:80/~ktarry/dsmtech/
* https://pdfslide.net/documents/dsm-ecu-extended-map-guide.html
* https://esm.logic.net/public/dsm/ecu-flashing.html
* http://www.technomotive.com/prod/eprom/eprom.htm
* http://www.tunerpro.net/tutorials/CreatingECUs.htm


==E931 disassembly with comments==
==E931 disassembly with comments==
* https://evoecu.logic.net/mirror/cpudocs/E931/
* https://evoecu.logic.net/mirror/cpudocs/E931/
- https://web.archive.org/web/20121121193031/https://evoecu.logic.net/mirror/cpudocs/E931/
** https://web.archive.org/web/20121121193031/https://evoecu.logic.net/mirror/cpudocs/E931/
 
==2G ECU==
 
* http://www.ceddy.us/
** https://web.archive.org/web/20210119182437/http://www.ceddy.us/
 
===ROM Image===
95 EPROM:
* https://web.archive.org/web/20210119183047/http://ceddy.us/95-eprom/


===More decompile===
XDF:
* https://pastebin.com/21Fk0Gwb
* https://web.archive.org/web/20070819124620/http://www.ceddy.us/EB23C_V2.XDF
* https://pastebin.com/raw/21Fk0Gwb
- https://web.archive.org/web/20210425140243/https://pastebin.com/raw/21Fk0Gwb


http://www.ceddy.us/
* https://evoecu.logic.net/mirror/2g/ceddymod/
* https://web.archive.org/web/20210119182437/http://www.ceddy.us/


==Processor info==
==Processor info==
* http://www.rhinopower.org/76xxx/76xxx.html
* http://www.rhinopower.org/76xxx/76xxx.html
- https://web.archive.org/web/20160828201746/http://www.rhinopower.org/76xxx/76xxx.html
** https://web.archive.org/web/20160828201746/http://www.rhinopower.org/76xxx/76xxx.html
* https://rhinopower.activeboard.com/t30481695/software-tools/
* https://rhinopower.activeboard.com/forum.spark?aBID=133095&topicID=30481695&p=3
* https://rhinopower.activeboard.com/t66419432/76c55-mh6311-information
* https://web.archive.org/web/20081023112442/http://www.btinternet.com/~j_holland/mitsu/mitsu.html


* https://rhinopower.activeboard.com/t30481695/software-tools/
===Docs===
* http://www.rhinopower.org/76xxx/76xxx.html
** https://web.archive.org/web/20210425131028/http://www.rhinopower.org/76xxx/76xxx.html
* http://www.rhinopower.org/76xxx/docs/76C55_Register_Map.txt
** https://web.archive.org/web/20201205013950/http://www.rhinopower.org/76xxx/docs/76C55_Register_Map.txt
 
* https://rhinopower.activeboard.com/t30481695/software-tools/?page=1&w_r=1619821221#comment-45660411
** http://www.rhinopower.org/mods/docs/Using_MiniIDE.doc
*** https://web.archive.org/web/20161022073036/http://www.rhinopower.org/mods/docs/Using_MiniIDE.doc
** https://web.archive.org/web/20070102011556/http://home.comcast.net/~tasm/tasmman.htm
** https://web.archive.org/web/20151002025803/http://home.comcast.net:80/~tasm/tasm32.zip
** https://www.keil.com/download/docs/10.asp
*** https://web.archive.org/web/20210426014355/https://www.keil.com/download/docs/10.asp
** https://web.archive.org/web/20070102062946/http://www.keil.com/download/files/mot2bin.zip
** https://www.scribd.com/doc/59831473/
 
 
===Toshiba Microprocessors===
* https://www-shmj-or-jp.translate.goog/museum2010/exhibi739.htm?_x_tr_sch=http&_x_tr_sl=ja&_x_tr_tl=en&_x_tr_hl=en&_x_tr_pto=ajax,nv,elem
 
 
<pre style="white-space: pre;">
This is the symbolic and commented source code for the DSM E931
and E932 ECU. To assemble "standard_E932_E931_source.asm",
download the telemark assembler TASM from http://home.comcast.net/~tasm/ to the same directory and execute asm.bat from the DOS prompt.
The assembler will produce two files: standard_E932_E931_source.lst
is a line by line listing of the assembly with addresses while standard_E932_E931_source.obj is the 32KB binary image to burn
on EPROM. Default setting produces the E931 standard binary image
Required file, not provided (from http://home.comcast.net/~tasm/): TASM.EXE, Version 3.2
Contents: standard_E932_E931_source.asm
Assembly source file for the E931/E932. See notes at the beginning of that file for more details. Default setting produces the standard E931 EPROM image.
asm.bat
Batch file to assemble standard_E932_E931_source.asm
standard_E931.bin
Binary file read from an actual E931 EPROM. Assembly of standard_E932_E931_source.asm using the "E931" setting should produce an identical binary.
standard_E932.bin
Binary file read from an actual E932 EPROM. Assembly of standard_E932_E931_source.asm using the "E932" setting should produce an identical binary.
standard_E931.lst
Assembly listing file for the standard E931, usefull if you just want to edit an EPROM image without assembly..
standard_E932.lst
Assembly listing file for the standard E932, usefull if you just want to edit an EPROM image without assembly..
tasm6111.tab
TASM compatible opcodes for the E931/E932 ECUs. Works with the provided source files. Might be incomplete if you want to use something not already used by the standard code...
</pre>
 
* http://www.bcdsm.org/forum/index.php?topic=11843.0
** https://web.archive.org/web/20050301180032/http://www.ece.ubc.ca/~elec259/Static/datasheets/M68HC11RM.pdf
** https://web.archive.org/web/20091104122431/http://courses.ece.ubc.ca/259/Static/datasheets/InstructionSet.pdf
 
===MH6111 Instruction Set===
* https://www.scribd.com/doc/293622595/MH6111-OPCODES-1
 
===Procs Docs Tossed===
* https://www.3si.org/threads/decoded-timing-maps-from-factory-ecu.193625/page-5#post-2383037
 
===Related?===
* https://www.physicsforums.com/threads/ic-datsheet.67692/
* http://jeffgst.com/id20.html
* https://ecimulti.org/
* https://web.archive.org/web/20070821131725/http://www.dsmlink.com/faq-eprom.html


====Disassembler====
* https://web.archive.org/web/*/http://www.16paws.com:80/ECU/*
* https://web.archive.org/web/20030316084747/http://www.16paws.com/ECU/DASMx/
* https://web.archive.org/web/20140306212142/http://www.16paws.com/ECU/DASMxx/DASMx.htm
* https://web.archive.org/web/20140306212142/http://www.16paws.com/ECU/DASMxx/DASMx.htm


==Board parts==
====Suzuki ECU====
* https://www.icbreakout.com/products/plcc-68-breakout-board-24-23x24-23-mm-1-27-mm
(Uses MH6X11)
* https://www.adapt-plus.com/products_html/APW9327-ZC158.html
* https://fixkick.com/ECU/transistors.html
* https://www.adapt-plus.com/resources/assets/images/pdf/catalogpdf_51ba069587b6f.pdf
* https://fixkick.com/ECU/substitutes/M526x-tutes.html
* https://ftyracing.com/product/1g-dsm-ecu-breakout-board/
* https://ftyracing.com/product/2g-dsm-evo8-ecu-breakout-board/
===Chips===


====ISC drivers====
====Mazda ECU====
* http://dsmlink.com/wiki/driver01
* https://mazda626.net/topic/13794-ecus-and-eproms-it-friggin-works/?page=3
* https://www.u-obd.com/product/m5269l/
* https://www.alldatasheet.com/datasheet-pdf/pdf/936/MITSUBISHI/M5269L.html?


====MH6111 Processor====
===Mods===
* C$ 12.77 | 5piece MH6111-E827 MH6111 PLCC-68 In Stock
* https://web.archive.org/web/20151021233215/http://www.ilostmymind.com/ECU/DSM
* https://a.aliexpress.com/_mtLwCGD
* https://web.archive.org/web/20151023035547/http://www.ilostmymind.com:80/ECU/DSM/progra.txt
* https://web.archive.org/web/20151023035522/http://www.ilostmymind.com:80/ECU/DSM/E931C6F5hex.html
 
==Dis/assembly==
* Documentation
*: http://www.cpcalive.com/docs/TASMMAN.HTM
*: https://web.archive.org/web/20201111025111/http://www.cpcalive.com/docs/TASMMAN.HTM
* Download
*: https://lpg.ticalc.org/archives/files/fileinfo/250/25051.html
* GIT
*: https://github.com/spotco/TI-asm/tree/master/tasm
* Linux (TASM 3.1)
*: http://www.filegate.net/pdn/pdnunix/tasm31.rar<ref>
* https://retrocomputing.stackexchange.com/a/1547
* http://www.filegate.net/pdnunix/
</ref>
* OSX Port
*: http://www.hinton-instruments.co.uk/archive/macide.html<ref>
* https://retrocomputing.stackexchange.com/a/1391
</ref>
 
==PCB==
* http://www.galantvr4.org/ubbthreads/showflat.php?Board=UBB3&Number=370403&page=5&fpart=1
 
==ECU power==
* https://www.dsmtuners.com/threads/1g-basic-ecu-mpi-circuit-function.435961/


==Standalones==
==Standalones==
* https://performanceecu.com/blog/ecu-comparison-chart-for-4g63-turbo-dsm/


===AEM===
===AEM===
Line 70: Line 261:
===Megasquirt===
===Megasquirt===
* https://www.diyautotune.com/support/tech/hardware/diypnp/available-models/#N52
* https://www.diyautotune.com/support/tech/hardware/diypnp/available-models/#N52
* https://www.diyautotune.com/support/tech/install/dsm/megasquirt-your-4g63/


===Speeduino===
===Speeduino===
Line 83: Line 275:
* https://www.tmzperformance.com/shop/haltech-elite-1500-dbw-ecu-with-mitsubishi-4g63-fully-terminated-harness-kit-suits-1g-cas-ev1-flying-lead-ignition-harness-ht-150930/
* https://www.tmzperformance.com/shop/haltech-elite-1500-dbw-ecu-with-mitsubishi-4g63-fully-terminated-harness-kit-suits-1g-cas-ev1-flying-lead-ignition-harness-ht-150930/


==Pretty disassembly notes==
===ECU+===
* http://www.ecuplus.com/forums/viewforum.php?f=4
 
===rusEFI===
* https://rusefi.com/forum/viewtopic.php?f=2&t=622
** https://github.com/rusefi/rusefi/wiki
 
===PowerFC===
* https://www.apexi-usa.com/products/power-fc-components-universal-fc-commander-oled-type


===GENERAL NOTES===
==Stims==
Project started with the help of dsm-ecu Yahoo group, thanks for the great info.
* jimStim
Most disassembly comments in this file by Christian, christi999@hotmail.com.
*: https://www.diyautotune.com/product/jimstim-1-5-megasquirt-stimulator-w-wheel-simulator-assembled/
* Ardu-stim
*: https://github.com/speeduino/Ardu-Stim


===CPU===
==Speed Density==
The microcomputer chip used in the 1G DSM ECU seems to be a custom application built around the 6801 architecture, Check the 6801, 6803, 6301, 68HC11 at web sites such as alldatasheet.com, etc.
Kim Hulkkonen


CPU clock frequency is assumed to be 2MHz, i.e. the instructions cycle time is 0.5us.
===SwD-Swede Density===
* http://dsmecu.com
* http://kaxlon.com
* https://github.com/KaxLon
* https://www.facebook.com/swededensity/
* <s>http://www.wiki.swededensity.com/</s>
** https://web.archive.org/web/20160620033429/http://wiki.swededensity.com/index.php?title=Main_Page
* <s>http://swededensity.com/</s>
** https://web.archive.org/web/20151123231211/http://swededensity.com/
* https://www.youtube.com/playlist?list=PLVqF6cy1_ujiGSEMi2GLMuIglT08QP9Fp


===Assembly binary verifications===
* https://www.dsmtuners.com/threads/swede-density-for-tunerpro.530446/
The 2 binaries produced without any customization ("enableCustom" definition is commented-out) have been verified to be identical to the E931 and E932 eprom images at hand.


To check the validity of symbolic substitution, the entire code section and tables
===ds-map===
was offset by $0200 using "codeOffset" and the corresponding binary was tested on
* <s>http://forums.ds-map.net</s>
my car (E932) without any problems for weeks. Additional tests were conducted by
** https://web.archive.org/web/20180322020233/http://forums.ds-map.net/
writing inline code in several part of the code and no adverse effect was ever noted.
* <s>http://wiki.ds-map.net/</s>
** https://web.archive.org/web/20170620082922/http://wiki.ds-map.net/


To check the validity of symbolic substitution for ram addresses, every ram location
* DS-MAP V1 - Nick Sanders (pudhed)
starting at $0057 was offset by 1 (i.e. temp1 was at memory address $58 instead of
* Jackal (V2) - Curtis Hacker (hakcenter)
$57, etc) and the corresponding binary was tested on my car (E932) without any problems
* Werewolf (v3) - Curtis Hacker
during car startup and engine revving. No additional test performed.


This means that the code can be modified inline and in most cases, ram memories can
* https://web.archive.org/web/20150522015900/http://forums.ds-map.net/store/jackal-vs-werewolf
be moved around by changing the label addresses. Note however that some groups of
ram memories have to be moved in blocks because the code assumes they are contiguous.
e.g. the temp1 to temp9 variables, the inj1_offT, inj3_offT, inj4_offT and inj2_offT
variables, etc.


===Ram memory===
===Geekmapped===
;*   Memory from $0040 to $01bf is backed-up by battery, meaning it is preserved when the
* <s>http://geekmapped.com/</s>
;*    ECU is powered-off as long as battery power is supplied. However, memory from $0057 to
** https://web.archive.org/web/20160306074252/http://geekmapped.com:80/
;*   $0190 is cleared to 0 by the code every time the ECU is powered-on. That can be however
;*   changed by modifying the code... Battery backup was checked by disabling memory reset using
;*    the "noRamReset"  and then check ram memory at $018f to see if it gets preserved after power
;*    off/on cycle, and it did. During the test, $018f was used as a distance counter using
;*    the reed switch.
;*
===Comments===
;*  Some comments use variable names quite loosly. For instance, multi-byte variables
;*  such as [airCnt0:airCnt1:airCnt2] might be refered to as only airCnt0. airCnt0
;*  might therefore refer to the single byte airCnt0, to the 16 bit value
;*  [airCnt0:airCnt1] or to the 24 bit complete variable, depending on the context.


;*  Comments were added incrementally as my knowledge of code and variables
==Knock==
;*  increased. As new knowledge was learned, old comments were updated or corrected
Bill Sundahl - bsundahl@ix.netcom.com
;*  as much as possible but not necessarily all of them, so beware... In the end, the
* https://web.archive.org/web/20070408152424/http://home.netcom.com:80/~bsundahl/
;*   code is the only truth... Some small areas of the code were also never completly
;*  understood as a general understanding was reached and I did not care to go further
;*  e.g. airflow sensor active filter reset


===Opcodes===
Pinout, functionality
* http://stealth316.com/misc/knock-chip.doc
*http://stealth316.com/misc/knock-board.txt


* cmpd: cmpd1 is used for some addressing modes instead of cmpd since TASM does not support unusual mitsubishi ECU cmpd opcodes..  
Phantom knock
* brclr: branch if ALL the given bits are clear
* https://web.archive.org/web/20071016060058/http://users.wpi.edu/~ktarry/dsmtech/phantomknock.html
* brset: branch if ANY of the given bits are set (as opposed to usual implementation of ALL bits set...)
* The addressing mode using Y indexing also implicitly modifies the y register. It seems that y is increased by 1 or 2 depending whether the instruction is a 8 bit or 16 bits operation... The following cases are confirmed


  cmpa $00,y  -> y = y + 1
==ECU Stickers==
  cmpb $00,y  -> y = y + 1
There are three parts of the ECU label stickers to make a point of:
  ldaa $00,y  -> y = y + 1
* The Mitsubishi Motors (MMC) number
  suba $00,y  -> y = y + 1
** Starts with "MD" or "MR"
  ldx  $00,y  -> y = y + 2
* The Mitsubishi Electric (MEC) number
  std  $00,y  -> y = y + 2
** Usually starts with "E2T" on ECUs
** Usually starts with "G1T" or "X4T" on TCUs
* The last letter of the MEC number
** E = eprom
** T = one time programmable (otp)
** M = masked
** A = ???
** " " (blank) = maybe eprom for 90 ecus


===Telemark assembler===
==Idle Adjustment==
This assembler does not provide warning messages when code assembles to
Maybe should be in another article?
;*    the same memory space, e.g. you insert code in the middle of the file
* https://www.sixsigmatuning.com/dsm-idle-control
;*    which result in the rest of the code to be offset by N bytes. This
;*    results in the interrupt vector table to be overwritten. No warning
;*    is given. The only way to know about it is to manually check the listing
;*    file produced by the assembler. Check that the buffer space between
;*    sections is all "$ff". Check that there is no code spilage over .org
;*   statements. Check that the address space does not exceed $ffff. Use the
;*    "codeOffset" at the beginnng of the file to correct the problem.


===Fuel injector and coil power transistor control===
==See Also==
Although the 4 fuel injectors and the 2 coil power transistors are mapped to
* [[DSM/DIY ECU]]
;*    regular ports (port1, port2 and port5) which can be read to know the current
;*   state of these outputs, they are also mapped in hardware to output compare
;*    registers in order to activate or deactivate them at specific time instants.
;*    Writing to the ports might therefore not work unless the output compare
;*    configuration registers are changed to disable harware control of these
;*    outputs. This might not be possible unless an "output enable" bit exists,
;*    which I haven't found at this point...
;*    Another way to activate or deactivate them would be to use the output
;*    compare registers (as currently done by the ECU code) and provoke an
;*    immediat output change.


Here is my current understanding of how injector scheduling works, not
==Notes==
;*    everything is clear to me so don't take this as gospel...:
<references/>
;*    The output compare registers for the fuel injectors seem to be at least double
;*    buffered and maybe triple buffered (see schedInjSim routine). That means that
;*    up to 3 different output compare values can be written to t1_outCmpWr and t2_outCmpWr
;*    to activate or deactivate the injectors at those time instants. Each time a value
;*    is written to t1_outCmpWr or t2_outCmpWr, the corresponding injector state
;*    is also internally stored. That means that to activate injector #1 at time X,
;*    you would first reset bit 0 of t1_csr, corresponding to injector #1 and then
;*    write X to t1_outCmpWr. You could then immediately schedule the deactivation
;*    of injector #1 by setting bit 0 of t1_csr to 1 and then write the deactivation
;*    time to t1_outCmpWr. When one of the output compare register stored value matches
;*    the clock at t1t2_clk, the injector is activated/deactivated and the corresponding
;*    interrupt routine is called (if the interrupt mask is clear...) at outCompInt1 or
;*    outCompInt2.
;*
Here is my current understanding of how the coil power transistor scheduling
;*    works, not everything is clear to me so don't take this as gospel...: t3_outCmpWr
;*    is the output compare register used to activate or deactivate the coil power
;*    transistors (energize the coil and provoke ignition at the specified time instants)
;*    To energize the coil for cylinder 1 and 4 at time X you would write X to t3_outCmpWr
;*    and reset(0) bit 2 of t3_csr0. At time X, t3_csr0.2 would be loaded into port5.1
;*    which would energize the coil. t3_csr0.2 should not be changed until that happens.
;*    In the code, most of the time 2 successive values (the same one) are written to t3_outCmpWr
;*    but there are some instances where only 1 value is written. My impression is that
;*    the first value serves to activate/deactivate the coil power transistor at the
;*    specified instant while the second one only serves to generate an interrupt
;*    in order to call the outCompInt3 routine. Hence when only the coil need
;*    to be activated/deactivated without calling outCompInt3, you would only write
;*    one value. If in addition you want to have outCompInt3 called when the coil
;*    is energized/ignited, you would write two successive values (corresponding to the
;*    same time...). This is all speculation of course... As for the 2 clocks at t3_clock1
;*    and t3_clock1, I assume they are connected to the same internal clock at 250KHz
;*    but might be input capture registers latched when one of the two output compare
;*    at t3_outCmpWr is triggered??????? Again speculation, this is the part of the code
;*    I understand the least...
;*
;*
;
===Timing diagram===
* 4 cylinders = 2 rotations = 2 * 360degrees = 720 degrees
* For sequential injection, fuel injection starts on the cas falling edge
*  i.e. cylinder #1 injection starts at -5 BTDC of #3 TDC
* Simultaneous injection of all 4 injectors is performed when starting to
;*  crank or starting a cold engine or during acceleration, check the tech manual
;*  and code for more details. Simultaneous injection starts on the 5deg BTDC
;*  cas signal except in the case of acceleration where it starts when an
;*  injector is deactivated and no other injector is active (i.e. at the
;*  beginning of the time period where no injector is active)
* Coil energization is usually scheduled (the energization time is loaded into
;*  the output compare register, energization will occur at the specified time)
;*  from the cas rising edge. Coil ignition can be scheduled when energization
;*  occurs (output compare interrupt) or on the cas falling edge depending on
;*  the desired timing. Note however that coil energization can also be scheduled
;*  when ignition occurs on the preceeding cylinder. This would correspond to
;*  scheduling ignition before the cas rising edge (at high rpm I assume). Coil
;*  energization can also be scheduled on the cas falling edge when the desired
;*  timing is high (e.g. 10deg ATDC). As this shows, there are several combinations
;*  and the complexity of the code to handle the coil reflects that fact.
;* 
;*         
                          No 1 TDC        No 3 TDC          No 4 TDC          No 2 TDC
                            :                :                :                :
                    ___________                        _____
  TDC sensor      |          |                      |    |
  signal          |        : |              :      |    |  :                :
              ____|___________|_______________________|_____|________________________
  degrees        85          55                      85  15
  (BTDC/ATDC)                :                :                :                :
                    ______            ______            ______            ______
  CAS sensor        |      |          |      |          |      |          |      |
  signal            |      | :        |      | :        |      | :        |      | :
              _____|______|__________|______|__________|______|__________|______|____
  degrees          75    5 :      75      5 :      75      5 :        75    5 :
  (BTDC)                    :                :                :                :         
                            :                :                :                :
  No 1 cyl.    compression :  combustion    :    exhaust      :    intake      : compression
  No 3 cyl.      intake    :  compression  :  combustion    :    exhaust    :  intake   
  No 4 cyl.      exhaust  :    intake      :  compression  :    combustion  :  exhaust   
  No 2 cyl.    combustion  :    exhaust    :    intake      :    compression  : combustion

Latest revision as of 16:10, 14 April 2024

Subpages

DSM/ECU/Pretty disassembly notes[1]

DSM/ECU/ECU Numbers [2]

DSM/ECU/ROMS

DSM/ECU/JE331B988B

DSM/ECU/TMP76xxx MH6xxx

DSM/ECU/Reverse Engineering

DSM/ECU/EB20_TunerPro_Export (1G DSM NA/NT 4G63)

General

ECU troubleshooting and daughterboard [RUS]

Photos

DSM-ECU Yahoo! Group Archives

ECU numbers

EDM ECUs

Model MMC # MEC #
Eclipse I 2.0 16v D22A (90-94) MD169144 E2T36583
Eclipse II 2.0 16v D30 (95-96) MD327134 E2T61680
" (97-99) MD334797 E2T61685

[3]

See Also: DSM/ECU/ECU Numbers[4]

EPROM images

Input/Output

Sensors

ISC

Alternative pinout

Registers

Editing notes

E931 disassembly with comments

2G ECU

ROM Image

95 EPROM:

XDF:

Processor info

Docs


Toshiba Microprocessors


This is the symbolic and commented source code for the DSM E931
and E932 ECU. To assemble "standard_E932_E931_source.asm",
download the telemark assembler TASM from http://home.comcast.net/~tasm/ to the same directory and execute asm.bat from the DOS prompt.
The assembler will produce two files: standard_E932_E931_source.lst
is a line by line listing of the assembly with addresses while standard_E932_E931_source.obj is the 32KB binary image to burn
on EPROM. Default setting produces the E931 standard binary image
Required file, not provided (from http://home.comcast.net/~tasm/): TASM.EXE, Version 3.2
Contents: standard_E932_E931_source.asm
Assembly source file for the E931/E932. See notes at the beginning of that file for more details. Default setting produces the standard E931 EPROM image.
asm.bat
Batch file to assemble standard_E932_E931_source.asm
standard_E931.bin
Binary file read from an actual E931 EPROM. Assembly of standard_E932_E931_source.asm using the "E931" setting should produce an identical binary.
standard_E932.bin
Binary file read from an actual E932 EPROM. Assembly of standard_E932_E931_source.asm using the "E932" setting should produce an identical binary.
standard_E931.lst
Assembly listing file for the standard E931, usefull if you just want to edit an EPROM image without assembly..
standard_E932.lst
Assembly listing file for the standard E932, usefull if you just want to edit an EPROM image without assembly..
tasm6111.tab
TASM compatible opcodes for the E931/E932 ECUs. Works with the provided source files. Might be incomplete if you want to use something not already used by the standard code...
Christian [email protected]

MH6111 Instruction Set

Procs Docs Tossed

Related?

Disassembler

Suzuki ECU

(Uses MH6X11)

Mazda ECU

Mods

Dis/assembly

PCB

ECU power

Standalones


AEM

Megasquirt

Speeduino

Link ECU (VR4LINK)

Haltech

ECU+

rusEFI

PowerFC

Stims

Speed Density

Kim Hulkkonen

SwD-Swede Density

ds-map

  • DS-MAP V1 - Nick Sanders (pudhed)
  • Jackal (V2) - Curtis Hacker (hakcenter)
  • Werewolf (v3) - Curtis Hacker

Geekmapped

Knock

Bill Sundahl - [email protected]

Pinout, functionality

Phantom knock

ECU Stickers

There are three parts of the ECU label stickers to make a point of:

  • The Mitsubishi Motors (MMC) number
    • Starts with "MD" or "MR"
  • The Mitsubishi Electric (MEC) number
    • Usually starts with "E2T" on ECUs
    • Usually starts with "G1T" or "X4T" on TCUs
  • The last letter of the MEC number
    • E = eprom
    • T = one time programmable (otp)
    • M = masked
    • A = ???
    • " " (blank) = maybe eprom for 90 ecus

Idle Adjustment

Maybe should be in another article?

See Also

Notes