전체 글 35

[Device Driver] I2C device driver

해당 글은 다음 글을 참조하여 쓰여짐. https://embetronicx.com/tutorials/linux/device-drivers/i2c-linux-device-driver-using-raspberry-pi/ 또한, 본 예제에서는 SSD1306을 사용하고 있음. I2C란? I2C bus는 사용하기 쉬워서 많이 쓰인다. I2C bus에는 하나 이상의 master가 있을 수 있고, 여러 개의 I2C기기를 연결하기 위해서 두개의 pull-up register만 필요하다. I2C는 하나의 비트를 읽고 쓰는 function 외에는 Start, Stop 조건을 생성해주기만 하면 되므로 굉장히 느린 속도의 GPIO pin을 가진 microcontroller도 사용할 수 있다. 기본적인 I2C 통신은 1 바이트..

Linux 2023.09.01

[Device Driver] Platform Device

platform Device란 무엇인가? Platform device driver는 무엇이고 왜 쓰는가..? 이게 내가 처음 platform device driver에 대해서 공부하기 시작했을 때에 들었던 의문이고 오랫동안 풀리지 않던 궁금증이었다. 인터넷에 찾아보면 다음과 같은 정의가 나온다. Platform drivers 플랫폼 디바이스는 struct platform_device 로 정의되며 에서 찾을 수 있다. 이러한 장치는 가상 "플랫폼 버스"에 연결된 것으로 간주된다. 출처: '대체 이게 뭔소리야...?' 라는 게 내가 처음 이 문장을 보고 생각했던 것이었다. 왜냐면 이 문장을 이해하기 위해서는 device model에 대한 기본지식이 있어야 하기 때문이다. Device model Device ..

Linux 2023.08.02

[Device Driver] Character device driver의 개념

해당 본문은 "Linux driver development for embedded processors: second edition"을 참고하여 작성되었다. 개요 먼저, 오늘은 character device driver에 대해서 공부해볼 것이다. 아직 device driver를 한번도 작성해본 경험이 없다면 아래 예제를 먼저 수행하고 오자. [Linux] 가장 기본적인 device driver 오늘은 아주아주 간단한 device driver 예제를 작성해보고자 한다. Device Driver란? 디바이스 드라이버 : 시스템이 지원하는 하드웨어를 프로그램에서 사용할 수 있도록 커널에서 제공하는 라이브러리 dev-growbook91.tistory.com 먼저, 기본적인 것부터 말해보자면 device drive..

카테고리 없음 2023.07.22

[Device Driver] 가장 기본적인 device driver

오늘은 아주아주 간단한 device driver 예제를 작성해보고자 한다. Device Driver란? 디바이스 드라이버 : 시스템이 지원하는 하드웨어를 프로그램에서 사용할 수 있도록 커널에서 제공하는 라이브러리 간단하게 말하면 응용프로그램에서 하드웨어 직접적으로 접근하지 못하게 설계되어 있어서 device driver를 통해서 우회하는 것이다. 원래는 시스템 호출 방식만이 존재하였으나 시스템에서 사용하는 하드웨어가 늘어나면서 문제가 발생하면서 디바이스 드라이버를 사용. 그냥 한 마디로 하면 하드웨어에 접근하려고 device driver를 작성한다. 그럼 거두절미 하고 일단 코드를 작성해보자. #include #include #include static int __init my_init(void){ pr..

Linux 2023.07.05

[SimpleChatApp] LiveData를 ViewModel없이 구현

LiveData 오늘은 LiveData에 대해서 공부해봤다. 일단, LiveData의 필요성을 느끼게 된 것은 DB가 읽어들인 user의 정보를 띄우지 못해서 였다. 처음에 이걸 보고 조금 당황스러웠지만 받아온 정보를 출력해봤을 때 변수로는 받아오는데 UI에서 update가 되지 않아서 발생하는 문제였다. 내가 앱 개발이 아예 처음이었으면 몰랐겠지만 그래도 flutter를 1년간 열심히 개발했던 경험이 있어서 뭐가 문제인지 파악할 수 있었다. 그래서 flutter에서 사용되는 getx같은 라이브러리가 android에도 있는지 살펴봤다. 후보는 RxJava와 LiveData였다. 일단, RxJava는 난이도가 상당하다는 후기가 있었다. 그리고나서 LiveData를 봤는데 MVVM을 구현하기 위해서 내가 공..

[SimpleChatApp] 5, 6일차

MVVM 난 flutter로 개발할 때에도 firebase를 썼기 때문에 이번에도 firebase를 통해서 개발을 시작하려고 한다. 먼저, firebase를 적용하기 앞서서 제대로 된 개발을 하려면 design pattern에도 신경을 써야 할 것 같아서 MVVM을 쓸려고 했다. 그런데 MVVM을 시도하기에는 여러 장벽이 있었다. 먼저 제대로 된 정의가 없었다. https://deque.tistory.com/108 Android Kotlin MVVM패턴으로 간단한 검색 앱 만들기 - 1. BaseView, BaseViewModel을 작성하여 MVVM의 토대 만 MVVM 패턴과 Kotlin으로 간단한 앱을 만드는 것에 대해 글을 써보려고 합니다. 저도 정리를 좀 하고, 다른 분들도 도움이 좀 되셨으면 하는..

[SimpleChatApp] Google Sign In

원래는 몇 일차로 했는데 오늘은 google sign in에 대해서 다루어 보려고 하기 때문에 제목을 google sign in으로 했다. 사실 어제부터 firebase를 시작했는데 생각해보니까 제대로 firebase로 데이터를 다룰려고 하면 로그인부터 해야 할 것 같아서 먼저 제일 기본적이고 중요한 google sign in을 구현하려고 했다. 선택지 크게 세 가지 선택지가 있었다. - 기본적인 google Sign In - One Tap Sign-in - Firebase Auth 사용하기 일단, 세 가지 다 시도는 해봤다. 제일 먼저 One Tap Sign-in이 제일 멋있을 거 같아서 해봤는데 예제 코드가 너무 불친절했다. 그리고 One Tap Sign-in은 login 화면을 따로 구현하지 않고 ..

[SimpleChatApp] 3일차

Fragment에서 findViewById() 처음에 그냥 findViewById를 할려고 했는데 fragment에서는 그냥 findViewById를 할 수 없었다. 그래서 아래와 같이 inflater.inflate()로 얻어진 ViewGroup을 통해서 findViewById를 해야 한다. @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { ViewGroup rootView = (ViewGroup)inflater.inflate(R.layout.fragment_main_menu_friend, container, false); RecyclerView friendL..

[SimpleChatApp] 2일차

사실 오늘은 다른 sample code를 참고하면서 앱개발을 해보려고 했는데 마땅한 게 없어서 마저 하던 개발을 했다. ActionBar 제거하는 법 난 일단, 카톡에서 그러하듯이 bottom navigation view를 통해서 들어가는 fragment마다 다른 appbar가 보여지기를 원했는데 안드로이드에서는 기본적으로 공통된 ActionBar를 사용하고 있어서 먼저 ActionBar를 off해야 했다. 방법은 세 가지가 있다. 두 가지는 여기에 소개된 방법이고, https://lakue.tistory.com/48 [Android/안드로이드] 타이틀바(액션바) 제거 앱을 만들다보면 상단에 타이틀바(액변바)를 없애고 싶은 경우가 많습니다. 액션바를 업애기 위해서는 java코드로 없애는 방법과 style..

[SimpleChatApp] 1일차

.gitIgnore 먼저 Git에 commit하면서 개발을 진행하려고 하기에 gitIgnore도 관리해야 한다. Flutter로 version control을 할 때에도 쓸 떼 없는 local file들이 공유되어서 굉장히 귀찮았던 경험이 있다. 그래서 이번에는 처음 commit을 하기 전에 recommend되는 gitignore를 찾아서 붙여넣었다. 자세한 내용은 아래서 확인하면 된다. https://stackoverflow.com/questions/25693964/first-commit-android-studio-project-what-should-leave-out First commit Android Studio Project -- What should leave out? I am doing my ..