요즘 블프 할인이 시원찮다던데

갖고 싶은게 아니라 하고 싶은거 위주로 80% 이상 할인으로 지름! (아내몰래)

'게임 > 오리진&스팀&유플레이' 카테고리의 다른 글

에픽 무료게임  (0) 2025.11.14
윈도우 11에서 JASF 실행 실패  (0) 2025.11.02
스팀 단상  (0) 2025.10.05
스팀 여름 할인 - 오랫만에 구매  (2) 2025.07.03
리눅스 스팀 proton (호환성 설정)  (0) 2025.06.28
Posted by 구차니
embeded/Cortex-M4 STM2025. 11. 28. 15:50

대충 21페이지에서 발견

3.8 CORDIC
The CORDIC provides hardware acceleration of certain mathematical functions, notably
trigonometric, commonly used in motor control, metering, signal processing and many other
applications.
It speeds up the calculation of these functions compared to a software implementation,
allowing a lower operating frequency, or freeing up processor cycles in order to perform
other tasks.
Cordic features
• 24-bit CORDIC rotation engine
• Circular and Hyperbolic modes
• Rotation and Vectoring modes
• Functions: Sine, Cosine, Sinh, Cosh, Atan, Atan2, Atanh, Modulus, Square root,
Natural logarithm
• Programmable precision up to 20-bit
• Fast convergence: 4 bits per clock cycle
• Supports 16-bit and 32-bit fixed point input and output formats
• Low latency AHB slave interface
• Results can be read as soon as ready without polling or interrupt
• DMA read and write channels

 

3.9 Filter mathematical accelerator (FMAC)
The filter mathematical accelerator unit performs arithmetic operations on vectors. It
comprises a multiplier/accumulator (MAC) unit, together with address generation logic,
which allows it to index vector elements held in local memory.
The unit includes support for circular buffers on input and output, which allows digital filters
to be implemented. Both finite and infinite impulse response filters can be realized.
The unit allows frequent or lengthy filtering operations to be offloaded from the CPU, freeing
up the processor for other tasks. In many cases it can accelerate such calculations
compared to a software implementation, resulting in a speed-up of time critical tasks.
FMAC features
• 16 x 16-bit multiplier
• 24+2-bit accumulator with addition and subtraction
• 16-bit input and output data
• 256 x 16-bit local memory
• Up to three areas can be defined in memory for data buffers (two input, one output),
defined by programmable base address pointers and associated size registers
• Input and output sample buffers can be circular
• Buffer “watermark” feature reduces overhead in interrupt mode
• Filter functions: FIR, IIR (direct form 1)
• AHB slave interface
• DMA read and write data channels

[링크 : https://www.st.com/resource/en/datasheet/stm32g473cb.pdf]

 

함수 3회 호출할 만큼 부하를 상쇄할 만큼 하드웨어 계산이 빠른거겠지?

1. Configure the CORDIC:
LL_CORDIC_Config(
    CORDIC,
    LL_CORDIC_FUNCTION_COSINE, /* cosine function */

    LL_CORDIC_PRECISION_6CYCLES, /* max precision for q1.31 cosine */
    LL_CORDIC_SCALE_0, /* no scale */
    LL_CORDIC_NBWRITE_1, /* One input data: angle. Second input data (modulus) is 1 af ter cordic reset */
    LL_CORDIC_NBREAD_2, /* Two output data: cosine, then sine */
    LL_CORDIC_INSIZE_32BITS, /* q1.31 format for input data */
    LL_CORDIC_OUTSIZE_32BITS
); /* q1.31 format for output data */

If only this configuration is used, this step is done once at initialization. Otherwise, it must be repeated each
time one of the above parameters changes.
2. Write the input argument(s):
/* Write angle */
LL_CORDIC_WriteData(CORDIC, ANGLE_CORDIC);
In this case, there is only one argument, the angle (defined as a constant value π/8). The other argument is
the default modulus of 1, so does not need to be written.
As soon as the expected number of arguments is written, the calculation starts.
3. Read the result(s):
/* Read cosine */
cosOutput = (int32_t)LL_CORDIC_ReadData(CORDIC);
/* Read sine */
sinOutput = (int32_t)LL_CORDIC_ReadData(CORDIC);

[링크 : https://www.st.com/resource/en/application_note/an5325-how-to-use-the-cordic-to-perform-mathematical-functions-on-stm32-mcus-stmicroelectronics.pdf]

 

FMAC configuration
The FMAC can be configured using the HAL driver from the STM32CubeG4 MCU Package. Before accessing
any FMAC registers, the FMAC clock must be enabled:
__HAL_RCC_FMAC_CLK_ENABLE();
An area of system memory must be reserved for the coefficients:
/* Declare an array to hold the filter coefficients */
static int16_t aFilterCoeffB[51];
We must also declare a structure to contain the FMAC parameters:
FMAC_HandleTypeDef hfmac;
Now we can configure the FMAC using the HAL_FMAC_FilterConfig() function:
FMAC_FilterConfigTypeDef sFmacConfig; /* declare a filter configuration structure */
sFmacConfig.CoeffBaseAddress = 0; /* Set the coefficient buffer base address */
sFmacConfig.CoeffBufferSize = 51; /* Set the coefficient buffer size to the number of coeffs */
sFmacConfig.InputBaseAddress = 51; /* Set the Input buffer base address to the next free address */
sFmacConfig.InputBufferSize = 100; /* Set the input buffer size greater than the number of coeffs */
sFmacConfig.InputThreshold = 0; /* Set the input watermark to zero since we are using DMA */
sFmacConfig.OutputBaseAddress = 151; /* Set the Output buffer base address to the next free address */
sFmacConfig.OutputBufferSize = 100; /* Set the output buffer size */
sFmacConfig.OutputThreshold = 0; /* Set the output watermark to zero since we are using DMA */

/* No A coefficients since FIR */

sFmacConfig.pCoeffA = NULL;
sFmacConfig.CoeffASize = 0;
sFmacConfig.pCoeffB = aFilterCoeffB; /* Pointer to the coefficients in memory */
sFmacConfig.CoeffBSize = 51; /* Number of coefficients */
sFmacConfig.Filter = FMAC_FUNC_CONVO_FIR; /* Select FIR filter function */
sFmacConfig.InputAccess = FMAC_BUFFER_ACCESS_DMA; /* Enable DMA input transfer */
sFmacConfig.OutputAccess = FMAC_BUFFER_ACCESS_DMA; /* Enable DMA output transfer */
sFmacConfig.Clip = FMAC_CLIP_ENABLED; /* Enable clipping of the output at 0x7FFF and 0x8000 */
sFmacConfig.P = 51; /* P parameter contains number of coefficients */
sFmacConfig.Q = FILTER_PARAM_Q_NOT_USED; /* Q parameter is not used */
sFmacConfig.R = 0; /* R parameter contains the post-shift value (none) */
if (HAL_FMAC_FilterConfig(&hfmac, &sFmacConfig) != HAL_OK) /* Configure the FMAC */
Error_Handler(); /* Configuration Error */
The HAL_FMAC_FilterConfig() function programs the configuration and control registers, and loads the
coefficients into the FMAC local memory (X2 buffer).

[링크 : https://www.st.com/resource/en/application_note/an5305-digital-filter-implementation-with-the-fmac-using-stm32cubeg4-mcu-package-stmicroelectronics.pdf]

'embeded > Cortex-M4 STM' 카테고리의 다른 글

STM32CubeProgrammer / uart / parity  (0) 2025.11.28
stm32flash 0.5 0.7 버전과 stm32g473  (0) 2025.11.28
stm32g473 ADC calibration  (0) 2025.11.28
stm32f411 black fill board  (0) 2025.11.22
stm32g473 adc  (0) 2025.11.03
Posted by 구차니
embeded/Cortex-M4 STM2025. 11. 28. 15:41

아무생각없이 57600-None 으로 했더니 정체 불명의(?) NACK가 뜬다.

 

57600-Even 로 해주니 잘된다.

'embeded > Cortex-M4 STM' 카테고리의 다른 글

stm32g4 cordic fmac  (0) 2025.11.28
stm32flash 0.5 0.7 버전과 stm32g473  (0) 2025.11.28
stm32g473 ADC calibration  (0) 2025.11.28
stm32f411 black fill board  (0) 2025.11.22
stm32g473 adc  (0) 2025.11.03
Posted by 구차니
embeded/Cortex-M4 STM2025. 11. 28. 15:36

ubuntu 22.04 패키지로 설치된 건 0.5 버전인데

stm32g473을 boot0 핀을 이용해서 내장 부트로더로 올려보려고 하니 이런 에러가 발생한다.

0x469 장치 아이디 미지원.. 쩝..

$ stm32flash /dev/ttyUSB0
stm32flash 0.5

http://stm32flash.sourceforge.net/

Interface serial_posix: 57600 8E1
Unknown/unsupported device (Device ID: 0x469)

 

소스가 0.7 인데 받아서 빌드하고 해보니 잘된다.

$ ./stm32flash /dev/ttyUSB0
stm32flash 0.7

http://stm32flash.sourceforge.net/

Interface serial_posix: 57600 8E1
Version      : 0x31
Option 1     : 0x00
Option 2     : 0x00
Device ID    : 0x0469 (STM32G47xxx/48xxx)
- RAM        : Up to 96KiB  (16384b reserved by bootloader)
- Flash      : Up to 512KiB (size first sector: 1x2048)
- Option RAM : 48b
- System RAM : 28KiB

'embeded > Cortex-M4 STM' 카테고리의 다른 글

stm32g4 cordic fmac  (0) 2025.11.28
STM32CubeProgrammer / uart / parity  (0) 2025.11.28
stm32g473 ADC calibration  (0) 2025.11.28
stm32f411 black fill board  (0) 2025.11.22
stm32g473 adc  (0) 2025.11.03
Posted by 구차니
embeded/Cortex-M4 STM2025. 11. 28. 14:45

전압이 이상하게(?) 낮게 나와서 찾아 보는데 (대충 0.3v 정도?) gpt도 캘리브레이션 하라고 한다.

cubeide에 의해서 생성된 코드로 adc 가 초기화되고 나서

캘리브레이션 한 다음 약 2usec 이후에 HAL_ADC_GetValue(&hadc1); 하면 된다고 한다.

  MX_ADC1_Init();
  /* USER CODE BEGIN 2 */
  extern ADC_HandleTypeDef hadc1;
  HAL_ADCEx_Calibration_Start(&hadc1, ADC_SINGLE_ENDED);
  HAL_Delay(2);
  /* USER CODE END 2 */

  /* Infinite loop */
  /* USER CODE BEGIN WHILE */
  while (1)
  {

  }

 

stm32g4 인데 캘리브레이션 하지 않으면 0.924 V가 나왔고

1148
0.924902 * 24 = 22.197655

 

캘리브레이션 이후에는 0.979 V가 나왔다.

1216
0.979688 * 24 = 23.512501

[링크 : https://jeonhj.tistory.com/22]

'embeded > Cortex-M4 STM' 카테고리의 다른 글

stm32g4 cordic fmac  (0) 2025.11.28
STM32CubeProgrammer / uart / parity  (0) 2025.11.28
stm32flash 0.5 0.7 버전과 stm32g473  (0) 2025.11.28
stm32f411 black fill board  (0) 2025.11.22
stm32g473 adc  (0) 2025.11.03
Posted by 구차니
개소리 왈왈/컴퓨터2025. 11. 26. 21:25

당근에서 후다닥 5만원에 업어옴.

원래 40만원에서 30만원에 팔리던 저렴한 녀석으로

모델명은 "이노스 43인치 LED TV G43QLED ZERO EDITION"

[링크 : https://m.blog.naver.com/cchkill/223242445822]

 

퀀텀닷 패널이라서 색감이 좋고 어쩌구 하는데

RGBW에 LG 패널(또 LG냐!!!).. 역시 RGBW는 노란 똥색을 피해갈수가 없나 보다.

 

콜드 부팅시간은 안드로이드 구글TV라서 1분은 걸리는것 같고(전원 연결부터)

스마트 티비니까.. 그냥 꽂아놓고 다녀야 하나 고민중..

 

아무튼 2번 포트에 꽂았는데 HDMI 2.1이 되는지 4k 60p에 RGB가 잘 잡힌다.

 

일단은.. 사운드 바는 스탠드 때문에 간섭되서 방법이 없고..

무게가 6.2kg. 다나와 기준 7kg 라는데 모니터 암으로 해서 어떻게 공중부양을 시켜야 하나..

[링크 : https://prod.danawa.com/info/?pcode=72821348]

Posted by 구차니
embeded/Cortex-M3 STM2025. 11. 26. 17:43

좀 더 써봐야 알겠지만, STM32F103C8T6과 STLink v2 클론 SWD로 작동 확인완료!

그나저나 reset은 안해놔서 리셋이 될지 모르겠네

 

Posted by 구차니

출근길에 처음으로 새차를 몰아보는데 (아부지차, k5 2026 1.6 가솔린 터보) 멀미가 지대로 난다 -_ㅠ

게다가 브레이크가 무슨.. 5mm 정도 밟아야 이전 브레이킹 수준인지 -_ㅠ

브레이크를 좀 둔하게 할 수 없나 싶기도 한데.. 대신 조작만 세밀하게 가능하다면 멈추기 직전에 확 잡히는건 덜해서 좋긴하다.

 

차선이탈 보조는 끄는법을 못 찾았고

hud는 먼가 정신없어서 꺼버리고(계속 눈이가요~ 눈이가~)

핸들 높이 올리고

오는 내내 창문열고 히터 온도 좀 올리고 왔더니 냄새도 빠지는 것 같기도 하고..

 

13.6km 연비가 나오던게 회사오니 14.6km 나옴 ㅋㅋㅋ

'개소리 왈왈 > 육아관련 주저리' 카테고리의 다른 글

새 차 도착  (4) 2025.11.20
오랫만에 지름  (0) 2025.11.18
하루 늦은 바쁜 일기  (0) 2025.11.16
경기투어패스 part 2  (0) 2025.11.14
경기투어패스 part 1  (0) 2025.11.13
Posted by 구차니
embeded/Cortex-M3 STM2025. 11. 24. 19:08

pre-build steps 에서 명령을 주어 특정 파일을 행성해서 그 변수에 값을 넣어주는 방식

머.. 어짜피 이것도 makefile로 생성될테니 방법은 방법이지

 

 

git log --pretty=format:'#define GIT_INFO_PRESENT%n static const char* GIT_INFO = "Version Information=[%H,%d]\r\n";' -n 1 > ../Core/Inc/gitcommit.h

[링크 : https://community.st.com/t5/stm32-mcus-embedded-software/git-commit-hash-flashed-along-with-my-code/td-p/179180]

Posted by 구차니
Programming/golang2025. 11. 24. 19:04

golang 에서 커밋 해시를 바이너리에 넣는 방법을 찾아보는 중

 

아래 방법은 링커에서 변수에 넣는것 같은데 이것도 쓸만해 보이긴 한데..

go build -ldflags "-X my/package/config.Version=1.0.0"

[링크 : https://www.reddit.com/r/golang/comments/rhpbvo/what_kind_of_things_have_you_ran_with_gogenerate/?tl=ko]

 

go version은 좀더 상세한 자료가 들어가는것 같은데 좀더 나은 접근 방법이 될 듯?

go version
The go command now embeds version control information in binaries. It includes the currently checked-out revision, commit time, and a flag indicating whether edited or untracked files are present. Version control information is embedded if the go command is invoked in a directory within a Git, Mercurial, Fossil, or Bazaar repository, and the main package and its containing main module are in the same repository. This information may be omitted using the flag -buildvcs=false.

Additionally, the go command embeds information about the build, including build and tool tags (set with -tags), compiler, assembler, and linker flags (like -gcflags), whether cgo was enabled, and if it was, the values of the cgo environment variables (like CGO_CFLAGS). Both VCS and build information may be read together with module information using go version -m file or runtime/debug.ReadBuildInfo (for the currently running binary) or the new debug/buildinfo package.

The underlying data format of the embedded build information can change with new go releases, so an older version of go may not handle the build information produced with a newer version of go. To read the version information from a binary built with go 1.18, use the go version command and the debug/buildinfo package from go 1.18+.

[링크 : https://tip.golang.org/doc/go1.18#go-command]

'Programming > golang' 카테고리의 다른 글

golang 정적웹 파일 포함하기  (0) 2025.11.24
go vet (golang 정적분석)  (0) 2025.10.02
golang 윈도우 서비스 프로그램 작성하기  (0) 2025.02.18
golang tcp socket timeout 주기(listen, read)  (0) 2024.04.08
golang reflect  (0) 2024.02.20
Posted by 구차니