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

转载请注明出处: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/rcS
ttySAC2::askfirst:-/bin/sh
::ctrlaltdel:/sbin/reboot
::shutdown:/bin/umount -a -r




etc/init.d/rcS

#!/bin/sh
ifconfig eth0 192.168.6.4
mount -a
mkdir /dev/pts
mount -t devpts devpts /dev/pts
echo /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   order
proc    /proc    proc      defaults 0      0
tmpfs   /tmp     tmpfs     defaults 0      0
sysfs   /sys     sysfs     defaults 0      0
tmpfs   /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.0

all:
	make -C $(KERN_DIR) M=`pwd` modules 

clean:
	make -C $(KERN_DIR) M=`pwd` modules clean
	rm -rf modules.order

obj-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
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

若云流风

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值