-/* THIS SAMPLE CODE IS PROVIDED AS IS AND IS SUBJECT TO ALTERATIONS. FUJITSU */
-/* MICROELECTRONICS ACCEPTS NO RESPONSIBILITY OR LIABILITY FOR ANY ERRORS OR */
-/* ELIGIBILITY FOR ANY PURPOSES. */
-/* (C) Fujitsu Microelectronics Europe GmbH */
-;=========================================================================================
-; 1 Contents
-;=========================================================================================
-; 1 Contents
-; 2 Disclaimer
-;
-; 3 History
-;
-; 4 Settings
-; 4.1 Controller device
-; 4.2 Boot / flash security
-; 4.3 Stack type and stack size
-; 4.4 Copy code from flash to I-RAM
-; 4.5 C++ start-up
-; 4.6 Low-level library interface
-; 4.7 Clock Configuration
-; 4.7.1 Clock selection
-; 4.7.2 Select Clock Modulator
-; 4.8 External bus interface
-; 4.8.1 Select chipselect
-; 4.8.2 Set memory addressing for chipselects
-; 4.8.3 Configure chipselect area
-; 4.8.4 Set wait cycles for chipselects
-; 4.8.5 Configure chipselects SDRAM memory only
-; 4.8.6 Referesh control register RCR
-; 4.8.7 Terminal and timing control register
-; 4.8.8 Enable / disable I-cache
-; 4.8.9 Enable CACHE for chipselect
-; 4.8.10 Select external bus mode (data lines)
-; 4.8.11 Select external bus mode (address lines)
-; 4.8.12 Select external bus mode (control signals)
-;
-; 5 Definitions of Configurations
-;
-; 6 Section and data declaration
-; 6.1 Define stack size
-; 6.2 Define sections
-;
-; 7. S T A R T
-; 7.1 Initialise stack pointer and table base register
-; 7.2 Check for CSV reset and set CSV
-; 7.3 Check clock condition
-; 7.4 Restore default settings after reset
-; 7.4.1 Disable clock modulator
-; 7.4.2 Check if running on sub clock, change to main clock
-; 7.4.3 Disable sub clock
-; 7.4.4 Check if running on PLL, gear down PLL
-; 7.4.5 Disable PLL
-; 7.4.6 Set to main clock
-; 7.5 Set memory controller
-; 7.6 Clock startup
-; 7.6.1 Set Voltage Regulator Settings
-; 7.6.2 Power on clock modulator - clock modulator part I
-; 7.6.3 Set CLKR register w/o clock mode
-; 7.6.4 Start PLLs
-; 7.6.5 Wait for PLL oscillation stabilisation
-; 7.6.6 Set clocks
-; 7.6.6.1 Set CPU and peripheral clock
-; 7.6.6.2 Set external bus interface clock
-; 7.6.6.3 Set CAN clock prescaler
-; 7.6.6.4 Switch main clock mode
-; 7.6.6.5 Switch sub clock mode
-; 7.6.6.6 Switch to PLL mode
-; 7.6.7 Enable frequncy modulation - clock modulator part II
-; 7.7 Set BusInterface
-; 7.7.1 Disable all CS
-; 7.7.2 Clear TCR register
-; 7.7.3 Set CS0
-; 7.7.4 Set CS1
-; 7.7.5 Set CS2
-; 7.7.6 Set CS3
-; 7.7.7 Set CS4
-; 7.7.8 Set CS5
-; 7.7.9 Set CS6
-; 7.7.10 Set CS7
-; 7.7.11 Set special SDRAM config register
-; 7.7.12 set Port function register
-; 7.7.13 Set TCR register
-; 7.7.14 Enable cache for selected CS
-; 7.7.15 Set SDRAM referesh control register
-; 7.7.16 Enable used CS
-; 7.7.17 I-cache on/off
-; 7.7.18 Set port function register to general as I/O-port
-; 7.8 Copy code from flash to I-RAM
-; 7.9 Fill stacks
-; 7.10 Clear data
-; 7.11 Copy Init section from ROM to RAM
-; 7.12 C library initialization
-; 7.13 Call C++ constructors
-; 7.14 Call main routine
-; 7.15 Return from main function
-;
-;=========================================================================================
-; 2 Disclaimer
-;=========================================================================================
-; Fujitsu Microelectronics Europe GmbH
-; http://emea.fujitsu.com/microelectronics
-;
-; The following software is for demonstration purposes only. It is not fully
-; tested, nor validated in order to fullfill its task under all circumstances.
-; Therefore, this software or any part of it must only be used in an evaluation
-; laboratory environment.
-; This software is subject to the rules of our standard DISCLAIMER, that is
-; delivered with our SW-tools on the Fujitsu Microcontrollers CD/DVD (V3.4 or
-; higher "\START.HTM") or on our Internet Pages:
-; http://www.fme.gsdc.de/gsdc.htm
-; http://emea.fujitsu.com/microelectronics
-;
-;=========================================================================================
-; 3 History
-;=========================================================================================
-;
-;=========================================================================================
-; MB914xx (FR60 CORE ONLY) Series C Compiler's
-;
-; Startup file for memory and basic controller initialisation
-;=========================================================================================
-;History:
-;
-; 2005-04-18 V1.0 UMa Release first version
-; 2005-06-17 V1.1 UMa Added bus interface, modified c++ startup
-; 2005-06-28 V1.2 UMa minor changes
-; 2005-07-27 V1.3 UMa default values changed
-; 2005-10-04 V1.4 UMa changed code 'Call main Routine'
-; Added secutiy section for MB91F467D
-; Added Flash Access Read Timing setting section;
-; 2005-10-04 V1.5 UMa Added Flash Controller Section
-; 2005-10-28 V1.6 UMa Check for CSV reset
-; 2005-11.16 V1.7 UMa Monitor Debugger support added: Copy of intvect Table
-; Ext. Int 0 as abort function
-; Changed PLL-Startup, Reset HWWD added
-; 2005-11-16 V1.7 UMa Examples for MUL_G changed
-; 2006-02-14 V1.8 UMa mb91464a added
-; Settings for Clock Spervisor added
-; Name of Section SECURITY changed to SECURITY_VECTORS
-; Example values for gear-up changed
-; 2006-03-17 V1.9 UMa Changed Startup for Monitor Debugger
-; 2006-04-24 v2.0 UMa Added MB91465K and MB91469G
-; 2006-05-03 v2.1 UMa Added MB91461R; removed MB91V460A
-; Added settings for the external bus-interface
-; 2006-07-28 v2.2 UMa Added I-RAM copy function (ROM -> IRAM)
-; Added default settings for FLASH Access Read Timing
-; Settings
-; Changed default settings for FLASH cache configuration
-; Register
-; Changed check for clock startup
-; 2006-08-16 v2.3 MVo Corrected Boot Security Sector Addresses for MB91469G
-; 2006-10-06 v2.4 UMa Added new devices
-; Corrected typo in I_RAM to flash copy function
-; Changed default settings for flash cache configuration
-; Changed comments for SDRAM bus interface configuration
-; Changed comments and default setting of CAN Prescaler
-; Added Stack filler
-; Added Settings for REGSEL Register
-; 2007-02-13 v2.5 UMa Introduction of default configurations
-; Changed I_RAM to flash copy function
-;
-;
-;=========================================================================================
-; 4 Settings
-;=========================================================================================
-;
-; CHECK ALL OPTIONS WHETHER THEY FIT TO THE APPLICATION;
-;
-; Configure this startup file in the "Settings" section. Search for
-; comments with leading "; <<<". This points to the items to be set.
-;=========================================================================================
-;
#set OFF 0
#set ON 1
#set DEFAULT 2
-#set LOW_PRIOR 31
-;
;=========================================================================================
; 4.1 Controller Device
;=========================================================================================
#set others 7 ; MB91460 series
;
;
-;
-#set DEVICE MB91465K ; <<< select device
-;
-;=========================================================================================
-; 4.2 Boot / Flash Security
-;=========================================================================================
-;
-#set BOOT_FLASH_SEC OFF ; <<< BOOT and Flash Security Vector
-;
-; The flash devices have two flash and two boot security vectors. It is important to set
-; the four vectors correctly. Otherwise it might be possible, that the flash device is
-; not accessible any more via the bootrom. Please read carefully the hardware manual.
-;
-; OFF: The security feature is switch off. The section SECURITY_VECTORS is reserved and
-; the vectors are set.
-; ON: IMPORTANT! The security vectors are not set. But the section SECURITY_VECTORS
-; is reserved.
-;
-; Note: This feature is not supported by every device. Please check the data sheet. This
-; feature is not available on MB91461R.
-;
+#set DEVICE MB91465X ; <<< select device
;=========================================================================================
; 4.3 Stack Type and Stack Size
;=========================================================================================
#set SYSSTACK 1 ; system stack: for main program and
; ; interrupts
;
-;
#set STACKUSE SYSSTACK ; <<< set active stack
;
#set STACK_RESERVE ON ; <<< reserve stack area in
#set STACK_SYS_SIZE 0x400-4 ; <<< byte size of System stack
#set STACK_USR_SIZE 0x2 ; <<< byte size of User stack
;
-#set STACK_FILL OFF ; <<< fills the stack area with pattern
-#set STACK_PATTERN 0x55AA6699 ; <<< the pattern to write to stack
-;
; - If the active stack is set to SYSSTACK, it is used for main program and interrupts.
; In this case, the user stack could be set to a dummy size. If the active stack is
; set to user stack, it is used for the main program but the system stack is
; Check the stack information files (*.stk) in the LIB\911 directory.
;
;=========================================================================================
-; 4.4 Copy code from Flash to I-RAM
-;=========================================================================================
-;
-#set I_RAM ON ; <<< select if code in section IRAM
-; should be copied
-;
-; If this option is activated code located in the section IRAM is copied during startup
-; from ROM to the instruction-RAM. The code is linked for the instruction-RAM.
-;
-;=========================================================================================
-; 4.5 Low-Level Library Interface
-;=========================================================================================
-;
-#set CLIBINIT OFF ; <<< select ext. libray usage
-;
-; This option has only to be set, if stream-IO/standard-IO function of the C-libraray
-; have to be used (printf(), fopen()...). This also requires low-level functions to be
-; defined by the application software.
-; For other library functions like (e.g. sprintf()) all this is not necessary. However,
-; several functions consume a large amount of stack.
-;
-;=========================================================================================
-; 4.6 C++ start-up
-;=========================================================================================
-;
-#set CPLUSPLUS OFF ; <<< activate if c++ files are used
-;
-; In the C++ specifications, when external or static objects are used, a constructor
-; must be called followed by the main function. Because four-byte pointers to the main
-; function are stored in the EXT_CTOR_DTOR section, call a constructor sequentially from
-; the lower address of the four addresses in that section. If using C++ sources,
-; activate this function to create the section EXT_CTOR_DTOR.
-;
-;=========================================================================================
; 4.7 Clock Configuration
;=========================================================================================
;=========================================================================================
#set SUB_32KHZ_CPU__32KHZ_PER_32KHZ_EXT_32KHZ_CAN__2MHZ 0x11
;
; Oscillation input: 4 MHz
-#set MAIN_4MHZ_CPU___2MHZ_PER__1MHZ_EXT__1MHZ_CAN__2MHZ 0x21
-#set PLL_4MHZ__CPU__48MHZ_PER_16MHZ_EXT_24MHZ_CAN_16MHZ 0x22
#set PLL_4MHZ__CPU__64MHZ_PER_16MHZ_EXT_32MHZ_CAN_16MHZ 0x23
-#set PLL_4MHZ__CPU__80MHZ_PER_20MHZ_EXT_27MHZ_CAN_20MHZ 0x24
-#set PLL_4MHZ__CPU__80MHZ_PER_20MHZ_EXT_40MHZ_CAN_20MHZ 0x25
-#set PLL_4MHZ__CPU__96MHZ_PER_16MHZ_EXT_48MHZ_CAN_16MHZ 0x26 ;not MB91V460, ...
-#set PLL_4MHZ__CPU_100MHZ_PER_20MHZ_EXT_50MHZ_CAN_20MHZ 0x27 ;not MB91V460, ...
;
; MB91461R only: Oscillation input: 10 MHz
#set PLL_10MHZ_CPU__60MHZ_PER_20MHZ_EXT_30MHZ_CAN_20MHZ 0x41
#set CLOCKSPEED PLL_4MHZ__CPU__64MHZ_PER_16MHZ_EXT_32MHZ_CAN_16MHZ
; ; <<< Select clock configuration
;
-; There are different default configurations available, where all necessary settings for
-; clocks and the related registers are made. Beside this configurations, there is the
-; possibility to define a user configuration in the chapter "Definition of
-; Configurations"
-;
-; - NO_CLOCK means:
-; The clock registers are not set by the start-up file.
-;
-; - PLL_4MHZ__CPU__64MHZ_PER_16MHZ_EXT_32MHZ_CAN_16MHZ means:
-; Main oszillation = 4 MHz, PLL is activated
-; CPU clock (CLKB) = 64 MHZ
-; Peripheral clock (CLKP) = 16 MHZ
-; Ext. bus clock (CLKT) = 32 MHZ
-; CAN clock (CLKCAN) = 16 MHz, using PLLx
-;
-; - CLOCK_USER:
-; The user configuration definded in the chapter "Definition of Configurations" is set.
-;
-; Note: Not all frequencies are supported by every device. Please see the hardware
-; manual.
-;
;=========================================================================================
; 4.7.2 Select Clock Modulator
;=========================================================================================
;
; Note: If the clock modulator is enabled, the wait states of the internal flash wait
; states must be adapted to maximum frequency. Please check the wait states
-; settings.
-;
-; Note: This feature is not supported by every device, e.g. MB91461. Please check the
-; data sheet.
-;
-;=========================================================================================
-; 4.8 External Bus Interface
-;
-; The rest of the configuration is only applicable for devices with an external bus
-; interface.
-;
-; If the device does not offer an external bus interface, the configuration can be
-; stoped at this point.
-;
-;=========================================================================================
-;
-#set EXTBUS DEFAULT ; <<< Ext. Bus on/off
-;
-; ON - The ext. bus interface is enabled and is configured as
-; set below.
-;
-; OFF - The ext. bus interface is diabled. The port function
-; registers are set to general I/O. The registers of
-; ext. bus interface will not be touched by the start-up
-; file.
-; Be aware, that the device might be conifgured in ext.
-; bus mode by default after reset.
-;
-; DEFAULT - Neither the register nor the respective port function
-; registers are touched by the start-up file.
-; Be aware, that the device might be conifgured in ext.
-; bus mode by default after reset.
-;
-;
-; Note: This feature is not supported by every device. Please check the data sheet. The
-; following devices for example do not offer an external bus interface: MB91464A,
-; MB91467C, MB91465K, MB91463N, MB91465X.
-;
-;=========================================================================================
-; 4.8.1 Select Chipselect (Only EXTBUS == ON)
-;=========================================================================================
-;
-#set CS0 OFF ; <<< select CS (ON/OFF)
-#set CS1 OFF ; <<< select CS (ON/OFF)
-#set CS2 OFF ; <<< select CS (ON/OFF)
-#set CS3 OFF ; <<< select CS (ON/OFF)
-#set CS4 OFF ; <<< select CS (ON/OFF)
-#set CS5 OFF ; <<< select CS (ON/OFF)
-#set CS6 OFF ; <<< select CS (ON/OFF)
-#set CS7 OFF ; <<< select CS (ON/OFF)
-#set SDRAM OFF ; <<< select if a SDRAM is connected
-;
-;
-#set ENACSX B'00000000 ; <<< set CS, ENACSX
-; ||||||||
-; ||||||||__ CS0 bit, enable/disable CS0 (1/0)
-; |||||||___ CS1 bit, enable/disable CS1 (1/0)
-; ||||||____ CS2 bit, enable/disable CS2 (1/0)
-; |||||_____ CS3 bit, enable/disable CS3 (1/0)
-; ||||______ CS4 bit, enable/disable CS4 (1/0)
-; |||_______ CS5 bit, enable/disable CS5 (1/0)
-; ||________ CS6 bit, enable/disable CS6 (1/0)
-; |_________ CS7 bit, enable/disable CS7 (1/0)
-;
-; Note: If the SWB Monitor Debugger is used, set the CS1 (external RAM only) or CS0 and
-; CS 1 (external RAM and flash) to off.
-;
-; Note: Not all Chipselects are supported by the different devices. Please check the
-; data sheet.
-;
-;=========================================================================================
-; 4.8.2 Set memory addressing for Chipselects (only EXTBUS == ON)
-;=========================================================================================
-;
-#set AREASEL0 0x0000 ; <<< set start add. for CS0, ASR0
-#set AREASEL1 0x0000 ; <<< set start add. for CS1, ASR1
-#set AREASEL2 0x0000 ; <<< set start add. for CS2, ASR2
-#set AREASEL3 0x0000 ; <<< set start add. for CS3, ASR3
-#set AREASEL4 0x0000 ; <<< set start add. for CS4, ASR4
-#set AREASEL5 0x0000 ; <<< set start add. for CS5, ASR5
-#set AREASEL6 0x0000 ; <<< set start add. for CS6, ASR6
-#set AREASEL7 0x0000 ; <<< set start add. for CS7, ASR7
-;
-; Configure the starting address of each used Chipselect. Chipselects which are not used
-; (not set to ON in "Select Chipselect") need not be set (setting ignored).
-;
-; NOTE: Just the upper 16-bit of the start address must be set, e.g. when using start
-; address 0x00080000 set 0x0008.
-;
-;=========================================================================================
-; 4.8.3 Configure Chipselect Area (only EXTBUS == ON)
-;=========================================================================================
-;
-#set CONFIGCS0 B'0000000000000000 ; <<< Config. CS0, ACR0
-#set CONFIGCS1 B'0000000000000000 ; <<< Config. CS1, ACR1
-#set CONFIGCS2 B'0000000000000000 ; <<< Config. CS2, ACR2
-#set CONFIGCS3 B'0000000000000000 ; <<< Config. CS3, ACR3
-#set CONFIGCS4 B'0000000000000000 ; <<< Config. CS4, ACR4
-#set CONFIGCS5 B'0000000000000000 ; <<< Config. CS5, ACR5
-#set CONFIGCS6 B'0000000000000000 ; <<< Config. CS6, ACR6
-#set CONFIGCS7 B'0000000000000000 ; <<< Config. CS7, ACR7
-; ||||||||||||||||
-; ||||||||||||||||__ TYP0 bit, TYP0-4 bits select access type
-; |||||||||||||||___ TYP1 bit
-; ||||||||||||||____ TYP2 bit
-; |||||||||||||_____ TYP3 bit
-; ||||||||||||______ LEND bit, select little '1' or big endian '0'
-; |||||||||||_______ WREN bit, en-/disable (1/0) Write access
-; ||||||||||________ PFEN bit, en-/disable (1/0) pre-fetch
-; |||||||||_________ SREN bit, en-/disable (1/0) share of BRQ & BGRNTX
-; ||||||||__________ BST0 bit, BSTx bits select burst size
-; |||||||___________ BST1 bit
-; ||||||____________ DBW0 bit, DBWx select data bus width
-; |||||_____________ DBW1 bit
-; ||||______________ ASZ0 bit, ASZx bits select address size of CS
-; |||_______________ ASZ1 bit
-; ||________________ ASZ2 bit
-; |_________________ ASZ3 bit
-;
-; Bit description:
-;
-; TYP3 TYP2 TYP1 TYP0 : Select access type of each CS
-; 0 0 X X : Normal access (asynchronous SRAM, I/O,
-; single/page/busrt-ROM/FLASH)
-; 0 1 X X : Address/data multiplexed (8bit / 16bit bus width only)
-; 0 X X 0 : WAIT insertion by RDY disabled
-; 0 X X 1 : WAIT insertion by RDY enabled
-; 0 X 0 X : The WR0X pin to the WR3X pin are used as write strobes
-; (WRX is fixed at H-Level)
-; 0 X 1 X : The WRX pin is used as write strobe
-; 1 0 0 0 : Memory type A: SDRAM/FCRAM (Auto pre-charge used)
-; 1 0 0 1 : Memory type B: FCRAM (Auto pre-charge used)
-; 1 0 1 0 : setting not allowed
-; 1 0 1 1 : setting not allowed
-; 1 1 0 0 : setting not allowed
-; 1 1 0 1 : setting not allowed
-; 1 1 1 0 : setting not allowed
-; 1 1 1 1 : mask area setting
-;
-; LEND : select BYTE ordering
-; 0 : Big endian
-; 1 : Little endian
-;
-; WREN : enable or disable write access
-; 0 : disabled
-; 1 : enabled,
-;
-; PFEN : Enable or disable the pre-fetch
-; 0 : disabled
-; 1 : enabled,
-;
-; SREN : Enable or disable the sharing of BRQ and BGRNTX
-; 0 : disabled
-; 1 : enabled (CSx pin High-Z)
-;
-; BST1 BST0 : set burst size of chip select area
-; 0 0 : 1 burst (single access)
-; 0 1 : 2 bursts (Address boundary 1 bit)
-; 1 0 : 4 bursts (Address boundary 2 bit)
-; 1 1 : 8 bursts (Address boundary 3 bit)
-;
-; DBW1 DBW0 : Set data bus width
-; 0 0 : 8-bit (BYTE access)
-; 0 1 : 16-bit (HALF-WORD access)
-; 1 0 : 32-bit (WORD access)
-; 1 1 : Reserved
-;
-; ASZ3 ASZ2 ASZ1 ASZ0 : Select memory size of each chipselect
-; 0 0 0 0 : 64 Kbyte (0x01.0000 bytes; use ASR A[31:16] bits)
-; 0 0 0 1 : 128 Kbyte (0x02.0000 bytes; use ASR A[31:17] bits)
-; 0 0 1 0 : 256 Kbyte (0x04.0000 bytes; use ASR A[31:18] bits)
-; 0 0 1 1 : 512 Kbyte (0x08.0000 bytes; use ASR A[31:19] bits)
-; 0 1 0 0 : 1 Mbyte (0x10.0000 bytes; use ASR A[31:20] bits)
-; 0 1 0 1 : 2 Mbyte (0x20.0000 bytes; use ASR A[31:21] bits)
-; 0 1 1 0 : 4 Mbyte (0x40.0000 bytes; use ASR A[31:22] bits)
-; 0 1 1 1 : 8 Mbyte (0x80.0000 bytes; use ASR A[31:23] bits)
-; 1 0 0 0 : 16 Mbyte (0x100.0000 bytes; use ASR A[31:24] bits)
-; 1 0 0 1 : 32 Mbyte (0x200.0000 bytes; use ASR A[31:25] bits)
-; 1 0 1 0 : 64 Mbyte (0x400.0000 bytes; use ASR A[31:26] bits)
-; 1 0 1 1 : 128 Mbyte (0x800.0000 bytes; use ASR A[31:27] bits)
-; 1 1 0 0 : 256 Mbyte (0x1000.0000 bytes; use ASR A[31:28] bits)
-; 1 1 0 1 : 512 Mbyte (0x2000.0000 bytes; use ASR A[31:29] bits)
-; 1 1 1 0 : 1024 Mbyte(0x4000.0000 bytes; use ASR A[31:30] bits)
-; 1 1 1 1 : 2048 Mbyte(0x8000.0000 bytes; use ASR A[31] bit)
-;
-;=========================================================================================
-; 4.8.4 Set Wait cycles for Chipselects for ordinary businterface (only EXTBUS == ON)
-;=========================================================================================
-;
-; Ordinary bus interface (w/o SDRAM and FRAM) (ACRx_Type = 0xxx)
-;
-#set WAITREG0 B'0000000000000000 ; <<< CS0 Waitstates, AWR0
-#set WAITREG1 B'0000000000000000 ; <<< CS1 Waitstates, AWR1
-#set WAITREG2 B'0000000000000000 ; <<< CS2 Waitstates, AWR2
-#set WAITREG3 B'0000000000000000 ; <<< CS3 Waitstates, AWR3
-#set WAITREG4 B'0000000000000000 ; <<< CS4 Waitstates, AWR4
-#set WAITREG5 B'0000000000000000 ; <<< CS5 Waitstates, AWR5
-; ||||||||||||||||
-; ||||||||||||||||__ W00 bit, RDY/WRY-> CSX hold cycle
-; |||||||||||||||___ W01 bit, CSX->RDX/WRX setup extension cycle
-; ||||||||||||||____ W02 bit, Address -> CSX Delay selection
-; |||||||||||||_____ W03 bit, WR0X to WR3X/WRX outout timing
-; ||||||||||||______ W04 bit, W04/W05 Write recovery cycle
-; |||||||||||_______ W05 bit
-; ||||||||||________ W06 bit, W06/07 Read -> Write idle cycle
-; |||||||||_________ W07 bit selection
-; ||||||||__________ W08 bit, W08-W11 Intra-page access cycle
-; |||||||___________ W09 bit select (0-15 cycles)
-; ||||||____________ W10 bit
-; |||||_____________ W11 bit
-; ||||______________ W12 bit, W12-W15 First access wait cycle
-; |||_______________ W13 bit select (0-15 cycles)
-; ||________________ W14 bit
-; |_________________ W15 bit
-;
-;
-; SDRAM and FRAM bus interface (ACRx_Type = 100x)
-;
-#set WAITREG6 B'0000000000000000 ; <<< CS6 Waitstates, AWR6
-#set WAITREG7 B'0000000000000000 ; <<< CS7 Waitstates, AWR7
-; ||||||||||||||||
-; ||||||||||||||||__ W00 bit, W0-W1 RAS precharge cycles
-; |||||||||||||||___ W01 bit
-; ||||||||||||||____ W02 bit, W2-W3 RAS active Time
-; |||||||||||||_____ W03 bit
-; ||||||||||||______ W04 bit, W4-W5 Write recovery cycle
-; |||||||||||_______ W05 bit
-; ||||||||||________ W06 bit, W6-W7 Read->Write idle cycle
-; |||||||||_________ W07 bit
-; ||||||||__________ W08 bit, W8-W10 CAS latency
-; |||||||___________ W09 bit
-; ||||||____________ W10 bit
-; |||||_____________ W11 bit, reserved
-; ||||______________ W12 bit, W12-W16 RAS-CAS delay
-; |||_______________ W13 bit
-; ||________________ W14 bit
-; |_________________ W15 bit, reserved
-;
-;
-; The bit meaning depends on the configured bus interface type. The bus interface can be
-; configured for different memory types. Depending on the memory type, the wait register
-; bits have a differnt meaning. CS0-5 should be configurable as ordinary bus interface
-; (w/o SDRAM and FRAM) and CS6-7 should be configurable as SDRAM and FRAM. It is also
-; possible and for some devices neccessary to configure other two chip selects as SDRAM
-; or FRAM interface. In such a case be aware of the bit meanings.
-;
-;
-; Ordinary bus interface (w/o SDRAM and FRAM) (ACRx_Type = 0xxx)
-; --------------------------------------------------------------
-;
-; Bit description:
-;
-; W00 : RDY/WRX -> CSX hold extension cycle
-; 0 : 0 cycle
-; 1 : 1 cycle
-;
-; W01 : CSX -> RDX/WRX setup extention cycle
-; 0 : 0 cycle
-; 1 : 1 cycle
-;
-; W02 : Address -> CSX Delay selection
-; 0 : no delay selected
-; 1 : delay selected
-;
-; W03 : WR0X to WR3X/WRX outout timing selection
-; 0 : MCLK synchronous write output enable (ASX=L)
-; 1 : Asynchronous write strobe output (norma operation)
-;
-; W05 W04 : select Write recovery cycle
-; 0 0 : 0 cycle
-; 0 1 : 1 cycle
-; 1 0 : 2 cycles
-; 1 1 : 3 cycles
-;
-; W07 W06 : Read -> Write idle cycle selection
-; 0 0 : 0 cycle
-; 0 1 : 1 cycle
-; 1 0 : 2 cycles
-; 1 1 : 3 cycles
-;
-; W11 W10 W09 W08 : Intra-page access cycle select (0-15 cycles)
-; 0 0 0 0 : 0 Wait state
-; 0 0 0 1 : 1 Auto-wait cycle
-; 0 0 1 0 : 2 Auto-wait cycle
-; ....
-; 1 1 1 1 : 15 Auto wait cycles
-;
-; W15 W14 W13 W12 : First access wait cycle can be set (0-15 cycles)
-; 0 0 0 0 : 0 Wait state
-; 0 0 0 1 : 1 Auto-wait cycle
-; 0 0 1 0 : 2 Auto-wait cycle
-; ....
-; 1 1 1 1 : 15 Auto wait cycles
-;
-;
-;
-; SDRAM and FRAM bus interface (ACRx_Type = 100x)
-; -----------------------------------------------
-;
-; Bit description:
-;
-; W01 W00 : RAS precharge cycles.
-; 0 0 : 1 cycle
-; 0 1 : 2 cycles
-; 1 0 : 5 cycles
-; 1 1 : 6 cycles
-;
-; W03 W02 : RAS active Time
-; 0 0 : 1 cycle
-; 0 1 : 2 cycles
-; 1 0 : 5 cycles
-; 1 1 : 6 cycles
-;
-; W05 W04 : set Write recovery cycle (1 - 4 cycles)
-; 0 0 : Prohibited
-; 0 1 : 2 cycles
-; 1 0 : 3 cycles
-; 1 1 : 4 cycles
-;
-; W07 W06 : set Read -> Write idle Cycle (1 - 4 cycles)
-; 0 0 : 1 cycle
-; 0 1 : 2 cycles
-; 1 0 : 3 cycles
-; 1 1 : 4 cycles
-;
-; W10 W09 W08 : set CAS latency (1 - 8 cycles)
-; 0 0 0 : 1 cycle
-; 0 0 1 : 2 cycle
-; ...
-; 1 1 1 : 8 cycle
-;
-; W11 : RESERVED, ALWAYS WRITE 0 !
-;
-; W14 W13 W12 : set RAS-CAS delay (1 - 8 cycles)
-; 0 0 0 : 1 cycle
-; 0 0 1 : 2 cycle
-; ...
-; 1 1 1 : 8 cycle
-;
-; W15 : RESERVED, ALWAYS WRITE 0 !
-;
-
-; The bit meaning depends on the configured bus interface type
-;
-;=========================================================================================
-; 4.8.5 Configure Chipselects for SDRAM memory only (only EXTBUS == ON and SDRAM)
-;=========================================================================================
-;
-#set MEMCON B'00000111 ; <<< set special SDRAM register, MCRA
-; ||||||||
-; ||||||||__ ABS0 bit, set max. active banks (ABS1,0)
-; |||||||___ ABS1 bit
-; ||||||____ BANK bit, set number of banks connected to CS
-; |||||_____ WBST bit, Write burst enable/disable
-; ||||______ PSZ0 bit, Set page size (PSZ2-0)
-; |||_______ PSZ1 bit
-; ||________ PSZ2 bit
-; |_________ reserved, always write 0
-;
-; When connecting SDRAM/FCRAM TYP3-0=1000 in ACRx register the following register must
-; be setup.
-;
-; Bit description:
-;
-; ABS1 ABS0 : Set maximum number of bank, active at same time
-; 0 0 : 1 bank
-; 0 1 : 2 banks
-; 1 0 : 3 banks
-; 1 1 : 4 banks
-;
-; BANK : Set number of connected SDRAM banks
-; 0 : 2 banks
-; 1 : 4 banks
-;
-; WBST : Write burst enable
-; 0 : Single Write
-; 1 : Busrt Write
-;
-; PSZ2 PSZ1 PS0 : Select page size of connected memory
-; 0 0 0 : 8-bit column address = A0 to A7
-; 0 0 1 : 9-bit column address = A0 to A8
-; 0 1 0 : 10-bit column address = A0 to A9
-; 0 1 1 : 11-bit column address = A0 to A9, A11
-; 1 X X : setting disabled
-;
-;
-;=========================================================================================
-; 4.8.6 Referesh Control Register RCR (only EXTBUS == ON and SDRAM)
-;=========================================================================================
-;
-#set REFRESH B'1110001001000111 ; <<< set Refresh Control Register, RCR
-; ||||||||||||||||
-; ||||||||||||||||__ TRC0 bit, set refresh cycle (TRC2-0)
-; |||||||||||||||___ TRC1 bit
-; ||||||||||||||____ TRC2 bit
-; |||||||||||||_____ PON bit, set power-on control
-; ||||||||||||______ RFC0 bit, set refresh count (RFC2-0)
-; |||||||||||_______ RFC1 bit
-; ||||||||||________ RFC2 bit
-; |||||||||_________ BRST bit, set burst refresh control
-; ||||||||__________ RFINT0 bit, set auto refresh interval
-; |||||||___________ RFINT1 bit, (RFINT5-0)
-; ||||||____________ RFINT2 bit
-; |||||_____________ RFINT3 bit
-; ||||______________ RFINT4 bit
-; |||_______________ RFINT5 bit
-; ||________________ RRLD bit, counter refresh strat control
-; |_________________ SELF bit, self refresh control
-;
-;
-; This register sets various SDRAM refresh controls. When SDRAM control is not set for
-; any area, the setting of this register is meaningless, but do not change the register
-; value at initial state. When a read is performed using a read-modify-write
-; instruction, 0 always returns from the SELF, RRLD, and PON bits.
-;
-; Bit description:
-;
-;
-; TRC2 TRC1 TRC0 : Refresh Cycle
-; 0 0 0 : 4
-; 0 0 1 : 5
-; 0 1 0 : 6
-; 0 1 1 : 7
-; 1 0 0 : 8
-; 1 0 1 : 9
-; 1 1 0 : 10
-; 1 1 1 : 11
-;
-; PON : Power-on control
-; 0 : disabled
-; 1 : power-on sequence started
-;
-; RFC2 RFC1 RFC0 : Refresh Count
-; 0 0 0 : 256
-; 0 0 1 : 512
-; 0 1 0 : 1024
-; 0 1 1 : 2048
-; 1 0 0 : 4096
-; 1 0 1 : 8192
-; 1 1 0 : Setting disabled
-; 1 1 1 : Refresh disabled
-;
-; BRST : Burst refresh control
-; 0 : Decentralised refresh
-; 1 : burst refresh
-;
-; RFINT[5-0] : auto refresh interval
-;
-; RRLD : Refresh counter Activation Control
-; 0 : Disabled,
-; 1 : Autorefresh performed once, then value of RFINT reloaded
-;
-; SELF : Self refresh control
-; 0 : auto refresh or power down
-; 1 : Transitions to self-refresch mode
-;
-; NOTE: PON bit is set after the above setting. Do not set PON bit to 1 in the
-; above setting. Otherwise the settings are not correct set.
-;
-;=========================================================================================
-; 4.8.7 Terminal and Timing Control Register (only EXTBUS == ON)
-;=========================================================================================
-;
-#set TIMECONTR B'00000000 ; <<< set TCR register, TCR
-; ||||||||
-; ||||||||__ RDW0 bit, set wait cycle reduction (RDW0,1)
-; |||||||___ RDW1 bit
-; ||||||____ OHT0 bit, set output hold delay (OHT1,0)
-; |||||_____ OHT1 bit
-; ||||______ reserved, always write 0
-; |||_______ PCLR bit, prefetch buffer clear
-; ||________ PSUS bit, prefetch suspend
-; |_________ BREN bit, BRQ input enable
-;
-; This register controls the general functions of the external bus interface controller
-; such as the common-pin function setting and timing control.
-;
-; Bit description:
-;
-; RDW1 RDW0 : Wait cycle reduction
-; 0 0 : Normal Wait (AWR0 - 7 setting)
-; 0 1 : 1/2 of AWR0 - 7 setting value
-; 1 0 : 1/4 of AWR0 - 7 setting value
-; 1 1 : 1/8 of AWR0 - 7 setting value
-;
-; OHT1 OHT0 : Output hold selection bit
-; 0 0 : Output performed at falling edge of SYSCLK/MCLK
-; 0 1 : Output performed about 3ns after falling edge of SYSCLK/MCLK
-; 1 0 : Output performed about 4ns after falling edge of SYSCLK/MCLK
-; 1 1 : Output performed about 5ns after falling edge of SYSCLK/MCLK
-;
-; PCLR : Prefetch buffer all clear
-; 0 : normal state
-; 1 : Prefetch buffer cleared
-;
-; PSUS : prefetch suspension bit
-; 0 : Prefetch enabled
-; 1 : Prefetch disabled
-;
-; BREN : BRQ input enable
-; 0 : disabled,
-; 1 : enabled, Bus sharing of BRQ/BGRNTX performed
-;
-; Note: This function is used to prevent an excessive access cycle wait while operating
-; at a low-speed clock (such as while base clock operating at low speed or
-; high frequency division rate for external bus clock).
-;
-;=========================================================================================
-; 4.8.8 Enable/Disable I-CACHE (only EXTBUS == ON)
-;=========================================================================================
-;
-#set C1024 1 ; CACHE Size: 1024 BYTE
-#set C2048 2 ; CACHE Size: 2048 BYTE
-#set C4096 3 ; CACHE Size: 4096 BYTE
-;
-;
-#set CACHE OFF ; <<< Select use of cache
-#set CACHE_SIZE C4096 ; <<< Select size of cache, ISIZE
-;
-; It is possible to use cache functionality on the I-Bus on several devices. Please
-; check the corresponidng data sheet if this feature is available on a certain device
-; and for the size of the cache. This is the general cache configuration. It is possible
-; to configure for each CS area, if the cache should be used.
-;
-; Note: This feature is not supported by every device. Please check the data sheet. The
-; feature is for example supported by MB91461R, MB91469G.
-;
-;=========================================================================================
-; 4.8.9 Enable CACHE for chipselect (only EXTBUS == ON)
-;=========================================================================================
-;
-#set CHEENA B'11111111 ; <<< en-/disable cache, CHER
-; ||||||||
-; ||||||||__ CHE0 bit, CS0 area
-; |||||||___ CHE1 bit, CS1 area
-; ||||||____ CHE2 bit, CS2 area
-; |||||_____ CHE3 bit, CS3 area
-; ||||______ CHE4 bit, CS4 area
-; |||_______ CHE5 bit, CS5 area
-; ||________ CHE6 bit, CS6 area
-; |_________ CHE7 bit, CS7 area
-;
-; Additional to the general cache enable setting, select which CS area should be used
-; with cache functionality.
-;
-; Note: Not all Chipselects are supported by the different devices. Please check the
-; data sheet.
-;
-; Note: This feature is not supported by every device. Please check the data sheet. The
-; Feature is supported by MB91461R, MB91469G.
-;
-;=========================================================================================
-; 4.8.10 Select External bus mode (Data lines) (only EXTBUS == ON)
-;=========================================================================================
-;
-#set PFUNC0 B'11111111 ;<<< Data lines or GIO, PFR00
-; ||||||||
-; ||||||||__ D24 / P00_0
-; |||||||___ D25 / P00_1
-; ||||||____ D26 / P00_2
-; |||||_____ D27 / P00_3
-; ||||______ D28 / P00_4
-; |||_______ D29 / P00_5
-; ||________ D30 / P00_6
-; |_________ D31 / P00_7
-;
-#set PFUNC1 B'11111111 ;<<< Data lines or GIO, PFR01
-; ||||||||
-; ||||||||__ D16 / P01_0
-; |||||||___ D17 / P01_1
-; ||||||____ D18 / P01_2
-; |||||_____ D19 / P01_3
-; ||||______ D20 / P01_4
-; |||_______ D21 / P01_5
-; ||________ D22 / P01_6
-; |_________ D23 / P01_7
-;
-#set PFUNC2 B'11111111 ;<<< Data lines or GIO, PFR02
-; ||||||||
-; ||||||||__ D8 / P02_0
-; |||||||___ D9 / P02_1
-; ||||||____ D10 / P02_2
-; |||||_____ D11 / P02_3
-; ||||______ D12 / P02_4
-; |||_______ D13 / P02_5
-; ||________ D14 / P02_6
-; |_________ D15 / P02_7
-;
-#set PFUNC3 B'11111111 ;<<< Data lines or GIO, PFR03
-; ||||||||
-; ||||||||__ D0 / P03_0
-; |||||||___ D1 / P03_1
-; ||||||____ D2 / P03_2
-; |||||_____ D3 / P03_3
-; ||||______ D4 / P03_4
-; |||_______ D5 / P03_5
-; ||________ D6 / P03_6
-; |_________ D7 / P03_7
-;
-; Select if the ports are set to
-; 1 : External bus mode, I/O for data lines or
-; 0 : General I/O port (GIO)
-;
-; Note: Not all data-lines are supported by the different devices. Please check the data
-; sheet.
-;
-;=========================================================================================
-; 4.8.11 Select External bus mode (Address lines) (only EXTBUS == ON)
-;=========================================================================================
-;
-#set PFUNC4 B'11111111 ;<<< Address lines or GIO, PFR04
-; ||||||||
-; ||||||||__ A24 / P04_0
-; |||||||___ A25 / P04_1
-; ||||||____ A26 / P04_2
-; |||||_____ A27 / P04_3
-; ||||______ A28 / P04_4
-; |||_______ A29 / P04_5
-; ||________ A30 / P04_6
-; |_________ A31 / P04_7
-;
-#set PFUNC5 B'11111111 ;<<< Address lines or GIO, PFR05
-; ||||||||
-; ||||||||__ A16 / P05_0
-; |||||||___ A17 / P05_1
-; ||||||____ A18 / P05_2
-; |||||_____ A19 / P05_3
-; ||||______ A20 / P05_4
-; |||_______ A21 / P05_5
-; ||________ A22 / P05_6
-; |_________ A23 / P05_7
-;
-#set PFUNC6 B'11111111 ;<<< Address lines or GIO, PFR06
-; ||||||||
-; ||||||||__ A8 / P06_0
-; |||||||___ A9 / P06_1
-; ||||||____ A10 / P06_2
-; |||||_____ A11 / P06_3
-; ||||______ A12 / P06_4
-; |||_______ A13 / P06_5
-; ||________ A14 / P06_6
-; |_________ A15 / P06_7
-;
-#set PFUNC7 B'11111111 ;<<< Address lines or GIO, PFR07
-; ||||||||
-; ||||||||__ A0 / P07_0
-; |||||||___ A1 / P07_1
-; ||||||____ A2 / P07_2
-; |||||_____ A3 / P07_3
-; ||||______ A4 / P07_4
-; |||_______ A5 / P07_5
-; ||________ A6 / P07_6
-; |_________ A7 / P07_7
-;
-; Select if the ports are set to
-; 1 : External bus mode, I/O for address lines or
-; 0 : General I/O port (GIO)
-;
-; Note: Not all address-lines are supported by the different devices. Please check the
-; data sheet.
-;
-;=========================================================================================
-; 4.8.12 Select External bus mode (Control signals) (only EXTBUS == ON)
-;=========================================================================================
-;
-#set PFUNC8 B'11111111 ;<<< Control signals or GIO, PFR08
-; ||||||||
-; ||||||||__ WRX0 / P08_0
-; |||||||___ WRX1 / P08_1
-; ||||||____ WRX2 / P08_2
-; |||||_____ WRX3 / P08_3
-; ||||______ RDX / P08_4
-; |||_______ BGRNTX / P08_5
-; ||________ BRQ / P08_6
-; |_________ RDY / P08_7
-;
-#set PFUNC9 B'11111111 ;<<< Control signals or GIO, PFR09
-; ||||||||
-; ||||||||__ CSX0 / P09_0
-; |||||||___ CSX1 / P09_1
-; ||||||____ CSX2 / P09_2
-; |||||_____ CSX3 / P09_3
-; ||||______ CSX4 / P09_4
-; |||_______ CSX5 / P09_5
-; ||________ CSX6 / P09_6
-; |_________ CSX7 / P09_7
-;
-#set PFUNC10 B'01011111 ;<<< Control signals or GIO, PFR10
-; ||||||||
-; ||||||||__ SYSCLK or !SYSCLK / P10_0
-; |||||||___ ASX / P10_1
-; ||||||____ BAAX / P10_2
-; |||||_____ WEX / P10_3
-; ||||______ MCLKO or !MCLKO / P10_4
-; |||_______ MCLKI or !MCLKI/ P10_5
-; ||________ MCLKE / P10_6
-; |_________ -
-;
-#set EPFUNC10 B'00000000 ;<<< Control signals or GIO, EPFR10
-; ||||||||
-; ||||||||__ 0:SYSCLK / 1:!SYSCLK
-; |||||||___ -
-; ||||||____ -
-; |||||_____ -
-; ||||______ 0:MCLKO / 1:!MCLKO
-; |||_______ 0:MCLKI / 1:!MCLKI
-; ||________ 0:MCLKI / 1:!MCLKI
-; |_________ -
-;
-;
-; Select if the ports are set to
-; 1 : External bus mode, I/O for control lines or
-; 0 : General I/O port (GIO)
-;
-; Note: Not all control-lines are supported by the different devices. Please check the
-; data sheet.
-;
-;=========================================================================================
-; 5 Definition of Configurations
-;=========================================================================================
-;
-#set NOCLOCK 0 ; do not touch CKSCR register
-#set MAINCLOCK 1 ; select main clock
-; ; MB91461R : 1/4 of oscillation input
-; ; Others: 1/2 of oscillation input
-#set MAINPLLCLOCK 2 ; select main clock with PLL
-#set SUBCLOCK 3 ; select subclock (if available)
-;
-#set PSCLOCK_CLKB 0x00 ; select core clock (initial)
-#set PSCLOCK_PLL 0x10 ; select PLL output (x)
-#set PSCLOCK_MAIN 0x30 ; select Main Oscillation
-;
-;=========================================================================================
-; 5.1 CLOCKSPEED == CLOCK_USER <<<
-;=========================================================================================
-; Must be configured only in the case of CLOCKSPEED is set to CLOCK_USER. Please see the
-; corresponding application note.
-;
-#if (CLOCKSPEED == CLOCK_USER )
- #set CLOCKSOURCE MAINPLLCLOCK ; <<< Clocksource
- #set ENABLE_SUBCLOCK OFF ; <<< Subclock: ON/OFF
- #set PLLSPEED 0x010F ; <<< 0x48Ch, 0x48Dh: PLLDIVM/N ; 64 MHz
- #set DIV_G 0x0F ; <<< 0x48Eh: PLLDIVG;
- #set MUL_G 0x0F ; <<< 0x48Fh: PLLMULG;
- ; Clock Divider
- #set CPUCLOCK 0x00 ; <<< 0x486h: DIV0R_B; => /1 ; 64 MHz
- #set PERCLOCK 0x03 ; <<< 0x486h: DIV0R_P; => /4 ; 16 MHz
- #set EXTBUSCLOCK 0x01 ; <<< 0x487h: DIV1R_T; => /2 ; 32 MHz
- ; CAN Clock
- #set PSCLOCKSOURCE PSCLOCK_PLL ; <<< 0x4C0h: CANPRE; => PLLx;128 MHz
- #set PSDVC 0x07 ; <<< 0x4C0h: CANPRE_DVC;=> /8 ; 16 MHz
- #set CANCLOCK 0x00 ; <<< 0x4C1h: CANCKD;
- ; Voltage Regulator
- #set REGULATORSEL 0x06 ; <<< 0x4CEh: REGSEL;
- #set REGULATORCTRL 0x00 ; <<< 0x4CFh: REGCTR;
- ; Memory Controller
- #set FLASHCONTROL 0x032 ; <<< 0x7002h: FCHCR;
- #set FLASHREADT 0xC413 ; <<< 0x7004h: FMWT;
- #set FLASHMWT2 0x10 ; <<< 0x7006h: FMWT2;
-#endif
-;
-;=========================================================================================
-; 5.2 CLOCKSPEED == NO_CLOCK
-;=========================================================================================
-;
-#if (CLOCKSPEED == NO_CLOCK )
- #set CLOCKSOURCE NOCLOCK
-#endif
-;
-;=========================================================================================
-; 5.2 CLOCKSPEED == SUB_32KHZ_CPU__32KHZ_PER_32KHZ_EXT_32KHZ_CAN__2MHZ
-;=========================================================================================
-;
-#if (CLOCKSPEED == SUB_32KHZ_CPU__32KHZ_PER_32KHZ_EXT_32KHZ_CAN__2MHZ )
-;
-; Start restriction; Maximum frequency
- #if (DEVICE == MB91463N) || (DEVICE == MB91461R)
- #error: Frequency is not supported by this device.
- #endif
-; End restriction
-;
- #set CLOCKSOURCE SUBCLOCK ; Clocksource
- #set ENABLE_SUBCLOCK ON ; Subclock: ON/OFF
- #set PLLSPEED 0x010F ; 0x48Ch, 0x48Dh: PLLDIVM/N ; n. a.
- #set DIV_G 0x0F ; 0x48Eh: PLLDIVG;
- #set MUL_G 0x0F ; 0x48Fh: PLLMULG;
- ; Clock Divider
- #set CPUCLOCK 0x00 ; 0x486h: DIV0R_B; => /1 ; 32 KHz
- #set PERCLOCK 0x00 ; 0x486h: DIV0R_P; => /1 ; 32 KHz
- #set EXTBUSCLOCK 0x00 ; 0x487h: DIV1R_T; => /1 ; 32 KHz
- ; CAN Clock
- #set PSCLOCKSOURCE PSCLOCK_MAIN ; 0x4C0h: CANPRE; => MAIN ; 4 MHz
- #set PSDVC 0x01 ; 0x4C0h: CANPRE_DVC; => /2 ; 2 MHz
- #set CANCLOCK 0x00 ; 0x4C1h: CANCKD; all CAN Clocks enabled
- ; Voltage Regulator
- #set REGULATORSEL 0x06 ; 0x4CEh: REGSEL;
- #set REGULATORCTRL 0x00 ; 0x4CFh: REGCTR;
- ; Memory Controller
- #set FLASHCONTROL 0x032 ; 0x7002h: FCHCR;
- #set FLASHREADT 0xC100 ; 0x7004h: FMWT;
- #set FLASHMWT2 0x00 ; 0x7006h: FMWT2;
-#endif
-;
-;=========================================================================================
-; 5.3 CLOCKSPEED == MAIN__4MHZ_CPU___2MHZ_PER__1MHZ_EXT__1MHZ_CAN__2MHZ
-;=========================================================================================
-;
-#if (CLOCKSPEED == MAIN_4MHZ_CPU___2MHZ_PER__1MHZ_EXT__1MHZ_CAN__2MHZ )
-;
-; Start restriction; Maximum frequency
- #if (DEVICE == MB91461R)
- #error: Frequency is not supported by this device.
- #endif
-; End restriction
-;
- #set CLOCKSOURCE MAINCLOCK ; Clocksource
- #set ENABLE_SUBCLOCK OFF ; Subclock: ON/OFF
- #set PLLSPEED 0x010F ; 0x48Ch, 0x48Dh: PLLDIVM/N ; n. a.
- #set DIV_G 0x0F ; 0x48Eh: PLLDIVG;
- #set MUL_G 0x0F ; 0x48Fh: PLLMULG;
- ; Clock Divider
- #set CPUCLOCK 0x00 ; 0x486h: DIV0R_B; => /1 ; 2 MHz
- #set PERCLOCK 0x01 ; 0x486h: DIV0R_P; => /2 ; 1 MHz
- #set EXTBUSCLOCK 0x01 ; 0x487h: DIV1R_T; => /2 ; 1 MHz
- ; CAN Clock
- #set PSCLOCKSOURCE PSCLOCK_MAIN ; 0x4C0h: CANPRE; => PLLx ; 4 MHz
- #set PSDVC 0x01 ; 0x4C0h: CANPRE_DVC; => /2 ; 2 MHz
- #set CANCLOCK 0x00 ; 0x4C1h: CANCKD; all CAN Clocks enabled
- ; Voltage Regulator
- #set REGULATORSEL 0x06 ; 0x4CEh: REGSEL;
- #set REGULATORCTRL 0x00 ; 0x4CFh: REGCTR;
- ; Memory Controller
- #set FLASHCONTROL 0x032 ; 0x7002h: FCHCR;
- #set FLASHREADT 0xC100 ; 0x7004h: FMWT;
- #set FLASHMWT2 0x00 ; 0x7006h: FMWT2;
-#endif
-;
-;=========================================================================================
-; 5.4 CLOCKSPEED == PLL_4MHZ__CPU__48MHZ_PER_16MHZ_EXT_24MHZ_CAN_16MHZ
-;=========================================================================================
-;
-#if (CLOCKSPEED == PLL_4MHZ__CPU__48MHZ_PER_16MHZ_EXT_24MHZ_CAN_16MHZ )
-;
-; Start restriction; Maximum frequency
- #if (DEVICE == MB91461R)
- #error: Frequency is not supported by this device.
- #endif
-; End restriction
-;
- #set CLOCKSOURCE MAINPLLCLOCK ; Clocksource
- #set ENABLE_SUBCLOCK OFF ; Subclock: ON/OFF
- #set PLLSPEED 0x010B ; 0x48Ch, 0x48Dh: PLLDIVM/N ; 48 MHz
- #set DIV_G 0x0F ; 0x48Eh: PLLDIVG;
- #set MUL_G 0x0B ; 0x48Fh: PLLMULG;
- ; Clock Divider
- #set CPUCLOCK 0x00 ; 0x486h: DIV0R_B; => /1 ; 48 MHz
- #set PERCLOCK 0x02 ; 0x486h: DIV0R_P; => /3 ; 16 MHz
- #set EXTBUSCLOCK 0x01 ; 0x487h: DIV1R_T; => /2 ; 24 MHz
- ; CAN Clock
- #set PSCLOCKSOURCE PSCLOCK_PLL ; 0x4C0h: CANPRE; => PLLx ; 96 MHz
- #set PSDVC 0x05 ; 0x4C0h: CANPRE_DVC; => /6 ; 16 MHz
- #set CANCLOCK 0x00 ; 0x4C1h: CANCKD; all CAN Clocks enabled
- ; Voltage Regulator
- #if (DEVICE == MB91469G)
- #set REGULATORSEL 0x36 ; 0x4CEh: REGSEL;
- #else
- #set REGULATORSEL 0x06 ; 0x4CEh: REGSEL;
- #endif
- #set REGULATORCTRL 0x00 ; 0x4CFh: REGCTR;
- ; Memory Controller
- #set FLASHCONTROL 0x032 ; 0x7002h: FCHCR;
- #set FLASHREADT 0xC201 ; 0x7004h: FMWT;
- #set FLASHMWT2 0x00 ; 0x7006h: FMWT2;
-#endif
-;
-;=========================================================================================
-; 5.5 CLOCKSPEED == PLL_4MHZ__CPU__64MHZ_PER_16MHZ_EXT_32MHZ_CAN_16MHZ
-;=========================================================================================
-;
-#if (CLOCKSPEED == PLL_4MHZ__CPU__64MHZ_PER_16MHZ_EXT_32MHZ_CAN_16MHZ )
-;
-; Start restriction; Maximum frequency
- #if (DEVICE == MB91461R)
- #error: Frequency is not supported by this device.
- #endif
-; End restriction
-;
- #set CLOCKSOURCE MAINPLLCLOCK ; Clocksource
- #set ENABLE_SUBCLOCK OFF ; Subclock: ON/OFF
- #set PLLSPEED 0x010F ; 0x48Ch, 0x48Dh: PLLDIVM/N ; 64 MHz
- #set DIV_G 0x0F ; 0x48Eh: PLLDIVG;
- #set MUL_G 0x0F ; 0x48Fh: PLLMULG;
- ; Clock Divider
- #set CPUCLOCK 0x00 ; 0x486h: DIV0R_B; => /1 ; 64 MHz
- #set PERCLOCK 0x03 ; 0x486h: DIV0R_P; => /4 ; 16 MHz
- #set EXTBUSCLOCK 0x01 ; 0x487h: DIV1R_T; => /2 ; 32 MHz
- ; CAN Clock
- #set PSCLOCKSOURCE PSCLOCK_PLL ; 0x4C0h: CANPRE; => PLLx ; 128 MHz
- #set PSDVC 0x07 ; 0x4C0h: CANPRE_DVC; => /8 ; 16 MHz
- #set CANCLOCK 0x00 ; 0x4C1h: CANCKD; all CAN Clocks enabled
- ; Voltage Regulator
- #set REGULATORSEL 0x06 ; 0x4CEh: REGSEL;
- #set REGULATORCTRL 0x00 ; 0x4CFh: REGCTR;
- ; Memory Controller
- #set FLASHCONTROL 0x032 ; 0x7002h: FCHCR;
- #set FLASHREADT 0xC413 ; 0x7004h: FMWT;
- #set FLASHMWT2 0x10 ; 0x7006h: FMWT2;
-#endif
-;
-;=========================================================================================
-; 5.6 CLOCKSPEED == PLL_4MHZ__CPU__80MHZ_PER_20MHZ_EXT_27MHZ_CAN_20MHZ
-;=========================================================================================
-;
-#if (CLOCKSPEED == PLL_4MHZ__CPU__80MHZ_PER_20MHZ_EXT_27MHZ_CAN_20MHZ )
-;
-; Start restriction; Maximum frequency
- #if (DEVICE == MB91461R)
- #error: Frequency is not supported by this device.
- #endif
-; End restriction
-;
- #set CLOCKSOURCE MAINPLLCLOCK ; Clocksource
- #set ENABLE_SUBCLOCK OFF ; Subclock: ON/OFF
- #set PLLSPEED 0x0113 ; 0x48Ch, 0x48Dh: PLLDIVM/N ; 80 MHz
- #set DIV_G 0x0F ; 0x48Eh: PLLDIVG;
- #set MUL_G 0x13 ; 0x48Fh: PLLMULG;
- ; Clock Divider
- #set CPUCLOCK 0x00 ; 0x486h: DIV0R_B; => /1 ; 80 MHz
- #set PERCLOCK 0x03 ; 0x486h: DIV0R_P; => /4 ; 20 MHz
- #set EXTBUSCLOCK 0x02 ; 0x487h: DIV1R_T; => /3 ; 27 MHz
- ; CAN Clock
- #set PSCLOCKSOURCE PSCLOCK_PLL ; 0x4C0h: CANPRE; => PLLx ; 160 MHz
- #set PSDVC 0x07 ; 0x4C0h: CANPRE_DVC; => /8 ; 8 MHz
- #set CANCLOCK 0x00 ; 0x4C1h: CANCKD; all CAN Clocks enabled
- ; Voltage Regulator
- #set REGULATORSEL 0x06 ; 0x4CEh: REGSEL;
- #set REGULATORCTRL 0x00 ; 0x4CFh: REGCTR;
- ; Memory Controller
- #set FLASHCONTROL 0x032 ; 0x7002h: FCHCR;
- #set FLASHREADT 0xC413 ; 0x7004h: FMWT;
- #set FLASHMWT2 0x10 ; 0x7006h: FMWT2;
-#endif
-;
-;=========================================================================================
-; 5.7 CLOCKSPEED == PLL_4MHZ__CPU__80MHZ_PER_20MHZ_EXT_40MHZ_CAN_20MHZ
-;=========================================================================================
-;
-#if (CLOCKSPEED == PLL_4MHZ__CPU__80MHZ_PER_20MHZ_EXT_40MHZ_CAN_20MHZ )
-;
-; Start restriction; Maximum frequency
- #if (DEVICE == MB91461R)
- #error: Frequency is not supported by this device.
- #endif
-; End restriction
-;
- #set CLOCKSOURCE MAINPLLCLOCK ; Clocksource
- #set ENABLE_SUBCLOCK OFF ; Subclock: ON/OFF
- #set PLLSPEED 0x0113 ; 0x48Ch, 0x48Dh: PLLDIVM/N ; 80 MHz
- #set DIV_G 0x0F ; 0x48Eh: PLLDIVG;
- #set MUL_G 0x13 ; 0x48Fh: PLLMULG;
- ; Clock Divider
- #set CPUCLOCK 0x00 ; 0x486h: DIV0R_B; => /1 ; 80 MHz
- #set PERCLOCK 0x03 ; 0x486h: DIV0R_P; => /4 ; 20 MHz
- #set EXTBUSCLOCK 0x01 ; 0x487h: DIV1R_T; => /2 ; 40 MHz
- ; CAN Clock
- #set PSCLOCKSOURCE PSCLOCK_PLL ; 0x4C0h: CANPRE; => PLLx ; 160 MHz
- #set PSDVC 0x07 ; 0x4C0h: CANPRE_DVC; => /8 ; 8 MHz
- #set CANCLOCK 0x00 ; 0x4C1h: CANCKD; all CAN Clocks enabled
- ; Voltage Regulator
- #set REGULATORSEL 0x06 ; 0x4CEh: REGSEL;
- #set REGULATORCTRL 0x00 ; 0x4CFh: REGCTR;
- ; Memory Controller
- #set FLASHCONTROL 0x032 ; 0x7002h: FCHCR;
- #set FLASHREADT 0xC413 ; 0x7004h: FMWT;
- #set FLASHMWT2 0x10 ; 0x7006h: FMWT2;
-#endif
-;
-;=========================================================================================
-; 5.8 CLOCKSPEED == PLL_4MHZ__CPU__96MHZ_PER_16MHZ_EXT_48MHZ_CAN_16MHZ
-;=========================================================================================
-;
-#if (CLOCKSPEED == PLL_4MHZ__CPU__96MHZ_PER_16MHZ_EXT_48MHZ_CAN_16MHZ )
-;
-; Start restriction; Maximum frequency
- #if (DEVICE == MB91464A) || (DEVICE == MB91465K) || (DEVICE == MB91463N) ||\
- (DEVICE == MB91461R) || (DEVICE == MB91467R)
- #error: Frequency is not supported by this device.
- #endif
-; End restriction
-;
- #set CLOCKSOURCE MAINPLLCLOCK ; Clocksource
- #set ENABLE_SUBCLOCK OFF ; Subclock: ON/OFF
- #set PLLSPEED 0x0117 ; 0x48Ch, 0x48Dh: PLLDIVM/N ; 96 MHz
- #set DIV_G 0x0F ; 0x48Eh: PLLDIVG;
- #set MUL_G 0x17 ; 0x48Fh: PLLMULG;
- ; Clock Divider
- #set CPUCLOCK 0x00 ; 0x486h: DIV0R_B; => /1 ; 64 MHz
- #set PERCLOCK 0x05 ; 0x486h: DIV0R_P; => /6 ; 16 MHz
- #set EXTBUSCLOCK 0x01 ; 0x487h: DIV1R_T; => /2 ; 32 MHz
- ; CAN Clock
- #set PSCLOCKSOURCE PSCLOCK_PLL ; 0x4C0h: CANPRE; => PLLx ; 192 MHz
- #set PSDVC 0x0B ; 0x4C0h: CANPRE_DVC; => /12 ; 16 MHz
- #set CANCLOCK 0x00 ; 0x4C1h: CANCKD; all CAN Clocks enabled
- ; Voltage Regulator
- #if (DEVICE == MB91469G)
- #set REGULATORSEL 0x36 ; 0x4CEh: REGSEL;
- #else
- #set REGULATORSEL 0x06 ; 0x4CEh: REGSEL;
- #endif
- #set REGULATORCTRL 0x00 ; 0x4CFh: REGCTR;
- ; Memory Controller
- #set FLASHCONTROL 0x032 ; 0x7002h: FCHCR;
- #set FLASHREADT 0xC413 ; 0x7004h: FMWT;
- #set FLASHMWT2 0x10 ; 0x7006h: FMWT2;
-#endif
+; settings.
;
-;=========================================================================================
-; 5.9 CLOCKSPEED == PLL_4MHZ__CPU_100MHZ_PER_20MHZ_EXT_50MHZ_CAN_20MHZ
-;=========================================================================================
+; Note: This feature is not supported by every device, e.g. MB91461. Please check the
+; data sheet.
;
-#if (CLOCKSPEED == PLL_4MHZ__CPU_100MHZ_PER_20MHZ_EXT_50MHZ_CAN_20MHZ )
+;=========================================================================================
+; 4.8 External Bus Interface
;
-; Start restriction; Maximum frequency
- #if (DEVICE == MB91464A) || (DEVICE == MB91465K) || (DEVICE == MB91463N) ||\
- (DEVICE == MB91461R) || (DEVICE == MB91467R) || (DEVICE == MB91467D)
- #error: Frequency is not supported by this device.
- #endif
-; End restriction
+; The rest of the configuration is only applicable for devices with an external bus
+; interface.
;
- #set CLOCKSOURCE MAINPLLCLOCK ; Clocksource
- #set ENABLE_SUBCLOCK OFF ; Subclock: ON/OFF
- #set PLLSPEED 0x0118 ; 0x48Ch, 0x48Dh: PLLDIVM/N ; 100 MHz
- #set DIV_G 0x0F ; 0x48Eh: PLLDIVG;
- #set MUL_G 0x17 ; 0x48Fh: PLLMULG;
- ; Clock Divider
- #set CPUCLOCK 0x00 ; 0x486h: DIV0R_B; => /1 ; 100 MHz
- #set PERCLOCK 0x04 ; 0x486h: DIV0R_P; => /5 ; 20 MHz
- #set EXTBUSCLOCK 0x01 ; 0x487h: DIV1R_T; => /2 ; 50 MHz
- ; CAN Clock
- #set PSCLOCKSOURCE PSCLOCK_PLL ; 0x4C0h: CANPRE; => PLLx ; 200 MHz
- #set PSDVC 0x09 ; 0x4C0h: CANPRE_DVC; => /10 ; 20 MHz
- #set CANCLOCK 0x00 ; 0x4C1h: CANCKD; all CAN Clocks enabled
- ; Voltage Regulator
- #if (DEVICE == MB91469G)
- #set REGULATORSEL 0x36 ; 0x4CEh: REGSEL;
- #else
- #set REGULATORSEL 0x06 ; 0x4CEh: REGSEL;
- #endif
- #set REGULATORCTRL 0x00 ; 0x4CFh: REGCTR;
- ; Memory Controller
- #set FLASHCONTROL 0x032 ; 0x7002h: FCHCR;
- #set FLASHREADT 0xC413 ; 0x7004h: FMWT;
- #set FLASHMWT2 0x10 ; 0x7006h: FMWT2;
-#endif
+; If the device does not offer an external bus interface, the configuration can be
+; stoped at this point.
;
;=========================================================================================
-; 5.10 CLOCKSPEED == PLL_10MHZ_CPU__60MHZ_PER_20MHZ_EXT_30MHZ_CAN_20MHZ
+; 5 Definition of Configurations
;=========================================================================================
;
-#if (CLOCKSPEED == PLL_10MHZ_CPU__60MHZ_PER_20MHZ_EXT_30MHZ_CAN_20MHZ )
+#set NOCLOCK 0 ; do not touch CKSCR register
+#set MAINCLOCK 1 ; select main clock
+; ; MB91461R : 1/4 of oscillation input
+; ; Others: 1/2 of oscillation input
+#set MAINPLLCLOCK 2 ; select main clock with PLL
+#set SUBCLOCK 3 ; select subclock (if available)
;
-; Start restriction; Maximum frequency
- #if (DEVICE == MB91464A) || (DEVICE == MB91467B) || (DEVICE == MB91467C) ||\
- (DEVICE == MB91467D) || (DEVICE == MB91469G) || (DEVICE == MB91465K) ||\
- (DEVICE == MB91463N) || (DEVICE == MB91467R) || (DEVICE == MB91465X)
- #error: Frequency is not supported by this device.
- #endif
-; End restriction
+#set PSCLOCK_CLKB 0x00 ; select core clock (initial)
+#set PSCLOCK_PLL 0x10 ; select PLL output (x)
+#set PSCLOCK_MAIN 0x30 ; select Main Oscillation
;
- #set CLOCKSOURCE MAINPLLCLOCK ; Clocksource
- #set ENABLE_SUBCLOCK OFF ; Subclock: ON/OFF
- #set PLLSPEED 0x0105 ; 0x48Ch, 0x48Dh: PLLDIVM/N ; 60 MHz
- #set DIV_G 0x0B ; 0x48Eh: PLLDIVG;
- #set MUL_G 0x1F ; 0x48Fh: PLLMULG;
- ; Clock Divider
- #set CPUCLOCK 0x00 ; 0x486h: DIV0R_B; => /1 ; 60 MHz
- #set PERCLOCK 0x02 ; 0x486h: DIV0R_P; => /3 ; 20 MHz
- #set EXTBUSCLOCK 0x01 ; 0x487h: DIV1R_T; => /2 ; 30 MHz
- ; CAN Clock
- #set PSCLOCKSOURCE PSCLOCK_PLL ; 0x4C0h: CANPRE; => PLLx ; 120 MHz
- #set PSDVC 0x05 ; 0x4C0h: CANPRE_DVC; => /6 ; 20 MHz
- #set CANCLOCK 0x00 ; 0x4C1h: CANCKD; all CAN Clocks enabled
- ; Voltage Regulator
- ; -
- ; Memory Controller
- ; -
-#endif
+;=========================================================================================
+; 5.2 CLOCKSPEED == NO_CLOCK
+;=========================================================================================
;
+#if (CLOCKSPEED == NO_CLOCK )
+ #set CLOCKSOURCE NOCLOCK
+#endif
;=========================================================================================
-; 5.11 CLOCKSPEED == PLL_20MHZ_CPU__60MHZ_PER_20MHZ_EXT_30MHZ_CAN_20MHZ
+; 5.5 CLOCKSPEED == PLL_4MHZ__CPU__64MHZ_PER_16MHZ_EXT_32MHZ_CAN_16MHZ
;=========================================================================================
;
-#if (CLOCKSPEED == PLL_20MHZ_CPU__60MHZ_PER_20MHZ_EXT_30MHZ_CAN_20MHZ )
+#if (CLOCKSPEED == PLL_4MHZ__CPU__64MHZ_PER_16MHZ_EXT_32MHZ_CAN_16MHZ )
;
; Start restriction; Maximum frequency
- #if (DEVICE == MB91464A) || (DEVICE == MB91467B) || (DEVICE == MB91467C) ||\
- (DEVICE == MB91467D) || (DEVICE == MB91469G) || (DEVICE == MB91465K) ||\
- (DEVICE == MB91463N) || (DEVICE == MB91467R) || (DEVICE == MB91465X)
+ #if (DEVICE == MB91461R)
#error: Frequency is not supported by this device.
#endif
; End restriction
;
#set CLOCKSOURCE MAINPLLCLOCK ; Clocksource
#set ENABLE_SUBCLOCK OFF ; Subclock: ON/OFF
- #set PLLSPEED 0x0102 ; 0x48Ch, 0x48Dh: PLLDIVM/N ; 60 MHz
+ #set PLLSPEED 0x010F ; 0x48Ch, 0x48Dh: PLLDIVM/N ; 64 MHz
#set DIV_G 0x0F ; 0x48Eh: PLLDIVG;
- #set MUL_G 0x1F ; 0x48Fh: PLLMULG;
+ #set MUL_G 0x0F ; 0x48Fh: PLLMULG;
; Clock Divider
- #set CPUCLOCK 0x00 ; 0x486h: DIV0R_B; => /1 ; 60 MHz
- #set PERCLOCK 0x02 ; 0x486h: DIV0R_P; => /3 ; 20 MHz
- #set EXTBUSCLOCK 0x01 ; 0x487h: DIV1R_T; => /2 ; 30 MHz
+ #set CPUCLOCK 0x00 ; 0x486h: DIV0R_B; => /1 ; 64 MHz
+ #set PERCLOCK 0x03 ; 0x486h: DIV0R_P; => /4 ; 16 MHz
+ #set EXTBUSCLOCK 0x01 ; 0x487h: DIV1R_T; => /2 ; 32 MHz
; CAN Clock
- #set PSCLOCKSOURCE PSCLOCK_PLL ; 0x4C0h: CANPRE; => PLLx ; 120 MHz
- #set PSDVC 0x05 ; 0x4C0h: CANPRE_DVC; => /6 ; 20 MHz
+ #set PSCLOCKSOURCE PSCLOCK_PLL ; 0x4C0h: CANPRE; => PLLx ; 128 MHz
+ #set PSDVC 0x07 ; 0x4C0h: CANPRE_DVC; => /8 ; 16 MHz
#set CANCLOCK 0x00 ; 0x4C1h: CANCKD; all CAN Clocks enabled
; Voltage Regulator
- ; -
+ #set REGULATORSEL 0x06 ; 0x4CEh: REGSEL;
+ #set REGULATORCTRL 0x00 ; 0x4CFh: REGCTR;
; Memory Controller
- ; -
+ #set FLASHCONTROL 0x032 ; 0x7002h: FCHCR;
+ #set FLASHREADT 0xC413 ; 0x7004h: FMWT;
+ #set FLASHMWT2 0x10 ; 0x7006h: FMWT2;
#endif
-;
+;
;=========================================================================================
; 6 Section and Data Declaration
;=========================================================================================
-
.export __start
.import _main
- .import _RAM_INIT
- .import _ROM_INIT
-
-#if CLIBINIT == ON
- .export __exit
- .import _exit
- .import __stream_init
-#endif
-
-#if CPLUSPLUS == ON
- .export __abort
- .import ___call_dtors
- .import _atexit
-#endif
;=========================================================================================
; 6.1 Define Stack Size
;=========================================================================================
+ .section DATA, data, align=4
.SECTION SSTACK, STACK, ALIGN=4
#if STACK_RESERVE == ON
.EXPORT __systemstack, __systemstack_top
__systemstack_top:
#endif
- .SECTION USTACK, STACK, ALIGN=4
-#if STACK_RESERVE == ON
- .EXPORT __userstack, __userstack_top
- __userstack:
- .RES.B STACK_USR_SIZE
- __userstack_top:
-
-#endif
;=========================================================================================
; 6.2 Define Sections
;=========================================================================================
- .section DATA, data, align=4
- .section INIT, data, align=4
- .section IRAM, code, align=4
- .section CONST, const, align=4
- .section INTVECT, const, align=4
-
-#if I_RAM
- .import _RAM_IRAM
- .import _ROM_IRAM
-#endif
+ .section CODE, code, align=4
-#if (DEVICE != MB91461R)
- #if (DEVICE == MB91469G)
- .section SECURITY_VECTORS, code, locate = 0x248000
- #else
- .section SECURITY_VECTORS, code, locate = 0x148000
- #endif
-
- #if (BOOT_FLASH_SEC == OFF)
- .data.w 0xFFFFFFFF
- .data.w 0xFFFFFFFF
- .data.w 0xFFFFFFFF
- .data.w 0xFFFFFFFF
- #else
- .res.w 4
- #endif
-#endif
-
-#if CPLUSPLUS == ON
- .section EXT_CTOR_DTOR, const, align=4 ; C++ constructors
-#endif
-
;-----------------------------------------------------------------------------------------
; MACRO Clear RC Watchdog
;-----------------------------------------------------------------------------------------
LDI #0x4C7,R7 ; clear RC watchdog
BANDL #0x7,@R7
#endm
-;-----------------------------------------------------------------------------------------
-; MACRO WAIT_LOOP
-;-----------------------------------------------------------------------------------------
-#macro wait_loop loop_number
-#local _wait64_loop
- LDI #loop_number, R0
-_wait64_loop:
- ADD #-1, R0
- BNE _wait64_loop
-#endm
- .section CODE, code, align=4
.section CODE_START, code, align=4
-#pragma section CODE=IRAM,attr=CODE
-
;=========================================================================================
; 7. S T A R T
NOP
;
ANDCCR #0xEF ; disable interrupts
- STILM #LOW_PRIOR ; set interrupt level to low prior
+ STILM #31 ; set interrupt level to low prior
ClearRCwatchdog ; clear harware watchdog
;=========================================================================================
-; 7.1 Initialise Stack Pointer and Table Base Register
+; 7.1 Initialise Stack Pointer
;=========================================================================================
#if STACKUSE == SYSSTACK
- ORCCR #0x20
- LDI #__userstack_top, SP ; initialize SP
- ANDCCR #0xDF
- LDI #__systemstack_top, SP ; initialize SP
-#endif
-
-#if STACKUSE == USRSTACK
ANDCCR #0xDF
LDI #__systemstack_top, SP ; initialize SP
- ORCCR #0x20
- LDI #__userstack_top, SP ; initialize SP
#endif
- LDI #INTVECT, R0 ; set Table Base
-smd_tbr:
- MOV R0, TBR
-
#if (CLOCKSOURCE != NOCLOCK)
;=========================================================================================
; 7.2 Check for CSV reset and set CSV
ORB R1, @R0 ; store data to CLKR register
#endif
-
-#if ENABLE_SUBCLOCK == ON
- LDI #0x0484, R0 ; Clock source control reg CLKR
- LDI #0x08, R1 ; enable subclock operation
- ORB R1, @R0 ; store data to CLKR register
- LDI #0x4CA, R0 ; Sub Clock oszilation
- LDI #0x00, R1 ; stabilitsation time = 32 ms
- AND R1, @R0
- BORH #0x02, @R0
-#endif
-
;=========================================================================================
; 7.6.5 Wait for PLL oscillation stabilisation
;=========================================================================================
LDI #CANCLOCK, R1 ; Load CANCLOCK
STB R1, @R0 ; set CANCLOCK
-;=========================================================================================
-; 7.6.6.4 Switch Main Clock Mode
-;=========================================================================================
-#if CLOCKSOURCE == MAINCLOCK
-
-;=========================================================================================
-; 7.6.6.5 Switch Subclock Mode
-;=========================================================================================
-#elif ( (CLOCKSOURCE == SUBCLOCK) )
- #if ENABLE_SUBCLOCK == ON
- LDI #0x4CA, R12
-subStabTime:
- ClearRCwatchdog ; clear harware watchdog
- BTSTH #8, @R12 ; wait until sub clock stabilisation
- BEQ subStabTime ; time is over
- LDI #0x0, R1
- STB R1, @R12
-
- LDI #0x0484, R0 ; Clock source control reg CLKR
- LDI #0x01, R1 ; load value to select main clock
- ORB R1, @R0 ; enable main clock (1/2 external)
- LDI #0x03, R1 ; load value to select subclock
- ORB R1, @R0 ; enable subclock as clock source
- #else
- #error: Wrong setting! The clock source is subclock, but the subclock is disabled.
- #endif
-
;=========================================================================================
; 7.6.7 Switch to PLL Mode
;=========================================================================================
-#elif ( (CLOCKSOURCE == MAINPLLCLOCK) )
+#if ( (CLOCKSOURCE == MAINPLLCLOCK) )
#if (DIV_G != 0x00)
LDI #0x0490, R0 ; PLL Ctrl Register
#endif
noClockStartup:
-
-;=========================================================================================
-; 7.7 Set BusInterface
-;=========================================================================================
-; Start restriction; No ext. bus interface
-#if (DEVICE != MB91464A) && (DEVICE != MB91467C) && (DEVICE != MB91465K) && \
- (DEVICE != MB91463N) && (DEVICE != MB91465X)
-; End restriction
-#if (EXTBUS == ON)
-;=========================================================================================
-; 7.7.1 Disable all CS
-;=========================================================================================
-; Start restriction; Flashless device
-#if(DEVICE != MB91461R)
-; End restriction
- LDI #0x0680, R3 ; chip select enable register CSER
- LDI #(0x00), R2 ; load disable settings
-smd_cs:
- ANDB R2, @R3 ; set register
-#endif
-
-;=========================================================================================
-; 7.7.2 Clear TCR Register
-;=========================================================================================
- LDI #0x0683, R1 ; Pin/Timing Control Register TCR
- BORH #0x6,@R1 ; load timing settings
-
-;=========================================================================================
-; 7.7.3 Set CS0
-;=========================================================================================
-#if CS0
- LDI #0x0640, R1 ; area select reg ASR0, ACR0
- LDI #(AREASEL0<<16)+CONFIGCS0, R0 ; load settings
- ST R0, @R1 ; set registers
-
- LDI #0x660, R1 ; area wait register awr0
- LDI #WAITREG0, R2 ; wait settings
- STH R2, @R1 ; set register
-#endif
-
-;=========================================================================================
-; 7.7.4 Set CS1
-;=========================================================================================
-#if CS1
- LDI #0x0644, R1 ; area select reg ASR1, ACR1
- LDI #(AREASEL1<<16)+CONFIGCS1, R0 ; load settings
- ST R0, @R1 ; set registers
-
- LDI #0x662, R1 ; area wait register awr1
- LDI #WAITREG1, R2 ; wait settings
- STH R2, @R1 ; set register
-#endif
-smd_cs_mb91461r:
-;=========================================================================================
-; 7.7.5 Set CS2
-;=========================================================================================
-#if CS2
- LDI #0x0648, R1 ; area select reg ASR2, ACR2
- LDI #(AREASEL2<<16)+CONFIGCS2, R0 ; load settings
- ST R0, @R1 ; set registers
- LDI #0x664, R1 ; area wait register awr2
- LDI #WAITREG2, R2 ; wait settings
- STH R2, @R1 ; set register
-#endif
-;=========================================================================================
-; 7.7.6 Set CS3
-;=========================================================================================
-#if CS3
- LDI #0x064C, R1 ; area select reg ASR3, ACR3
- LDI #(AREASEL3<<16)+CONFIGCS3, R0 ; load settings
- ST R0, @R1 ; set registers
- LDI #0x666, R1 ; area wait register awr3
- LDI #WAITREG3, R2 ; wait settings
- STH R2, @R1 ; set register
-#endif
-;=========================================================================================
-; 7.7.7 Set CS4
-;=========================================================================================
-#if CS4
- LDI #0x0650, R1 ; area select reg ASR4, ACR4
- LDI #(AREASEL4<<16)+CONFIGCS4, R0 ; load settings
- ST R0, @R1 ; set registers
- LDI #0x668, R1 ; area wait register awr4
- LDI #WAITREG4, R2 ; wait settings
- STH R2, @R1 ; set register
-#endif
-;=========================================================================================
-; 7.7.8 Set CS5
-;=========================================================================================
-#if CS5
- LDI #0x0654, R1 ; area select reg ASR5, ACR5
- LDI #(AREASEL5<<16)+CONFIGCS5, R0 ; load settings
- ST R0, @R1 ; set registers
- LDI #0x66A, R1 ; area wait register awr5
- LDI #WAITREG5, R2 ; wait settings
- STH R2, @R1 ; set register
-#endif
-;=========================================================================================
-; 7.7.9 Set CS6
-;=========================================================================================
-#if (CS6)
- LDI #0x0658, R1 ; area select reg ASR6, ACR6
- LDI #(AREASEL6<<16)+CONFIGCS6, R0 ; load settings
- ST R0, @R1 ; set registers
- LDI #0x66C, R1 ; area wait register awr6
- LDI #WAITREG6, R2 ; wait settings
- STH R2, @R1 ; set register
-#endif
-;=========================================================================================
-; 7.7.10 Set CS7
-;=========================================================================================
-#if CS7
- LDI #0x065C, R1 ; area select reg ASR7, ACR7
- LDI #(AREASEL7<<16)+CONFIGCS7, R0 ; load settings
- ST R0, @R1 ; set registers
- LDI #0x66E, R1 ; area wait register awr7
- LDI #WAITREG7, R2 ; wait settings
- STH R2, @R1 ; set register
-#endif
-;=========================================================================================
-; 7.7.11 Set special SDRAM config register
-;=========================================================================================
-#if (SDRAM)
- LDI #0x670, R1 ; SDRAM memory config register
- LDI #MEMCON, R2 ; wait settings
- STB R2, @R1 ; set register
-#endif
-
-;=========================================================================================
-; 7.7.12 set Port Function Register
-;=========================================================================================
-;=========================================================================================
-; 7.7.12.1 set PFR00 Register. External bus mode (D[24-31]) or General purpose port
-;=========================================================================================
- LDI #0x0D80, R1 ; Port Function Register 0, (PFR00)
- LDI #PFUNC0, R0 ; load port settings
- STB R0, @R1 ; set register
-;=========================================================================================
-; 7.7.12.2 set PFR01 Register. External bus mode (D[16-23]) or General purpose port
-;=========================================================================================
- LDI #0x0D81, R1 ; Port Function Register 1, (PFR01)
- LDI #PFUNC1, R0 ; load port settings
- STB R0, @R1 ; set register
-;=========================================================================================
-; 7.7.12.3 set PFR02 Register. External bus mode (D[8-15]) or General purpose port
-;=========================================================================================
- LDI #0x0D82, R1 ; Port Function Register 2, (PFR02)
- LDI #PFUNC2, R0 ; load port settings
- STB R0, @R1 ; set register
-;=========================================================================================
-; 7.7.12.4 set PFR03 Register. External bus mode (D[0-7]) or General purpose port
-;=========================================================================================
- LDI #0x0D83, R1 ; Port Function Register 3, (PFR03)
- LDI #PFUNC3, R0 ; load port settings
- STB R0, @R1 ; set register
-;=========================================================================================
-; 7.7.12.5 set PFR04 Register. External bus mode (Adr[24-31]) or General purpose port
-;=========================================================================================
- LDI #0x0D84, R1 ; Port Function Register 4, (PFR04)
- LDI #PFUNC4, R0 ; load port settings
- STB R0, @R1 ; set register
-;=========================================================================================
-; 7.7.12.6 set PFR05 Register. External bus mode (Adr[16-23]) or General purpose port
-;=========================================================================================
- LDI #0x0D85, R1 ; Port Function Register 5, (PFR05)
- LDI #PFUNC5, R0 ; load port settings
- STB R0, @R1 ; set register
-;=========================================================================================
-; 7.7.12.7 set PFR06 Register. External bus mode (Adr[8-15]) or General purpose port
-;=========================================================================================
- LDI #0x0D86, R1 ; Port Function Register 6, (PFR06)
- LDI #PFUNC6, R0 ; load port settings
- STB R0, @R1 ; set register
-;=========================================================================================
-; 7.7.12.8 set PFR07 Register. External bus mode (Adr[0-7]) or General purpose port
-;=========================================================================================
- LDI #0x0D87, R1 ; Port Function Register 7, (PFR07)
- LDI #PFUNC7, R0 ; load port settings
- STB R0, @R1 ; set register
-;=========================================================================================
-; 7.7.12.9 set PFR08 Register. External bus mode (Control Signals) or GIO port
-;=========================================================================================
- LDI #0x0D88, R1 ; Port Function Register 8, (PFR08)
- LDI #PFUNC8, R0 ; load port settings
- STB R0, @R1 ; set register
-;=========================================================================================
-; 7.7.12.10 set PFR09 Register. External bus mode (Control Signals) or GIO port
-;=========================================================================================
- LDI #0x0D89, R1 ; Port Function Register 9, (PFR09)
- LDI #PFUNC9, R0 ; load port settings
- STB R0, @R1 ; set register
-;=========================================================================================
-; 7.7.12.11 set PFR10 Register. External bus mode (Control Signals) or GIO port
-;=========================================================================================
- LDI #0x0D8A, R1 ; Port Function Register 10, (PFR10)
- LDI #PFUNC10, R0 ; load port settings
- STB R0, @R1 ; set register
-;=========================================================================================
-; 7.7.12.12 set EPFR10 Register. External bus mode (Control Signals) or GIO port
-;=========================================================================================
- LDI #0x0DCA, R1 ; Extended PFR 10, (EPFR10)
- LDI #EPFUNC10, R0 ; load port settings
- STB R0, @R1 ; set register
-;=========================================================================================
-; 7.7.13 Set TCR Register
-;=========================================================================================
- LDI #0x0683, R1 ; Pin/Timing Control Register TCR
- LDI #TIMECONTR, R0 ; load timing settings
- STB R0, @R1 ; set register
-;=========================================================================================
-; 7.7.14 Enable CACHE for selected CS
-;=========================================================================================
- LDI #0x0681, R3 ; chip select enable register CSER
- LDI #CHEENA, R2
- ORB R2, @R3
-;=========================================================================================
-; 7.7.15 set SDRAM Referesh Control Register
-;=========================================================================================
-#if (SDRAM)
- LDI #0x0684, R1 ; Refresh Control Register RCR
- LDI #REFRESH, R0 ; load refresh settings
- STH R0, @R1 ; set register
- LDI #0x0008, R2
- OR R2, R0 ; Set PON bit to 1
- STH R0, @R1 ; set register
-#endif
-;=========================================================================================
-; 7.7.16 Enable used CS
-;=========================================================================================
- LDI #0x0680, R3 ; chip select enable register CSER
- LDI #ENACSX, R2
-; Start restriction; Flashless device
-#if (DEVICE == MB91461R)
-; End restriction
-emu_sram_cs_mb91461r:
- ANDB R2, @R3 ; set register
-#else
- ORB R2, @R3
-#endif
-;=========================================================================================
-; 7.7.17 I-cache on/off
-;=========================================================================================
-; Start restriction; No cache
-#if (DEVICE == MB91461R) || (DEVICE == MB91469G) || (DEVICE == others)
-; End restriction
- #if CACHE
- #if CACHE_SIZE == C1024
- LDI #0x03C7, R1 ; Cache size register ISIZE
- LDI #0x00, R2
- STB R2, @R1
- LDI #0x03E7, R1 ; Cache control reg ICHCR
- LDI #0x07, R2 ; Release entry locks, flush and enable
- STB R2, @R1 ; cache
- #elif CACHE_SIZE == C2048
- LDI #0x03C7, R1 ; Cache size register ISIZE
- LDI #0x01, R2
- STB R2, @R1
- LDI #0x03E7, R1 ; Cache control reg ICHCR
- LDI #0x07, R2 ; Release entry locks, flush and enable
- STB R2, @R1 ; cache
- #elif CACHE_SIZE == C4096
- LDI #0x03C7, R1 ; Cache size register ISIZE
- LDI #0x02, R2
- STB R2, @R1
- LDI #0x03E7, R1 ; Cache control reg ICHCR
- LDI #0x07, R2 ; Release entry locks, flush and enable
- STB R2, @R1 ; cache
- #else
- #error: Wrong Cache size selected!
- #endif
- #else
- LDI #0x03E7, R1 ; Cache control reg ICHCR
- LDI #0x06, R2 ; Release entry locks, flush and disable
- STB R2, @R1 ; cache
- #endif
-#endif
-#elif (EXTBUS == OFF)
-;=========================================================================================
-; 7.7.18 set Port Function Register to general as I/O-Port
-;=========================================================================================
-;=========================================================================================
-; 7.7.18.1 set PFR00 Register. External bus mode as General purpose port
-;=========================================================================================
- LDI #0x0D80, R1 ; Port Function Register 0, (PFR00)
- LDI #0x00, R0 ; load port settings
- STB R0, @R1 ; set register
-;=========================================================================================
-; 7.7.18.2 set PFR01 Register. External bus mode as General purpose port
-;=========================================================================================
- LDI #0x0D81, R1 ; Port Function Register 1, (PFR01)
- LDI #0x00, R0 ; load port settings
- STB R0, @R1 ; set register
-;=========================================================================================
-; 7.7.18.3 set PFR02 Register. External bus mode as General purpose port
-;=========================================================================================
- LDI #0x0D82, R1 ; Port Function Register 2, (PFR02)
- LDI #0x00, R0 ; load port settings
- STB R0, @R1 ; set register
-;=========================================================================================
-; 7.7.18.4 set PFR03 Register. External bus mode as General purpose port
-;=========================================================================================
- LDI #0x0D83, R1 ; Port Function Register 3, (PFR03)
- LDI #0x00, R0 ; load port settings
- STB R0, @R1 ; set register
-;=========================================================================================
-; 7.7.18.5 set PFR04 Register. External bus mode as General purpose port
-;=========================================================================================
- LDI #0x0D84, R1 ; Port Function Register 4, (PFR04)
- LDI #0x00, R0 ; load port settings
- STB R0, @R1 ; set register
-;=========================================================================================
-; 7.7.18.6 set PFR05 Register. External bus mode as General purpose port
-;=========================================================================================
- LDI #0x0D85, R1 ; Port Function Register 5, (PFR05)
- LDI #0x00, R0 ; load port settings
- STB R0, @R1 ; set register
-;=========================================================================================
-; 7.7.18.7 set PFR06 Register. External bus mode as General purpose port
-;=========================================================================================
- LDI #0x0D86, R1 ; Port Function Register 6, (PFR06)
- LDI #0x00, R0 ; load port settings
- STB R0, @R1 ; set register
-;=========================================================================================
-; 7.7.18.8 set PFR07 Register. External bus mode as General purpose port
-;=========================================================================================
- LDI #0x0D87, R1 ; Port Function Register 7, (PFR07)
- LDI #0x00, R0 ; load port settings
- STB R0, @R1 ; set register
-;=========================================================================================
-; 7.7.18.9 set PFR08 Register. External bus mode as General purpose port
-;=========================================================================================
- LDI #0x0D88, R1 ; Port Function Register 8, (PFR08)
- LDI #0x00, R0 ; load port settings
- STB R0, @R1 ; set register
-;=========================================================================================
-; 7.7.18.10 set PFR09 Register. External bus mode as General purpose port
-;=========================================================================================
- LDI #0x0D89, R1 ; Port Function Register 9, (PFR09)
- LDI #0x00, R0 ; load port settings
- STB R0, @R1 ; set register
-;=========================================================================================
-; 7.7.18.11 set PFR10 Register. External bus mode as General purpose port
-;=========================================================================================
- LDI #0x0D8A, R1 ; Port Function Register 10, (PFR10)
- LDI #0x00, R0 ; load port settings
- STB R0, @R1 ; set register
-;=========================================================================================
-; 7.7.18.12 set EPFR10 Register. External bus mode as General purpose port
-;=========================================================================================
- LDI #0x0DCA, R1 ; Extended PFR10, (EPFR10)
- LDI #0x00, R0 ; load port settings
- STB R0, @R1 ; set register
-;=========================================================================================
-
-#elif (EXTBUS == DEFAULT)
- NOP
-smd_cs_mb91461r:
-emu_sram_cs_mb91461r:
-smd_cs:
-#endif ; #endif (EXTBUS)
-#endif ; #endif (excl. devices)
- ClearRCwatchdog
-
-;=========================================================================================
-; 7.8 Copy code from Flash to I-RAM
-;=========================================================================================
-#if I_RAM == ON
- LDI #_RAM_IRAM, R0
- LDI #_ROM_IRAM, R1
- LDI #sizeof(IRAM), R13
- CMP #0, R13
- BEQ copy_iram_end
-copy_iram1:
- ADD #-1, R13
- LDUB @(R13, R1), R12
- BNE:D copy_iram1
- STB R12, @(R13, R0)
-copy_iram_end:
- ClearRCwatchdog
-#endif
-
-;=========================================================================================
-; 7.9 Fill stacks
-;=========================================================================================
-#if STACK_FILL == ON
- LDI #STACK_PATTERN, R0
- LDI #SSTACK, R1
- LDI #sizeof(SSTACK), R2
- CMP #0, R2
- BEQ:D fill_sstack_end
- MOV R2, R13
- LDI #3, R12
- AND R2, R12
- BEQ:D fill_sstack2
- MOV R2, R3
- SUB R12, R3
- LDI #0x3, R4
- SUB R12, R4
- LSL #0x3, R4
- LDI #STACK_PATTERN, R5
- LSR R4, R5
- LDI #0x8, R4
-fill_sstack1:
- ADD #-1, R13
- LSR R4, R5
- CMP R3, R13
- BHI:D fill_sstack1
- STB R5, @(R13, R1)
- CMP #0, R3
- BEQ:D fill_sstack_end
-fill_sstack2:
- ADD #-4, R13
- BGT:D fill_sstack2
- ST R0, @(R13, R1)
-fill_sstack_end:
-
- LDI #STACK_PATTERN, R0
- LDI #USTACK, R1
- LDI #sizeof(USTACK), R2
- CMP #0, R2
- BEQ:D fill_ustack_end
- MOV R2, R13
- LDI #3, R12
- AND R2, R12
- BEQ:D fill_ustack2
- MOV R2, R3
- SUB R12, R3
- LDI #0x3, R4
- SUB R12, R4
- LSL #0x3, R4
- LDI #STACK_PATTERN, R5
- LSR R4, R5
- LDI #0x8, R4
-fill_ustack1:
- ADD #-1, R13
- LSR R4, R5
- CMP R3, R13
- BHI:D fill_ustack1
- STB R5, @(R13, R1)
- CMP #0, R3
- BEQ:D fill_ustack_end
-fill_ustack2:
- ADD #-4, R13
- BGT:D fill_ustack2
- ST R0, @(R13, R1)
-fill_ustack_end:
- ClearRCwatchdog
-#endif
-
-;=========================================================================================
-; Standard C startup
-;=========================================================================================
-;=========================================================================================
-; 7.10 Clear data
-;=========================================================================================
-; clear DATA section
-; According to ANSI, the DATA section must be cleared during start-up
- LDI:8 #0, R0
- LDI #sizeof DATA &~0x3, R1
- LDI #DATA, R13
- CMP #0, R1
- BEQ data_clr1
-data_clr0:
- ADD2 #-4, R1
- BNE:D data_clr0
- ST R0, @(R13, R1)
-data_clr1:
- LDI:8 #sizeof DATA & 0x3, R1
- LDI #DATA + (sizeof DATA & ~0x3), R13
-
- CMP #0, R1
- BEQ data_clr_end
-data_clr2:
- ADD2 #-1, R1
- BNE:D data_clr2
- STB R0, @(R13, R1)
-data_clr_end:
ClearRCwatchdog
-;=========================================================================================
-; 7.11 Copy Init section from ROM to RAM
-;=========================================================================================
-; copy rom
-; All initialised data's (e.g. int i=1) must be stored in ROM/FLASH area.
-; (start value)
-; The Application must copy the Section (Init) into the RAM area.
- LDI #_RAM_INIT, R0
- LDI #_ROM_INIT, R1
- LDI #sizeof(INIT), R2
- CMP #0, R2
- BEQ:D copy_rom_end
- LDI #3, R12
- AND R2, R12
- BEQ:D copy_rom2
- MOV R2, R13
- MOV R2, R3
- SUB R12, R3
-copy_rom1:
- ADD #-1, R13
- LDUB @(R13, R1), R12
- CMP R3, R13
- BHI:D copy_rom1
- STB R12, @(R13, R0)
- CMP #0, R3
- BEQ:D copy_rom_end
-copy_rom2:
- ADD #-4, R13
- LD @(R13, R1), R12
- BGT:D copy_rom2
- ST R12, @(R13, R0)
-copy_rom_end:
- ClearRCwatchdog
-
-;=========================================================================================
-; 7.12 C library initialization
-;=========================================================================================
-#if CLIBINIT == ON
- CALL32 __stream_init, r12 ; initialise library
-#endif
-;=========================================================================================
-; 7.13 call C++ constructors
-;=========================================================================================
-#if CPLUSPLUS == ON
- LDI #___call_dtors, r4
- CALL32 _atexit, r12
-
- LDI #EXT_CTOR_DTOR, r8
- LDI #EXT_CTOR_DTOR + sizeof(EXT_CTOR_DTOR), r9
- CMP r9, r8
- BEQ L1
-L0:
- LD @r8, r10
- CALL:D @r10
- ADD #4, r8
- CMP r9, r8
- BC L0
-L1:
-#endif
-
start_main:
;=========================================================================================
; 7.14 call main routine
LDI:8 #0, r4 ; Set the 1st parameter for main to 0.
CALL32:d _main, r12
LDI:8 #0, r5 ; Set the 2nd parameter for main to 0.
-#if CLIBINIT == ON
- CALL32 _exit, r12
- __exit:
-#endif
-
-#if CPLUSPLUS == ON
- __abort:
-#endif
-
;=========================================================================================
; 7.15 Return from main function
;=========================================================================================