diff --git a/.gdbinit b/.gdbinit new file mode 100644 index 0000000..1cc2d5a --- /dev/null +++ b/.gdbinit @@ -0,0 +1,20 @@ + +target remote localhost:3333 +set print pretty on +set print elements 512 + +# Update GDB's Python paths with the `sys.path` values of the local Python installation, +# whether that is brew'ed Python, a virtualenv, or another system python. + +# Convert GDB to interpret in Python +python +import os,subprocess,sys +# Execute a Python using the user's shell and pull out the sys.path (for site-packages) +paths = subprocess.check_output('python -c "import os,sys;print(os.linesep.join(sys.path).strip())"',shell=True).decode("utf-8").split() +# Extend GDB's Python's search path +sys.path.extend(paths) +end + +source ~/ref/PyCortexMDebug/cmdebug/svd_gdb.py +svd_load ~/ref/stm32square/svd/STM32G431xx.svd + diff --git a/Makefile b/Makefile index 6f6b285..ace5396 100644 --- a/Makefile +++ b/Makefile @@ -35,7 +35,14 @@ C_SOURCES := src/main.c CPP_SOURCES := # - none - -MUSL_SOURCES := # - none - +MUSL_SOURCES := math/sinf.c \ + math/cosf.c \ + math/__sindf.c \ + math/__cosdf.c \ + math/__rem_pio2f.c \ + math/__rem_pio2_large.c \ + math/scalbn.c \ + math/floor.c MUSL_SOURCES := $(addprefix $(MUSL_DIR)/src/,$(MUSL_SOURCES)) C_SOURCES += $(MUSL_SOURCES) diff --git a/src/main.c b/src/main.c index 9e2c077..3e56553 100644 --- a/src/main.c +++ b/src/main.c @@ -1,6 +1,7 @@ #include #include +#include volatile uint64_t sys_time_us; @@ -35,7 +36,7 @@ int main(void) { RCC->AHB2ENR |= RCC_AHB2ENR_GPIOAEN | RCC_AHB2ENR_GPIOBEN | RCC_AHB2ENR_GPIOCEN | RCC_AHB2ENR_DAC1EN | RCC_AHB2ENR_DAC3EN | RCC_AHB2ENR_ADC12EN; RCC->APB1ENR1 |= RCC_APB1ENR1_SPI2EN | RCC_APB1ENR1_I2C2EN; - RCC->APB2ENR |= RCC_APB2ENR_TIM1EN; + RCC->APB2ENR |= RCC_APB2ENR_TIM1EN | RCC_APB2ENR_TIM8EN | RCC_APB2ENR_SYSCFGEN; /* GPIO A pin config: * A0: TP_SENS (ADC12_IN1) @@ -56,10 +57,12 @@ int main(void) { * A15: C_SR0 (digital IO) */ + /* FIXME DEBUG GPIOA->MODER = ANALOG(0) | ANALOG(1) | ANALOG(2) | ANALOG(3) | ANALOG(4) | ANALOG(5) | ANALOG(6) | ANALOG(7) | AF(8) | AF(9) | ANALOG(10) | AF(11) | OUT(12) | AF(13) | AF(14) | OUT(15); GPIOA->AFR[1] = AFRH(8, 4) | AFRH(9, 4) | AFRH(11, 5) | AFRH(13, 0) | AFRH(14, 0); GPIOA->OSPEEDR = (3<<11) | (3<<13) | (3<<14) | (3<<15) | (3<<12) | (3<<8) | (3<<9); + */ /* GPIO B pin config: * B0: VCOIL_MEAS (ADC1_IN15) @@ -80,11 +83,13 @@ int main(void) { * B15: BOOST_EN (digital IO) */ + /* FIXME DEBUG GPIOB->MODER = ANALOG(0) | OUT(1) | ANALOG(2) | AF(3) | OUT(4) | OUT(5) | OUT(6) | OUT(7) | OUT(8) | OUT(9) | OUT(10) | ANALOG(11) | ANALOG(12) | AF(13) | ANALOG(14) | OUT(15); GPIOB->AFR[1] = AFRH(13, 5); GPIOB->OSPEEDR = (3<<1) | (3<<3) | (3<<4) | (3<<5) | (3<<6) | (3<<7) | (3<<8) | (3<<9) | (3<<10) | (3<<13) | (3<<15); + */ /* GPIO C pin config: * C4: M2S_ADC (ADC2_IN5) @@ -96,10 +101,37 @@ int main(void) { * C15: INT4 (digital IO) */ + /* FIXME DEBUG GPIOC->MODER = ANALOG(4) | OUT(6) | IN(10) | IN(11) | IN(13) | IN(14) | IN(15); GPIOC->OSPEEDR = (3<<6); + */ - + /* FIXME DEBUG */ + GPIOA->MODER &= CLEAR(8) & CLEAR(9) & CLEAR(2); + GPIOA->MODER |= OUT(8) | OUT(9) | ANALOG(2); + GPIOB->MODER &= CLEAR(13) & CLEAR(14); + GPIOB->MODER |= OUT(13) | OUT(14); + + int16_t waveform[17]; + for (size_t i=0; iCSR = VREFBUF_CSR_ENVR | (2<MCR = (2<CR = DAC_CR_EN1 | DAC_CR_TEN1 | (1<ARR = 17; + TIM1->CR2 = (2<CR1 |= TIM_CR1_CEN; + DMA1_Channel1->CNDTR = COUNT_OF(waveform); + DMA1_Channel1->CMAR = (uint32_t)waveform; + DMA1_Channel1->CPAR = (uint32_t)&DAC3->DHR12R1; + DMA1_Channel1->CCR = DMA_CCR_CIRC | DMA_CCR_DIR | DMA_CCR_MINC | (1<CCR |= DMA_CCR_EN; + DMAMUX1_Channel0->CCR = (102<CSR = OPAMP_CSR_HIGHSPEEDEN | (3<