'프로그램 사용 > yolo_tensorflow' 카테고리의 다른 글

U-net, segmentation  (0) 2026.05.14
QAT, PTQ .. 모델 경량화  (0) 2026.05.14
얼굴인식 관련 조사  (0) 2025.10.02
keras - transfer learning / fine tuning  (0) 2025.09.17
keras ssd mobilenet  (0) 2025.09.16
Posted by 구차니

순서가 은근히 중요하네

4 frame(250ms 간격으로 Fan1.bmp / Fan2.bmp / Fan3.bmp 를 읽어서 만들고 무한반복 시킴

아래는 되는 예

$ ffmpeg -framerate 4 -i Fan%d.bmp -loop 0 fan_1000ms.gif

 

시간 간격 안되는 예

ffmpeg -i Fan%d.bmp -framerate 3 -loop 0 fan_333ms.gif

 

ffmpeg에서 %d는 확장하는데 ? 와 *은 쉘에서 확장되서 정상적으로 작동하지 않는다

명시적으로는 -i "concat:파일명|다음파일명" 으로 하면 된다.

ffmpeg -framerate 3 -i "concat:Fan1.bmp|Fan2.bmp|Fan3.bmp" -loop 0 fan_500ms.gif

 

Posted by 구차니

'프로그램 사용 > postgreSQL' 카테고리의 다른 글

postgresql 리스트 명령  (0) 2024.07.25
postgresql permission denied for schema public  (0) 2024.07.25
라즈베리에 phppgadmin. 안되잖아?  (0) 2024.07.24
phppgadmin  (0) 2024.07.23
postgresql 15.7 on rpi  (0) 2024.07.22
Posted by 구차니
프로그램 사용/vi2026. 4. 20. 10:08

와우 이런 개꾸르

[링크 : https://wikidocs.net/302522#_15]

 

어쩌면 이것도 검색해놓고 까먹었을지도...

'프로그램 사용 > vi' 카테고리의 다른 글

vi 이전 위치 다음 위치로 이동하기  (0) 2022.08.04
vi가 늦게 켜지는 이유  (0) 2022.07.28
vim 색상 바꾸기(colorscheme)  (0) 2021.01.20
vi 에서 매칭되는 갯수 확인하기  (0) 2019.12.18
vi gg=G와 set ts  (0) 2019.07.04
Posted by 구차니
프로그램 사용/rtl-sdr2026. 3. 31. 19:00

esp32 등을 이용한 RTL-SDR 의 간이형이라고 해야하나?

[링크 : https://atsmini.github.io/]

 

v4 는 이어폰도 있는거 봐서는 단순하게 DAC을 통해 ROUT / LOUT으로 바로 출력하는 듯.

굳이 복잡하게 i2s 할 필요가 없는 제품일듯.

[링크 : https://www.amazon.com/YJIPOWA-Receiver-Amnvolt-Headphone-Amplifier/dp/B0FXRQSN4J]

 

si4732 라는 칩을 이용해서 원하는 주파수를 받을수 있는 듯.

일단 digital audio out을 지원한다는데

Features
- Worldwide FM band support (64–108 MHz)
- Worldwide AM band support (520–1710 kHz)
- SW band support (2.3–26.1 MHz)
- LW band support (153–279 kHz)

[링크 : https://www.skyworksinc.com/-/media/Skyworks/SL/documents/public/data-shorts/Si4732-A10-short.pdf]

  [링크 : https://www.digikey.kr/ko/products/detail/skyworks-solutions-inc/SI4732-A10-GS/4576679]

 

귀찮으면(!) Analog audio output 으로 해서 그냥 스피커 달아도 되는 듯한데

 

디지털은 I2S로 쓸 수 있다. (이거면 그냥 가장 편할 듯?)

[링크 : https://aitendo3.sakura.ne.jp/aitendo_data/product_img/ic/radio/SI4732-A10/AN332.pdf]

 

[링크 : https://m.vctec.co.kr/product/amfmselwrds-라디오-리시버-모듈-si4732-amfm-2-click/22607/]

 

 

'프로그램 사용 > rtl-sdr' 카테고리의 다른 글

rtl-sdr v3/v4  (0) 2025.10.06
wifi sdr - openwifi, antsdr 등등  (0) 2025.09.26
gr-lora with gnuradio 성공!  (0) 2025.09.25
gnuraduio wx gui deprecated  (0) 2025.09.25
qr-lora tutorial  (0) 2025.09.25
Posted by 구차니
프로그램 사용/gcc2026. 3. 13. 15:33

링커 스크립트에서 만든 변수를

c에서 끌어오려면 extern 을 해주면 계산된 값이 불려온다.

 

SECTIONS
{
    /* Starts at LOADER_ADDR. */
    . = 0x80000;
    /* For AArch64, use . = 0x80000; */
    __start = .;
    __text_start = .;
    .text :
    {
        KEEP(*(.text.boot))
        *(.text)
    }
    . = ALIGN(4096); /* align to page size */
    __text_end = .;

    __bss_start = .;
    .bss :
    {
        bss = .;
        *(.bss)
    }
    . = ALIGN(4096); /* align to page size */
    __bss_end = .;
    __bss_size = __bss_end - __bss_start;
    __end = .;
}
: 저 변수들은 실제 저안에서 사용된다기 보다는 소스 코드(C 파일 혹은 어셈블리어 파일)상에서 사용되면서 의미가 부여된다. 저 변수들을 소스 코드상에서 불러 오려면 어떻게 해야 할까? 아래의 코드를 보자.

extern unsgined char __text_start
uint8_t *text_start = &__text_start;

+
extern usigned int __bss_size;

[링크 : https://yohda.tistory.com/entry/LINUXBUILD-링커스크립트]

[링크 : https://gustorage.tistory.com/27]

Posted by 구차니
프로그램 사용/gcc2026. 3. 12. 14:00

쉘에서 괄호를 벗겨 버리는군 -_-

소스는 아래

$ cat t.c
//#include <stdio.h>
void main()
{
printf("%c\r\n", 'a');
printf("%c\r\n", STR);
}

 

명령어 별 변환

실패

$ gcc -E -DSTR=b t.c
$ gcc -E -DSTR='b' t.c
$ gcc -E -DSTR="b" t.c
# 0 "t.c"
# 0 "<built-in>"
# 0 "<command-line>"
# 1 "/usr/include/stdc-predef.h" 1 3 4
# 0 "<command-line>" 2
# 1 "t.c"

void main()
{
 printf("%c\r\n", 'a');
 printf("%c\r\n", b);
}

 

성공

$ gcc -E "-DSTR='b'" t.c
$ gcc -E -DSTR=\'b\' t.c
# 0 "t.c"
# 0 "<built-in>"
# 0 "<command-line>"
# 1 "/usr/include/stdc-predef.h" 1 3 4
# 0 "<command-line>" 2
# 1 "t.c"

void main()
{
 printf("%c\r\n", 'a');
 printf("%c\r\n", 'b');
}

 

 

그나저나 stm32cubeide 에서 추가하니

 

컴파일시에 아래처럼 표시된다. 어우.. 이거 윈도우에서 문제 안생기려나?

 '-DSTR='"'"'A'"'"''

 

Posted by 구차니
프로그램 사용/lvgl2026. 2. 20. 23:23

누르면 살며시 화면이 바귀는데 fade on으로 되어있고

어쩌면 의외로 간단하게(?) lv_screen_load_anim 이라는 애니메이션 관련 lvgl 함수로 처리한다.

///////////////////
ui_Home.c

void ui_event_BTN_Settings(lv_event_t * e)
{
    lv_event_code_t event_code = lv_event_get_code(e);

    if(event_code == LV_EVENT_CLICKED) {
        _ui_screen_change(&ui_Settings, LV_SCR_LOAD_ANIM_FADE_ON, 100, 0, &ui_Settings_screen_init);
    }
}

void ui_Home_screen_init(void)
{
    ui_Home = lv_obj_create(NULL);
    lv_obj_remove_flag(ui_Home, LV_OBJ_FLAG_SCROLLABLE);      /// Flags
    lv_obj_set_style_bg_color(ui_Home, lv_color_hex(0xFFFFFF), LV_PART_MAIN | LV_STATE_DEFAULT);
    lv_obj_set_style_bg_opa(ui_Home, 0, LV_PART_MAIN | LV_STATE_DEFAULT);

    /// 많이 생략 ///
    lv_obj_add_event_cb(ui_BTN_Settings, ui_event_BTN_Settings, LV_EVENT_ALL, NULL);

}


///////////////////
ui_helpers.c

void _ui_screen_change(lv_obj_t ** target, lv_screen_load_anim_t fademode, int spd, int delay,
                       void (*target_init)(void))
{
    if(*target == NULL)
        target_init();
    lv_screen_load_anim(*target, fademode, spd, delay, false);
}

 

[링크 : https://docs.lvgl.io/master/API/display/lv_display_h.html#_CPPv419lv_screen_load_animP8lv_obj_t21lv_screen_load_anim_t8uint32_t8uint32_tb]

'프로그램 사용 > lvgl' 카테고리의 다른 글

lvgl 속도 제한(?) 해제  (0) 2026.02.18
esp32 lvgl from scratch 는 실패중 ㅠㅠ  (0) 2026.02.18
esp32 lvgl 관련 링크들  (0) 2026.02.18
lvgl 기본 폰트 크기 바꾸기  (0) 2026.02.13
lvgl textarea  (0) 2026.02.11
Posted by 구차니
프로그램 사용/gcc2026. 2. 18. 22:22

gcc 로 빌드하면 현재 빌드하는 시스템이 c가 아닌 cpp 라는걸 확인하기 위해(혹은 알려주기 위해)

__cplusplus 라는 선언을 -D__cplusplus 하듯 붙여주는 듯 한데

__cplusplus__가 아니라 왜 앞에만 언더바 두 개 일까.. -_-?

 

__STDC__
In normal operation, this macro expands to the constant 1, to signify that this compiler conforms to ISO Standard C. If GNU CPP is used with a compiler other than GCC, this is not necessarily true; however, the preprocessor always conforms to the standard unless the -traditional-cpp option is used.

This macro is not defined if the -traditional-cpp option is used.

On some hosts, the system compiler uses a different convention, where __STDC__ is normally 0, but is 1 if the user specifies strict conformance to the C Standard. CPP follows the host convention when processing system header files, but when processing user files __STDC__ is always 1. This has been reported to cause problems; for instance, some versions of Solaris provide X Windows headers that expect __STDC__ to be either undefined or 1. See Invocation.

__STDC_VERSION__
This macro expands to the C Standard’s version number, a long integer constant of the form yyyymmL where yyyy and mm are the year and month of the Standard version. This signifies which version of the C Standard the compiler conforms to. Like __STDC__, this is not necessarily accurate for the entire implementation, unless GNU CPP is being used with GCC.

The value 199409L signifies the 1989 C standard as amended in 1994, which is the current default; the value 199901L signifies the 1999 revision of the C standard; the value 201112L signifies the 2011 revision of the C standard; the value 201710L signifies the 2017 revision of the C standard (which is otherwise identical to the 2011 version apart from correction of defects). The value 202311L is used for the -std=c23 and -std=gnu23 modes. An unspecified value larger than 202311L is used for the experimental -std=c2y and -std=gnu2y modes.

This macro is not defined if the -traditional-cpp option is used, nor when compiling C++ or Objective-C.

__STDC_HOSTED__
This macro is defined, with value 1, if the compiler’s target is a hosted environment. A hosted environment has the complete facilities of the standard C library available.

__cplusplus
This macro is defined when the C++ compiler is in use. You can use __cplusplus to test whether a header is compiled by a C compiler or a C++ compiler. This macro is similar to __STDC_VERSION__, in that it expands to a version number. Depending on the language standard selected, the value of the macro is 199711L for the 1998 C++ standard, 201103L for the 2011 C++ standard, 201402L for the 2014 C++ standard, 201703L for the 2017 C++ standard, 202002L for the 2020 C++ standard, 202302L for the 2023 C++ standard, or an unspecified value strictly larger than 202302L for the experimental languages enabled by -std=c++26 and -std=gnu++26.

__OBJC__
This macro is defined, with value 1, when the Objective-C compiler is in use. You can use __OBJC__ to test whether a header is compiled by a C compiler or an Objective-C compiler.

__ASSEMBLER__
This macro is defined with value 1 when preprocessing assembly language.

[링크 : https://gcc.gnu.org/onlinedocs/cpp/Standard-Predefined-Macros.html]

 

 Version    __cplusplus
  4.8.3       201300L
  4.9.2       201300L
  5.1.0       201402L

[링크 : https://stackoverflow.com/questions/30995705/cplusplus-201402l-return-true-in-gcc-even-when-i-specified-std-c14[

Posted by 구차니
프로그램 사용/lvgl2026. 2. 18. 18:32

기본적으로 30fps 를 출력하는 것 같아서 속도를 더 올릴 수 없나 찾아보는중

 

sdkconfig
#
# HAL Settings
#
CONFIG_LV_DEF_REFR_PERIOD=33
CONFIG_LV_DPI_DEF=130
# end of HAL Settings

 

lv_conf_internal.h
/*====================
   HAL SETTINGS
 *====================*/

/** Default display refresh, input device read and animation step period. */
#ifndef LV_DEF_REFR_PERIOD
    #ifdef CONFIG_LV_DEF_REFR_PERIOD
        #define LV_DEF_REFR_PERIOD CONFIG_LV_DEF_REFR_PERIOD
    #else
        #define LV_DEF_REFR_PERIOD  33      /**< [ms] */
    #endif
#endif

 

lv_demo_benchmark.h
/**
 * Run all benchmark scenes.
 *
 * On the summary end screen the values shall be interpreted according to the following:
 * - CPU usage:
 *    - If `LV_SYSMON_GET_IDLE` is not modified it's measured based on the time spent in
 *      `lv_timer_handler`.
 *    - If an (RT)OS is used `LV_SYSMON_GET_IDLE` can be changed to a custom function
 *      which returns the idle percentage of idle task.
 *
 * - FPS: LVGL attempted to render this many times in a second. It's limited based on `LV_DEF_REFR_PERIOD`
 *
 * - Render time: LVGL spent this much time with rendering only. It's not aware of task yielding,
 *   but simply the time difference between the start and end of the rendering is measured
 *
 * - Flush time: It's the sum of
 *     - the time spent in the `flush_cb` and
 *     - the time spent with waiting for flush ready.
 */
void lv_demo_benchmark(void);
lv_display.c
lv_display_t * lv_display_create(int32_t hor_res, int32_t ver_res)
{
    /*Create a refresh timer*/
    disp->refr_timer = lv_timer_create(lv_display_refr_timer, LV_DEF_REFR_PERIOD, disp);
    LV_ASSERT_MALLOC(disp->refr_timer);
    if(disp->refr_timer == NULL) {
        lv_free(disp);
        return NULL;
    }
}

 

다만 perf test 쪽 헤더를 쓰게 되면 16msec로 60fps로 상향되는 듯.

lv_test_perf_conf.h

/**
 * @file lv_conf.h
 * Configuration file for v9.3.0-dev
 */

/*
 * Copy this file as `lv_conf.h`
 * 1. simply next to `lvgl` folder
 * 2. or to any other place and
 *    - define `LV_CONF_INCLUDE_SIMPLE`;
 *    - add the path as an include path.
 */

/* clang-format off */
#if 1 /* Set this to "1" to enable content */

    #ifndef LV_CONF_H
        #define LV_CONF_H

        #define LV_BUILD_TEST_PERF 1
        #define LV_USE_TEST 1
        /* If you need to include anything here, do it inside the `__ASSEMBLY__` guard */
        #if  0 && defined(__ASSEMBLY__)
            #include "my_include.h"
        #endif

        /*====================
        HAL SETTINGS
        *====================*/

        /** Default display refresh, input device read and animation step period. */
        #define LV_DEF_REFR_PERIOD  16      /**< [ms] */

        /** Default Dots Per Inch. Used to initialize default sizes such as widgets sized, style paddings.
        * (Not so important, you can adjust it to modify default sizes and spaces.) */
        #define LV_DPI_DEF 130              /**< [px/inch] */

'프로그램 사용 > lvgl' 카테고리의 다른 글

squareline studio ebike 예제 screen 전환  (0) 2026.02.20
esp32 lvgl from scratch 는 실패중 ㅠㅠ  (0) 2026.02.18
esp32 lvgl 관련 링크들  (0) 2026.02.18
lvgl 기본 폰트 크기 바꾸기  (0) 2026.02.13
lvgl textarea  (0) 2026.02.11
Posted by 구차니