三周从STM32入门linux学习笔记
一. 移植u-boot编译步骤:
1. 解压缩
tar -xjf u-boot-1.1.6.tar.bz2
2. 打补丁
patch -p1 < ../u-boot-1.1.6_jz2440.patch
3. 配置
make 100ask24x0_config
4. 编译
make
二. 移植kernel步骤:
1. 解压缩
tar xjf linux-2.6.22.6.tar.bz2
2. 打补丁
patch -p1 < ../linux-2.6.22.6_jz2440_v1.patch
3. 配置
-
make menuconfig
-
使用默认配置,在上面修改
-
使用厂家提供的配置文件
在内核中查找配置文件
find -name "*defconfig"
在arch/arm/configs中找到相似的配置文件,然后执行
make xxxxx_defconfig
make menuconfig
进入菜单然后开始配置内核
4. 编译
make uImage //生成内核的uImage
删除文件系统:
nand erase root
三. 文件系统
内核作用是启动应用程序,第一个应用程序是 /sbin/init
1.init程序
init程序步骤:
1.1读取配置文件
1.2解析配置文件
1.3执行用户程序
具体看源代码
2.配置编译busybox
进入菜单配置busybox
make menuconfig
编译刚配置好的busybox
make
安装
make CONFIG_PREFIX=PATH install
3.创建最小根文件系统
在目录下新建一个dev目录
mkdir dev
创建console和null设备文件
ls /dev/console /dev/null -l //获取设备信息
sudo mknod console c 5 1 //创建console设备
sudo mknod null c 1 3 //创建null设备
写入配置项
vi etc/inittab
1 console::askfirst:-/bin/sh
2 ::sysinit:/etc/init.d/rcS
mkdir etc/init.d
vi /etc/init.d/rcS
挂在文件系统
1 mount -a
2 mkdir /dev/pts
3 mount -t devpts devpts /dev/pts
4 echo /sbin/mdev > /proc/sys/kernel/hotplug
5 mdev -s
复制pc机上的C库
cp *.so.* /home/book/2440/first_fs/lib/ -d
安装yaffs工具
sudo cp mkyaffs2image /usr/local/bin/
sudo chmod +x /usr/local/bin/mkyaffs2image //加上可执行属性
创建文件系统映像
mkyaffs2image first_fs first_fs.yaffs2
挂载NFS
一、尝试挂载自己的服务器
sudo vi /etc/exports
在最后加上:
/home/book/2440/first_fs *(rw,sync,no_root_squash)
在控制台输入,尝试能不能挂载
sudo mount -t nfs 192.168.58.129:/home/book/2440/first_fs /mnt
二、单板挂载
在目录下
mkdir /mnt
mount -t nfs -o nolock 192.168.x.xx:/home/book/2440/first_fs /mnt
在mnt上看到的就是服务器上的文件
四. 字符设备驱动框架
应用程序一般用open、read、write调用驱动程序
调用驱动需要写驱动程序框架
//打印函数、和printf一样的用法
printk();
//将内核里的数据考入
int val;
copy_from_user(&val, buf, count);