Chinaunix首页 | 论坛 | 博客
  • 博客访问: 243123
  • 博文数量: 29
  • 博客积分: 1598
  • 博客等级: 上尉
  • 技术积分: 388
  • 用 户 组: 普通用户
  • 注册时间: 2009-03-09 13:35
文章分类
文章存档

2012年(3)

2011年(4)

2010年(1)

2009年(21)

我的朋友

分类: LINUX

2009-04-10 21:24:53

在网上看见的一篇文章。觉得不错就收藏了。具体来源找不到了,还请原文作者见谅。

给新买板子的同志们一个参考:

板子:YC2410
主机:Fedora core 6(其它发行版linux都一样)


1. 打开包装盒,核对清单。
2. 拆开串口线把板子上串口0与主机的串口相连。
3. 拆开网线连接板子与主机。
4. shell命令下运行minicom   
   FC6下第一次运行minicom需要运行minicom -s配置串口,(ttyS0, 115200,NO,NO)
5. 开发板上电,我的板子出现的问题是系统在不停的配置dhcp网址,因为板子出厂时开启了dhcp功能。
   修改方法:先用直连线接入HUB,板子会自动获取IP地址,接下来修改/etc/init.d/rsC,把里面的dhcp
   功能给禁了(注释掉就行),再设定板子固定IP地址(按原来注释内容修改就行).
6. 进入shell命令状态。

建立Linux下的开发环境
建立编译环境
1.  把光盘里的关于linux开发的目录拷到本地目录下。
2.  安装交叉编译器
    tar jxvf cross-2.95.3.tar.bz2 -C /
    (不要按照文档里写的先建立/usr/local/arm目录,会自动解压此目录下,建议直接安装3.4.1编译器)
   修改/etc/profile,就是把arm-linux-gcc加入PATH中,这个可参考文档。
3.  解压内核源码。目录任意。

在开发板运行主机上的程序:
个人感觉更佳的方法就是在主机建立nfs服务。
1。在主机开启nfs服务
   运行/etc/init.d/nfs restart
2. 修改/etc/exports文件,设定你主机上的工作目录,以后在板子上就直接通过nfs mount到这个目录下,相当   于板子上的一个目录:
   如:   /home/kevin     *(rw,no_root_squash,sync)         前面是目录,后面是权限。
3. 可以先在本机上试一试nfs服务是否起来
   命令:mount 192.168.0.15:/home/kevin /mnt         192.168.0.15是主机IP地址
   如果/mnt下有/home/kevin下的内容证明nfs成功。
4. 在开板上也输入命令:
   mount 192.168.0.15:/home/kevin /mnt         192.168.0.15是主机IP地址
   然后板子上的/mnt目录就和主机的/home/kevin目录同步了。
5,在主机/home/kevin目录下开发编译程序,在板子上调试。
6. 先试一个光盘自带的应用程序,测按键buttons
   把buttons目录拷到/home/kevin目录下。
   在板子上/mnt目录下也能看到此目录了。
   在板子上直接运行./buttons,程序开始运行,测试板子上的按键。

7. 调试运行内核模块

  源码还是论坛以前给的那个hello_world,我在直接加载这个模块时,出现问题,说是内核版本号不一样,又自己编译了一下,出现arm-linux-gcc的版本号又不一样了(我刚开始用的是2.9)。换成3.4再编译后就OK了。

其实编写内核时的Makefile比较重要,论坛上的那个例程的makefile也太丑了(小声地说:扬创的文档编写能力确定不咋地!)。

下面我给出我的Makefile,这也是我从一个别的模块里修改而来的。
# Makefile  
# Please modify here or set environments.
# KSOURCE should be pointed to the build directory of your kernel.
#
DEBUG ?= n
KSOURCE ?= /home/arm2410/linux_s3c2410              #此处修改为你自己的内核所在目录


%.x:%.c
        arm-linux-gcc -o $@ $<

KBUILD_VERBOSE:=1


obj-m := hello.o





default:
        make -C $(KSOURCE) LANG=C KBUILD_VERBOSE=${KBUILD_VERBOSE}  SUBDIRS=`pwd` modules

.PHONY: cscope
cscope:
        cscope -b -k -R

.PHONY: clean
clean:
        make -C $(KSOURCE) LANG=C KBUILD_VERBOSE=${KBUILD_VERBOSE}  SUBDIRS=`pwd` clean
        rm -f *.x *~



把这个Makefile,hello.c两个文件放在一个目录下,直接运行make,就可以产生模块文件了。
这之前都是在主机上编译的。

在板子运行:insmod hello.ko,      成功!显示信息
            lsmod                 显示模块名
            rmmod                 删除模块,显示信息.


好了,整个嵌入式的开发平台就建立起来了,下面就是各位的更高阶段的嵌入式之旅啦!

PS:我也是菜鸟一个,板子还是昨天刚拿到的。希望和大家一起学习,共同进步。


附:hello.c
#include
#include
MODULE_LICENSE("Dual BSD/GPL");
static int hello_init(void)
{
    printk(KERN_ALERT "Hello, world\n");
    return 0;
}
static void hello_exit(void)
{
    printk(KERN_ALERT "Goodbye, cruel world\n");
}
module_init(hello_init);
module_exit(hello_exit);
阅读(1693) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~