mirror of https://github.com/tinygo-org/tinygo.git
wasmstm32webassemblymicrocontrollerarmavrspiwasiadafruitarduinocircuitplayground-expressgpioi2cllvmmicrobitnrf51nrf52nrf52840samd21tinygo
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
200 lines
8.4 KiB
200 lines
8.4 KiB
4 years ago
|
// -----------------------------------------------------------------------------
|
||
|
// file: teensy40.s
|
||
|
// desc: various startup and configuration data for Teensy 4.0.
|
||
|
// -----------------------------------------------------------------------------
|
||
|
// References
|
||
|
// i.MX RT1060 Processor Reference Manual
|
||
|
// - Section 9.7.1 "Image Vector Table and Boot Data"
|
||
|
// Teensyduino 1.53 by Paul Stoffregen (PJRC)
|
||
|
// - cores/teensy4/bootdata.c
|
||
|
// - cores/teensy4/startup.c
|
||
|
// -----------------------------------------------------------------------------
|
||
|
|
||
|
.section .boot_data
|
||
|
.global __boot_data
|
||
|
__boot_data:
|
||
|
.word 0x60000000 // boot start location
|
||
|
.word _image_size // flash size
|
||
|
.word 0 // plugin flag, use 0 to indicate normal (non-plugin) ROM image
|
||
|
|
||
|
.section .ivt
|
||
|
.global __ivt
|
||
|
__ivt:
|
||
|
.word 0x402000D1 // header (version 4.0)
|
||
|
.word _svectors // image entry function
|
||
|
.word 0 // reserved
|
||
|
.word 0 // DCD info (optional, set to 0|NULL if unused)
|
||
|
.word __boot_data // boot data struct
|
||
|
.word __ivt // self
|
||
|
.word 0 // command sequence file (CSF) not provided in image
|
||
|
.word 0 // reserved
|
||
|
|
||
|
.section .flash_config
|
||
|
.global __flash_config
|
||
|
__flash_config:
|
||
|
// 448 byte common FlexSPI configuration block, 8.6.3.1 page 223 (RT1060 rev 0)
|
||
|
// MCU_Flashloader_Reference_Manual.pdf, 8.2.1, Table 8-2, page 72-75
|
||
|
.word 0x42464346 // Tag 0x00
|
||
|
.word 0x56010000 // Version
|
||
|
.word 0 // reserved
|
||
|
.word 0x00020101 // columnAdressWidth,dataSetupTime,dataHoldTime,readSampleClkSrc
|
||
|
|
||
|
.word 0x00000000 // waitTimeCfgCommands,-,deviceModeCfgEnable
|
||
|
.word 0 // deviceModeSeq
|
||
|
.word 0 // deviceModeArg
|
||
|
.word 0x00000000 // -,-,-,configCmdEnable
|
||
|
|
||
|
.word 0 // configCmdSeqs 0x20
|
||
|
.word 0
|
||
|
.word 0
|
||
|
.word 0
|
||
|
|
||
|
.word 0 // cfgCmdArgs 0x30
|
||
|
.word 0
|
||
|
.word 0
|
||
|
.word 0
|
||
|
|
||
|
.word 0x00000000 // controllerMiscOption 0x40
|
||
|
.word 0x00030401 // lutCustomSeqEnable,serialClkFreq,sflashPadType,deviceType
|
||
|
.word 0 // reserved
|
||
|
.word 0 // reserved
|
||
|
|
||
|
.word 0x00200000 // sflashA1Size (Teensy 4.0) 0x50
|
||
|
//.word 0x00800000 // sflashA1Size (Teensy 4.1) 0x50
|
||
|
|
||
|
.word 0 // sflashA2Size
|
||
|
.word 0 // sflashB1Size
|
||
|
.word 0 // sflashB2Size
|
||
|
|
||
|
.word 0 // csPadSettingOverride 0x60
|
||
|
.word 0 // sclkPadSettingOverride
|
||
|
.word 0 // dataPadSettingOverride
|
||
|
.word 0 // dqsPadSettingOverride
|
||
|
|
||
|
.word 0 // timeoutInMs 0x70
|
||
|
.word 0 // commandInterval
|
||
|
.word 0 // dataValidTime
|
||
|
.word 0x00000000 // busyBitPolarity,busyOffset
|
||
|
|
||
|
.word 0x0A1804EB // lookupTable[0] 0x80
|
||
|
.word 0x26043206 // lookupTable[1]
|
||
|
.word 0 // lookupTable[2]
|
||
|
.word 0 // lookupTable[3]
|
||
|
|
||
|
.word 0x24040405 // lookupTable[4] 0x90
|
||
|
.word 0 // lookupTable[5]
|
||
|
.word 0 // lookupTable[6]
|
||
|
.word 0 // lookupTable[7]
|
||
|
|
||
|
.word 0 // lookupTable[8] 0xA0
|
||
|
.word 0 // lookupTable[9]
|
||
|
.word 0 // lookupTable[10]
|
||
|
.word 0 // lookupTable[11]
|
||
|
|
||
|
.word 0x00000406 // lookupTable[12] 0xB0
|
||
|
.word 0 // lookupTable[13]
|
||
|
.word 0 // lookupTable[14]
|
||
|
.word 0 // lookupTable[15]
|
||
|
|
||
|
.word 0 // lookupTable[16] 0xC0
|
||
|
.word 0 // lookupTable[17]
|
||
|
.word 0 // lookupTable[18]
|
||
|
.word 0 // lookupTable[19]
|
||
|
|
||
|
.word 0x08180420 // lookupTable[20] 0xD0
|
||
|
.word 0 // lookupTable[21]
|
||
|
.word 0 // lookupTable[22]
|
||
|
.word 0 // lookupTable[23]
|
||
|
|
||
|
.word 0 // lookupTable[24] 0xE0
|
||
|
.word 0 // lookupTable[25]
|
||
|
.word 0 // lookupTable[26]
|
||
|
.word 0 // lookupTable[27]
|
||
|
|
||
|
.word 0 // lookupTable[28] 0xF0
|
||
|
.word 0 // lookupTable[29]
|
||
|
.word 0 // lookupTable[30]
|
||
|
.word 0 // lookupTable[31]
|
||
|
|
||
|
.word 0x081804D8 // lookupTable[32] 0x100
|
||
|
.word 0 // lookupTable[33]
|
||
|
.word 0 // lookupTable[34]
|
||
|
.word 0 // lookupTable[35]
|
||
|
|
||
|
.word 0x08180402 // lookupTable[36] 0x110
|
||
|
.word 0x00002004 // lookupTable[37]
|
||
|
.word 0 // lookupTable[38]
|
||
|
.word 0 // lookupTable[39]
|
||
|
|
||
|
.word 0 // lookupTable[40] 0x120
|
||
|
.word 0 // lookupTable[41]
|
||
|
.word 0 // lookupTable[42]
|
||
|
.word 0 // lookupTable[43]
|
||
|
|
||
|
.word 0x00000460 // lookupTable[44] 0x130
|
||
|
.word 0 // lookupTable[45]
|
||
|
.word 0 // lookupTable[46]
|
||
|
.word 0 // lookupTable[47]
|
||
|
|
||
|
.word 0 // lookupTable[48] 0x140
|
||
|
.word 0 // lookupTable[49]
|
||
|
.word 0 // lookupTable[50]
|
||
|
.word 0 // lookupTable[51]
|
||
|
|
||
|
.word 0 // lookupTable[52] 0x150
|
||
|
.word 0 // lookupTable[53]
|
||
|
.word 0 // lookupTable[54]
|
||
|
.word 0 // lookupTable[55]
|
||
|
|
||
|
.word 0 // lookupTable[56] 0x160
|
||
|
.word 0 // lookupTable[57]
|
||
|
.word 0 // lookupTable[58]
|
||
|
.word 0 // lookupTable[59]
|
||
|
|
||
|
.word 0 // lookupTable[60] 0x170
|
||
|
.word 0 // lookupTable[61]
|
||
|
.word 0 // lookupTable[62]
|
||
|
.word 0 // lookupTable[63]
|
||
|
|
||
|
.word 0 // LUT 0: Read 0x180
|
||
|
.word 0 // LUT 1: ReadStatus
|
||
|
.word 0 // LUT 3: WriteEnable
|
||
|
.word 0 // LUT 5: EraseSector
|
||
|
|
||
|
.word 0 // LUT 9: PageProgram 0x190
|
||
|
.word 0 // LUT 11: ChipErase
|
||
|
.word 0 // LUT 15: Dummy
|
||
|
.word 0 // LUT unused?
|
||
|
|
||
|
.word 0 // LUT unused? 0x1A0
|
||
|
.word 0 // LUT unused?
|
||
|
.word 0 // LUT unused?
|
||
|
.word 0 // LUT unused?
|
||
|
|
||
|
.word 0 // reserved 0x1B0
|
||
|
.word 0 // reserved
|
||
|
.word 0 // reserved
|
||
|
.word 0 // reserved
|
||
|
|
||
|
// 64 byte Serial NOR configuration block (8.6.3.2, page 346)
|
||
|
|
||
|
.word 256 // pageSize 0x1C0
|
||
|
.word 4096 // sectorSize
|
||
|
.word 1 // ipCmdSerialClkFreq
|
||
|
.word 0 // reserved
|
||
|
|
||
|
.word 0x00010000 // block size 0x1D0
|
||
|
.word 0 // reserved
|
||
|
.word 0 // reserved
|
||
|
.word 0 // reserved
|
||
|
|
||
|
.word 0 // reserved 0x1E0
|
||
|
.word 0 // reserved
|
||
|
.word 0 // reserved
|
||
|
.word 0 // reserved
|
||
|
|
||
|
.word 0 // reserved 0x1F0
|
||
|
.word 0 // reserved
|
||
|
.word 0 // reserved
|
||
|
.word 0 // reserved
|