Last active
October 13, 2017 08:01
-
-
Save dev-zzo/afec1b05eeb580e7a78eb17f317541d6 to your computer and use it in GitHub Desktop.
IDC scripts for STM32
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| // | |
| // This script generates MMIO segments for STMicro Cortex-M3 cores | |
| // | |
| #include <idc.idc> | |
| static DefineSegment(sa, sz, name) { | |
| SegCreate(sa, sa + sz, 0x1, 1, 1, 2); | |
| SegRename(sa, name); | |
| SegClass (sa, "MMIO"); | |
| SegDefReg(sa, "T", 0x0); | |
| SegDefReg(sa, "DS", 0x1); | |
| MakeName (sa, name); | |
| } | |
| static Align(x, b) { | |
| return (x + b - 1) & (~(b - 1)); | |
| } | |
| static DefinePeripheral(sa, name, type) { | |
| DefineSegment(sa, Align(GetStrucSize(GetStrucIdByName(type)), 4), name); | |
| MakeStruct(sa, type); | |
| } | |
| static DefineRegisters(void) { | |
| auto id; | |
| auto mid; | |
| AddStrucEx(-1,"Regs_STK",0); | |
| id = GetStrucIdByName("Regs_STK"); | |
| mid = AddStrucMember(id,"CTRL", 0, 0x20000400, -1, 4); | |
| SetMemberComment(id, 0, "Control and status register", 1); | |
| mid = AddStrucMember(id,"LOAD", 0X4, 0x20000400, -1, 4); | |
| SetMemberComment(id, 0X4, "Reload value register", 1); | |
| mid = AddStrucMember(id,"VAL", 0X8, 0x20000400, -1, 4); | |
| SetMemberComment(id, 0X8, "Current value register", 1); | |
| mid = AddStrucMember(id,"CALIB", 0XC, 0x20000400, -1, 4); | |
| SetMemberComment(id, 0XC, "Calibration value register", 1); | |
| AddStrucEx(-1,"Regs_MPU",0); | |
| id = GetStrucIdByName("Regs_MPU"); | |
| mid = AddStrucMember(id,"TYPER", 0, 0x20000400, -1, 4); | |
| SetMemberComment(id, 0, "Type register", 1); | |
| mid = AddStrucMember(id,"CR", 0X4, 0x20000400, -1, 4); | |
| SetMemberComment(id, 0X4, "Control register", 1); | |
| mid = AddStrucMember(id,"RNR", 0X8, 0x20000400, -1, 4); | |
| SetMemberComment(id, 0X8, "Region number register", 1); | |
| mid = AddStrucMember(id,"RBAR", 0XC, 0x20000400, -1, 4); | |
| SetMemberComment(id, 0XC, "Region base address register", 1); | |
| mid = AddStrucMember(id,"RASR", 0X10, 0x20000400, -1, 4); | |
| SetMemberComment(id, 0X10, "Region attribute and size register", 1); | |
| mid = AddStrucMember(id,"RBARA1", 0X14, 0x20000400, -1, 4); | |
| mid = AddStrucMember(id,"RASRA1", 0X18, 0x20000400, -1, 4); | |
| mid = AddStrucMember(id,"RBARA2", 0X1C, 0x20000400, -1, 4); | |
| mid = AddStrucMember(id,"RASRA2", 0X20, 0x20000400, -1, 4); | |
| mid = AddStrucMember(id,"RBARA3", 0X24, 0x20000400, -1, 4); | |
| mid = AddStrucMember(id,"RASRA3", 0X28, 0x20000400, -1, 4); | |
| AddStrucEx(-1,"Regs_NVIC",0); | |
| id = GetStrucIdByName("Regs_NVIC"); | |
| mid = AddStrucMember(id,"ISER", 0, 0x20000400, -1, 128); | |
| SetMemberComment(id, 0, "Interrupt set-enable registers", 1); | |
| mid = AddStrucMember(id,"ICER", 0X80, 0x20000400, -1, 128); | |
| SetMemberComment(id, 0X80, "Interrupt clear-enable registers", 1); | |
| mid = AddStrucMember(id,"ISPR", 0X100, 0x20000400, -1, 128); | |
| SetMemberComment(id, 0X100, "Interrupt set-pending registers", 1); | |
| mid = AddStrucMember(id,"ICPR", 0X180, 0x20000400, -1, 128); | |
| SetMemberComment(id, 0X180, "Interrupt clear-pending registers", 1); | |
| mid = AddStrucMember(id,"IABR", 0X200, 0x20000400, -1, 256); | |
| SetMemberComment(id, 0X200, "Interrupt active bit registers", 1); | |
| mid = AddStrucMember(id,"IPR", 0X300, 0x20000400, -1, 32); | |
| SetMemberComment(id, 0X300, "Interrupt priority registers", 1); | |
| AddStrucEx(-1,"Regs_SCB",0); | |
| id = GetStrucIdByName("Regs_SCB"); | |
| mid = AddStrucMember(id,"CPUID", 0, 0x20000400, -1, 4); | |
| SetMemberComment(id, 0, "CPUID base register", 1); | |
| mid = AddStrucMember(id,"ICSR", 0X4, 0x20000400, -1, 4); | |
| SetMemberComment(id, 0X4, "Interrupt control and state register", 1); | |
| mid = AddStrucMember(id,"VTOR", 0X8, 0x20000400, -1, 4); | |
| SetMemberComment(id, 0X8, "Vector table offset register", 1); | |
| mid = AddStrucMember(id,"AIRCR", 0XC, 0x20000400, -1, 4); | |
| SetMemberComment(id, 0XC, "Application interrupt and reset control register", 1); | |
| mid = AddStrucMember(id,"SCR", 0X10, 0x20000400, -1, 4); | |
| SetMemberComment(id, 0X10, "System control register", 1); | |
| mid = AddStrucMember(id,"CCR", 0X14, 0x20000400, -1, 4); | |
| SetMemberComment(id, 0X14, "Configuration and control register", 1); | |
| mid = AddStrucMember(id,"SHPR1", 0X18, 0x20000400, -1, 4); | |
| SetMemberComment(id, 0X18, "System handler priority registers", 1); | |
| mid = AddStrucMember(id,"SHPR2", 0X1C, 0x20000400, -1, 4); | |
| SetMemberComment(id, 0X1C, "System handler priority registers", 1); | |
| mid = AddStrucMember(id,"SHPR3", 0X20, 0x20000400, -1, 4); | |
| SetMemberComment(id, 0X20, "System handler priority registers", 1); | |
| mid = AddStrucMember(id,"SHCRS", 0X24, 0x20000400, -1, 4); | |
| SetMemberComment(id, 0X24, "System handler control and state register", 1); | |
| mid = AddStrucMember(id,"CFSR", 0X28, 0x20000400, -1, 4); | |
| SetMemberComment(id, 0X28, "Configurable fault status register", 1); | |
| mid = AddStrucMember(id,"HFSR", 0X2C, 0x20000400, -1, 4); | |
| SetMemberComment(id, 0X2C, "Hard fault status register", 1); | |
| mid = AddStrucMember(id,"field_30", 0X30, 0x20000400, -1, 4); | |
| mid = AddStrucMember(id,"MMAR", 0X34, 0x20000400, -1, 4); | |
| SetMemberComment(id, 0X34, "Memory management fault address register", 1); | |
| mid = AddStrucMember(id,"BFAR", 0X38, 0x20000400, -1, 4); | |
| SetMemberComment(id, 0X38, "Bus fault address register", 1); | |
| mid = AddStrucMember(id,"field_3C", 0X3C, 0x20000400, -1, 4); | |
| AddStrucEx(-1,"Regs_FPEC",0); | |
| id = GetStrucIdByName("Regs_FPEC"); | |
| mid = AddStrucMember(id,"ACR", 0, 0x20000400, -1, 4); | |
| SetMemberComment(id, 0, "Access control register", 1); | |
| mid = AddStrucMember(id,"KEYR", 0X4, 0x20000400, -1, 4); | |
| SetMemberComment(id, 0X4, "FPEC key register", 1); | |
| mid = AddStrucMember(id,"OPTKEYR", 0X8, 0x20000400, -1, 4); | |
| SetMemberComment(id, 0X8, "Flash OPTKEY register", 1); | |
| mid = AddStrucMember(id,"SR", 0XC, 0x20000400, -1, 4); | |
| SetMemberComment(id, 0XC, "Status register", 1); | |
| mid = AddStrucMember(id,"CR", 0X10, 0x20000400, -1, 4); | |
| SetMemberComment(id, 0X10, "Control register", 1); | |
| mid = AddStrucMember(id,"AR", 0X14, 0x20000400, -1, 4); | |
| SetMemberComment(id, 0X14, "Address register", 1); | |
| mid = AddStrucMember(id,"OBR", 0X1C, 0x20000400, -1, 4); | |
| SetMemberComment(id, 0X1C, "Option byte register", 1); | |
| mid = AddStrucMember(id,"WRPR", 0X20, 0x20000400, -1, 4); | |
| SetMemberComment(id, 0X20, "Write protection register", 1); | |
| AddStrucEx(-1,"Regs_FSMC",0); | |
| id = GetStrucIdByName("Regs_FSMC"); | |
| mid = AddStrucMember(id,"BCR1", 0, 0x20000400, -1, 4); | |
| mid = AddStrucMember(id,"BCR2", 0X4, 0x20000400, -1, 4); | |
| mid = AddStrucMember(id,"BCR3", 0X8, 0x20000400, -1, 4); | |
| mid = AddStrucMember(id,"BCR4", 0XC, 0x20000400, -1, 4); | |
| mid = AddStrucMember(id,"BTR1", 0X10, 0x20000400, -1, 4); | |
| mid = AddStrucMember(id,"BTR2", 0X14, 0x20000400, -1, 4); | |
| mid = AddStrucMember(id,"BTR3", 0X18, 0x20000400, -1, 4); | |
| mid = AddStrucMember(id,"BTR4", 0X1C, 0x20000400, -1, 4); | |
| mid = AddStrucMember(id,"PCR2", 0X60, 0x20000400, -1, 4); | |
| mid = AddStrucMember(id,"SR2", 0X64, 0x20000400, -1, 4); | |
| mid = AddStrucMember(id,"PMEM2", 0X68, 0x20000400, -1, 4); | |
| mid = AddStrucMember(id,"PATT2", 0X6C, 0x20000400, -1, 4); | |
| mid = AddStrucMember(id,"ECC2", 0X74, 0x20000400, -1, 4); | |
| mid = AddStrucMember(id,"PCR3", 0X80, 0x20000400, -1, 4); | |
| mid = AddStrucMember(id,"SR3", 0X84, 0x20000400, -1, 4); | |
| mid = AddStrucMember(id,"PMEM3", 0X88, 0x20000400, -1, 4); | |
| mid = AddStrucMember(id,"PATT3", 0X8C, 0x20000400, -1, 4); | |
| mid = AddStrucMember(id,"ECC3", 0X94, 0x20000400, -1, 4); | |
| mid = AddStrucMember(id,"PCR4", 0XA0, 0x20000400, -1, 4); | |
| mid = AddStrucMember(id,"SR4", 0XA4, 0x20000400, -1, 4); | |
| mid = AddStrucMember(id,"PMEM4", 0XA8, 0x20000400, -1, 4); | |
| mid = AddStrucMember(id,"PATT4", 0XAC, 0x20000400, -1, 4); | |
| mid = AddStrucMember(id,"PIO4", 0XB0, 0x20000400, -1, 4); | |
| mid = AddStrucMember(id,"BWTR1", 0X104, 0x20000400, -1, 4); | |
| mid = AddStrucMember(id,"BWTR2", 0X108, 0x20000400, -1, 4); | |
| mid = AddStrucMember(id,"BWTR3", 0X10C, 0x20000400, -1, 4); | |
| mid = AddStrucMember(id,"BWTR4", 0X110, 0x20000400, -1, 4); | |
| AddStrucEx(-1,"Regs_RCC",0); | |
| id = GetStrucIdByName("Regs_RCC"); | |
| mid = AddStrucMember(id,"CR", 0, 0x20000400, -1, 4); | |
| mid = AddStrucMember(id,"CFGR", 0X4, 0x20000400, -1, 4); | |
| mid = AddStrucMember(id,"CIR", 0X8, 0x20000400, -1, 4); | |
| mid = AddStrucMember(id,"APB2RSTR", 0XC, 0x20000400, -1, 4); | |
| mid = AddStrucMember(id,"APB1RSTR", 0X10, 0x20000400, -1, 4); | |
| mid = AddStrucMember(id,"AHBENR", 0X14, 0x20000400, -1, 4); | |
| mid = AddStrucMember(id,"APB2ENR", 0X18, 0x20000400, -1, 4); | |
| mid = AddStrucMember(id,"APB1ENR", 0X1C, 0x20000400, -1, 4); | |
| mid = AddStrucMember(id,"BDCR", 0X20, 0x20000400, -1, 4); | |
| mid = AddStrucMember(id,"CSR", 0X24, 0x20000400, -1, 4); | |
| AddStrucEx(-1,"Regs_USART",0); | |
| id = GetStrucIdByName("Regs_USART"); | |
| mid = AddStrucMember(id,"SR", 0, 0x10000400, -1, 2); | |
| SetMemberComment(id, 0, "Status register", 1); | |
| mid = AddStrucMember(id,"DR", 0X4, 0x10000400, -1, 2); | |
| SetMemberComment(id, 0X4, "Data register", 1); | |
| mid = AddStrucMember(id,"BRR", 0X8, 0x10000400, -1, 2); | |
| SetMemberComment(id, 0X8, "Baud rate register", 1); | |
| mid = AddStrucMember(id,"CR1", 0XC, 0x10000400, -1, 2); | |
| SetMemberComment(id, 0XC, "Control register 1", 1); | |
| mid = AddStrucMember(id,"CR2", 0X10, 0x10000400, -1, 2); | |
| SetMemberComment(id, 0X10, "Control register 2", 1); | |
| mid = AddStrucMember(id,"CR3", 0X14, 0x10000400, -1, 2); | |
| SetMemberComment(id, 0X14, "Control register 3", 1); | |
| mid = AddStrucMember(id,"GTPR", 0X18, 0x10000400, -1, 2); | |
| SetMemberComment(id, 0X18, "Guard time and prescaler register", 1); | |
| AddStrucEx(-1,"Regs_GPIO",0); | |
| id = GetStrucIdByName("Regs_GPIO"); | |
| mid = AddStrucMember(id,"CRL", 0, 0x20000400, -1, 4); | |
| SetMemberComment(id, 0, "Port configuration register low", 1); | |
| mid = AddStrucMember(id,"CRH", 0X4, 0x20000400, -1, 4); | |
| SetMemberComment(id, 0X4, "Port configuration register high", 1); | |
| mid = AddStrucMember(id,"IDR", 0X8, 0x20000400, -1, 4); | |
| SetMemberComment(id, 0X8, "Port input data register", 1); | |
| mid = AddStrucMember(id,"ODR", 0XC, 0x20000400, -1, 4); | |
| SetMemberComment(id, 0XC, "Port output data register", 1); | |
| mid = AddStrucMember(id,"BSRR", 0X10, 0x20000400, -1, 4); | |
| SetMemberComment(id, 0X10, "Port bit set/reset register", 1); | |
| mid = AddStrucMember(id,"BRR", 0X14, 0x20000400, -1, 4); | |
| SetMemberComment(id, 0X14, "Port bit reset register", 1); | |
| mid = AddStrucMember(id,"LCK", 0X18, 0x20000400, -1, 4); | |
| SetMemberComment(id, 0X18, "Port configuration lock register", 1); | |
| AddStrucEx(-1,"Regs_AFIO",0); | |
| id = GetStrucIdByName("Regs_AFIO"); | |
| mid = AddStrucMember(id,"EVCR", 0, 0x20000400, -1, 4); | |
| mid = AddStrucMember(id,"MAPR", 0X4, 0x20000400, -1, 4); | |
| mid = AddStrucMember(id,"EXTICR1", 0X8, 0x20000400, -1, 4); | |
| mid = AddStrucMember(id,"EXTICR2", 0XC, 0x20000400, -1, 4); | |
| mid = AddStrucMember(id,"EXTICR3", 0X10, 0x20000400, -1, 4); | |
| mid = AddStrucMember(id,"EXTICR4", 0X14, 0x20000400, -1, 4); | |
| mid = AddStrucMember(id,"MAPR2", 0X1C, 0x20000400, -1, 4); | |
| AddStrucEx(-1,"Regs_TIMx",0); | |
| id = GetStrucIdByName("Regs_TIMx"); | |
| mid = AddStrucMember(id,"CR1", 0, 0x10000400, -1, 2); | |
| mid = AddStrucMember(id,"CR2", 0X4, 0x10000400, -1, 2); | |
| mid = AddStrucMember(id,"SMCR", 0X8, 0x10000400, -1, 2); | |
| mid = AddStrucMember(id,"DIER", 0XC, 0x10000400, -1, 2); | |
| mid = AddStrucMember(id,"SR", 0X10, 0x10000400, -1, 2); | |
| mid = AddStrucMember(id,"EGR", 0X14, 0x10000400, -1, 2); | |
| mid = AddStrucMember(id,"CCMR1", 0X18, 0x10000400, -1, 2); | |
| mid = AddStrucMember(id,"CCMR2", 0X1C, 0x10000400, -1, 2); | |
| mid = AddStrucMember(id,"CCER", 0X20, 0x10000400, -1, 2); | |
| mid = AddStrucMember(id,"CNT", 0X24, 0x10000400, -1, 2); | |
| mid = AddStrucMember(id,"PSC", 0X28, 0x10000400, -1, 2); | |
| mid = AddStrucMember(id,"ARR", 0X2C, 0x10000400, -1, 2); | |
| mid = AddStrucMember(id,"RCR", 0X30, 0x10000400, -1, 2); | |
| mid = AddStrucMember(id,"CCR1", 0X34, 0x10000400, -1, 2); | |
| mid = AddStrucMember(id,"CCR2", 0X38, 0x10000400, -1, 2); | |
| mid = AddStrucMember(id,"CCR3", 0X3C, 0x10000400, -1, 2); | |
| mid = AddStrucMember(id,"CCR4", 0X40, 0x10000400, -1, 2); | |
| mid = AddStrucMember(id,"BDTR", 0X44, 0x10000400, -1, 2); | |
| mid = AddStrucMember(id,"DCR", 0X48, 0x10000400, -1, 2); | |
| mid = AddStrucMember(id,"DMAR", 0X4C, 0x10000400, -1, 2); | |
| AddStrucEx(-1,"Regs_SPI",0); | |
| id = GetStrucIdByName("Regs_SPI"); | |
| mid = AddStrucMember(id,"CR1", 0, 0x10000400, -1, 2); | |
| SetMemberComment(id, 0, "Control register 1", 1); | |
| mid = AddStrucMember(id,"CR2", 0X4, 0x10000400, -1, 2); | |
| SetMemberComment(id, 0X4, "Control register 2", 1); | |
| mid = AddStrucMember(id,"SR", 0X8, 0x10000400, -1, 2); | |
| SetMemberComment(id, 0X8, "Status register", 1); | |
| mid = AddStrucMember(id,"DR", 0XC, 0x10000400, -1, 2); | |
| SetMemberComment(id, 0XC, "Data register", 1); | |
| mid = AddStrucMember(id,"CRCPR", 0X10, 0x10000400, -1, 2); | |
| SetMemberComment(id, 0X10, "CRC polynomial register", 1); | |
| mid = AddStrucMember(id,"RXCRCR", 0X14, 0x10000400, -1, 2); | |
| SetMemberComment(id, 0X14, "RX CRC register", 1); | |
| mid = AddStrucMember(id,"TXCRCR", 0X18, 0x10000400, -1, 2); | |
| SetMemberComment(id, 0X18, "TX CRC register", 1); | |
| mid = AddStrucMember(id,"I2SCFGR", 0X1C, 0x10000400, -1, 2); | |
| SetMemberComment(id, 0X1C, "I2S configuration register", 1); | |
| mid = AddStrucMember(id,"I2SPR", 0X20, 0x10000400, -1, 2); | |
| SetMemberComment(id, 0X20, "I2S prescaler register", 1); | |
| AddStrucEx(-1,"Regs_I2C",0); | |
| id = GetStrucIdByName("Regs_I2C"); | |
| mid = AddStrucMember(id,"CR1", 0, 0x10000400, -1, 2); | |
| SetMemberComment(id, 0, "Control register 1", 1); | |
| mid = AddStrucMember(id,"CR2", 0X4, 0x10000400, -1, 2); | |
| SetMemberComment(id, 0X4, "Control register 2", 1); | |
| mid = AddStrucMember(id,"OAR1", 0X8, 0x10000400, -1, 2); | |
| SetMemberComment(id, 0X8, "Own address register 1", 1); | |
| mid = AddStrucMember(id,"OAR2", 0XC, 0x10000400, -1, 2); | |
| SetMemberComment(id, 0XC, "Own address register 2", 1); | |
| mid = AddStrucMember(id,"DR", 0X10, 0x10000400, -1, 2); | |
| SetMemberComment(id, 0X10, "Data register", 1); | |
| mid = AddStrucMember(id,"SR1", 0X14, 0x10000400, -1, 2); | |
| SetMemberComment(id, 0X14, "Status register 1", 1); | |
| mid = AddStrucMember(id,"SR2", 0X18, 0x10000400, -1, 2); | |
| SetMemberComment(id, 0X18, "Status register 2", 1); | |
| mid = AddStrucMember(id,"CCR", 0X1C, 0x10000400, -1, 2); | |
| SetMemberComment(id, 0X1C, "Clock control register", 1); | |
| mid = AddStrucMember(id,"TRISE", 0X20, 0x10000400, -1, 2); | |
| SetMemberComment(id, 0X20, "TRISE register", 1); | |
| AddStrucEx(-1,"Regs_BKP",0); | |
| id = GetStrucIdByName("Regs_BKP"); | |
| mid = AddStrucMember(id,"DR1", 0X4, 0x10000400, -1, 2); | |
| mid = AddStrucMember(id,"DR2", 0X8, 0x10000400, -1, 2); | |
| mid = AddStrucMember(id,"DR3", 0XC, 0x10000400, -1, 2); | |
| mid = AddStrucMember(id,"DR4", 0X10, 0x10000400, -1, 2); | |
| mid = AddStrucMember(id,"DR5", 0X14, 0x10000400, -1, 2); | |
| mid = AddStrucMember(id,"DR6", 0X18, 0x10000400, -1, 2); | |
| mid = AddStrucMember(id,"DR7", 0X1C, 0x10000400, -1, 2); | |
| mid = AddStrucMember(id,"DR8", 0X20, 0x10000400, -1, 2); | |
| mid = AddStrucMember(id,"DR9", 0X24, 0x10000400, -1, 2); | |
| mid = AddStrucMember(id,"DR10", 0X28, 0x10000400, -1, 2); | |
| mid = AddStrucMember(id,"RTCCR", 0X2C, 0x10000400, -1, 2); | |
| mid = AddStrucMember(id,"CR", 0X30, 0x10000400, -1, 2); | |
| mid = AddStrucMember(id,"CSR", 0X34, 0x10000400, -1, 2); | |
| mid = AddStrucMember(id,"DR11", 0X40, 0x10000400, -1, 2); | |
| mid = AddStrucMember(id,"DR12", 0X44, 0x10000400, -1, 2); | |
| mid = AddStrucMember(id,"DR13", 0X48, 0x10000400, -1, 2); | |
| mid = AddStrucMember(id,"DR14", 0X4C, 0x10000400, -1, 2); | |
| mid = AddStrucMember(id,"DR15", 0X50, 0x10000400, -1, 2); | |
| mid = AddStrucMember(id,"DR16", 0X54, 0x10000400, -1, 2); | |
| mid = AddStrucMember(id,"DR17", 0X58, 0x10000400, -1, 2); | |
| mid = AddStrucMember(id,"DR18", 0X5C, 0x10000400, -1, 2); | |
| mid = AddStrucMember(id,"DR19", 0X60, 0x10000400, -1, 2); | |
| mid = AddStrucMember(id,"DR20", 0X64, 0x10000400, -1, 2); | |
| mid = AddStrucMember(id,"DR21", 0X68, 0x10000400, -1, 2); | |
| mid = AddStrucMember(id,"DR22", 0X6C, 0x10000400, -1, 2); | |
| mid = AddStrucMember(id,"DR23", 0X70, 0x10000400, -1, 2); | |
| mid = AddStrucMember(id,"DR24", 0X74, 0x10000400, -1, 2); | |
| mid = AddStrucMember(id,"DR25", 0X78, 0x10000400, -1, 2); | |
| mid = AddStrucMember(id,"DR26", 0X7C, 0x10000400, -1, 2); | |
| mid = AddStrucMember(id,"DR27", 0X80, 0x10000400, -1, 2); | |
| mid = AddStrucMember(id,"DR28", 0X84, 0x10000400, -1, 2); | |
| mid = AddStrucMember(id,"DR29", 0X88, 0x10000400, -1, 2); | |
| mid = AddStrucMember(id,"DR30", 0X8C, 0x10000400, -1, 2); | |
| mid = AddStrucMember(id,"DR31", 0X90, 0x10000400, -1, 2); | |
| mid = AddStrucMember(id,"DR32", 0X94, 0x10000400, -1, 2); | |
| mid = AddStrucMember(id,"DR33", 0X98, 0x10000400, -1, 2); | |
| mid = AddStrucMember(id,"DR34", 0X9C, 0x10000400, -1, 2); | |
| mid = AddStrucMember(id,"DR35", 0XA0, 0x10000400, -1, 2); | |
| mid = AddStrucMember(id,"DR36", 0XA4, 0x10000400, -1, 2); | |
| mid = AddStrucMember(id,"DR37", 0XA8, 0x10000400, -1, 2); | |
| mid = AddStrucMember(id,"DR38", 0XAC, 0x10000400, -1, 2); | |
| mid = AddStrucMember(id,"DR39", 0XB0, 0x10000400, -1, 2); | |
| mid = AddStrucMember(id,"DR40", 0XB4, 0x10000400, -1, 2); | |
| mid = AddStrucMember(id,"DR41", 0XB8, 0x10000400, -1, 2); | |
| mid = AddStrucMember(id,"DR42", 0XBC, 0x10000400, -1, 2); | |
| AddStrucEx(-1,"Regs_PWR",0); | |
| id = GetStrucIdByName("Regs_PWR"); | |
| mid = AddStrucMember(id,"CR", 0, 0x10000400, -1, 2); | |
| mid = AddStrucMember(id,"CSR", 0X4, 0x10000400, -1, 2); | |
| AddStrucEx(-1,"Regs_ADC",0); | |
| id = GetStrucIdByName("Regs_ADC"); | |
| mid = AddStrucMember(id,"SR", 0, 0x20000400, -1, 4); | |
| mid = AddStrucMember(id,"CR1", 0X4, 0x20000400, -1, 4); | |
| mid = AddStrucMember(id,"CR2", 0X8, 0x20000400, -1, 4); | |
| mid = AddStrucMember(id,"SMPR1", 0XC, 0x20000400, -1, 4); | |
| mid = AddStrucMember(id,"SMPR2", 0X10, 0x20000400, -1, 4); | |
| mid = AddStrucMember(id,"JOFR1", 0X14, 0x20000400, -1, 4); | |
| mid = AddStrucMember(id,"JOFR2", 0X18, 0x20000400, -1, 4); | |
| mid = AddStrucMember(id,"JOFR3", 0X1C, 0x20000400, -1, 4); | |
| mid = AddStrucMember(id,"JOFR4", 0X20, 0x20000400, -1, 4); | |
| mid = AddStrucMember(id,"HTR", 0X24, 0x20000400, -1, 4); | |
| mid = AddStrucMember(id,"LTR", 0X28, 0x20000400, -1, 4); | |
| mid = AddStrucMember(id,"SQR1", 0X2C, 0x20000400, -1, 4); | |
| mid = AddStrucMember(id,"SQR2", 0X30, 0x20000400, -1, 4); | |
| mid = AddStrucMember(id,"SQR3", 0X34, 0x20000400, -1, 4); | |
| mid = AddStrucMember(id,"JSQR", 0X38, 0x20000400, -1, 4); | |
| mid = AddStrucMember(id,"JDR1", 0X3C, 0x20000400, -1, 4); | |
| mid = AddStrucMember(id,"JDR2", 0X40, 0x20000400, -1, 4); | |
| mid = AddStrucMember(id,"JDR3", 0X44, 0x20000400, -1, 4); | |
| mid = AddStrucMember(id,"JDR4", 0X48, 0x20000400, -1, 4); | |
| mid = AddStrucMember(id,"DR", 0X4C, 0x20000400, -1, 4); | |
| AddStrucEx(-1,"Regs_DAC",0); | |
| id = GetStrucIdByName("Regs_DAC"); | |
| mid = AddStrucMember(id,"CR", 0, 0x20000400, -1, 4); | |
| mid = AddStrucMember(id,"SWTRIGR", 0X4, 0x20000400, -1, 4); | |
| mid = AddStrucMember(id,"DHR12R1", 0X8, 0x20000400, -1, 4); | |
| mid = AddStrucMember(id,"DHR12L1", 0XC, 0x20000400, -1, 4); | |
| mid = AddStrucMember(id,"DHR8R1", 0X10, 0x20000400, -1, 4); | |
| mid = AddStrucMember(id,"DHR12R2", 0X14, 0x20000400, -1, 4); | |
| mid = AddStrucMember(id,"DHR12L2", 0X18, 0x20000400, -1, 4); | |
| mid = AddStrucMember(id,"DHR8R2", 0X1C, 0x20000400, -1, 4); | |
| mid = AddStrucMember(id,"DHR12RD", 0X20, 0x20000400, -1, 4); | |
| mid = AddStrucMember(id,"DHR12LD", 0X24, 0x20000400, -1, 4); | |
| mid = AddStrucMember(id,"DHR8RD", 0X28, 0x20000400, -1, 4); | |
| mid = AddStrucMember(id,"DOR1", 0X2C, 0x20000400, -1, 4); | |
| mid = AddStrucMember(id,"DOR2", 0X30, 0x20000400, -1, 4); | |
| AddStrucEx(-1,"Regs_DMA",0); | |
| id = GetStrucIdByName("Regs_DMA"); | |
| mid = AddStrucMember(id,"ISR", 0, 0x20000400, -1, 4); | |
| mid = AddStrucMember(id,"IFCR", 0X4, 0x20000400, -1, 4); | |
| mid = AddStrucMember(id,"CCR1", 0X8, 0x20000400, -1, 4); | |
| mid = AddStrucMember(id,"CNDTR1", 0XC, 0x20000400, -1, 4); | |
| mid = AddStrucMember(id,"CPAR1", 0X10, 0x20000400, -1, 4); | |
| mid = AddStrucMember(id,"CMAR1", 0X14, 0x20000400, -1, 4); | |
| mid = AddStrucMember(id,"CCR2", 0X1C, 0x20000400, -1, 4); | |
| mid = AddStrucMember(id,"CNDTR2",0X20, 0x20000400, -1, 4); | |
| mid = AddStrucMember(id,"CPAR2", 0X24, 0x20000400, -1, 4); | |
| mid = AddStrucMember(id,"CMAR2", 0X28, 0x20000400, -1, 4); | |
| mid = AddStrucMember(id,"CCR3", 0X30, 0x20000400, -1, 4); | |
| mid = AddStrucMember(id,"CNDTR3", 0X34, 0x20000400, -1, 4); | |
| mid = AddStrucMember(id,"CPAR3", 0X38, 0x20000400, -1, 4); | |
| mid = AddStrucMember(id,"CMAR3", 0X3C, 0x20000400, -1, 4); | |
| mid = AddStrucMember(id,"CCR4", 0X44, 0x20000400, -1, 4); | |
| mid = AddStrucMember(id,"CNDTR4", 0X48, 0x20000400, -1, 4); | |
| mid = AddStrucMember(id,"CPAR4", 0X4C, 0x20000400, -1, 4); | |
| mid = AddStrucMember(id,"CMAR4", 0X50, 0x20000400, -1, 4); | |
| mid = AddStrucMember(id,"CCR5", 0X58, 0x20000400, -1, 4); | |
| mid = AddStrucMember(id,"CNDTR5", 0X5C, 0x20000400, -1, 4); | |
| mid = AddStrucMember(id,"CPAR5", 0X60, 0x20000400, -1, 4); | |
| mid = AddStrucMember(id,"CMAR5", 0X64, 0x20000400, -1, 4); | |
| mid = AddStrucMember(id,"CCR6", 0X6C, 0x20000400, -1, 4); | |
| mid = AddStrucMember(id,"CNDTR6", 0X70, 0x20000400, -1, 4); | |
| mid = AddStrucMember(id,"CPAR6", 0X74, 0x20000400, -1, 4); | |
| mid = AddStrucMember(id,"CMAR6", 0X78, 0x20000400, -1, 4); | |
| mid = AddStrucMember(id,"CCR7", 0X80, 0x20000400, -1, 4); | |
| mid = AddStrucMember(id,"CNDTR7", 0X84, 0x20000400, -1, 4); | |
| mid = AddStrucMember(id,"CPAR7", 0X88, 0x20000400, -1, 4); | |
| mid = AddStrucMember(id,"CMAR7", 0X8C, 0x20000400, -1, 4); | |
| AddStrucEx(-1,"Regs_CRC",0); | |
| id = GetStrucIdByName("Regs_CRC"); | |
| mid = AddStrucMember(id,"DR", 0, 0x20000400, -1, 4); | |
| mid = AddStrucMember(id,"IDR", 0X4, 0x20000400, -1, 4); | |
| mid = AddStrucMember(id,"CR", 0X8, 0x20000400, -1, 4); | |
| AddStrucEx(-1,"Regs_IWDG",0); | |
| id = GetStrucIdByName("Regs_IWDG"); | |
| mid = AddStrucMember(id,"KR", 0, 0x20000400, -1, 4); | |
| SetMemberComment(id, 0, "Key register", 1); | |
| mid = AddStrucMember(id,"PR", 0X4, 0x20000400, -1, 4); | |
| SetMemberComment(id, 0X4, "Prescaler register", 1); | |
| mid = AddStrucMember(id,"RLR", 0X8, 0x20000400, -1, 4); | |
| SetMemberComment(id, 0X8, "Reload register", 1); | |
| mid = AddStrucMember(id,"SR", 0XC, 0x20000400, -1, 4); | |
| SetMemberComment(id, 0XC, "Status register", 1); | |
| AddStrucEx(-1,"Regs_WWDG",0); | |
| id = GetStrucIdByName("Regs_WWDG"); | |
| mid = AddStrucMember(id,"CR", 0, 0x20000400, -1, 4); | |
| SetMemberComment(id, 0, "Control register", 1); | |
| mid = AddStrucMember(id,"CFR", 0X4, 0x20000400, -1, 4); | |
| SetMemberComment(id, 0X4, "Configuration register", 1); | |
| mid = AddStrucMember(id,"SR", 0X8, 0x20000400, -1, 4); | |
| SetMemberComment(id, 0X8, "Status register", 1); | |
| AddStrucEx(-1,"Regs_SDIO",0); | |
| id = GetStrucIdByName("Regs_SDIO"); | |
| mid = AddStrucMember(id,"POWER", 0, 0x20000400, -1, 4); | |
| mid = AddStrucMember(id,"CLKCR", 0X4, 0x20000400, -1, 4); | |
| mid = AddStrucMember(id,"ARG", 0X8, 0x20000400, -1, 4); | |
| mid = AddStrucMember(id,"CMD", 0XC, 0x20000400, -1, 4); | |
| mid = AddStrucMember(id,"RESPCMD", 0X10, 0x20000400, -1, 4); | |
| mid = AddStrucMember(id,"RESP1", 0X14, 0x20000400, -1, 4); | |
| mid = AddStrucMember(id,"RESP2", 0X18, 0x20000400, -1, 4); | |
| mid = AddStrucMember(id,"RESP3", 0X1C, 0x20000400, -1, 4); | |
| mid = AddStrucMember(id,"RESP4", 0X20, 0x20000400, -1, 4); | |
| mid = AddStrucMember(id,"DTIMER", 0X24, 0x20000400, -1, 4); | |
| mid = AddStrucMember(id,"DLEN", 0X28, 0x20000400, -1, 4); | |
| mid = AddStrucMember(id,"DCTRL", 0X2C, 0x20000400, -1, 4); | |
| mid = AddStrucMember(id,"DCOUNT", 0X30, 0x20000400, -1, 4); | |
| mid = AddStrucMember(id,"STA", 0X34, 0x20000400, -1, 4); | |
| mid = AddStrucMember(id,"ICR", 0X38, 0x20000400, -1, 4); | |
| mid = AddStrucMember(id,"MASK", 0X3C, 0x20000400, -1, 4); | |
| mid = AddStrucMember(id,"FIFOCNT", 0X40, 0x20000400, -1, 4); | |
| mid = AddStrucMember(id,"FIFO", 0X44, 0x20000400, -1, 4); | |
| AddStrucEx(-1,"Regs_RTC",0); | |
| id = GetStrucIdByName("Regs_RTC"); | |
| mid = AddStrucMember(id,"CRH", 0, 0x10000400, -1, 2); | |
| SetMemberComment(id, 0, "Control register high", 1); | |
| mid = AddStrucMember(id,"CRL", 0X4, 0x10000400, -1, 2); | |
| SetMemberComment(id, 0X4, "Control register low", 1); | |
| mid = AddStrucMember(id,"PRLH", 0X8, 0x10000400, -1, 2); | |
| SetMemberComment(id, 0X8, "Prescaler load register high", 1); | |
| mid = AddStrucMember(id,"PRLL", 0XC, 0x10000400, -1, 2); | |
| SetMemberComment(id, 0XC, "Prescaler load register low", 1); | |
| mid = AddStrucMember(id,"DIVH", 0X10, 0x10000400, -1, 2); | |
| SetMemberComment(id, 0X10, "Prescaler divider register high", 1); | |
| mid = AddStrucMember(id,"DIVL", 0X14, 0x10000400, -1, 2); | |
| SetMemberComment(id, 0X14, "Prescaler divider register low", 1); | |
| mid = AddStrucMember(id,"CNTH", 0X18, 0x10000400, -1, 2); | |
| SetMemberComment(id, 0X18, "Counter register high", 1); | |
| mid = AddStrucMember(id,"CNTL", 0X1C, 0x10000400, -1, 2); | |
| SetMemberComment(id, 0X1C, "Counter register low", 1); | |
| mid = AddStrucMember(id,"ALRH", 0X20, 0x10000400, -1, 2); | |
| SetMemberComment(id, 0X20, "Alarm register high", 1); | |
| mid = AddStrucMember(id,"ALRL", 0X24, 0x10000400, -1, 2); | |
| SetMemberComment(id, 0X24, "Alarm register low", 1); | |
| AddStrucEx(-1,"Regs_USBFS",0); | |
| id = GetStrucIdByName("Regs_USBFS"); | |
| mid = AddStrucMember(id,"EP0R", 0, 0x10000400, -1, 2); | |
| mid = AddStrucMember(id,"EP1R", 0X4, 0x10000400, -1, 2); | |
| mid = AddStrucMember(id,"EP2R", 0X8, 0x10000400, -1, 2); | |
| mid = AddStrucMember(id,"EP3R", 0XC, 0x10000400, -1, 2); | |
| mid = AddStrucMember(id,"EP4R", 0X10, 0x10000400, -1, 2); | |
| mid = AddStrucMember(id,"EP5R", 0X14, 0x10000400, -1, 2); | |
| mid = AddStrucMember(id,"EP6R", 0X18, 0x10000400, -1, 2); | |
| mid = AddStrucMember(id,"EP7R", 0X1C, 0x10000400, -1, 2); | |
| mid = AddStrucMember(id,"CNTR", 0X40, 0x10000400, -1, 2); | |
| SetMemberComment(id, 0X40, "Control register", 1); | |
| mid = AddStrucMember(id,"ISTR", 0X44, 0x10000400, -1, 2); | |
| SetMemberComment(id, 0X44, "Interrupt status register", 1); | |
| mid = AddStrucMember(id,"FNR", 0X48, 0x10000400, -1, 2); | |
| SetMemberComment(id, 0X48, "Frame number register", 1); | |
| mid = AddStrucMember(id,"DADDR", 0X4C, 0x10000400, -1, 2); | |
| SetMemberComment(id, 0X4C, "Device address", 1); | |
| mid = AddStrucMember(id,"BTABLE", 0X50, 0x10000400, -1, 2); | |
| SetMemberComment(id, 0X50, "Buffer table address", 1); | |
| AddStrucEx(-1,"Regs_EXTI",0); | |
| id = GetStrucIdByName("Regs_EXTI"); | |
| mid = AddStrucMember(id,"IMR", 0, 0x20000400, -1, 4); | |
| SetMemberComment(id, 0, "Interrupt mask register", 1); | |
| mid = AddStrucMember(id,"EMR", 0X4, 0x20000400, -1, 4); | |
| SetMemberComment(id, 0X4, "Event mask register", 1); | |
| mid = AddStrucMember(id,"RTSR", 0X8, 0x20000400, -1, 4); | |
| SetMemberComment(id, 0X8, "Rising trigger selection register", 1); | |
| mid = AddStrucMember(id,"FTSR", 0XC, 0x20000400, -1, 4); | |
| SetMemberComment(id, 0XC, "Falling trigger selection register", 1); | |
| mid = AddStrucMember(id,"SWIER", 0X10, 0x20000400, -1, 4); | |
| SetMemberComment(id, 0X10, "Software interrupt event register", 1); | |
| mid = AddStrucMember(id,"PR", 0X14, 0x20000400, -1, 4); | |
| SetMemberComment(id, 0X14, "Pending register", 1); | |
| AddStrucEx(-1,"Regs_DBGMCU",0); | |
| id = GetStrucIdByName("Regs_DBGMCU"); | |
| mid = AddStrucMember(id,"IDCODE", 0, 0x20000400, -1, 4); | |
| mid = AddStrucMember(id,"CR", 0X4, 0x20000400, -1, 4); | |
| return id; | |
| } | |
| static DefineSegments(void) { | |
| SetSelector(0X1,0); | |
| // APB1 peripherals | |
| DefinePeripheral(0x40000000, "TIM2", "Regs_TIMx"); | |
| DefinePeripheral(0x40000400, "TIM3", "Regs_TIMx"); | |
| DefinePeripheral(0x40000800, "TIM4", "Regs_TIMx"); | |
| DefinePeripheral(0x40000C00, "TIM5", "Regs_TIMx"); | |
| DefinePeripheral(0x40001000, "TIM6", "Regs_TIMx"); | |
| DefinePeripheral(0x40001400, "TIM7", "Regs_TIMx"); | |
| DefinePeripheral(0x40001800, "TIM12", "Regs_TIMx"); | |
| DefinePeripheral(0x40001C00, "TIM13", "Regs_TIMx"); | |
| DefinePeripheral(0x40002000, "TIM14", "Regs_TIMx"); | |
| DefinePeripheral(0x40002800, "RTC", "Regs_RTC"); | |
| DefinePeripheral(0x40002C00, "WWDG", "Regs_WWDG"); | |
| DefinePeripheral(0x40003000, "IWDG", "Regs_IWDG"); | |
| DefinePeripheral(0x40003800, "SPI2", "Regs_SPI"); | |
| DefinePeripheral(0x40003C00, "SPI3", "Regs_SPI"); | |
| DefinePeripheral(0x40004400, "USART2", "Regs_USART"); | |
| DefinePeripheral(0x40004800, "USART3", "Regs_USART"); | |
| DefinePeripheral(0x40004C00, "UART4", "Regs_USART"); | |
| DefinePeripheral(0x40005000, "UART5", "Regs_USART"); | |
| DefinePeripheral(0x40005400, "I2C1", "Regs_I2C"); | |
| DefinePeripheral(0x40005800, "I2C2", "Regs_I2C"); | |
| DefinePeripheral(0x40005C00, "USBFS", "Regs_USBFS"); | |
| DefineSegment(0x40006000, 0x200, "USBCAN"); | |
| DefineSegment(0x40006400, 0x400, "bxCAN1"); | |
| DefineSegment(0x40006800, 0x400, "bxCAN2"); | |
| DefinePeripheral(0x40006C00, "BKP", "Regs_BKP"); | |
| DefinePeripheral(0x40007000, "PWR", "Regs_PWR"); | |
| DefinePeripheral(0x40007400, "DAC", "Regs_DAC"); | |
| // APB2 peripherals | |
| DefinePeripheral(0X40010000, "AFIO", "Regs_AFIO"); | |
| DefinePeripheral(0X40010400, "EXTI", "Regs_EXTI"); | |
| DefinePeripheral(0X40010800, "GPIOA", "Regs_GPIO"); | |
| DefinePeripheral(0X40010C00, "GPIOB", "Regs_GPIO"); | |
| DefinePeripheral(0X40011000, "GPIOC", "Regs_GPIO"); | |
| DefinePeripheral(0X40011400, "GPIOD", "Regs_GPIO"); | |
| DefinePeripheral(0X40011800, "GPIOE", "Regs_GPIO"); | |
| DefinePeripheral(0X40011C00, "GPIOF", "Regs_GPIO"); | |
| DefinePeripheral(0X40012000, "GPIOG", "Regs_GPIO"); | |
| DefinePeripheral(0X40012400, "ADC1", "Regs_ADC"); | |
| DefinePeripheral(0X40012800, "ADC2", "Regs_ADC"); | |
| DefinePeripheral(0X40012C00, "TIM1", "Regs_TIMx"); | |
| DefinePeripheral(0X40013000, "SPI1", "Regs_SPI"); | |
| DefinePeripheral(0X40013400, "TIM8", "Regs_TIMx"); | |
| DefinePeripheral(0X40013800, "USART1", "Regs_USART"); | |
| DefinePeripheral(0X40013C00, "ADC3", "Regs_ADC"); | |
| DefinePeripheral(0X40014C00, "TIM9", "Regs_TIMx"); | |
| DefinePeripheral(0X40015000, "TIM10", "Regs_TIMx"); | |
| DefinePeripheral(0X40015400, "TIM11", "Regs_TIMx"); | |
| // AHB peripherals | |
| DefinePeripheral(0X40018000, "SDIO", "Regs_SDIO"); | |
| DefinePeripheral(0X40020000, "DMA1", "Regs_DMA"); | |
| DefinePeripheral(0X40020400, "DMA2", "Regs_DMA"); | |
| DefinePeripheral(0X40021000, "RCC", "Regs_RCC"); | |
| DefinePeripheral(0X40022000, "FPEC", "Regs_FPEC"); | |
| DefinePeripheral(0X40023000, "CRC", "Regs_CRC"); | |
| DefineSegment(0X40028000, 0x2000, "Ethernet"); | |
| DefinePeripheral(0XA0000000, "FSMC", "Regs_FSMC"); | |
| DefineSegment(0xE0000000, 0x1000, "ITM"); | |
| DefinePeripheral(0xE000E010, "STK", "Regs_STK"); | |
| DefinePeripheral(0xE000E100, "NVIC", "Regs_NVIC"); | |
| DefinePeripheral(0xE000ED00, "SCB", "Regs_SCB"); | |
| DefinePeripheral(0xE000ED90, "MPU", "Regs_MPU"); | |
| DefineSegment(0xE000EF00, 0x4, "NVIC2"); | |
| DefineSegment(0xE0040000, 0x1000, "TPIU"); | |
| DefineSegment(0xE0041000, 0x1000, "ETM"); | |
| DefinePeripheral(0xE0042000, "DBGMCU", "Regs_DBGMCU"); | |
| } | |
| static main(void) { | |
| DefineRegisters(); | |
| DefineSegments(); | |
| } |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment