第4季-内核驱动奥秘多
专题1-课程规划与学习方法
专题2-U-Boot新手入门
解压uboot源码,在源码中搜索开发板相关
然后可以看到哈偶哦编译选项
- 配置U-Boot
TQ210: make TQ210_config
Smart210: make smart210_config
OK210: make forlinx_linux_config
OK6410: make forlinx_nand_ram256_config
Tiny6410: make tiny6410_config
TQ2440: make TQ2440_config
Mini2440: make mini2440_config
我是6410开发板,所以
make forlinx_nand_ram256_config
然后只需要写前缀,工具链后面会自动补全的
make ARCH=arm CROSS_COMPILE=arm-linux-
完了将uboot烧写到开发板
开发板从nandflash启动
q退出菜单模式
printenv 显示当前的环境变量
print ipaddr
ipaddr=192.168.2.111
setenv filename text设置环境变量
setenv filename 空着则是删除环境变量
saveenv 保存环境变量
专题3-嵌入式Linux内核制作
第1课-Linux内核简介
1.1 linux的系统结构
GNU linux 分为user space+kernal space两部分
为什么要划分为用户空间和内核空间呢?
在不同的模式下,可以访问的权限是不一样的,主要是为了对操作系统保护。
用户空间和内核空间 的切换
内核组成
七个模块:系统调用接口(SCI),进程管理模块(PM),内存管理(MM),Arch体系架构相关,VFS虚拟文件系统,networkstack网络协议,DD设备驱动程序
内核源代码地址:
www.kernel,org
内核文件结构:
arch :体系结构相关的代码,对于处理器划分
documentation:文档
drivers:驱动
fs:文件系统
net:网络协议
第2课-Linux内核配置与编译
1.使用make menuconfig配置内核
在、boot目录下由配置文件
在/arch/arm/config下有各种开发板的配置文件
2.编译内核映像
make zImage V=1大小小于512K
make bzImage V=1比较大的内核
编译好的内核位于arch//boot目录下
3.编译内核模块 make modules
编译完成之后就散落在内核源码之中
make modules install就是将模块都移动到/lib/modules下
会生成和内核版本一样的名字的文件夹
4.打包内核
****mkinitrd initrd -$version
v
e
r
s
i
o
n
∗
∗
∗
∗
第
一
个
代
表
打
包
的
名
字
,
第
二
个
代
表
打
包
的
目
录
,
也
就
是
生
成
的
文
件
夹
(
此
处
没
有
做
尝
试
)
∗
version****第一个代表打包的名字,第二个代表打包的目录,也就是生成的文件夹(此处没有做尝试) *
version∗∗∗∗第一个代表打包的名字,第二个代表打包的目录,也就是生成的文件夹(此处没有做尝试)∗version可以通过查询/lib/modules下的目录查询
完了会在运行的目录下产生文件
5.安装内核
复制一遍,修改相对的位置,重启
uname -r显示当前运行的内核版本
6.清理内核
make clean清理中间.o文件
make distclean清理配置文件
第3课-嵌入式Linux内核制作
2.内核制作步骤
1.清除所有配置和中间文件
x86:make distclean
arm:make distclean
内核代码在对应的文件
1.解压:进入目录
2.make distclean
3.x86 :make menuconfig
arm:make menuconfig ARCH=arm
一般开发板厂家会给配置文件
改名.config
如果生效就保存退出
4.编译内核
x86:make bzImage
arm:make uImage ARCH=arm CROSS_COMPILE=arm-linux-
在编译会报错,因为201需要加头,加头工具是mkimage,在uboot下的tools下
需要拷贝到内核目录下才可以
启动内核在最后会报错,因为没有文件系统,内核在启动文件系统会报错。