어느 개발자의 블로그
총방문자
오늘
어제
펌웨어를 위한 C언어 1분코딩강좌 #06 포인터 기초
안녕하세요 코저씨입니다. 오늘도 포인터에 대해 알아보겠습니다. 포인터와 배열은 같으면서도 다른 구조를 가지고 있습니다. 아래 영상에서는 포인터와 배열이 어떻게 다른지와 어째서 포인터가 어려운지를 설명하고 있습니다. 많은 시청바랍니다. 감사합니다.
펌웨어를 위한 C언어 1분코딩강좌 #05 포인터 기초
안녕하세요 코저씨입니다 이번엔 c언어 교재에 맨날 맨뒤에 나오는 포인터에 대해 알아보겠습니다. 사실 포인터가 c언어의 가장 중요하거나 그런 건 아닙니다. 메모리 주소를 직접 제어해서 어려워 보이는 거지 펌웨어라면 레지스터 직접 쓰고 읽는 것과 같습니다 특히 배열과 포인터를 많이 어려워하는데 이번엔 포인터를 왜 쓰는지에 대해 먼저 알아보겠습니다 (내용이 길어져서 1부, 2부로 나누었습니다)
펌웨어를 위한 C언어 1분코딩강좌 #04 rand()함수 분석 및 실무 팁
안녕하세요 오늘은 랜덤값 생성함수 rand()의 동작원리와 실제 실무에서 어떻게 사용되나 알아 보겠습니다. 입력된 seed값을 초기값으로 해서 시프트와 xor연산을 합니다. 그래서 y값을 알면 다음값을 예상이 가능합니다. rand()함수는 맥어드레스가 입력되기 전의 제품의 임의의 맥주소를 만들때 사용됩니다. 이때도 제품생산에 이슈가 있었는데 이건 아래 강좌영상에 확인해주세요
1바이트를 n배수로 증가시켜 리턴하는 함수
이번엔 생각외로 머리쓰며 만든 함수이다. 1바이트를 n배만큼 증가하여 배열로 리턴시켜주는 함수... 이 녀석은 생성된 이미지를 원하는 크기만큼 Enlarge 시켜주기 위한 함수로 만들었다.. 소스는 다음과 같다.. 메인 함수는 ByteXNum함수이고 0x81을 2배하면 0xC0 03 3배하면 0xE0 00 07 이 나온다. 개발환경때문에 1~16배 까지만 된다. // test_qr.cpp : Defines the entry point for the console application. // #include "stdafx.h" #include #include #include unsigned char buf[20]; unsigned char rotate_shift(unsigned char shift_n,un..
게임보이와 Hello world #게임보이개발
최근 게임보이로 비트코인 채굴을 했다는 뉴스를 보았다. 단말기에 둠을 돌리고 싶었던 그 충동과 같이 당연히 해보고 싶다는 생각이 들었다. 게임보이를 개발하려면 gbdk라는 개발툴이 필요했다. 아래 링크를 통해 gbdk를 받았다. https://github.com/gbdk-2020/gbdk-2020 IDE도 설치해야 했지만 그건 다음으로 미루고 제일 먼저 해봐야 하는 hello world! 출력을 해보기로했다. https://github.com/mrombout/gbdk_playground/blob/master/hello_world/hello_world.c #include // Includes `` it contains funtions for basic file/console input and //out..
(C언어) 구조체 배열 캐스팅하기
펌웨어를 만들면서 겪는 일중 하나는 메모리 이슈이다. 메모리가 부족하다... 애플리케이션 개발자에게는 메모리 800바이트는 용량인가? 할 정도로 작은 영역이지만.. 16k sram으로 개발하는 펌웨어 개발자에게는 큰 용량.. 오늘 프로그램을 짜는데 800바이트의 구조체를 만들어야 했다. 하지만 버퍼로 사용하는 배열을 이용해서 처리하려고 머리를 쓰다 보니 아직도 헷갈리는 부분이 있다. 자료 관리를 위해 구조체를 선택했는데 이를 포인터로 선언하고 char 배열 주소를 넘겨 주는 것으로 했다. 보통 캐스팅은 으로 구성되는데 내 환경은 다음과 같다. tStructXXX 구조체가 12개를 가진 구조체 배열 포인터를 선언하고 buf 배열을 주소로 넣어주기.. 캐스팅 1줄이면 되겠지 했는데.. 빌드 에러만..
J-Link 의 시리얼 넘버 가져오기
단순 개발할 때는 몰라도 되는 기능이지만 양산 등으로 인하여 J-Link 별 다운로드를 각각 해야 하는 경우 우선 J-Link의 시리얼 넘버를 알아야 한다. 우선 PC에서 "adapter_packs\inspect_emdll"를 찾는다. 그리고 그 폴더에서 inspect_emdll.exe를 찾은 다음 cmd 창에서 다음과 같이 실행한다. 그러면 J-Link의 시리얼 넘버를 가져올 수 있다.
펌웨어를 위한 C언어 1분코딩강좌 #03 로또프로그램 만들기
안녕하세요 코저씨입니다. 이번에는 c언어로 로또 프로그램을 만들기 위해 필요한 rand()함수 사용법과 개발에 도움이 되는 엑셀과 노트패드(notepad++)의 사용법에 대해 알아보겠습니다.
1분코딩강좌 #02 숏코딩편 [for,if-else,삼항연산자,비교연산자]
안녕하세요 두번째 1분코딩 강좌입니다. 오늘은 코드 글자수를 줄이는 숏코딩에 대해 알아 보겠습니다. 아무 생각없이 사용하던 for문의 for ( ; ; ) 문법 사이를 응용하는 방법과 if와else를 삼항연산자로 1줄로 줄이는 방법 그리고 if문을 안쓰고 비교문을 작성하는 방법에 대해 알아 보겠습니다. 감사합니다.
EFR32 USART / LEUAR 시리얼 통신비교
EFR32의 시리얼통신은 2가지가 있는데 일반 USART와 다른 하나는 저전력 LEUART 이다. LEUART는 에너지모드 lv2 (슬립모드) 에서도 wake up 이 되기 때문에 저전력을 유지해야 하는 경우 필수가 된다. LEUART의 클럭은 32.768khz 크리스탈 또는 내부 32.768khz 오실레이터에서 받아서 사용이 가능하다. LEUART 초기화 함수 내부 오실레이터로도 LEUART 사용이 가능한데 다만 cpu 상태(온도 등)에 따라 오차가 발생할수있다. 선택가능한 클럭 위 사진은 내부 오실래이터로 LEUART 시리얼통신을 한 경우인데 9600bps 인데도 에러가 중간중간 발생했다. 외부 크리스탈을 쓴 경우는 아주 깔끔하게 데이터를 수신을 받고 있다.