Saturday, August 2, 2025

STM32 시리즈 SPI로 SD카드 읽고 쓰는 소스중에서 


 https://github.com/eziya/STM32_SPI_SDCARD/

가 있다.


이 소스중에 

 https://github.com/eziya/STM32_SPI_SDCARD/blob/master/STM32F4_HAL_SPI_SDCARD/Src/fatfs_sd.c




while(len--); 구문은 오류임.


실제로는 len 보다 1 만큼 많이 실행되어 메모리 침범 오류를 만듭니다.


/* receive data block */

static bool SD_RxDataBlock(BYTE *buff, UINT len)

{

uint8_t token;


/* timeout 200ms */

Timer1 = 200;


/* loop until receive a response or timeout */

do {

token = SPI_RxByte();

} while((token == 0xFF) && Timer1);


/* invalid response */

if(token != 0xFE) return FALSE;


/* receive data */

do {

SPI_RxBytePtr(buff++);

len--;


} while(len--);


/* discard CRC */

SPI_RxByte();

SPI_RxByte();


return TRUE;

}


이것은 아래처럼 수정해야함.



/* receive data block */

static bool SD_RxDataBlock(BYTE *buff, UINT len)

{

uint8_t token;


/* timeout 200ms */

Timer1 = 200;


/* loop until receive a response or timeout */

do {

token = SPI_RxByte();

} while((token == 0xFF) && Timer1);


/* invalid response */

if(token != 0xFE) return FALSE;


/* receive data */

do {

SPI_RxBytePtr(buff++);

len--;


} while(len !=0);


/* discard CRC */

SPI_RxByte();

SPI_RxByte();


return TRUE;

}



len-- 대신 --len을 써도 된다.

그러지 말고 명확하게 하기 위해서 --는 먼저 하고 비교문을 확실히 넣는것이 낫다.




Monday, February 5, 2024

xdebug 무조건 트레이스 시작시키기(xDebug, stop break point always setup)

php.ini 에 xdebug 설정을 넣을때 아래와 같이 설정하면 된다.

dll 파일의 이름은 각자 자기 상황에 맞게 수정하시라.


this setup will stopped always on break point. 

DLL filename depends on your system.



[xdebug]

zend_extension="php_xdebug-3.3.0-8.1-vs16-nts-x86_64.dll"

xdebug.mode=debug

xdebug.default_enable = 1

xdebug.remote_enable = 1

xdebug.remote_autostart = 1

xdebug.idekey="PHPSTORM"

xdebug.client_host=127.0.0.1

xdebug.client_port=9000

xdebug.start_with_request=yes

Sunday, January 28, 2024

NanoCAD is Free CAD program like AutoCAD

NanoCAD is free for personal cad program. Usage is same as AutoCAD.

go to nanocad.com, download personal version. 

https://nanocad.com/personal/






Saturday, January 27, 2024

HardFault (error ) on STM32 USB Host + FreeRTOS

I have Hard fault when USB device Attached to my STM32F407.


STM32CubeMX makes rtos STACK SIZE default to 128 bytes.

It is too small.


You can increase stack size.


Filename : USB_HOST/Target/usbh_config.h


Original (ERROR case)


#if (USBH_USE_OS == 1)

#include "cmsis_os.h"

#define USBH_PROCESS_PRIO osPriorityNormal

#define USBH_PROCESS_STACK_SIZE ((uint16_t)128)

#endif /* (USBH_USE_OS == 1) */



Fix (ERROR case)


#if (USBH_USE_OS == 1)

#include "cmsis_os.h"

#define USBH_PROCESS_PRIO osPriorityNormal

#define USBH_PROCESS_STACK_SIZE ((uint16_t)2048)

#endif /* (USBH_USE_OS == 1) */

 





Sunday, October 29, 2023

Kirisun DP405 DMR Radio Walkie walkie programming cable pinout

Kirisun DP-405

Kirisun DP405

Programming cable pinout:




I tested cable with FTDI usb serial TTL module.

It works.


Wednesday, October 25, 2023

Monday, August 28, 2023