内核编译:Makefile
条件编译
先拷贝一个默认的配置到.config
(官方所有的默认配置文件在arch/arm/configs下)
我使用的是内核源码顶层目录下的config_mini2440_td35
在Kconfig中定义menuconfig中的可配置选项
make menuconfig //可视化配置菜单 --内核活地图
.config
#define CONFIG_LED y
#define CONFIG_XX2 n
#define CONFIG XX3 y
Makefile
Obj-$(CONFIG LED) += xx1.o
0bj-$(CONFIG XX2) += xx2.o
0bj-$(CONFIG_XX3) += xx3.o
如果要添加一个新kconfig的文件到menuconfig中则需要在Kconfig中添加
source drivers/char/my_kconfig/Kconfig
内核编译
第一次编译内核
1. cp config_mini2440_td35 .config
2.make menuconfig 每次有文件增删时
3.make uImage:每次编译
lmage可以直接用的内核映像
zImage一段解压程序 + Image的压缩包
ulmage 64字节的头信息(压缩类型,大小)+zImage
向内核新增文件:向drivers/char下增加xxx.c
1.在drivers/char下创建并编辑xxx.c
2.在同层的Makefile中新增一行
0BJ-$(CONFIG XXX)+= xxx.o
3.在同层目录下的Kconfig文件中新增一个配置选项
4. make menuconfig 将新加的选项选中
5.make ulmage
驱动(程序):驱使设备行动的程序
驱动程序要素
1.确定一个设备号
2.实现必要的系统调用方法(open read...)
3.绑定设备号和对应的操作方法
4.向内核注册该驱动节点
设备号:32位的数字
高12位 主设备号 设备类型
低20位 次设备号 同类设备的编号
手动创建设备节点:
mknod /dev/demo c 255 0
/dev/demo设备节点名
c 设备类型
255 主设备号
0 次设备号