추가적으로 만든 소스코드가(빌드후) 커널 이미지 설치가 안되는 것 같습니다.
일단 아직 리눅스를 빙산의 일각 만큼만 아는 초심자라 답답해도 이점은 양해를 부탁합니다.
먼저 소스코드부터 보여드리면
rpi_kernel_src/linux(커널소스 디렉토리)/drivers/soc/bcm/rpi_debugfs.c
/* (C) 2019 Austin Kim <austindh.kim@gmail>
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 2 as
* published by the Free Software Foundation.
*
* Author:
* Austin Kim <austindh.kim@gmail>
*/
#include <linux/module.h>
#include <linux/moduleparam.h>
#include <linux/platform_device.h>
#include <linux/io.h>
#include <linux/init.h>
#include <linux/memblock.h>
#include <linux/slab.h>
#include <linux/of.h>
#include <linux/of_address.h>
#include <linux/cpu.h>
#include <linux/delay.h>
#include <asm/setup.h>
#include <linux/input.h>
#include <linux/debugfs.h>
uint32_t raspbian_debug_state = 0x1000;
static struct dentry *raspbian_kernel_debug_debugfs_iface_root;
static int raspbian_kernel_debug_iface_debugfs_get(void *data, u64 *val)
{
printk("===[%s][L:%d][val:%d]===\n", __func__, __LINE__, raspbian_debug_state);
*val = raspbian_debug_state;
printk("[KERNEL]===[%s][L:%d]==\n", __func__, __LINE__);
return 0;
}
static int raspbian_kernel_debug_iface_debugfs_set(void *data, u64 val)
{
raspbian_debug_state = (uint32_t)val;
printk("[raspbian] [%s][L:%d], raspbian_debug_state[%lu],value[%lu]===\n",
__func__, __LINE__, (long unsigned int)raspbian_debug_state, (long unsigned int)val);
return 0;
}
DEFINE_SIMPLE_ATTRIBUTE(raspbian_kernel_debug_iface_debugfs_fops, raspbian_kernel_debug_iface_debugfs_get, raspbian_kernel_debug_iface_debugfs_set, "%llu\n");
static struct platform_driver kernel_bsp_debug_driver = {
.driver = {
.owner = THIS_MODULE,
.name = "raspbian_debug_iface",
},
};
static int __init raspbian_kernel_debug_init(void)
{
printk("===[%s][L:%d]===\n", __func__, __LINE__);
raspbian_kernel_debug_debugfs_iface_root = debugfs_create_dir("raspbian_debug_iface", NULL);
debugfs_create_file("val", S_IRUGO, raspbian_kernel_debug_debugfs_iface_root, NULL, &raspbian_kernel_debug_iface_debugfs_fops);
return platform_driver_register(&kernel_bsp_debug_driver);
}
late_initcall(raspbian_kernel_debug_init);
MODULE_DESCRIPTION("raspberrypi debug interface driver");
MODULE_AUTHOR("Austin Kim <austindh.kim@gmail.com>");
MODULE_LICENSE("GPL");저작권은 디버깅을 통해 배우는 리눅스커널의 구조와 원리 1권 중 121페이지에 있습니다.
다음으로 커널 빌드를 하고나면
rpi_kernel_src/out(컴파일된 디렉토리)/drivers/soc/bcm/rpi_debugfs.o
파일이 생기는것 까지는 확인 했습니다.
다음으로
rpi_kernel_src/linux/drivers/soc/bcm/Makefile를 패치해주고
# SPDX-Lincense-Identifier: GPL-2.0-only
obj-$(CONFIG_BCM2835POWER) +=bcm2835-power.o
obj-$(CONFIG_RASPBERRYPI_POWER) +=raspberrypi-power.o
obj-$(CONFIG_RASPBERRYPI_POWER) +=rpi_debugfs.o (추가)
obj-$(CONFIG_SOC_BCM63XX) +=bcm63XX/
obj-$(CONFIG_SOC_BRCMSTB) +=brcmstb/
커널 이미지를 설치 하고 리부팅을 했습니다.
만약 정상적으로 됬다면
/sys/kernel/debug/raspbian_debug_iface/ 디렉토리가 생기고
./val 파일이 생겨야 되지만
현재 아무것도 생기지는 않았습니다.
오류도 안 나오고 컴파일이나 이미지 설치는 잘되는데 결과가 안 좋습니다.
이 글을 작성하면서 생각해본 건데 아마 Makefile에서 주석 문구가 힌트가 아닐까 추측중입니다.


obj-y +=rpi_debugfs.o
obj-y +=rpi_debugfs.o
이렇게 하는것이 맞을겁니다.
책 복습하다가 소스 헤더파일이 필요해서 검색하다고 이글을 봤습니다.
감사합니다.
고작 블로킹 하나, 고작 25점 중에 1점, 고작 부활동
"만약 그 순간이 온다면 그때가 네가 배구에 빠지는 순간이야"
댓글 달기