VxWorks BSP Reference : wrSbc824x
wrSbc824x - Wind River SBC8240/8245
This manual entry provides board-specific information necessary to run VxWorks for the wrSbc824x BSP. Please read the section "Getting the board running vxWorks" in order to configure the board to run vxWorks.
Getting the board running vxWorks This section will guide you step by step how to get vxWorks running on this board.
1. Setting the board Jumpers & Switches:
In order to get the board running with the default configuration. the
following jumper's and switch's need to be set as follows:.CS
General Jumpers:
____________________________________________
| Jumpers | Jumpers | Jumpers |
|-------------|--------------|---------------|
|JP1 1-2 | JP14 1-2 | JP27 1-2 |
|JP5 Open | JP15 1-2 | JP28 2-3 |
|JP8 1-2 | JP16 1-2 | JP33 Open |
|JP9 1-2 | JP17 1-2 | JP37 Close |
|JP10 1-2 | JP18 1-2 | |
|JP11 2-3 | JP19 1-2 | |
|JP12 1-2 | JP20 1-2 | |
|JP13 1-2 | JP25 Open | |
|_____________|______________|_______________|Bus speed Jumerps:
_________________________
| 100MHz Bus | 66 MHz Bus |
|------------|------------|
| JP2 1-2 | JP2 1-2 |
| JP3 1-2 | JP3 2-3 |
| JP4 1-2 | JP4 2-3 |
| JP6 1-2 | JP6 2-3 |
| JP7 1-2 | JP7 1-2 |
|____________|____________|.CE
2. Creating a bootrom_uncmp.hex:
2.1 Launch Tornado II, go to the "Build" menu and choose the option
"Build Boot ROM...".
2.2 the "Build Boot ROM" window will popup, in the "Select a BSP:" column
choose the "wrSbc824x", and in the "Select an Image to build:" column
choose "bootrom_uncmp.hex" and press the "OK" button.
2.3 After the build process will finish successfully (You will see "Done" in
the "Build window" without error), you will have the bootrom_uncmp.hex in
your BSP directory "$(WIND_BASE)/target/config/wrSbc824x".3. Programming bootrom_uncmp to SBC8240/8245 FLASH:
If you are using visionCLICK please follow the instruction in section 3.1
if you are using SingleStep please follow the instruction in section 3.23.1 Using visionCLICK:
3.1.1 Install the visionPROBE II or visionICE II and power it on.
Connect the JTAG interface cable from the visionPROBE II or
visionICE II into the SBC8240/8245 board JTAG (JP26 The JTAG Port)
connector.Once all the connections have been made, power up the SBC8240/8245
board and start the visionCLICK executable on the host.3.1.2 Configure the visionCLICK project:
The "Welcome To visionCLICK" window will appear .In this window
press on the "Configure" button, This will invoke "PROJECTS/LOAD"
window. In this window press on the + left to the
"PowerPC_C_Demo.prj".This will show you the project configuration.
Point with the mouse cursor on the "Microprocessors" option and
press the right button and choose the type of CPU you have on your
board. For example: "PowerPC->MPC82xx->MPC8240" for SBC8240 or
"PowerPC->MPC82xx->MPC8245" for SBC8245. Verify that the
"Target Control" option point to visionPROBE for visionPROBE II or
visionICE for visionICE II, Also switch to the "Communications"
TAB and verify that the "Normal Port/Rate" & "Download Port/Rate"
suite your connection. for example: "LPT1" for visionPROBE II.
Now press the "Save" button at the bottom of the window and after
it on the "Activate" button.3.1.3 Program visionPROBE II / visionICE II with the proper register
setting for the SBC8240/8245 board:Go to the "Tools" menu and select the
"Log Output/Playback Scripts" option. The "Record / Playback"
dialog box will popup. In this dialog box go to the
"Playback Commands From File" group and press on the "Browse"
button. Navigate your self to the location of the following
register file: "sbc8240_100MHz_64MB.reg" for the SBC8240 board
with 64MB SDRAM, "sbc8240_100MHz_16MB.reg" for the SBC8240 board
with 16MB SDRAM, "sbc8245_100MHz_64MB.reg" for the SBC8245 board
with 64MB SDRAM. The files located in the visionCLICK
installation. After choosing the register file press on the "Open"
button to confirm the selected reg file. You will return back to
the "Record / Playback" dialog box. Now press on the "Start"
button located in the same group. In the "Terminal" window you can
see that the visionCLICK is running the script. When visionCLICK
will finish the playback you will get back the ">BKM>" or the
">ERR>".3.1.4 Get into Background Mode:
Execute the "IN" command to reset the board and initialize it with
the register setting..CS
IN
.CSThis command is the reset command to initialize the board.
3.1.5 Converting the bootrom_uncmp.hex to bootrom_uncmp.bin:
3.1.5.1 In visionCLICK, choose "Convert Object Modules" from the
"Tools" menu. The "CONVERT BINARY AND SYMBOL OBJs" dialog
box will pop up.Select "All Files" in the "Files of Type"
box. Go to the "Select Input Object Module To Convert"
group and navigate to the file "bootrom_uncmp.hex"
located in:
"$(WIND_BASE)/target/config/wrSbc824x/bootrom_uncmp.hex"3.1.5.2 In the group "Binary Downloadable Objects Modules" check
the "Create Flat BIN File For Flash Programming".
"In Range Of 0x" editbox, enter 0 for the start address,
and in the "To 0x" editbox, enter "FFFFFFFF".3.1.5.3 Make sure that all the other check box are unchecked.
Press the "Convert" button. Close the terminal window
when the conversion completes.3.1.7 Programming the SBC8240/8245 Flash:
In visionCLICK, select "Program Flash Devices" from the Tools
pull-down menu. This will invoke the "TF FLASH PROGRAMMING"
window. If you are not using visionCLICK, you can also invoke
this window using the "visionICE Utilities Panel" and follow the
steps below:3.1.7.1 Click the "Select" in the "Flash Card or PC Host File
Name and Path" group. The "CHOOSE A FILE FROM HOST PC"
dialog box will popup. In the edit box enter the full path
to the location of the "bootrom_uncmp.bin", or use the
"<--Browse" button to browse to the file location. Go to
the "+/- Bias" group and enter the number "FFF00100" in
the edit box. Now click the "OK" button, this will bring
you back to the "TF FLASH PROGRAMMING" dialog box.3.1.7.2 In the "Programming Algorithm" group in, the edit box
press on the "Select" button, and select one of the
following Flash devices:The 512KB On Board FLASH: "AMD 29F040 (512 x 8) 1 Device"
3.1.7.3 Set the proper address of the Flash to "FFF00000", check
the "Erase All" radio button,and set the
"Available RAM Workspace" setting to "00000000", set the
"Bytes Of Target RAM Required" to "60000".3.1.7.4 Press the "Erase and Program" button.
3.1.7.5 Now the Flash memory is programmed with the new boot
program.3.2 Using SingleStep for vision:
3.2.1 Install the visionPROBE II or visionICE II and power it on.
Connect the JTAG interface cable from the visionPROBE II or
visionICE II into the SBC8240/8245 board JTAG (JP26 The JTAG Port)
connector.Once all the connections have been made, power up the SBC8240/8245
board and start the SingleStep for vision executable on the host.3.2.2 Configure the SingleStep project:
3.2.2.1 Go to the "File" menu and choose the
"Start Debug Session..." .3.2.2.2 The "Debug" dialog box will popup, In the "Connection" tab
choose the visionPROBE option & the correct LPT port if
you are using visionPROBE, or visionICE & enter the
emulator IP address if you are using visionICE.3.2.2.3 In the "Processor" tab choose the "MPC8240" or "MPC8245".
3.2.2.4 In the "Register" tab choose the option
"Use vision-style register window with REG file" and then
browse to the location of the file
"sbc8240_100MHz_64MB.reg" for SBC8240 board with 64MB
SDRAM, "sbc8240_100MHz_16MB.reg" for SBC8240 with 16MB
SDRAM, "sbc8245_100MHz_64MB.reg" for SBC8245 with 64MB
SDRAM. The "sbc8240_100MHz_64MB.reg",
"sbc8240_100MHz_16MB.reg", "sbc8245_100MHz_64MB.reg"
files should be in the SingleStep registers directory.3.2.2.5 In the "File" tab choose the "Debug without a file"
option.3.2.3 Get into Background Mode:
3.2.3.1 Now in the "File" tab press OK.
3.2.3.2 Now should get the "Debug Status" dialogbox and in the
"Debug Session" field you should have in green
"Started Successfully", press the "Close" button.3.2.3.3 Now go to the "Command" button in the toolbar and press on
it. The "Command" Window will popup, the prompt in the
window will be "SingleStep". Bring the mouse cursor above
the "Command" window and press the right button. A menu
will popup, choose the "VisionShell(vsh)" option. Now the
prompt in the window will be ">BKM>". If the prompt is
">ERR>" execute the "IN" command to reset the board and
initialize it with the register setting..CS
IN
.CS
This command is the reset command to initialize the board.
After you got the ">BKM>" prompt again continue with the
instruction in the next section.3.2.4 Converting the bootrom_uncmp.hex to bootrom_uncmp.bin:
3.2.4.1 Go to the menu and choose "Tools" and
"Vision Flash Utility..." .3.2.4.2 The "Flash Programming Window" will popup. Go to the
"Files" tab, press the "Convert" button.3.2.4.3 The "File Convertion" window will popup. In the
"Enter new start address" edit box type "0x0" and in the
"Enter new end address" edit box type "0xFFFFFFFF".3.2.4.4 Now press the "Convert" button. After the convert operation
finished, you will see it in the "Convert Result" section
press the "Close" button.3.2.5 Programming the SBC8240/8245 Flash:
3.2.5.2 In the "Flash Programming Window" window. Go to the
"Configuration" tab, & choose the following Flash device:The 512KB On Board FLASH: "AMD 29F040 (512 x 8) 1 Device"
In "Flash Bank" group for the "Start:" enter "FFF00000".
In the "RAM Workspace" group for the "Workspace Start at:"
enter "00000000" and for the "Workspace Size:" enter
"60000".3.2.5.3 Now switch to the "Files" tab and press the "Add" button.
The open dialogbox will popup, browse to
"$(WIND_BASE)\target\config\wrSbc824x "bootrom_uncmp.bin" file. Now after getting back to the
"Files" tab you will see the full path to the selected
file in the "Binary Files" group. Move the mouse curser
above the line that showing the full path in the
"Binary Files" group and press the right button to mark
this line. Now press the "Toggle Enable" button to select
this binary file. Make sure that the line is still marked,
and press the "Edit" button on the right. The "File Edit"
dialog box will popup. In the "Enter new start address"
edit box enter "0xFFF00100" and press the "OK" button.3.2.5.4 Now go to the "Program" tab and press the "Erase/Program"
button.3.2.5.5 Now the Flash memory is programmed with the new boot program.
4. Running the VxWorks Boot ROM program:
4.1 Disconect visionPROBE II or the visonICE II if it still connected to the
board, because it still connected to the board in some case it can stop
the processor at the first instruction.4.2 Connecting the Ethernet channel and the serial channel:
4.2.1 First, connect the supplied serial cable with the board. On
one said connect the RJ11 connector to the COM1 (JP31) port on the
the SBC8240/8245, and on the other said use the RJ11 to 9/25 Pin
addapter to connect it to your host. The UART devices is set as
follow: 8 data bits, 1 stop bit, hardware handshaking, and parity
disabled. The serial console (9600 bps).4.2.2 Second, plug the Intel PRO100B/S PCI NIC in the PCI slot on the
carrier board and connect a standard Ethernet cable to the NIC.4.3 Launch a terminal program on the host said, and configures it according
to the following details: 8 data bits, 1 stop bit, hardware handshaking,
and parity disabled. The serial console (9600 bps).4.4 Now to execute this new boot program turn the board off,and on. and you
should get the vxWorks boot count down on the terminal window. Press any
key to stop the count down. Now follow the instruction in the
instructions in the "Getting Started" chapter of the
"VxWorks Programmer's Guide." for more detail how to configure vxWorks.
bootrom_uncmp.hex is provided with this BSP. The bootrom_uncmp is configured to a ROM base address of 0x0 and includes, also it's configured to use the 512KB On Board FLASH and FEI 10/100BaseT Ethernet as default boot device and COM1 as console device.
The following section will explain how to launch VxWorks using visionWARE as a boot loader. Please follow the steps below:Note(s): - Before using vsionWARE you need to verify that visionWARE is
programmed to you FLASH. If visionWARE is not exist on your FLASH,
please see "Programming bootrom_uncmp to SBC8240/8245 FLASH" section
how to program the SBC8240/8245 Flash, and instead of programming
the "bootrom_uncmp.bin" program the "vWARE.bin" file.- vWare 1.10 is using the NetGear NIC by default so the VxWorks image
need to be compiled with the PNIC169 driver. vWare 2.00 is using the
Intel 82559 NIC by default so the VxWorks image need to be compiled
with the FEI82557 driver.1. Connect your SBC8240/8245 serial channel (COM1) to a host running
terminal program at 9600 baud rate (For example "HyperTerminal")
using the supplied serial cable.2. Connect your SBC8240/8245 100\10Base-T (On the PCI Ethernet card)
port to a network hub.3. Open TFTP server and point to the location of the vxWorks.bdx file.
If you want to use the TFTP server that is supplied with visionWARE,
go to the visionWARE directory on your host, inside the visionWARE
root directory you will find "tftp" directory that contain
application called "tftpd32.exe" . Run this application and the
TFTPD32 window will popup. In the TFTPD32 window press on the
"Settings" button. This will invoke the "Tftpd32: Settings". Go to
the "Base Directory" group and inside the edit box type the full
path to your vxWorks image, or use the "Browse" button to navigate
to there.4. Power up your SBC8240/8245 and press any key within 3 seconds from
the serial terminal to abort the boot script. This will display a
">BKM>" prompt.5. Type the "shell" command and press enter. Now you should get the
following line: "File System Sectors (256K each) = 8 >" Press enter.6. Next line will be: "Boot Delay (seconds) = 1 >" . Here you need to
specify the desired delay value and press enter.7.Nex line will be: "Boot Script = >" . Here you need to give the boot
script command.Please type the following if you are using vWARE 1.10:"load \host\vxWorks.bdx!osboot RAM!go 100000" . Where "host" or if
you are using vWARE 2.0 please type the following:"load \host\vxWorks.bdx!launch 100000"
is the host name, and press enter.
Note(s):
** It is very important to keep the same space between the "load"
command and the host name "\host".** It is very important to keep the same space between the "osboot"
command and the "RAM". or between the "launch" command and the
"100000"** The host name should be the same as specified in the
"Remote System 1 Name" line.8. Next line will be "MAC Address = 00-A0-11-22-23-E8 >" . just press
just enter.9. Next line will be "IP Address = 0.0.0.0 >" .Type your target IP
address. For example: 192.168.199.0 and press enter.10. Next line will be "Subnet Mask = 0.0.0.0 >" . If you want to use
subnet mask, type it now and press enter, else just press enter.11. Next line will be "Default Gateway = 0.0.0.0 >" . If you want to
use default gateway, type it now and press enter, else just press
enter.12. Next line will be "Remote System 1 Name = >" . Here you need to
type the same host name you specified in the "Boot Script" line.13. Next line will be "Remote System 1 IP = >" . Here you need to type
your host IP address. For example: 192.168.199.1 and press enter.14. Next line will be "Remote System 2 Name = >" . Just press enter.
15. Next line will be "Remote System 3 Name = >" . Just press enter.
16. Next line will be "Remote System 4 Name = >" . Just press enter.
17. If you are using visionWARE 1.10 this will be the next line will
"Command Channel = 0: Serial >" . Just press enter. If you are using
visionWARE 2.00 this will be the first line, again just press enter.18. Now you will get the following message:
Saving changes will generate a reboot.
Save Changes (y/n)?Press y to save the changes.
19. Now the changes are saved and the board will restart visionWARE and
boot vxWorks, after a few seconds you will get the following
messages:
Wind River visionWARE v2.00 for the SBC8240 Board MAC : 00-00-00-00-00-00 IP : 192.168.199.0 Type "shell" to set IP and/or MAC addresses Type "help" to see available commands Press a key in the next <1> seconds to preempt boot script Booting from script... load \\host\vxWorks.bdx!launch 100000 >Attached TCP/IP interface to fei unit 0 Attaching interface lo0...done VxWorks Copyright 1984-1998 Wind River Systems, Inc. CPU: MPC8240 - Wind River. SBC8240 Evaluation Board VxWorks: 5.5 BSP version: 1.2/26 Creation date: Oct 29 2001 WDB: Ready.For more information regarding visionWARE boot services and the visionWARE development kit, please refer to the visionWARE manuals, located on the CD that was shipped with your board.
The supported boot device(s) is(are):
pnic - 100\10BaseT Ethernet
or
fei - 100\10BaseT Ethernet
This section describes the support and unsupported features of the SBC8240/8245
The supported features of the SBC8240/8245 board are:
8240/8245 processors.
66Mhz & 100Mhz bus speed
Board Initialization
MMU support
Cache support
Decrementer timer, is used to implement a System Clock & Timestamp.
1 UART channel (Consol channel).
10\100BaseT FEI PCI Ethernet device (Intel 82559).
10\100BaseT PNIC PCI Ethernet device (NetGear FA310) or.
8240 Interrupt Controller.
8240 PCI bridge.
8240 Memory Controller.
SDRAM upgrade (16, 64 MB Memory DIMM).
FLASH 512K On board.
FLASH 4MB On board.
Aux Clock.
The items not supported on the SBC8240/8245 are:
Other MPC8240/8245 peripheral
This section documents the details of the device drivers and board hardware elements for the SBC8240/8245.
The chip drivers included are:
i8250Sio.c - Intel 8250 UART driver ppcDecTimer.c - PowerPC decrementer timer library (system clock) byteNvRam.c - byte-oriented generic non-volatile RAM library pciConfigLib.c - PCI configuration library pciAutoConfig.c - PCI device auto-configuration library pciConfigShow.c - Show routines of PCI bus library m8240Epic.c - - MPC8240 EPIC Interrupt Controller m8240AuxClk.c - - MPC8240 Aux clock driver pnic169End.obj - 10baseT/100baseTX PNIC 169 Ethernet driver fei82557End.o - 10baseT/100baseTX FEI 82557/9 Ethernet driverThe BSP configures UART to implement a console device and the FEI 82557 as an Ethernet.
L1 cache locking is available for MPC8240/8245. The cache lock routine can be used to lock the entire data or instruction cache with a specified memory region.
Memory Map from CPU point of view Start Size Access to ----------------------------------------------------- 0x0 64MB (min) SDRAM DIMM 0xFF000000 4MB On Board FLASH 0xFFF00000 512K On Board FLASH or SRAM (Configured by jumper) 0xFFE00000 8K EEPROM 0xFFF80000 8Bit UART
This BSP supports both 66Mhz and 100Mhz 8240/8245 Bus Speeds. The bus speed is a conditionally compiled BSP parameter. A #define, in the "config.h" file, is used to specify the desired bus speed./* Bus Speed */ #define BUS_SPEED_100MHZ /* Option BUS_SPEED_100MHZ or BUS_SPEED_66MHZ */Note: Hardware jumpers PLL_CFG0..4 determine the bus and core speeds for the
board. Consult the SBC8240/8245 Evaluation Board Users' Manual for
details.
Initial boards and bsps were supplied with a 16Meg SDRAM DIMM; more recent evaluation boards are supplied with a 64Meg DIMM. the BSP is logically setup for 64Meg of SDRAM. The 64Meg is divided into two halves. The first 32Meg is useable for code and data. The second 32Meg is specified as USER_RESERVED_MEM memory. The 64Meg option is specified as a #define in the "config.h" file. If your board comes with 16Meg of SDRAM follow those steps:
1. Change the following macro in "config.h":
From:
#define INCLUDE_64MEG_SDRAM #undef INCLUDE_16MEG_SDRAMTo:#undef INCLUDE_64MEG_SDRAM #define INCLUDE_16MEG_SDRAM2. Change the following line in the Makefile:From:
RAM_HIGH_ADRS = 01F00000To:RAM_HIGH_ADRS = 00E000003. Re build the bootrom, and re create the vxWorks bootable project.The reason the BSP divides the 64Meg SDRAM into two 32Meg sections has to do with the EABI compilation option of a 24 bit address. The default compilation options generates a bl for branch instructions. This increases performance, but places a 32Meg address limit on the code.
There are two "work around" to this limitation.
1.) recompile all the source with the -mlongcall compilation flag
2.) add remaining 32Meg to the memory pool vi the memAddToPool( )
function.Option #1 would require all the libraries, driver, and the BSP to be recompiled with the -mlongcall compiler option. This results in a number of code changes; the most obvious code change is branches are implemented via brlr instruction verses the bl instruction.
Option #2, the preferable options, requires the USER_RESERVED_MEM and the memAddToPool( ) constructs be used to specify the remaining 32Meg to be added to the memory pool. Consult WindTech Note WTN41 for details on specifying user memory.
All boards have comes with PCI Ethernet card which is 10baseT and 100baseTX compatible. The Ethernet card uses an RJ45 (twisted pair) jack and can be used with either 10baseT or 100baseTX. The Ethernet driver automatically senses and configures the port as 10baseT or 100baseTX.
The BSP is using by default the FEI driver, but it is supporting also the PNIC driver that is used for the NetGear card. Please follow those steps to get the BSP working with the PNIC driver instead of the FEI:1. In "config.h" change the following lines:
FROM:
#define BOOT_DEVICE FEI_ENDTO:#define BOOT_DEVICE PNIC_END
2. In the makefile change the following lines:FROM:
MACH_EXTRA = #pnic169End.objTO:MACH_EXTRA = pnic169End.obj
3. Now reduild the bootrom and create a new VxWorks image project and
build it.** Don't forget to change the device name to "pnic" in the "boot device" line
in the bootrom.
This BSP implements NvRam via a EEPROM device. There are a few user parameters associated with this device. The parameters are located in the "config.h" file and are:#undef INCLUDE_EEPROM_LOCKING #define SMART_EEPROM_WRITEThe INCLUDE_EEPROM_LOCKING parameter is typically #undef'ed. If #define'ed, the EEPROM will be software locked between accesses. This was implemented on the BSP to work around a power-on EEPROM corruption problem. It should be noted, that if the EEPROM is locked, its contents can not be altered via an emulator or visionPROBE II or visionICE II (JTAG does not meet the minimum timing relationships needed).The SMART_EEPROM_WRITE parameter is typically #define'd. When defined, the EEPROM write code first checks to see if a cell is the desired value. If the memory location already contains the desired value, the write is skipped. This was implemented to increase the life of the EEPROM device.
The Media Access Control (Ethernet) address for each port is obtained from a serial ROM contained in the INTEL82557/9/0 chip. The Ethernet address should be writen on the card itself, 12 digit number in Hex format. If it's not writen on the card, you can use the "arp -a" command from the host command line in order to get the card Ethernet address.
The BSP configures to use the 512KByte On Board Flash. This is the only flash that can be used for bootrom.
The UART is configured as UART devices with 8 data bits, 1 stop bit, hardware handshaking, and parity disabled.
This VxWorks SBC8240/8245 BSP uses a simple 3 wire connection and standard phone jacks where pin 1 = RIN, pin 2 = TOUT, pin 3 = NC, and pin 4 = GND.
There is no SCSI interface on this board.
10/100Mb/s Fast Ethernet port, the BSP can be used with one of the two NIC Intel 82557/9 or NetGear FA310 (PNIC169). The BSP support use of nly one NIC at a time.
Two 32-bit address, 32-bit data; complies with PCI Local Bus Specification, Revision 2.1 The MPC8240/8245 have PCI bridge inside.
bootrom_uncmp is provided with this BSP. The bootrom is configured to a ROM base address of 0x0. When programing the bootrom to the FLASH an offset of 0xFFF00100 need to be given, also it's configured to use the 8 MByte on board Flash ROM and the 100/10BaseT Intel 82557/9 PCI Ethernet card as default boot device and the RS232 as console device.
The following images are delivered with the wrSbc824x BSP:
bootrom_uncmp bootrom_uncmp.hex bootrom bootrom.hex vxWorks vxWorks.st pnic169End.obj
Only bootrom_uncmp, bootrom, vxWorks have been tested.
This section describes miscellaneous information that the user needs to know about the BSP.
The current version of the Ethernet driver is not supporting polling mode, this cause the system debug mode option not to work when using the CroseWind debuger.SH "BIBLIOGRAPHY" Embedded Support Tools SBC8240 Hardware Reference Manual Motorola MPC8240 RISC Microprocessor User's Manual, Motorola PowerPC Microprocessor Family: The Programming Environments, DECchip 21140 PCI Fast Ethernet LAN Controller Hardware Reference Manual, Peripheral Component Interconnect (PCI) Local Bus Specification, Rev 2.1, PCI to PCI Bridge Architecture Specification 2.0,