본문 바로가기

분류 전체보기980

C언어 ] 맵 자료구조 구현 map 생성시 사이즈를 직접 결정할 수 있도록 해보았다. 근데 링버퍼처럼 범용적으로 쓸 거 같진 않아서 사실 고정길이배열로 mapManger 구조체안에 둬도 될 것 같다. map.h #include "main.h" #define MAP_MAX_KEY_LEN20 // 맵 자료구조 typedef struct { char key[MAP_MAX_KEY_LEN+1]; uint32_t value; } map_t; // 맵 자료구조 관리 구조체 typedef struct { map_t* maps; uint32_t currentSize; uint32_t maxSize; } mapManager_t; void map_create(mapManager_t* mapManager, map_t* maps, uint32_t maxS.. 2023. 5. 7.
TMS320F28388D ] CM, C28x 코어 진입점으로 점프 CM 먼저 CM코어의 경우는 Application 실행을 위한 Entry Point는 0x200001 이고 해당 주소로 점프하면 된다. https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/923512/tms320f28388d-cm-core-code-jump-to-execution-giving-meets-error-asking-for-how-to-do TMS320F28388D: CM core code jump to execution giving meets error, asking for how to do - C2000 microcontrollers forum - .. 2023. 5. 7.
WinForms ] ImageList와 ColorDepth 속성 ImageList는 이미지를 저장하고 관리하는 데 사용되는 컨트롤인데, ImageList를 사용하면 다른 컨트롤에서 이미지를 쉽게 가져올 수 있으며, 동일한 이미지를 여러 컨트롤에서 사용할 수 있다. 도구상자에서 imageList를 추가하면 하단에 imageList가 나타난다. 우클릭 - 이미지 선택 아래 이미지 컬렉션 편집기에서 imageList의 멤버를 추가할 수있다. 0번 인덱스부터 추가되며 순서 변경이 가능하다. 이렇게 추가된 이미지 리스트를 Button, CheckBox, ComboBox, Label, ListBox, ListView, MenuStrip, PictureBox, RadioButton, TabControl, ToolBar 컨트롤 등 다양한 컨트롤에서 불러다 쓸 수 있다. 사용시 주의.. 2023. 5. 7.
리모콘 분해 탑면 가운데 IC칩이 보이고 그위에 24MHz 오실레이터와, IR transmitter가 있고 아래 커패시터가 있다. 바텀면에는 돔 스위치가 보인다. 평소에는 스위치가 오픈되어 있다가 가운데 부분을 누르면 단락되어 전기 신호가 흐른다. 고무패드에 스위치가 닿는 접점부위가 뾰족하게 되어있다. TV버튼 안눌리게 하려고 고무패드를 잘랐다. 검은 종이같은 걸로 막아두면 될 것 같다. 2023. 5. 7.
데이터 크기 단위와 네트워크 속도 표기, MBps <-> Mbps 변환 이더넷 속도가 100Mbps 라고하면 초당 몇 메가바이트를 전송할 수 있을까? 얼핏보면 100메가바이트를 전송할 수 있는 속도처럼 보이지만 그렇지 않다.100Mbps는 초당 100 메가'비트'를 전송할 수 있는 속도를 나타낸다. 1바이트는 8비트이니 초당 12.5메가바이트를 전송 할 수 있는 속도이다. 여기서 하나 더 주의할 점이 네트워크 속도 표기 시 붙은 M은 SI 단위체계를 따르는 것이다. 즉 K는 10^3, M은 10^6을 의미한다.  하지만 우리가 일반적으로 데이터의 크기를 나타낼 때는 이진수 체계에서 용량을 표현하는 방식으로 생각하기 때문에 MB는 2^20을 의미하고 12,500,000 / (2^20) = 11.9 이다. 결론은 네트워크가 ideal한 상태에서 초당 전송 가능한 데이터의 크기는.. 2023. 5. 7.
Online CRC 계산 사이트 CRC 계산 사이트 https://crccalc.com/?crc=01020304&method=crc32&datatype=hex http://www.sunshine2k.de/coding/javascript/crc/crc_js.html https://www.lammertbies.nl/comm/info/crc-calculation 파일 CRC 계산 사이트 https://emn178.github.io/online-tools/crc32_checksum.html https://simplycalc.com/crc32-file.php 2023. 5. 7.
1구 콘센트를 다이소 2구 콘센트로 교체하기 다이소에서 이천원짜리 2구 콘센트를 구입한다. 1. 작업 전 차단기를 내린다. 2. 일자드라이버로 기존 커버를 벗겨낸다. 3. 위 아내 나사를 풀어 콘센트를 들어낸다. 4. 기존 전선 연결 위치를 사진찍어 놓는다. 5. 일자드라이버로 홈을 누르며 기존 선을 당겨서 빼낸다. 6. 다이소에서 산 2구 콘센트로 교체한다. 접지선이 있는 경우엔 연두색 접지부에도 연결한다. 7. 다시 커버를 씌우면 끝 2구 콘센트로 사용 가능하다. 2023. 5. 7.
Visual Studio 언어를 영어로 바꾸기 도구 - 도구 및 기능 가져오기 언어 팩 - 영어 설치 도구 - 옵션 환경 - 국가별 설정 - English - 확인, 재시작 2023. 5. 7.
TMS320F28388D ] CSS에서 bin 파일 생성하는 법, filling a hole with 0xFF not 0x00 프로젝트를 빌드하면 기본적으로 .out 실행파일이 나오는데 바이너리 파일을 생성하기 위해서는 TI에서 제공하는 유틸을 사용하면 된다. 아래 경로에 있는 툴이고, 이걸 ccs의 post build step 기능으로 빌드와 동시에 bin 파일이 생성되게 할 수 있다. C:\ti\ccs[Version No]\ccs\utils\tiobj2bin 프로젝트 우클릭 - Build - Steps - Post-build steps 해당 부분에 아래 문구를 적는다. C28x 코어 "${CCS_INSTALL_ROOT}/utils/tiobj2bin/tiobj2bin" "${BuildArtifactFileName}" "${BuildArtifactFileBaseName}.bin" "${CG_TOOL_ROOT}/bin/ofd200.. 2023. 4. 23.
TMS320F28388D ] 라이브러리 램에 복사해 실행 Flash API 라이브러리를 램에 올려서 실행할 필요가 있다. 단순히 time critical 코드를 고속으로 사용하려는 것 뿐만은 아니고 예를 들어 부트로더를 만들 때 필요하다. Application이 코드영역에서 한창 동작하고 있는데 이 코드영역을 중간에 erase하려고 하면 프로그램이 halt될 것이 아닌가. 하지만 전부 Ram에서 동작하는 함수를 사용하면 코드영역을 침범해 조작해도 halt 되지 않는다. 근데 Flash API를 호출해서 사용하는 copyData()라는 사용자정의 함수가 있다고 하면 이걸 Ram에 올린다고 다 되는 게 아니라, 그 안에 있는 모든 함수들이 램에서 동작해야하고 사용하는 버퍼도 램에 올라간 데이터여야 한다. 아래와 같은 과정을 거치지 않고 Flahs API를 사용한다.. 2023. 4. 22.
TMS320F28388D ] Flash API 사용 일단 아래 경로에 있는 FlashAPI 라이브러리를 복사해 프로젝트 안에 가져온다. C:\ti\c2000\C2000Ware_[Version No]\libraries\flash_api\f2838x\cm\lib 그리고 아래 경로의 FlashAPI를 사용하기 위한 헤더가 모여있는 폴더도 복사해서 프로젝트에 가져온다. C:\ti\c2000\C2000Ware_[Version No]\libraries\flash_api\f2838x\cm\include\FlashAPI 그리고 Include search path에 추가해준다. 복사해서 가져오지 않아도 c2000ware 폴더 내 경로를 추가하면 되긴하지만 선호하지 않는방법이다. 이제 아래 헤더를 include하면 FlashAPI를 가져다 쓸 수 있다. #include ".. 2023. 4. 20.
TMS320F28388D ] TI 제공 부트로더 사용해서 CPU2, CM application 다운로드하기 사용방법은 README.txt 파일에서 찾을 수 있다. When the application starts, the serial connection is with the SCI module which is owned by CPU1. Only commands designated for CPU1 are acceptable at this point before booting CPU2.  If a CPU2 command is selected, the application asks the user for a different option.  After booting to CPU2, either with "Run CPU1 Boot CPU2" or "Reset CPU1 Boot CPU2," CPU.. 2023. 4. 19.
TMS320F28388D ] TI 제공 부트로더 & Flash programmer 툴 사용하기 관련 문서   TI가 ROM에 마스킹 해둔 부트로더 중 SCI boot와 Flash programmer를 사용해 어플리케이션을 program 해보자.   전체 Flow 요약해보면 Boot Mode를 SCI Boot로 바꾸고 SCI ROM bootloader를 사용해 flash kernel 코드를 통째로 램에 복사해 올힌다. 그리고 RAM에 올린 flash kernel을 실행하여 User Application을 Flash에 Program한다.     먼저 내장 SCI bootloader를 사용하기 위해 bootmode를 SCI/Wait Boot로 변경해야 한다.   만약 컨트롤 카드를 쓰고 있다면 S2 스위치로 bootmode를 변경하면 되고, 아닌 경우 해당 b.. 2023. 4. 18.
STM32CubeIDE 등 Eclipse 기반 IDE 에서 Ctrl + / 등 단축키 안먹힐 때 혹시 한컴 입력기로 바뀌었다 확인해본다. 아예 삭제하는 방법 위의 사진에서 '언어 기본 설정'을 누른다. 한국어 - 옵션 클릭 한컴입력기 클릭하고 제거 2023. 4. 16.
STM32 ] TFTP Bootloader Board : STM32F429ZI (Nucleo 144) STM32CubeIDE : version 1.10.1 Firmware Package : FW_F4 V1.27.1 아래 예제 기반 C:\Users\J\STM32Cube\Repository\STM32Cube_FW_F4_V1.27.1\Projects\STM324x9I_EVAL\Applications\LwIP\LwIP_IAP 일단 위 경로에서 flash_if.h, flash_if.c tftpserver.h, tftpserver.c 파일을 가져온다. main.h에는 다음과 같이 USER APPLICATION 에서 사용하는 플래시 주소가 선언되 었다. 용어를 어디에선 Page라고 쓰고 어디선 Sector라고 하는데 둘은 같은말이다. #define USER_.. 2023. 4. 16.
STM32 ] TFTP Server 파일 송수신 + USB Host MSC int main(void) { HAL_Init(); SystemClock_Config(); MX_GPIO_Init(); MX_USART3_UART_Init(); MX_FATFS_Init(); MX_USB_HOST_Init(); MX_LWIP_Init(); tftpd_init(); while (1) { MX_LWIP_Process(); MX_USB_HOST_Process(); } } USB와 랜케이블 연결 아래경로에서 tftpd64 를 다운받아 설치한다. https://bitbucket.org/phjounin/tftpd64/downloads/ phjounin / tftpd64 / Downloads — Bitbucket For large uploads, we recommend using the API. Ge.. 2023. 4. 15.
STM32 ] TFTP Server Board : STM32F429ZI (Nucleo 144) STM32CubeIDE : version 1.10.1 Firmware Package : FW_F4 V1.27.1 아래 경로 예제의 tftpserver.h, tftpserver.c 참조 C:\Users\jo\STM32Cube\Repository\STM32Cube_FW_F4_V1.27.1\Projects\STM324x9I_EVAL\Applications\LwIP\LwIP_TFTP_Server STM32보드를 TFTP 서버로 운용하며 클라이언트의 요청을 받아서, 클라이언트로부터 이더넷을 통해 파일을 수신해 보드에 연결된 USB MSC에 저장 또는 USB에 저장된 파일을 이더넷을 통해 클라이언트에게 송신 순서대로 살펴보자. void tftpd_init(.. 2023. 4. 14.
Eclipse 기반 IDE에서 Code Formatter 설정하기 STM32CubeIDE 자동생성 코드의 tabsize는 2칸인데 디폴트 Formatter의 tabsize는 4칸이라 안맞아서 수정해 줄 필요가 있다. Window > Preferences > C/C++ > Code Style > Formatter New를 클릭해 built-in profile을 base로 해서 커스텀 profile을 생성할 수 있다. 가장 많이 사용하는게 K&R 아니면 BSD인 것 같은데 둘의 대표적 차이는 K&R은 중괄호를 same line에서 시작하고 BSD는 next line에서 시작한다는 점이다. // K&R if (isRunning) { // do something } // BSD if (isRunning) { // do something } 지금은 BSD에서 tab size를 .. 2023. 4. 14.
JDK (Java Development Kit) 설치 1. 오라클 사이트에서 윈도우용 JDK를 다운받는다. https://www.oracle.com/java/technologies/downloads/#jdk20-windows 2. 실행해 기본경로로 설치하고 경로를 기억해두자. 3. 시스템 환경 변수 편집 변수 이름 : JAVA_HOME 변수 값 : C:\Program Files\Java\jdk-20 (설치경로) 변수 이름 : CLASSPATH 변수 값 : %JAVA_HOME%\lib 변수 이름 Path에 아래와 같이 추가 %JAVA_HOME%\bin 4. CMD창에서 java --version 명령어를 치고 잘 설치되었는지 확인한다. 2023. 4. 13.
인터넷 익스플로러 엣지로 자동전환 안되게 하는 법 아래 경로로 이동한다. C:\Program Files (x86)\Microsoft\Edge\Application\112.0.1722.39[버전]\BHO 폴더 안에 다음과 같은 파일이 있는데 IE에서 Edge로 자동전환하게 하는 프로그램이다. 삭제하는 것은 찜찜하니 다음과 같이 폴더명을 바꿔주면 된다. 2023. 4. 13.
STM32 ] USB Host MSC Board : STM32F429ZI (Nucleo 144)STM32CubeIDE : version 1.10.1Firmware Package : FW_F4 V1.27.1     Clock Configuration  USB 48MHz 클락을 설정하기 위해 HSE를 사용했다.          USB_OTG_FS 설정    보드가 Host 모드로 동작하게 설정해준다. USB Flash Drive는 자체전원이 없으니 VBUS를 통해 전원을 공급해주어야 한다.    그래서 USB_ID핀과, USB_SOF핀은 비활성화 됐는데, USB에서 ID핀은 On-The-Go (OTG) 기능을 지원하기 위해 사용되므로 호스트 또는 디바이스 기능만 가진 USB장치를 사용하는 경우 ID핀은 필요하지 않다. 그리고 SOF 타이밍 동기.. 2023. 4. 13.
C#, WinForms ] decimal to hex / hex to decimal converter 깃허브 주소 : https://github.com/joeteo/num2hex GitHub - joeteo/num2hex Contribute to joeteo/num2hex development by creating an account on GitHub. github.com 프로그램만 다운받기 : 먼저 디자이너에 대해 얘기해보면 comboBox는 사용자가 입력할 수 없게 DropDownStyle을 DropDownList로 만들었다. 그리고 콤보박스에서 선택된 항목이 변경되었을 때 호출되는 SelectedIndexChanged 이벤트 핸들러를 추가했다. 참고로 index는 처음 아무것도 선택하지 않았을 땐 -1이고 첫번째 아이템부터 인덱스 0으로 시작한다. 정수형 데이터 타입 선택 시 옆에 range를 보여.. 2023. 4. 12.
TFTP 프로토콜 TFTP 프로토콜 TFTP 프로토콜">TFTP 프로토콜 Trivial File Transfer Protocol의 약자로, 인터넷 프로토콜 스위트(IP Suite)*의 일부로서 파일 전송 프로토콜이다. TFTP는 TCP/IP 프로토콜 스택을 기반으로 하며, 그 중 UDP(User Datagram Protocol)를 이용하여 작동한다. 기본적으로 UDP 포트 69번을 사용하며, 전송할 파일의 이름과 위치를 포함하는 요청 메시지를 TFTP 서버에 보낸다. 이후 TFTP 서버는 파일을 찾아서 클라이언트에게 전송하는데, 전송 과정에서는 오류 검사와 재전송을 처리하는 기능이 내장되어 있다. TFTP는 파일 전송 속도가 느리고 오류 처리 기능이 FTP와 비교해 상대적으로 취약하다는 단점이 있지만, 작은 파일을 .. 2023. 4. 10.
C ] float to hex / hex to float Converter 2023.04.09 - [프로그래밍/C# (WinForms)] - C#, WinForms ] float to hex / hex to float Converter C#, WinForms ] float to hex / hex to float Converter 필요에 의해서 만들었다. 내가 예전에 소개한 float to hex converter 사이트랑 달리 시스템 아키텍쳐에 따라 메모리에 저장된 대로 보여준다. 디자이너 부분을 먼저 살펴보면 Form은 사용자가 크기를 eteo.tistory.com 위 글에서 WinForms로 만든 float to hex / hex to float Converter를 C언어로 간단히 구현해 본 것. 예외처리나 옵션 없이 리틀엔디안으로 변환하는 기능만 넣었다. #include .. 2023. 4. 9.
C#, WinForms ] float to hex / hex to float Converter 엔디안을 선택하면 시스템 아키텍쳐에 따라 메모리에 저장된 대로 보여주고, Hex값은 0x 접두사를 붙이거나 혹은 공백 구분자를 두거나 선택할 수 있게했다. 디자이너 부분을 먼저 살펴보면 Form은 사용자가 크기를 변경할 수 없도록 FormBorderStyle을 FixedSingle로 하고 Form에 있는 Font들이 다 상속받을 수 있도록 기본 Font를 설정한다. 라디오버튼과 변환 부분은 panel을 사용해 구분 짓고, 변환 후 결과를 보여주는 textBox는 사용자가 copy만 할 수 있게 ReadOnly 속성을 true로 하였다. this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedSingle; this.Font = new System.. 2023. 4. 9.
C#, LINQ ] Enumerable 클래스, Range(), Select(), Where(), ToArray() 메서드 LINQ LINQ(Language Integrated Query)는 .NET Framework에서 데이터 쿼리를 지원하기 위해 도입된 기술로, C# 및 VB.NET에서 사용할 수 있는 쿼리 언어이다. SQL과 유사한 쿼리 구문을 사용하여 데이터를 검색, 정렬, 필터링, 그룹화 및 조작할 수 있으며, System.Linq 네임스페이스에 속하는 다양한 클래스와 메서드를 제공한다. 이 네임스페이스에는 Enumerable, Queryable, Grouping, Lookup, OrderedEnumerable 등의 클래스가 포함되어 있고, Enumerable 클래스는 LINQ to Objects를 위한 확장 메서드를 제공하며, Queryable 클래스는 LINQ to SQL, LINQ to Entities, LIN.. 2023. 4. 9.
C++ ] leetCode 2610 - Convert an Array Into a 2D Array With Conditions You are given an integer array nums. You need to create a 2D array from nums satisfying the following conditions: The 2D array should contain only the elements of the array nums. Each row in the 2D array contains distinct integers. The number of rows in the 2D array should be minimal. Return the resulting array. If there are multiple answers, return any of them. Note that the 2D array can have a.. 2023. 4. 9.
비글본 블랙 시작하기 같이온 USB케이블을 통해 비글본 블랙의 mini USB P4포트와 PC를 연결한다. 비글본 블랙은 eMMC에 데비안 계열 리눅스 배포판이 저장된 채로 출고되기 때문에 USB포트를 통해 전원이 공급되면 저장된 운영체제 이미지로 부팅된다. 부팅이 되고나면 조금 후 FAT 파일시스템의 드라이브가 잡힌다. 안에 들어가 START.htm 문서를 확인하면 처음 시작하는 사람들을 위한 가이드를 볼 수 있다. 아래 경로로 들어가면 Ethernet over USB interface 를 사용하기 위한 드라이버 파일이 있다. \Drivers\Windows 서명되지 않은 드라이버라 설치 실패했다. Win + I 키를 눌러 Windows 설정 ↓ 업데이트 및 보안 ↓ 복구 ↓ 고급시작 옵션 ↓ 지금 다시 시작 ↓ 재부팅 후 .. 2023. 4. 9.
비글본 블랙 ] 전원 공급 방법 1. USB 포트를 통해 전원을 공급하는 방법 The board can be powered by the PC via the provided USB port. In this configuration, The board is accessed either as a USB storage drive or via the browser on the PC. All the power for the board is provided by the PC via the USB cable. In some instances, the PC may not be able to supply sufficient power for the board. In that case, an external 5VDC power supply can be u.. 2023. 4. 9.
비글본 블랙 BeagleBone Black(BBB) 공식 홈페이지 : https://beagleboard.org/ System Reference Manual : https://docs.beagleboard.org/latest/boards/beaglebone/black/ Beaglebone Black은 텍사스 인스트루먼트(Texas Instruments)에서 설계한 유명 싱글 보드 컴퓨터(SBC)이다. TI Sitara AM335x 시스템온칩(SoC)을 기반으로 하며, 1GHz에서 작동하는 ARM Cortex-A8 CPU를 포함하고 있다. 개발자는 BeagloeBone Black을 통해 저비용으로 임베디드 리눅스 개발을 시작할 수 있고 규모있는 커뮤니티에서 다양한 지원을 받을 수 있다. 또한 BeagleBone Black은 오픈 소스 하드웨어라서 Beagl.. 2023. 4. 9.
반응형