본문 바로가기

전체 글879

Windows ] Alt + Tab 이 안먹힐 때 해결법 윈도우 탐색기를 열고 작업관리자에서 윈도우 탐색기를 재시작한다. 2023. 2. 3.
Serial EEPROM 과 NAND Flash Memory(USB, SD) 의 비교 EEPROM Flash Memory Electrical Erasable Programmable Read Only Memory solid State Disk NOR cells NAND cells Less Write More Read Both Read Write More Expensive Less Expensive Faster Read Slower Read More Time For Programming Less Time For Programming Less Voltage More Voltage Less Erasing Time More Erasing Time Erase Byte Erase Block or Whole chip Smaller Faster Data Large Data EEPROM과 Flash의 가장.. 2023. 2. 3.
메모리 종류와 세부분류 ROM, RAM, FLASH HTML 삽입 미리보기할 수 없는 소스 1. ROM (Read Only Memory) 비휘발성(Non-volatile) 반도체 저장장치 한번 기록된 정보를 읽은 수만 읽고 수정할 수는 없는 고정 기억장치 다시 쓰고 지울 수 있는 방식에 따라 아래와 같이 구분됨. MASK ROM 부터 점차 발전되 현재 ROM이라고 하면 대부분 EEPROM을 말함 종류 설명 MASK ROM 가장 기본적인 ROM으로 제조과정에서 기록한 내용을 사용자가 수정 불가 PROM (Programmable ROM) 하용자가 한번만 기록 가능 EPROM (Erasable PROM) UV EPROM 강한 자외선으로 데이터 삭제 가능 EEPROM 전기적 기능으로 데이터 삭제 가능 2. RAM (Random Access Memory) 전원이 .. 2023. 2. 3.
TMS320F28388D ] Hardware Access 매크로 hw_type.h 파일에 레지스터에 접근에 데이터를 읽고 쓸 때 사용되는 매크로 함수들이 있다. HWREG(x) (*((volatile uint32_t *)((uintptr_t)(x)))) // 32 bit Access 에 사용된다. HWREG_BP(x) __byte_peripheral_32((uint32_t *)(x)) // 32 bit Access 에 사용되는데 컴파일러 내장함수를 사용한다. 이 매크로함수는 CAN, USB 같은 byte Access의 특수 주소지정체계를 쓰는 페리페럴에 사용하기 위해 만들어졌다. HWREGH(x) (*((volatile uint16_t *)((uintptr_t)(x)))) // 16 bit Access 에 사용된다. 16 bit 레지스터나 32bit 레지스터의 상위 .. 2023. 2. 1.
GitHub, Git ] 기본 브랜치명(main->master) 변경하기 https://www.lesstif.com/gitbook/github-default-master-main-100205686.html github default 브랜치명을 master 에서 main 으로 변경하기 local 에 저장소를 clone 한 경우 다음과 같이 기본 저장소 이름을 바꿔줘야 합니다. git branch -m master main git fetch origin git branch -u origin/main main BASH www.lesstif.com 1. 깃허브 새 리파지토리의 기본 브랜치명 변경(main->master) 깃허브 우측 상단에서 아이콘 클릭 후 Settings 좌측 사이드 바에서 Repositories 클릭 Repository default branch 를 변경한다. 이.. 2023. 2. 1.
부트로더 Boot Loader 부트로더란? 부트로더(bootloader)는 부팅 시 처음으로 실행되는 프로그램으로 Application을 로드하고 실행하는데 필요한 초기 설정을 한다. 부트로더는 주로 ROM, flash 메모리 또는 EEPROM에 저장되어 있으며, 기본적으로는 기기를 켜면서부터 실행된다. Application 업데이트가 필요한 경우 사용될 수 있다. 부트로더를 이해하기 위한 예시 1. 아두이노 아두이노의 경우에도 flash memory 에 프로그램된 on chip bootloader 가 있다. 아두이노가 reset 되는 경우 bootloader 가 가장 먼저 실행된다. bootloader 는 아두이노 스케치를 보드에 다운로드하기 위한 목적으로 사용된다. (IAP, In Application Programming) 아두.. 2023. 2. 1.
Git, Windows ] push / pull 자동화 배치파일 만들기 다음과 같이 윈도우 배치파일을 만든다. push.bat git add * git commit -m "Auto push %date% %time%" git push origin main pause 배치파일에서 현재 날짜과 시간을 출력하기 위해 %date%, %time%을 쓸 수 있다. pull.bat git pull origin main pause 배치파일을 .git 과 같은 폴더에 넣어둔 두면 단순 클릭으로 push, pull을 할 수 있다. 배치파일 안의 깃 명령어는 얼마든지 수정 가능하다. 이렇게 만든 배치파일을 윈도우 작업 스케줄러에 등록하여 자동으로 실행되도록 할 수도 있다. 윈도우 배치파일 만드는 법 : https://eteo.tistory.com/373 윈도우 배치파일(.bat) 만들기 (레지스.. 2023. 2. 1.
LSB, MSB 출처 : https://blog.naver.com/ansdbtls4067/220886567257 LSB와 MSB란 무엇인가? 안녕하세요? 땜쓰 인사드립니다. 오늘은 LSB와 MSB에 대해서 함께 알아보도록 하겠습니다. 우선 이들... blog.naver.com LSB 와 MSB LSB는 Least Significant Bit의 약자로서 하나의 데이터 형에서의 가장 낮은 위치의 Bit를 의미한다. MSB는 Most Significant Bit의 약자로 어떠한 데이터 형의 최상위 비트를 의미한다. LSB 위치는 가장 값이 작은 비트인 2^0에 위치하고 있으므로 LSB의 값을 확인하면 숫자가 짝수인지 홀수인지 쉽게 알아낼 수 있다. 또한 LSB는 프로그래밍시 주로 난수발생 함수, 해시 함수, 검사합(Check.. 2023. 1. 31.
컴파일러 워닝 "was set but never used" 해결법 변수를 선언하거나 함수를 정의하고 사용하지 않으면 컴파일러가 "was set but never used" 경고를 낼 때가 있다. 다음과 같이 캐스팅하면 된다. void never_call() { (void)abc; } 2023. 1. 31.
#ifdef 와 #if defined() 의 차이 #ifdef 와 #if defined() 는 항목이 하나일 땐 동일하다. #ifdef A #if defined(A) 차이점은 #if defined() 만 아래처럼 여러 항목을 비교할 수 있다고, #ifdef 는 이런 표현이 불가능하다. #if defined(A) && (defined(B) || defined(C)) 출처 : https://zoosso.tistory.com/1201 2023. 1. 31.
STM32 ] CAN Interrupt CAN 통신 송수신 이전글 : 2023.01.29 - [DSP, MCU/STM32 (ARM Cortex-M)] - STM32 ] CAN 송수신 STM32 ] CAN 송수신 CAN 통신 설정 이전글 : 2023.01.27 - [DSP, MCU/STM32 (ARM Cortex-M)] - STM32 ] CAN 통신 설정 (bxCAN peripheral) STM32 ] CAN 통신 설정 (bxCAN peripheral) HTML 삽입 미리보기할 수 없는 소스 STM32F4xx 시리즈에는 bxCAN이라고 eteo.tistory.com bxCAN 의 interrupt source 1. Transmit Request Completed 2. Frame is received in RX FIFO0 3. Frame is r.. 2023. 1. 31.
Git ] 로컬 저장소에 강제 pull 하기 (local을 remote로 덮어쓰기) local 을 remote 내용으로 덮어쓰기 $ git fetch --all $ git reset --hard origin/master master 말고 다른 local branch에 덮어쓰기 $ git fetch --all $ git reset --hard origin/ master 를 다른 branch에 저장해둔 후 덮어쓰기 $ git checkout master $ git branch $ git fetch --all $ git reset --hard origin/master 2023. 1. 31.
WinForms ] GroupBox, Panel, TabControl 속성 GroupBox 컨트롤의 그룹으로 GroupBox를 생성 후 드래그앤드랍으로 원하는 컨트롤을 GroupBox 안에 위치시키면 된다. GroupBox 안에있는 컨트롤들의 속성을 각각 변경할 수 있지만 예를들어 GroupBox의 ForeColor를 red 로 지정하면 안에있는 컨트롤들이 ForeColor를 상속받는다. Panel Panel 은 GroupBox와 유사하게 컨트롤을 그룹핑하는데 쓰인다. TabControl TabControl 은 많은 컨트롤을 적은 공간에 그룹핑하여 표시하는 데 유용하다. TabControl 안에 GroupBox 또는 Panel을 넣을 수 있다. 화살표버튼을 눌러 탭 추가/제거가 가능하다. 또한 페이지 안쪽을 클릭하면 TabPage 컨트롤의 속성을 설정할 수 있고 페이지 바깥쪽을.. 2023. 1. 31.
FNIRSI 오실로스코프 사용법 (1013D) 상단 프로브 커넥터 CH1, CH2. 파워 LED, C type 포트, 전원 버튼이 있다. 그리고 프로브 커넥터 사이에 있는 고리에 프로브를 꼽으면 sample 1KHz 파형을 볼 수 있다. MENU - System settings 스크린 밝기와 그리드 라인 밝기를 조절 가능하다. 그리고 항상 50% 부근에서 트리거 잡아주는 기능을 enable disable 할 수 있다. 그 옆에는 현재 RUN 상태인지 STOP 상태인지 볼 수 있는 아이콘이 있다. CH1, CH2 컨트롤 블락 채널 On/Off 그리고 프로브의 슬라이드 스위치를 올리면 측정 전압레벨을 높여 쓸 수 있다. 우측 상단의 CTRL 버튼을 눌러 Vertical 축(전압 scale)을 조정할 수 있다. 현재 CH1 컨트롤 블락에 1V/div 라고.. 2023. 1. 30.
WinForms ] ProgressBar, PictureBox, NumericUpDown, TrackBar 속성 ProgressBar 사용자에게 진행 상황을 알려줄 수 있는 컨트롤이다. Maximum 과 Minimum 속성을 통해 상한과 하한을 설정할 수 있다. Value 속성으로 현재 값을 지정할 수 있다. Style 은 세 종류가 있는데 Blocks 와 Continuous 가 우리가 일반적으로 아는 Progress Bar이고 둘 은 윈도우10 이상에선 차이가 없는 듯 하다. Style에서 Marquee 를 선택하면 아래와 같은 애니매이션을 볼 수 있다. Marquee 같은 경우 속성에서 속도도 설정 가능하다. PictureBox 컨트롤을 추가하고 화살표를 눌러 이미지를 선택한다. 크기 모드에서 Normal / StretchImage / AutoSize / CenterImage / Zoom 중 하나를 선택할 수 .. 2023. 1. 29.
C#, WinForms ] PictureBox 위의 Label 배경색 투명하게 설정하기 디자이너에서 단순히 label의 BackColor를 Transparent 로 지정되도 투명하게 오버레이되지 않는다. 방법은 label 의 Parent 속성을 label 뒤에 있는 컨트롤로 변경해주는 것이다. label1.Parent = pictureBox1; label1.BackColor = Color.Transparent; 단, label을 생성하면 디폴트 Parent 속성이 Form 인데 PictureBox로 바꾸었으니 Location 위치도 바꾸어 주어야 한다. (0, 0)이 PictureBox의 좌상단이다. 2023. 1. 29.
STM32 ] CAN 송수신 + Acceptance Filter CAN 통신 설정 이전글 : 2023.01.27 - [DSP, MCU/STM32 (ARM Cortex-M)] - STM32 ] CAN 통신 설정 (bxCAN peripheral) STM32 ] CAN 통신 설정 (bxCAN peripheral) HTML 삽입 미리보기할 수 없는 소스 STM32F4xx 시리즈에는 bxCAN이라고 불리는 CAN 모듈(컨트롤러)이 2개 있으며 특징은 다음과 같다. 2 CAN Controllers are avialable. CAN1 and CAN2 CAN1 is called Master bxCAN and CAN2 is c eteo.tistory.com HTML 삽입 미리보기할 수 없는 소스 내가 사용한건 SN65HVD230 CAN 트랜시버 모듈이다. CAN1과 CAN2 둘 다 .. 2023. 1. 29.
빅스비로 제어 가능한 Wifi 스마트 스위치 설치기 (No 중성선) 이전까지는 빅스비로 전등을 제어하는 데 sonoff 라는 제품을 사용했다. 이 제품의 단점은 설치 후 스위치로는 더이상 불을 켜고 끌 수 없고 항상 스위치를 on 상태에 두어야 한다는 데 있다. 대기전력이 크지는 않지만, 급할 때도 항상 핸드폰을 찾아 켜고 꺼야 한다는 점은 불편할 수 밖에 없다. 그래서 이번에 이사한 김에 sonoff를 버리고 집 스위치를 다 스마트 스위치로 바꾸었다. 1. 알리 익스프레스에서 중성선이 필요없는 터치식 스마트 스위치를 구입한다. 제품 링크 : https://www.aliexpress.com/item/4000192490763.html?spm=a2g0o.order_list.order_list_main.10.21ef18025YgPhX 주문한지 4일만에 제품이 도착하였다. 차단.. 2023. 1. 28.
티스토리 ] 400 Bad Request 해결법 원인은 브라우저의 쿠키가 너무 많이 쌓여있는 탓 브라우저의 "인터넷 사용 기록 삭제" 페이지로 간다. 구글 크롬의 경우 단축키 Ctrl + H 쿠키를 삭제 후 접속을 재시도하면 된다. 2023. 1. 28.
STM32 ] CAN 통신 설정 (bxCAN peripheral) HTML 삽입 미리보기할 수 없는 소스 STM32F4xx 시리즈에는 bxCAN이라고 불리는 CAN 모듈(컨트롤러)이 2개 있으며 특징은 다음과 같다. 2 CAN Controllers are avialable. CAN1 and CAN2 CAN1 is called Master bxCAN and CAN2 is called Slave Both supports CAN protocol version 2.0A and B Bit rates up to 1 Mbit/s Three transmit mailboxes Two receive FIFOs with three stages 28 filter banks shared between CAN1 and CAN2 Tx mailboxes 유저가 CAN 메시지를 구성해 담을 수 있는.. 2023. 1. 27.
PC(Windows)에 삼성노트 앱 설치 (Microsoft Store 에 다운로드 버튼이 없을 때 해결법) PC(Windows)에 삼성노트 앱 설치하기 마이크로소프트 스토어 에서 삼성 노트 앱을 다운받으려고 하지만 다운로드 및 설치 버튼이 없을 때 사용할 수 있는 해결법입다. 1. 아래 화살표 버튼을 클릭한다. 2. 링크 복사 를 클릭한다. 3. 아래 사이트에 접속한다. 사이트 주소 : https://store.rg-adguard.net/ Microsoft Store - Generation Project (v1.2.3) [by @rgadguard & mkuba50] Online link generator for Microsoft Store. You can use it to get links to almost all apps, games, themes from the Microsoft Store. store.r.. 2023. 1. 27.
[UML] 시퀀스 다이어그램 (Sequence Diagram) 시퀀스 다이어그램은 특정 행동이 어떠한 순서로 어떤 객체와 어떻게 상호작용을 하는지 표현하는 행위 다이어그램입니다. 현재 존재하는 시스템이 어떠한 시나리오로 움직이고 있는지를 나타내는데 장점을 가지고 있습니다. 시퀀스 다이어그램을 이용하면 API 등의 유즈 케이스를 디테일하게 알 수 있고 타 시스템의 API 호출 등의 로직을 모델링할 수 있어 시나리오를 파악하기 좋습니다. 예를 들어, 고객이 29CM 사이트 주문을 했을 때 고객이 주문한 시점부터 29CM 사이트의 주문 처리 순서, 이후 반환 케이스를 연속적으로 표현할 수 있습니다. 📁 Lifeline 모델링 되는 인스턴스를 나타냅니다. Lifeline은 네모와 점선으로 이루어져 있으며 네모가 객체의 관점으로 표현했다면 클래스이고 서비스 관점으로 표현했으.. 2023. 1. 27.
TMS320F28388D ] IPC 사용하여 CPU1과 CPU2 타이머 Tick 값 Synchronization CPU1 코드 // ... IPC_clearFlagLtoR(IPC_CPU1_L_CPU2_R, IPC_FLAG_ALL); IPC_sync(IPC_CPU1_L_CPU2_R, IPC_FLAG31); msTick = 0; CPUTimer_startTimer(CPUTIMER0_BASE); // ... CPU2 코드 // ... IPC_clearFlagLtoR(IPC_CPU2_L_CPU1_R, IPC_FLAG_ALL); IPC_sync(IPC_CPU2_L_CPU1_R, IPC_FLAG31); msTick = 0; CPUTimer_startTimer(CPUTIMER0_BASE); // ... 두 코어간 동기화를 위한 API인 IPC_Sync() 함수 내부는 다음과 같다. //! Synchronises the two .. 2023. 1. 26.
CAN 통신 - 메시지 타입과 구조 CAN 통신 이전글 : 2023.01.24 - [DSP, MCU/펌웨어공부] - CAN 통신 (Controller Area Network) CAN 통신 (Controller Area Network) HTML 삽입 미리보기할 수 없는 소스 CAN 통신(Controller Area Network)은 1980년대 Bosch사에 의해 개발된 메시지 기반 네트워크 프로토콜으로, 차량 내에서 호스트 컴퓨터 없이 마이크로 컨트롤러나 장치 eteo.tistory.com HTML 삽입 미리보기할 수 없는 소스 Data Frame Remote Frame Error Frame Overload Frame 이 중 Error Frame 과 Overload Frame 은 컨트롤러가 알아서 처리하므로 프로그래밍 할 때는 주로 Dat.. 2023. 1. 26.
Notepad ] HEX-Editor 플러그인 사용 플러그인 - 플러그인 관리 hex 검색 후 HEX-Editor 설치 플러그인 - HEX-Editor - View in HEX 2023. 1. 25.
파워포인트 ] 개체 관리, 그룹/그룹해제 쉽게 하기 Alt+F10 을 눌러 개체 선택 창 표시 개체 순서 변경 개체가 둘 이상 겹쳐있는 경우 목록에서 위에 있는 개체가 앞에 표시됨 목록에서 하나 이상의 항목을 클릭한 상태에서 드래그 앤 드롭으로 개체의 순서를 변경할 수 있음 그룹화 Ctrl+Click 으로 그룹화할 항목들을 선택한 후 서식 탭에서 그룹을 선택해 그룹화 가능 2023. 1. 25.
TMS320F28388D ] RAM에 NOINIT 변수 두기 불가 Reset으로 초기화 되지 않는 램 영역에 변수를 둬서 리셋 카운트값을 저장하려고했다. 링커커맨드파일에 type=NOINIT 으로 섹션 타입을 지정할 수 있어 그렇게 했는데도 여전히 0으로 초기화된다. 찾아보니 ECC(Error Correction Code)/Parity 가 적용된 RAM 영역(M0, M1, LSx, GSx, MSGRAM 등)은 부트 과정에서 부트 롬에 마스킹된 부트코드에 의해 0으로 초기화(Clear) 된다고한다. TRM p.699 power-on reset 말고 디버거 리셋시에는 intialized 되지 않는 듯하다. 2023. 1. 25.
TMS320F28388D ] USB 라이브러리 USBHCDPipeRead()에서 무한루프 빠지는 문제 usbhostenum.c uint32_t USBHCDPipeRead(uint32_t ui32Pipe, uint8_t *pui8Data, uint32_t ui32Size) { // ... while(ui32RemainingBytes != 0) { // ... while(1) { // ... // If any error event occurs then exit out of the loop. if(g_sUSBHCD.ui32IntEvents & (INT_EVENT_DISCONNECT | INT_EVENT_VBUS_ERR | INT_EVENT_POWER_FAULT)) { // // Set the pipe state to error. // g_sUSBHCD.psUSBINPipes[ui32PipeIdx].iState.. 2023. 1. 25.
Git ] 원격 저장소에 강제 push 하기 (remote를 local로 덮어쓰기) local의 내용을 remote에 강제로 덮어쓰는 방법 git push -f git push origin master -f # Example 원격 저장소의 commit 정보가 유실될 수 있으니 -f(-force) 플래그를 붙이는데는 주의가 필요하다. remote에 예상 못한 commit이 있는 경우 force push가 실패하도록 하는 방법도 있다. git push --force-with-lease Reference : https://stackoverflow.com/questions/10510462/force-git-push-to-overwrite-remote-files 2023. 1. 25.
CAN 통신 (Controller Area Network) HTML 삽입 미리보기할 수 없는 소스 CAN 통신(Controller Area Network)은 1980년대 Bosch사에 의해 개발된 메시지 기반 네트워크 프로토콜으로, 차량 내에서 호스트 컴퓨터 없이 마이크로 컨트롤러나 장치들이 서로 통신하기 위해 설계된 표준 통신 규격이다. HTML 삽입 미리보기할 수 없는 소스 Multi-master serial communication bus. Broadcast type of Bus. (Not point-to-point) Low cost solution. Extreme robustness. (noise-immunity) High data transmission speeds. (up to 1 MBit/sec, High speed CAN 기준) Reliabilit.. 2023. 1. 24.