嵌入式环境搭建之开发板软件环境

来源:互联网 发布:盘古数据最新消息 编辑:程序博客网 时间:2024/05/01 13:23

转载请注明出处:http://blog.csdn.net/ruoyunliufeng/article/details/44995039


开发板软件环境:uboot(用官方给的,后续我会考虑分析移植)

                            内核(本来想用官方的降低难度,但给的不支持nfs,简单更改下吧,后续考虑移植精简新内核)

                            文件系统(移植最小文件系统)

1.修改开发板官方内核支持nfs

          a.用ftp工具从主机拷贝内核到虚拟机,然后解压

          b.copy 官方配置文件 .config(不同开发板配置文件不同,我的操作是cp config_for_linux .config

          c.make menuconfig

             出错:我碰见过两种,第一种错误是终端太小,装不下图形配置。

                                                第二种是缺少ncurses,解决办法$sudo apt-get install libncurses5-dev

          d. 修改配置选项如图

                 

                

               

                            选中  IP: kernel level autoconfiguration

                 更改后保存,然后make

            e.将生成的内核烧进开发板

            f.测试nfs功能

                  mount -t nfs -o nolock 192.168.6.2:/work /mnt

                  如果开发板文件系统的/mnt 挂在到了虚拟机的/work上则证明成功

2.制作最小网络文件系统

           a.下载BusyBox(直接百度,然后进入官网,我下载是最新的稳定版本1.23.2)然后解压

           b.make menuconfig

                   1.修改系统安在哪,叫什么名,如图,这个是我的配置:

                      

                     

                  2.用什么编译器

                       

                      

             c.make 然后  make install之后你的系统应该已经生成了。

             d.把交叉编译器里面的库文件,拷贝到我们的最小网络文件系统中(注意-d选项)

                       cp /usr/local/arm/arm-2009q3/arm-none-linux-gnueabi/libc/lib/* /work/nfs_sys/mini_sys

             e.接下来需要创建几个文件,如果懒得创建的话,我后续把我的文件系统传上来,大家copy下也可以

                 在/etc下创建三个文件 etc/initab   etc/init.d/rcS etc/fstab三个文件内容如下:



etc/fstab             

::sysinit:/etc/init.d/rcSttySAC2::askfirst:-/bin/sh::ctrlaltdel:/sbin/reboot::shutdown:/bin/umount -a -r


etc/init.d/rcS

#!/bin/shifconfig eth0 192.168.6.4mount -amkdir /dev/ptsmount -t devpts devpts /dev/ptsecho /sbin/mdev > /proc/sys/kernel/hotplug<p>echo 0 > /proc/sys/kernel/hung_task_timeout_secs</p> mdev -s




etc/initab

# dev    mount   type      options  dump  fsck   orderproc    /proc    proc      defaults 0      0tmpfs   /tmp     tmpfs     defaults 0      0sysfs   /sys     sysfs     defaults 0      0tmpfs   /dev     tmpfs     defaults 0      0




           除此之外还需要创建/dev文件夹。然后在下面创建这两个设备文件

                   mknod consol c 5 1

                   mknod null c 1 3

                  f.启动开发板uboot修改启动参数,如下:

              set bootargs console=ttySAC2,115200 init=/linuxrc rootfstype=ext4 root=/dev/nfs rw nfsroot=192.168.6.2:/work/nfs_sys/mini_sys ip=192.168.6.4:192.168.6.2:192.168.6.1:255.255.255.0:ruoyun:eth0:off

              如果OK的话,可以保存环境变量,每次开机就可以直接挂在文件系统了。

           g.创建其余目录

              mkdir  proc mnt tmp sys root

             

        h.如果能顺利进入系统,看到这句话Please press Enter to activate this console.那么恭喜你成功了。测试下创建文件,看虚拟机和开发板是否同步(注意不要在tmp文件夹下创建,我发现在此文件夹下,数据不能同步,不知道什么原因)


3.编写第一个驱动

          a.编写驱动文件

#include<linux/init.h>#include<linux/module.h>#include<linux/kernel.h>static int hello_init(void){printk(KERN_ALERT "hello world.\n");return 0;}static void hello_exit(void){printk(KERN_ALERT "exit hello world.\n");}module_init(hello_init);module_exit(hello_exit);MODULE_LICENSE("GPL");


          b.编写Makefile

KERN_DIR = /work/kernel/itop/iTop4412_Kernel_3.0all:make -C $(KERN_DIR) M=`pwd` modules clean:make -C $(KERN_DIR) M=`pwd` modules cleanrm -rf modules.orderobj-m+= hello_drv.o


          c.测试

                   在虚拟机上先make ,生成.ko文件。然后将.ko文件放在开发板启动的网络文件系统中,然后insmod

如果出现hello world。那么证明你成功了。

                   然后rmmod,我在做的时候出现了一个错误。如下:

                               rmmod: can't change directory to '/lib/modules': No such file or directory

                   解决办法就是mkdir /lib/modules/3.0.15       (最后面的是你的内核版本号)

                  如果rmmod出现了exit hello world.  那么恭喜你成功了。


到这里环境已经搭建好了,大家可以继续接下来的驱动去学习了,后续我会继续写一些驱动相关的文章的。

0 0
原创粉丝点击