I2C에 연결된 LED Matrix 밝기 제어 sensehat 모듈에 LED matrix가 i2c로 설치, 연결되어 있다. LED2472G가 각 연결된 LED를 제어하는데, AVR이 i2c로 라즈베리 파이와 LED2472G 를 중계한다. LED를 제어한다고 LED2472G datasheet를 찾으면 별 도움이 안된다. AVR로 led를 어떻게 제어하는지 잘 공개되지 않은 듯 하다. 아무리 찾아도 c로 작성한 코드를 찾을 수 없다. i2c 0x46에 0~191까지 밝기를…… sensehat i2c led2472g 계속 읽기
sensehat i2c hts221
HTS221 temperature conversion 데이터 시트에 수식을 정확하게 써야지, linear interpolation을 머 이리 어렵게 썼는지.. U가 or 같은데, 정확하게 어떤 의미로 썼는지 모르겠다. 하. T0_DegC, T_DegC, T1_DegC, T0_OUT, T_OUT, T1_OUT을 모두 확인 한 후에 위 그래프로 알아서 구하라는 말이었다. 미친!!! 위 식대로 하면 172도를 볼 수 있다. stack overflow에 있듯이 T0_degC, T1_degC가 10비트임을 인식해야 한다. T0T1MSB에…… sensehat i2c hts221 계속 읽기
unkown symbol
insmod 실행 시 unknown symbol 에러 가끔 모듈을 컴파일 하여 insmod로 추가할 때 unknown symbol 에러로 추가가 안 될 경우가 있다. xpad.c를 따라할 때 해당 함수를 찾아 지우고 했지만, 이번 sensehat을 사용하려는 기본 함수는 지울 수 없어 이유를 찾아야 했다. [ 8890.395611] sensehat_core: loading out-of-tree module taints kernel. [ 8890.395805] sensehat_core: Unknown symbol __devm_regmap_init_i2c (err…… unkown symbol 계속 읽기
linux pages
Pages 연속된 메모리를 할당을 테스트 했다. dmes로 보면 어느 정도 출력하다 끊어 버린다. 마지막 데이터를 확인 했다. #include<linux/kernel.h> #include<linux/init.h> #include<linux/module.h> #include <linux/slab.h> #include <linux/mempool.h> #define PAGES_ORDER 2 char* data; static int __init hello_world_init(void) /* Constructor */ { printk(KERN_INFO “hello, pages\n”); /* memory 할당*/ data = (char*)__get_free_pages(GFP_KERNEL, PAGES_ORDER); if (!data){ printk(“no pages allocated\n”); return ENOMEM; }…… linux pages 계속 읽기
linux memory pools
memory pools cache memory에 이어 memory pools를 실습했다. 역시 책만 보면 잘 모른다. nvme 드라이버- drivers/nvme/target/io-cmd-file.c – 중 mempool 관련 코드를 찾을 수 있다. #include<linux/kernel.h> #include<linux/init.h> #include<linux/module.h> #include <linux/slab.h> #include <linux/mempool.h> #define scullc_quantum 16 /* declare one cache pointer: use it for all devices */ /* kmem_cache_t 가 kmem_cache로 변경됨*/ struct kmem_cache *scullc_cache; static const…… linux memory pools 계속 읽기