【迅为iTop4412学习笔记】2. make menuconfig即Kconfig的仿写(简单说说,但是很重要)

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_39057987/article/details/84313985

在写第5篇的注册驱动的时候,发现还是要写一下这里,这里其实就围绕了Kconfig展开

make menuconfig 是图形化配置界面,Kconfig是真正背后修改的文件。

看一下linux的结构会发现,目录里有个Kconfig,而它包含了子目录下的Kconfig,子目录的Kconfig又包含了他的子目录的Kconfig。

到此其实应该就明白了,linux源码是分层的,每一层里都有一个Kconfig文件。

举个例子,老板手下有3个经理,每个经理手下有5个组长,每个组长手下有10个人。老板当然不会管理所有人(难管理+累),大家都管好自己的手下即可,这样也就管理了所有人。

make menuconfig就是从主目录的Kconfig(老板)开始搜索,一层一层(老板->经理->组长->组员)的搜下去,这样,整个linux就全部呈现在眼前了,我们裁剪linux,也就是选择需要的,剔除不要的。

在注册驱动的时候,需要定义的宏定义就是在本章节仿照已有的LEDS来仿写的。

一方面是为了配置宏定义,一方面也是在make menuconfig中添加选项。

因为仿写的是LEDS,LEDS是字符设备,路径是drivers/char,而我们需要修改的是字符设备里的Kconfig

vim drivers/char/Kconfig

搜索LEDS 然后仿写一个就行了,我这就叫MRYANG_CTL吧

config LEDS_CTL
        bool "Enable LEDS config"
        default y
        help
          Enable LEDS config

config MRYANG_CTL
        bool "Enable MRYANG config"
        default y
        help
          Study Kconfig

下面这个就是我仿写的,bool表示开关两个选项,还有三个选项的叫tristate,这个百度搜一下,都很简单。
这里的定义在注册设备时至关重要,请记住你定义的宏定义的名字…

=========================================================

东西比较简单,稍微记录一下,有空再来完整写。
以下只是个草稿

虚拟机Ubuntu版
linux内核参考:https://yq.aliyun.com/articles/594992?utm_content=m_50735
wget https://cdn.kernel.org/pub/linux/kernel/v4.x/linux-4.19.2.tar.xz
xz -d .tar.xz
tar -xvf .tar
cd linux

sudo apt-get install git fakeroot build-essential ncurses-dev xz-utils libssl-dev bc flex libelf-dev bison
cp /boot/config-$(uname -r) .config
make menuconfig
ssh窗口要够大 不然显示不了会失败

/Device Drivers/Character devices

vim drivers/char/Kconfig

make menuconfig就有了

猜你喜欢

转载自blog.csdn.net/qq_39057987/article/details/84313985